Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4urw-002glX-1f for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 06:04:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4urv-004PgU-06 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 06:03:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4uru-004PgL-1P for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 06:03:59 +0000 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4urr-00000000pER-1US9 for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 06:03:58 +0000 Received: by mail-qk1-x72f.google.com with SMTP id af79cd13be357-8cd77786e97so82238585a.3 for ; Mon, 23 Mar 2026 23:03:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774332234; cv=none; d=google.com; s=arc-20240605; b=YGNB+9jjUxhCd1GmAGdPx+miz0YkQUbfXvT2UR5S9t20618TMkdTttuCeu15Qh8xpk jtf5KuHLwWnIA0rKpzWfdMAjpHzttDNCaUri3NzwM2TIOd4ayY7yB/k9pj0O2H3Icoi8 NaVwYu9ZynPIbn/tRx1HWB8Ry7K7It+zMejxl9Pn1MxAOK3Vuh5sItIA/OCmJ3RHz+L2 u8FFvPIaNklhsedqBhTg3pulVY3ZOUfCbwp+T15KWiqb4L7rkdM+LU//He5d6cIq6lN0 fZxZbGbAgRZxsAtijIPPtoHC7hwgY6OwxeyH0SWT0voDpLUeDHXId1h4ELELMqux2dNZ vYeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=wILq8Vi9x6RZ5Ji7X3JJ9P1DDhkgYNKBmZ4L0xemsP4=; fh=HRtDaGZAlKrzgMRCCyaE+A1zelOeo5eaHcsEmYjI7ss=; b=M1FLBaMtYGhLCuyg2Mhk6dbOqwpjattj/6cLCh7Pwe5KzTfVFJ4h60DwMEp7+CgrPM Cqo8LuBbD+KWTVObNa2AkSyRBL8vaQxVYdStLpsNqJQeg0FbHM1eGhPhaYrRjfxVELym PDY+GatYGexDtXfpiKTSIMyfxA0oHuF8gJTXL8P4JoZ9J8WikdsKWNtOeNLn0rgANTFG fXpvZ72ta4CS+c4cceFy7MmB+u6lM6J2bxHIxg1gWH17bfFks6hec5EZJGed/MrpFbYI hkZCab1qmX2xQkTEi0XFquc79E25Ge9fTl5szWJBbaNjsNUjEwk1H1by/XlQybOPTFkc vDCQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1774332234; x=1774937034; darn=lists.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=wILq8Vi9x6RZ5Ji7X3JJ9P1DDhkgYNKBmZ4L0xemsP4=; b=QPuuTremPweTTPNnVqW8Wq6wpFTYIAaaObdiqHiUzkfRNNVLw2YPPVBUYxzB/d/Ohm KSF9Ec7W06bKNTD3CrnqWmr/jC5fezi6Iw7qbMSF7AqzEayg/9rO9/IUqMYXoOkaaSWm qMhj4K3hOcuF7Mw213ir4SsTiSxGYNEJodEgU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774332234; x=1774937034; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wILq8Vi9x6RZ5Ji7X3JJ9P1DDhkgYNKBmZ4L0xemsP4=; b=YobUtF7Zs6O5pZn+Kqmew46cV7hLaa/S9mcyG4UVRYjR2fmd/opXUjM5Fmolg84ZPG qnJHF//J0C+rJArV5oZemsn9do+IiUVeRpdfYYrqo/BMAOU0mQvSIniPrNrLpqC5hdWL IjzwaQTQAKeOuH15z+CLaTnPuTWYrQ3hWJOSLhNDOW8mxVAK2DqZPer86vDWjGRILhmr QJX7SRB/Q5w0aD6BX2mwrGcRs56nPGB8FZ7UxAbZZiTRlL5UzI3Qu4ENxbnN0byRR07k AHWJd4rlTDFcwzWlKfqE5DxAUBoh3rGpAQ18hacZ/mgl+AUw22/6omBIby2YVsMrDMjc 708g== X-Forwarded-Encrypted: i=1; AJvYcCXQcdFcuySzi7dtWsvNRNSh/fj/+QCkcuGju5JJjhb553p4vGj9CxsOWTFuE3Y7oJmcImuPRRAw4Es1RBOz@lists.postgresql.org X-Gm-Message-State: AOJu0YydcUcVz5+YxRUIW5vvu/bePXCAU/ui5HH8w8VDo+moE3nN4HZQ ffj4w6yLXiiHx1LB0JZFrrxRJKrGNS0Doy3QtabI0/R5K1dLekkXCCqWGbTlkh5u+5oKPyjq7JP ol7b5bXYBhM0ocHOc27TWD2EMiHbRCFfCrN6/VUn8 X-Gm-Gg: ATEYQzw9Y3lCeOCVTlq4Cgs2WAasQlN64pzIFTSwbELMYXeZlATwfTCxdAHpdTpuMEt rznYzs2i/u11AELf18kkddAZbSVH2TRJWhq0COkR5q4YBTS7NqmjIrQ/veXjLXhztMmv1xb6VMB KUr6zmU9Fx9juqi0O/gEkm8GzvOz7q83K9goKKxrCqSAzp05ri/XF0v4wKt9X2gil4MYCG1m6pb 1AF6LZYeSrdxnlBd9Kx0geHz/1mgina07Cz1e4QMrLD4hkKW2pTehfPHAer9jGT752PwgoV7SJb 9knwEl/8pIwbn39Izbg2VylW+H0LUOyiM8D/+xfB X-Received: by 2002:a05:620a:4049:b0:8cd:c239:12d6 with SMTP id af79cd13be357-8cfc7f7dbeamr2047956885a.57.1774332233490; Mon, 23 Mar 2026 23:03:53 -0700 (PDT) MIME-Version: 1.0 References: <06086cb4-881b-4f5a-96af-f275220ff52d@vondra.me> In-Reply-To: From: Lukas Fittl Date: Mon, 23 Mar 2026 23:03:16 -0700 X-Gm-Features: AQROBzA1mj2tK6onq4F0kbvQFzCm4kOGM1wYiZMWOMzeb1up7OOZEH0Olj6V2Fk Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Zsolt Parragi , Heikki Linnakangas , Andres Freund Cc: Tomas Vondra , PostgreSQL Hackers , Peter Smith Content-Type: multipart/mixed; boundary="0000000000007e0ea4064dbeeae8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007e0ea4064dbeeae8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 23, 2026 at 1:03=E2=80=AFPM Lukas Fittl wrote= : > FWIW, on the topic of resource owners and allocations, I've done a > test over the weekend, and here is a question: > > It seems we could switch the Instrumentation allocations we're doing > when inside a portal to PortalContext, and CurrentMemoryContext when > outside a portal - instead of allocating in > TopMemoryContext/TopTransactionContext. That works in practice, > because resource owner cleanup happens before PortalContext cleanup, > and simplifies the code a bit since we can skip copying into the > current memory context (because the caller wants to be able to use the > result after the finalize call). And if we leak we'd only leak until > PortalContext gets cleaned up, instead of TopMemoryContext. > > To expand on that, in the previously posted v9 we have the following > allocations: > > A) InstrStackState allocated under TopMemoryContext (long-lived, never fr= eed) > B) QueryInstrumentation allocated under TopMemoryContext (short-lived > during query execution, explicitly freed up on abort or finalize call) > C) NodeInstrumentation allocated under TopTransactionContext > (short-lived during query execution, explicitly freed up on abort or > finalize call) > D) In other use cases, e.g. ANALYZE command that logs buffer usage, > QueryInstrumentation allocated under TopMemoryContext (short-lived > during command execution, explicitly freed up on abort or finalize > call) > > And we could switch it instead to: > > A) InstrStackState allocated under TopMemoryContext (long-lived, never fr= eed) > B) QueryInstrumentation allocated under PortalContext (short-lived > during query execution, *automatically* freed up on abort, manually on > ExecutorEnd to avoid waiting for holdable cursors to free > PortalContext) > C) NodeInstrumentation allocated under PortalContext (short-lived > during query execution, *automatically* freed up on abort, manually on > ExecutorEnd to avoid waiting for holdable cursors to free > PortalContext) > D) In other use cases, e.g. ANALYZE command that logs buffer usage, > QueryInstrumentation allocated under CurrentMemoryContext (short-lived > during command execution, *automatically* freed up on abort and > success case) > > However, this goes against the principle noted by Heikki over in [0] > that ResOwners should use TopMemoryContext to avoid relying on the > ordering of clean up operations. I've pondered this question more today, and I think maybe this complexity isn't the right way to approach this. Instead I've tried introducing a memory context for instrumentation managed as a resource owner, and I am now (for now) convinced that this is the right trade-off for the problem at hand. The benefit of using our own memory context is that we can free it all at once (which is a lot less brittle when different types of instrumentation are involved), *and* we can re-assign the context parent to be that of the current context on finalize, cleanly moving it out of TopMemoryContext without doing a copy. It also makes it easier for callers to allocate in the right context, without having to introduce a bunch more "Alloc" methods (e.g. relevant for the table stack tracking for index scans). We also have precedence for the use of small memory contexts in the executor with the existence of per-tuple memory contexts. The main downside is that for the cases where we don't have child instrumentation, but want the resource owner logic (e.g. ANALYZE command, or regular query execution with pg_stat_statements enabled), we have more memory overhead: 1kB (ALLOCSET_SMALL_SIZES minimum) for what could otherwise be ~200B. I think that's probably okay for current use cases, but we could avoid that by only using the separate contexts when we have child instrumentations that will be tracked. See attached v10, rebased, with these additional changes: In 0001/0002 I've added forward declarations in execnodes.h, which are necessary since fba4233c8328. In 0005 (stack-based instrumentation) I've also addressed the previously raised concerns about trigger and EXPLAIN (SERIALIZE) handling, and it now treats both kinds as children of the query's instrumentation context. To assist with initializing that, we have to add a query instrumentation reference to EState, but I think that's acceptable. To reduce code churn I've repurposed the existing es_instrument field for that, and we now remember the instrumentation options on QueryInstrumentation. In 0007 (Optimize ExecProcNodeInstr instructions by inlining) I've adjusted the ExecProcNodeInstr logic to use a single function that contains the logic, with separate callers that pass in fixed constants, to let the compiler figure out the different variants with less code duplication, per an off-list suggestion from Andres. In 0008 (Index scans: Show table buffer accesses) this now utilizes the fact that f026fbf059f2 made IndexScanInstrumentation a heap allocation, and puts that allocation in the instrumentation memory context, so it can participate directly in the stack with an inlined Instrumentation field to track table access, avoiding a duplicate field previously necessary. Thanks, Lukas --=20 Lukas Fittl --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Disposition: attachment; filename="v10-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5k4 RnJvbSBjNzJiZjI5MDM3MTk0ZmYwY2UyNGIyNDNlZGYwM2ZjZTdkMzVjMjkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxMCA1LzldIE9w dGltaXplIG1lYXN1cmluZyBXQUwvYnVmZmVyIHVzYWdlIHRocm91Z2gKIHN0YWNrLWJhc2VkIGlu c3RydW1lbnRhdGlvbgoKUHJldmlvdXNseSwgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBidWZm ZXIvV0FMIHVzYWdlIG9mIGEgZ2l2ZW4gY29kZQpzZWN0aW9uLCB3ZSB1dGlsaXplZCBjb250aW51 b3VzbHkgaW5jcmVtZW50aW5nIGdsb2JhbCBjb3VudGVycyB0aGF0IGdldAp1cGRhdGVkIHdoZW4g dGhlIGFjdHVhbCBhY3Rpdml0eSAoZS5nLiBzaGFyZWQgYmxvY2sgcmVhZCkgb2NjdXJyZWQsIGFu ZAp0aGVuIGNhbGN1bGF0ZWQgYSBkaWZmIHdoZW4gdGhlIGNvZGUgc2VjdGlvbiBlbmRlZC4gVGhp cyByZXN1bHRlZCBpbiBhCmJvdHRsZW5lY2sgZm9yIGV4ZWN1dG9yIG5vZGUgaW5zdHJ1bWVudGF0 aW9uIHNwZWNpZmljYWxseSwgd2l0aCB0aGUKZnVuY3Rpb24gQnVmZmVyVXNhZ2VBY2N1bURpZmYg c2hvd2luZyB1cCBpbiBwcm9maWxlcyBhbmQgaW4gc29tZSBjYXNlcwphZGRpbmcgdXAgdG8gMTAl IG92ZXJoZWFkIHRvIGFuIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHJ1bi4KCkluc3RlYWQs IGludHJvZHVjZSBhIHN0YWNrLWJhc2VkIG1lY2hhbmlzbSwgd2hlcmUgdGhlIGFjdHVhbCBhY3Rp dml0eQp3cml0ZXMgaW50byB0aGUgY3VycmVudCBzdGFjayBlbnRyeS4gSW4gdGhlIGNhc2Ugb2Yg ZXhlY3V0b3Igbm9kZXMsIHRoaXMKbWVhbnMgdGhhdCBlYWNoIG5vZGUgZ2V0cyBpdHMgb3duIHN0 YWNrIGVudHJ5IHRoYXQgaXMgcHVzaGVkIGF0Ckluc3RyU3RhcnROb2RlLCBhbmQgcG9wcGVkIGF0 IEluc3RyRW5kTm9kZS4gU3RhY2sgZW50cmllcyBhcmUgemVybwppbml0aWFsaXplZCAoYXZvaWRp bmcgdGhlIGRpZmYgbWVjaGFuaXNtKSBhbmQgZ2V0IGFkZGVkIHRvIHRoZWlyIHBhcmVudAplbnRy eSB3aGVuIHRoZXkgYXJlIGZpbmFsaXplZCwgaS5lLiBubyBtb3JlIG1vZGlmaWNhdGlvbnMgY2Fu IG9jY3VyLgoKVG8gY29ycmVjdGx5IGhhbmRsZSBhYm9ydCBzaXR1YXRpb25zLCBhbnkgdXNlIG9m IGluc3RydW1lbnRhdGlvbiBzdGFja3MKbXVzdCBpbnZvbHZlIGVpdGhlciBhIHRvcC1sZXZlbCBR dWVyeUluc3RydW1lbnRhdGlvbiBzdHJ1Y3QsIGFuZCBpdHMKYXNzb2NpYXRlZCBJbnN0clF1ZXJ5 U3RhcnQvSW5zdHJRdWVyeVN0b3AgaGVscGVycyAod2hpY2ggdXNlIHJlc291cmNlCm93bmVycyB0 byBoYW5kbGUgYWJvcnRzKSwgb3IgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgaXRzZWxmIHdp dGgKZGVkaWNhdGVkIFBHX1RSWS9QR19GSU5BTExZIGNhbGxzIHRoYXQgZW5zdXJlIHRoZSBzdGFj ayBpcyBpbiBhCmNvbnNpc3RlbnQgc3RhdGUgYWZ0ZXIgYW4gYWJvcnQuCgpUaGlzIGFsc28gZHJv cHMgdGhlIGdsb2JhbCBwZ0J1ZmZlclVzYWdlLCBhbnkgY2FsbGVycyBpbnRlcmVzdGVkIGluCm1l YXN1cmluZyBidWZmZXIgYWN0aXZpdHkgc2hvdWxkIGluc3RlYWQgdXRpbGl6ZSBJbnN0clN0YXJ0 L0luc3RyU3RvcC4KClRoZSByZWxhdGVkIGdsb2JhbCBwZ1dhbFVzYWdlIGlzIGtlcHQgZm9yIG5v dyBkdWUgdG8gaXRzIHVzZSBpbiBwZ3N0YXQKdG8gdHJhY2sgYWdncmVnYXRlIFdBTCBhY3Rpdml0 eSBhbmQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgZm9yCm1lYXN1cmluZyBGUElzLgoKQXV0 aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFy cmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cu cG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBUDUzUGt4cm1wRUN6VkZwZWVFRUhER2U2 dTYyNXMlMkJZa21WdjUtZ3czTF9ORFNmYmlBJTQwbWFpbC5nbWFpbC5jb20jY2I1ODNhMDhlOGUw OTZhYTFmMDkzYmIxNzg5MDYxNzMKLS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYyAgICAgICAgICAgfCAgMTYgKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9z dGF0ZW1lbnRzLmMgICB8ICA4NyArLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAg ICAgICAgICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAg ICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgICAg ICAgICAgICAgfCAgNTcgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAg ICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAg ICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAg ICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAg ICAgICB8ICA4MyArKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAg ICAgICAgfCAgMzIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAg ICAgIHwgIDg0ICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAgICAgICAg ICAgIHwgNDQ3ICsrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYyAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9pby5jICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9k ci5oICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o ICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgg ICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o ICAgICAgICAgICAgIHwgMTk4ICsrKysrKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aCAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmgg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgfCAgIDIgKwogMjkgZmlsZXMgY2hhbmdlZCwgODYxIGluc2VydGlvbnMo KyksIDM1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9h dXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4 IDM5YmYyNTQzYjcwLi40YmU4MTQ4OWZmNCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxh aW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMKQEAgLTMwNSwxOSArMzA1LDkgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVkKCkpCiAJ ewotCQkvKgotCQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1 dG9yUnVuLiAgTWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIHBl ci1xdWVyeSBjb250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVuZC4K LQkJICovCisJCS8qIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhlY3V0 b3JSdW4uICovCiAJCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0JCQlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRp bWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOwotCQl9CisJCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxv YyhJTlNUUlVNRU5UX0FMTCk7CiAJfQogfQogCkBAIC0zODIsNyArMzcyLDcgQEAgZXhwbGFpbl9F eGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCiAJCS8qIExvZyBw bGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwotCQltc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKKwkJbXNlYyA9IElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT5pbnN0ci50b3RhbCk7CiAJCWlm IChtc2VjID49IGF1dG9fZXhwbGFpbl9sb2dfbWluX2R1cmF0aW9uKQogCQl7CiAJCQlFeHBsYWlu U3RhdGUgKmVzID0gTmV3RXhwbGFpblN0YXRlKCk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDNlNzkxMDg4NDZlLi45ODU2ZGVjM2E1 ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKQEAgLTkxMCwyMiArOTEwLDExIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJCSYm IHBnc3NfdHJhY2tfcGxhbm5pbmcgJiYgcXVlcnlfc3RyaW5nCiAJCSYmIHBhcnNlLT5xdWVyeUlk ICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQlpbnN0cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90aW1l CWR1cmF0aW9uOwotCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNhZ2U7 Ci0JCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1bWVu dGF0aW9uIGluc3RyID0gezB9OwogCi0JCS8qIFdlIG5lZWQgdG8gdHJhY2sgYnVmZmVyIHVzYWdl IGFzIHRoZSBwbGFubmVyIGNhbiBhY2Nlc3MgdGhlbS4gKi8KLQkJYnVmdXNhZ2Vfc3RhcnQgPSBw Z0J1ZmZlclVzYWdlOwotCi0JCS8qCi0JCSAqIFNpbWlsYXJseSB0aGUgcGxhbm5lciBjb3VsZCB3 cml0ZSBzb21lIFdBTCByZWNvcmRzIGluIHNvbWUgY2FzZXMKLQkJICogKGUuZy4gc2V0dGluZyBh IGhpbnQgYml0IHdpdGggdGhvc2UgYmVpbmcgV0FMLWxvZ2dlZCkKLQkJICovCi0JCXdhbHVzYWdl X3N0YXJ0ID0gcGdXYWxVc2FnZTsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydCk7CisJ CS8qIFRyYWNrIHRpbWUgYW5kIGJ1ZmZlci9XQUwgdXNhZ2UgYXMgdGhlIHBsYW5uZXIgY2FuIGFj Y2VzcyB0aGVtLiAqLworCQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9BTEwp OworCQlJbnN0clN0YXJ0KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19UUlko KTsKQEAgLTkzOSwzMCArOTI4LDIwIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJCX0K IAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0clN0b3BGaW5hbGl6ZSgmaW5zdHIpOwogCQkJ bmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9UUlkoKTsKIAotCQlJTlNUUl9USU1FX1NF VF9DVVJSRU5UKGR1cmF0aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3Rh cnQpOwotCi0JCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQlt ZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VB Y2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQot CQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1 c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2Fn ZSwgJnBnV2FsVXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeV9z dHJpbmcsCiAJCQkJICAgcGFyc2UtPnF1ZXJ5SWQsCiAJCQkJICAgcGFyc2UtPnN0bXRfbG9jYXRp b24sCiAJCQkJICAgcGFyc2UtPnN0bXRfbGVuLAogCQkJCSAgIFBHU1NfUExBTiwKLQkJCQkgICBJ TlNUUl9USU1FX0dFVF9NSUxMSVNFQyhkdXJhdGlvbiksCisJCQkJICAgSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoaW5zdHIudG90YWwpLAogCQkJCSAgIDAsCi0JCQkJICAgJmJ1ZnVzYWdlLAotCQkJ CSAgICZ3YWx1c2FnZSwKKwkJCQkgICAmaW5zdHIuYnVmdXNhZ2UsCisJCQkJICAgJmluc3RyLndh bHVzYWdlLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgTlVMTCwKIAkJCQkgICAwLApAQCAtMTAxNCwx OSArOTkzLDkgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCSAqLwogCWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYgcXVlcnlE ZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKLQkJLyoKLQkJ ICogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4gIE1h a2Ugc3VyZSB0aGUKLQkJICogc3BhY2UgaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29u dGV4dCBzbyBpdCB3aWxsIGdvIGF3YXkgYXQKLQkJICogRXhlY3V0b3JFbmQuCi0JCSAqLworCQkv KiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAqLwog CQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUgPT0gTlVMTCkKLQkJewotCQkJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7Ci0KLQkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2Mt PmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJB bGxvYyhJTlNUUlVNRU5UX0FMTCk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK LQkJfQorCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVO VF9BTEwpOwogCX0KIH0KIApAQCAtMTA4OCwxMCArMTA1NywxMCBAQCBwZ3NzX0V4ZWN1dG9yRW5k KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnN0 bXRfbG9jYXRpb24sCiAJCQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c3RtdF9sZW4sCiAJ CQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHF1ZXJ5RGVz Yy0+dG90YWx0aW1lLT50b3RhbCksCisJCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVl cnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLnRvdGFsKSwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0 ZS0+ZXNfdG90YWxfcHJvY2Vzc2VkLAotCQkJCSAgICZxdWVyeURlc2MtPnRvdGFsdGltZS0+YnVm dXNhZ2UsCi0JCQkJICAgJnF1ZXJ5RGVzYy0+dG90YWx0aW1lLT53YWx1c2FnZSwKKwkJCQkgICAm cXVlcnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZxdWVyeURlc2Mt PnRvdGFsdGltZS0+aW5zdHIud2FsdXNhZ2UsCiAJCQkJICAgcXVlcnlEZXNjLT5lc3RhdGUtPmVz X2ppdCA/ICZxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ciA6IE5VTEwsCiAJCQkJICAg TlVMTCwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc190b19s YXVuY2gsCkBAIC0xMTU1LDE3ICsxMTI0LDExIEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5l ZFN0bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJIUlzQShwYXJzZXRyZWUs IEV4ZWN1dGVTdG10KSAmJgogCQkhSXNBKHBhcnNldHJlZSwgUHJlcGFyZVN0bXQpKQogCXsKLQkJ aW5zdHJfdGltZQlzdGFydDsKLQkJaW5zdHJfdGltZQlkdXJhdGlvbjsKIAkJdWludDY0CQlyb3dz OwotCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNhZ2U7Ci0JCVdhbFVz YWdlCXdhbHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1bWVudGF0aW9uIGlu c3RyID0gezB9OwogCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQkJd2FsdXNh Z2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsK KwkJSW5zdHJJbml0T3B0aW9ucygmaW5zdHIsIElOU1RSVU1FTlRfQUxMKTsKKwkJSW5zdHJTdGFy dCgmaW5zdHIpOwogCiAJCW5lc3RpbmdfbGV2ZWwrKzsKIAkJUEdfVFJZKCk7CkBAIC0xMTgxLDYg KzExNDQsNyBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0clN0 b3BGaW5hbGl6ZSgmaW5zdHIpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9U UlkoKTsKQEAgLTExOTUsOSArMTE1OSw2IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0 bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJICogZm9ybWVyIHZhbHVlLCB3 aGljaCdkIG90aGVyd2lzZSBiZSBhIGdvb2QgaWRlYS4KIAkJICovCiAKLQkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChkdXJhdGlvbik7Ci0JCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZHVyYXRpb24sIHN0 YXJ0KTsKLQogCQkvKgogCQkgKiBUcmFjayB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgcmV0cmll dmVkIG9yIGFmZmVjdGVkIGJ5IHRoZSB1dGlsaXR5CiAJCSAqIHN0YXRlbWVudHMgb2YgQ09QWSwg RkVUQ0gsIENSRUFURSBUQUJMRSBBUywgQ1JFQVRFIE1BVEVSSUFMSVpFRApAQCAtMTIwOSwyMyAr MTE3MCwxNSBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCSAgIHFjLT5jb21tYW5kVGFnID09IENNRFRBR19SRUZS RVNIX01BVEVSSUFMSVpFRF9WSUVXKSkgPwogCQkJcWMtPm5wcm9jZXNzZWQgOiAwOwogCi0JCS8q IGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1ZnVz YWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1 ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxjIGRp ZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6 ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNh Z2UsICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKIAkJCQkg ICBzYXZlZF9xdWVyeUlkLAogCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCiAJCQkJICAgc2F2 ZWRfc3RtdF9sZW4sCiAJCQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01J TExJU0VDKGR1cmF0aW9uKSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci50 b3RhbCksCiAJCQkJICAgcm93cywKLQkJCQkgICAmYnVmdXNhZ2UsCi0JCQkJICAgJndhbHVzYWdl LAorCQkJCSAgICZpbnN0ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIud2FsdXNhZ2UsCiAJCQkJ ICAgTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5k ZXggMmEwZjhjOGUzYjguLjFjZWIyMzA2OTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0y NDM0LDggKzI0MzQsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogYW5kIFBBUkFMTEVM X0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBs b2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUgbm8gd2F5 IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ugb3IKLQkg KiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2ZSBubyB3 YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9u LCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNh Z2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMjg4Niw2ICsyODg2LDcgQEAgX2JyaW5fcGFyYWxs ZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRpb24J aW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9ja21v ZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVzYWdl OwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjkzNSw3 ICsyOTM2LDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJdHVwbGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVkc29ydCwgc2VnKTsK IAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFy dFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qCiAJICogTWlnaHQgYXMgd2VsbCB1c2UgcmVsaWFibGUg ZmlndXJlIHdoZW4gZG9saW5nIG91dCBtYWludGVuYW5jZV93b3JrX21lbQpAQCAtMjk1MCw3ICsy OTUxLDggQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1f dG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnko JmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJ CQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhfY2xvc2Uo aW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5k ZXggZTU0NzgyZDlkZDguLjA0Y2Q1MzkxNmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMKQEAgLTk5MSw4ICs5OTEsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGFuZCBQQVJB TExFTF9LRVlfQlVGRkVSX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lv bnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkgKiBoYXZlIG5v IHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ1dhbFVzYWdlIG9y Ci0JICogcGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGhhdmUg bm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRh dGlvbiwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3Rp bWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdh bFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTIxMTcsNiArMjExNyw3IEBAIF9naW5fcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRp b24JaW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9j a21vZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVz YWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjE4 NSw3ICsyMTg2LDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcp OwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0 YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxpYWJs ZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yMjAwLDcg KzIyMDEsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9j LCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5 KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1 ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAog CQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCAxYTQ0NjA1MGQ4NS4uYTdkYjUwN2ZhMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTY0Myw4ICs2NDMsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24g cmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCVRpbWVzdGFtcFR6IHN0YXJ0dGltZSA9 IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDAsCiAJCQkJc3RhcnR3cml0ZXRp bWUgPSAwOwotCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwotCUJ1ZmZlclVz YWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICppbnN0ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJ Y2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCVNpemUJCWRlYWRfaXRlbXNfbWF4X2J5dGVzID0g MDsKQEAgLTY2MCw2ICs2NTksOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25z dCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJc3RhcnRyZWFkdGltZSA9IHBnU3RhdEJsb2NrUmVh ZFRpbWU7CiAJCQlzdGFydHdyaXRldGltZSA9IHBnU3RhdEJsb2NrV3JpdGVUaW1lOwogCQl9CisJ CWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRf V0FMKTsKKwkJSW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAl9CiAKIAkvKiBVc2VkIGZvciBpbnN0 cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAqLwpAQCAtOTkwLDE0ICs5OTEsMTQgQEAgaGVh cF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAl7 CiAJCVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJSW5z dHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7CisKIAkJaWYgKHZlcmJvc2UgfHwgcGFyYW1zLmxv Z192YWN1dW1fbWluX2R1cmF0aW9uID09IDAgfHwKIAkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNl ZWRzKHN0YXJ0dGltZSwgZW5kdGltZSwKIAkJCQkJCQkJCSAgIHBhcmFtcy5sb2dfdmFjdXVtX21p bl9kdXJhdGlvbikpCiAJCXsKIAkJCWxvbmcJCXNlY3NfZHVyOwogCQkJaW50CQkJdXNlY3NfZHVy OwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2U7Ci0JCQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZTsKIAkJ CVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAkJCWNoYXIJICAgKm1zZ2ZtdDsKIAkJCWludDMyCQlkaWZm OwpAQCAtMTAwNiwxMiArMTAwNywxMCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OwogCQkJ aW50NjQJCXRvdGFsX2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7CisJ CQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZSA9IGluc3RyLT5pbnN0ci5idWZ1c2FnZTsKKwkJCVdh bFVzYWdlCXdhbHVzYWdlID0gaW5zdHItPmluc3RyLndhbHVzYWdlOwogCiAJCQlUaW1lc3RhbXBE aWZmZXJlbmNlKHN0YXJ0dGltZSwgZW5kdGltZSwgJnNlY3NfZHVyLCAmdXNlY3NfZHVyKTsKLQkJ CW1lbXNldCgmd2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2FnZSkpOwotCQkJV2FsVXNhZ2VBY2N1 bURpZmYoJndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJnN0YXJ0d2FsdXNhZ2UpOwotCQkJbWVtc2V0 KCZidWZmZXJ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCQlCdWZmZXJVc2FnZUFj Y3VtRGlmZigmYnVmZmVydXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmc3RhcnRidWZmZXJ1c2FnZSk7 CiAKIAkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKIAkJ CQlidWZmZXJ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKaW5kZXggNDdhOWJkYTMwYzkuLjZhMjYxYzhkY2JkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwpAQCAtMTQ2Niw4ICsxNDY2LDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAq IGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5v IGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkg KiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ1dh bFVzYWdlIG9yCi0JICogcGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5Lgor CSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGlu c3RydW1lbnRhdGlvbiwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2ht X3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUo c2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTE3NTMsNiArMTc1Myw3IEBA IF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAlSZWxhdGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJ aW5kZXhMb2NrbW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJV2FsVXNhZ2Ug ICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJCXNvcnRtZW07 CkBAIC0xODI4LDcgKzE4MjksNyBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJfQogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIg dXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1 ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyogUGVyZm9y bSBzb3J0aW5nIG9mIHNwb29sLCBhbmQgcG9zc2libHkgYSBzcG9vbDIgKi8KIAlzb3J0bWVtID0g bWFpbnRlbmFuY2Vfd29ya19tZW0gLyBidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlczsKQEAg LTE4MzgsNyArMTgzOSw4IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFy YWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxs ZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFy YWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVt YmVyXSwKIAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKICNpZmRl ZiBCVFJFRV9CVUlMRF9TVEFUUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IGVlZWQ5MWJlMjY2 Li5jMjFiMjAxOWVhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtMzA5LDkgKzMwOSw3IEBA IGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFt cywKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJ CXNhdmVfbmVzdGxldmVsOwotCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwot CUJ1ZmZlclVzYWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOwotCUJ1ZmZlclVz YWdlIGJ1ZmZlcnVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CiAJ UGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnR3 cml0ZXRpbWUgPSAwOwogCkBAIC0zNjIsNiArMzYwLDkgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRp b24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQl9CiAKIAkJcGdfcnVzYWdl X2luaXQoJnJ1MCk7CisKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9CVUZG RVJTIHwgSU5TVFJVTUVOVF9XQUwpOworCQlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCX0KIAog CS8qIFVzZWQgZm9yIGluc3RydW1lbnRhdGlvbiBhbmQgc3RhdHMgcmVwb3J0ICovCkBAIC03NDIs MTIgKzc0MywxMyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1 bVBhcmFtcyBwYXJhbXMsCiAJewogCQlUaW1lc3RhbXBUeiBlbmR0aW1lID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOwogCisJCUluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOworCiAJCWlmICh2 ZXJib3NlIHx8IHBhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGlt ZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAg cGFyYW1zLmxvZ19hbmFseXplX21pbl9kdXJhdGlvbikpCiAJCXsKIAkJCWxvbmcJCWRlbGF5X2lu X21zOwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2U7CiAJCQlkb3VibGUJCXJlYWRfcmF0ZSA9IDA7CiAJ CQlkb3VibGUJCXdyaXRlX3JhdGUgPSAwOwogCQkJY2hhcgkgICAqbXNnZm10OwpAQCAtNzU1LDE4 ICs3NTcsMTUgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1Q YXJhbXMgcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OwogCQkJaW50NjQJCXRvdGFs X2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7Ci0KLQkJCW1lbXNldCgm YnVmZmVydXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQkJQnVmZmVyVXNhZ2VBY2N1 bURpZmYoJmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0YXJ0YnVmZmVydXNhZ2UpOwot CQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxVc2FnZUFj Y3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0KLQkJCXRv dGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKLQkJCQlidWZmZXJ1 c2FnZS5sb2NhbF9ibGtzX2hpdDsKLQkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZmZlcnVzYWdlLnNo YXJlZF9ibGtzX3JlYWQgKwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsKLQkJCXRv dGFsX2Jsa3NfZGlydGllZCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQgKwotCQkJ CWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl ID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdlOworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+ aW5zdHIud2FsdXNhZ2U7CisKKwkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmdXNhZ2Uuc2hhcmVkX2Js a3NfaGl0ICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKKwkJCXRvdGFsX2Jsa3NfcmVh ZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3Nf cmVhZDsKKwkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRp ZWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKIAogCQkJLyoKIAkJCSAqIFdl IGRvIG5vdCBleHBlY3QgYW4gYW5hbHl6ZSB0byB0YWtlID4gMjUgZGF5cyBhbmQgaXQgc2ltcGxp ZmllcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGU3M2RjMTI5MTMyLi5kYzVlNjM5NTViYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzI0LDE0ICszMjQsMTYgQEAgc3RhbmRhcmRfRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5lZFN0bXQgKnBsYW47Ci0JaW5zdHJf dGltZQlwbGFuc3RhcnQsCi0JCQkJcGxhbmR1cmF0aW9uOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl X3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5V TEw7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0 IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CiAK KwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRf VElNRVIgfCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCWVsc2UKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5 QWxsb2MoSU5TVFJVTUVOVF9USU1FUik7CisKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CiAJCS8qCkBA IC0zNDgsMTUgKzM1MCwxMiBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5 LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJc2F2ZWRfY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0 ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CisJ SW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAogCS8qIHBsYW4gdGhlIHF1ZXJ5ICovCiAJcGxhbiA9 IHBnX3BsYW5fcXVlcnkocXVlcnksIHF1ZXJ5U3RyaW5nLCBjdXJzb3JPcHRpb25zLCBwYXJhbXMs IGVzKTsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9U SU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsKKwlJbnN0clF1ZXJ5U3RvcEZp bmFsaXplKGluc3RyKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTM2NCwxNiArMzYzLDkg QEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlv bnMsCiAJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1lbV9jb3VudGVy cyk7CiAJfQogCi0JLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0J aWYgKGVzLT5idWZmZXJzKQotCXsKLQkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7Ci0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNh Z2UsICZidWZ1c2FnZV9zdGFydCk7Ci0JfQotCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBw cm9kdWNlIG91dHB1dCAqLwogCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0 cmluZywgcGFyYW1zLCBxdWVyeUVudiwKLQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkgICAmaW5zdHItPmluc3RyLnRvdGFsLCAoZXMt PmJ1ZmZlcnMgPyAmaW5zdHItPmluc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1l bW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KIApAQCAtNTkwLDcgKzU4MiwxMiBAQCBF eHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8s IEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAkvKiBncmFiIHNlcmlhbGl6YXRpb24gbWV0cmljcyBiZWZv cmUgd2UgZGVzdHJveSB0aGUgRGVzdFJlY2VpdmVyICovCiAJaWYgKGVzLT5zZXJpYWxpemUgIT0g RVhQTEFJTl9TRVJJQUxJWkVfTk9ORSkKLQkJc2VyaWFsaXplTWV0cmljcyA9IEdldFNlcmlhbGl6 YXRpb25NZXRyaWNzKGRlc3QpOworCXsKKwkJU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcyA9IEdl dFNlcmlhbGl6YXRpb25NZXRyaWNzKGRlc3QpOworCisJCWlmIChtZXRyaWNzKQorCQkJbWVtY3B5 KCZzZXJpYWxpemVNZXRyaWNzLCBtZXRyaWNzLCBzaXplb2YoU2VyaWFsaXplTWV0cmljcykpOwor CX0KIAogCS8qIGNhbGwgdGhlIERlc3RSZWNlaXZlcidzIGRlc3Ryb3kgbWV0aG9kIGV2ZW4gZHVy aW5nIGV4cGxhaW4gKi8KIAlkZXN0LT5yRGVzdHJveShkZXN0KTsKQEAgLTEwMTksNyArMTAxNiw3 IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRy aWNzICptZXRyaWNzKQogCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CiAJCWlmIChlcy0+dGltaW5n KQogCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiU2VyaWFsaXphdGlvbjogdGltZT0lLjNm IG1zICBvdXRwdXQ9IiBVSU5UNjRfRk9STUFUICJrQiAgZm9ybWF0PSVzXG4iLAotCQkJCQkJCSAx MDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+dGltZVNwZW50KSwKKwkJCQkJ CQkgMTAwMC4wICogSU5TVFJfVElNRV9HRVRfRE9VQkxFKG1ldHJpY3MtPmluc3RyLnRvdGFsKSwK IAkJCQkJCQkgQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCksCiAJCQkJCQkJ IGZvcm1hdCk7CiAJCWVsc2UKQEAgLTEwMjcsMTAgKzEwMjQsMTAgQEAgRXhwbGFpblByaW50U2Vy aWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCQkJ CQkJIEJZVEVTX1RPX0tJTE9CWVRFUyhtZXRyaWNzLT5ieXRlc1NlbnQpLAogCQkJCQkJCSBmb3Jt YXQpOwogCi0JCWlmIChlcy0+YnVmZmVycyAmJiBwZWVrX2J1ZmZlcl91c2FnZShlcywgJm1ldHJp Y3MtPmJ1ZmZlclVzYWdlKSkKKwkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdl KGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UpKQogCQl7CiAJCQllcy0+aW5kZW50Kys7Ci0J CQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKTsKKwkJCXNob3df YnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UpOwogCQkJZXMtPmluZGVu dC0tOwogCQl9CiAJfQpAQCAtMTAzOCwxMyArMTAzNSwxMyBAQCBFeHBsYWluUHJpbnRTZXJpYWxp emUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykKIAl7CiAJCWlm IChlcy0+dGltaW5nKQogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlRpbWUiLCAibXMiLAotCQkJ CQkJCQkgMTAwMC4wICogSU5TVFJfVElNRV9HRVRfRE9VQkxFKG1ldHJpY3MtPnRpbWVTcGVudCks CisJCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+aW5zdHIu dG90YWwpLAogCQkJCQkJCQkgMywgZXMpOwogCQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigiT3V0 cHV0IFZvbHVtZSIsICJrQiIsCiAJCQkJCQkJCUJZVEVTX1RPX0tJTE9CWVRFUyhtZXRyaWNzLT5i eXRlc1NlbnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkZvcm1hdCIsIGZvcm1hdCwg ZXMpOwogCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJp Y3MtPmJ1ZmZlclVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5z dHIuYnVmdXNhZ2UpOwogCX0KIAogCUV4cGxhaW5DbG9zZUdyb3VwKCJTZXJpYWxpemF0aW9uIiwg IlNlcmlhbGl6YXRpb24iLCB0cnVlLCBlcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluX2RyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKaW5k ZXggM2M5NjA2MWNmMzIuLmUxZmM3MjNjNzU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluX2RyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9kci5j CkBAIC0xMTAsMTUgKzExMCwxMSBAQCBzZXJpYWxpemVBbmFseXplUmVjZWl2ZShUdXBsZVRhYmxl U2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4 dDsKIAlTdHJpbmdJbmZvCWJ1ZiA9ICZteVN0YXRlLT5idWY7CiAJaW50CQkJbmF0dHMgPSB0eXBl aW5mby0+bmF0dHM7Ci0JaW5zdHJfdGltZQlzdGFydCwKLQkJCQllbmQ7Ci0JQnVmZmVyVXNhZ2Ug aW5zdHJfc3RhcnQ7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9ICZteVN0YXRlLT5tZXRyaWNz Lmluc3RyOwogCiAJLyogb25seSBtZWFzdXJlIHRpbWUsIGJ1ZmZlcnMgaWYgcmVxdWVzdGVkICov Ci0JaWYgKG15U3RhdGUtPmVzLT50aW1pbmcpCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3Rh cnQpOwotCWlmIChteVN0YXRlLT5lcy0+YnVmZmVycykKLQkJaW5zdHJfc3RhcnQgPSBwZ0J1ZmZl clVzYWdlOworCWlmIChpbnN0ci0+bmVlZF90aW1lciB8fCBpbnN0ci0+bmVlZF9zdGFjaykKKwkJ SW5zdHJTdGFydChpbnN0cik7CiAKIAkvKiBTZXQgb3IgdXBkYXRlIG15IGRlcml2ZWQgYXR0cmli dXRlIGluZm8sIGlmIG5lZWRlZCAqLwogCWlmIChteVN0YXRlLT5hdHRyaW5mbyAhPSB0eXBlaW5m byB8fCBteVN0YXRlLT5uYXR0cnMgIT0gbmF0dHMpCkBAIC0xODYsMTggKzE4Miw5IEBAIHNlcmlh bGl6ZUFuYWx5emVSZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNl bGYpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCU1lbW9yeUNvbnRleHRS ZXNldChteVN0YXRlLT50bXBjb250ZXh0KTsKIAotCS8qIFVwZGF0ZSB0aW1pbmcgZGF0YSAqLwot CWlmIChteVN0YXRlLT5lcy0+dGltaW5nKQotCXsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChl bmQpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYobXlTdGF0ZS0+bWV0cmljcy50aW1lU3BlbnQs IGVuZCwgc3RhcnQpOwotCX0KLQotCS8qIFVwZGF0ZSBidWZmZXIgbWV0cmljcyAqLwotCWlmICht eVN0YXRlLT5lcy0+YnVmZmVycykKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJm15U3RhdGUtPm1l dHJpY3MuYnVmZmVyVXNhZ2UsCi0JCQkJCQkJICZwZ0J1ZmZlclVzYWdlLAotCQkJCQkJCSAmaW5z dHJfc3RhcnQpOworCS8qIFN0b3AgcGVyLXR1cGxlIG1lYXN1cmVtZW50ICovCisJaWYgKGluc3Ry LT5uZWVkX3RpbWVyIHx8IGluc3RyLT5uZWVkX3N0YWNrKQorCQlJbnN0clN0b3AoaW5zdHIpOwog CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0yMzMsOSArMjIwLDE3IEBAIHNlcmlhbGl6ZUFuYWx5emVT dGFydHVwKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNjIHR5cGVp bmZvKQogCS8qIFRoZSBvdXRwdXQgYnVmZmVyIGlzIHJlLXVzZWQgYWNyb3NzIHJvd3MsIGFzIGlu IHByaW50dHVwLmMgKi8KIAlpbml0U3RyaW5nSW5mbygmcmVjZWl2ZXItPmJ1Zik7CiAKLQkvKiBJ bml0aWFsaXplIHJlc3VsdHMgY291bnRlcnMgKi8KKwkvKiBJbml0aWFsaXplIG1ldHJpY3MgYW5k IHBlci10dXBsZSBpbnN0cnVtZW50YXRpb24gKi8KIAltZW1zZXQoJnJlY2VpdmVyLT5tZXRyaWNz LCAwLCBzaXplb2YoU2VyaWFsaXplTWV0cmljcykpOwotCUlOU1RSX1RJTUVfU0VUX1pFUk8ocmVj ZWl2ZXItPm1ldHJpY3MudGltZVNwZW50KTsKKwl7CisJCWludAkJCWluc3RydW1lbnRfb3B0aW9u cyA9IDA7CisKKwkJaWYgKHJlY2VpdmVyLT5lcy0+dGltaW5nKQorCQkJaW5zdHJ1bWVudF9vcHRp b25zIHw9IElOU1RSVU1FTlRfVElNRVI7CisJCWlmIChyZWNlaXZlci0+ZXMtPmJ1ZmZlcnMpCisJ CQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCQlJbnN0ckluaXRP cHRpb25zKCZyZWNlaXZlci0+bWV0cmljcy5pbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwl9 CiB9CiAKIC8qCkBAIC0yNDYsNiArMjQxLDggQEAgc2VyaWFsaXplQW5hbHl6ZVNodXRkb3duKERl c3RSZWNlaXZlciAqc2VsZikKIHsKIAlTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyID0g KFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBzZWxmOwogCisJSW5zdHJGaW5hbGl6ZUNoaWxkKCZy ZWNlaXZlci0+bWV0cmljcy5pbnN0ciwgaW5zdHJfc3RhY2suY3VycmVudCk7CisKIAlpZiAocmVj ZWl2ZXItPmZpbmZvcykKIAkJcGZyZWUocmVjZWl2ZXItPmZpbmZvcyk7CiAJcmVjZWl2ZXItPmZp bmZvcyA9IE5VTEw7CkBAIC0yOTYsMTYgKzI5MywxOCBAQCBDcmVhdGVFeHBsYWluU2VyaWFsaXpl RGVzdFJlY2VpdmVyKEV4cGxhaW5TdGF0ZSAqZXMpCiAgKiByZWNlaXZlciBpZiB0aGUgc3ViamVj dCBzdGF0ZW1lbnQgaXMgQ1JFQVRFIFRBQkxFIEFTLiAgSW4gdGhhdAogICogY2FzZSwgcmV0dXJu IGFsbC16ZXJvZXMgc3RhdHMuCiAgKi8KLVNlcmlhbGl6ZU1ldHJpY3MKKy8qCisgKiBHZXRTZXJp YWxpemF0aW9uTWV0cmljcyAtIGdldCBzZXJpYWxpemF0aW9uIG1ldHJpY3MKKyAqCisgKiBSZXR1 cm5zIGEgcG9pbnRlciB0byB0aGUgU2VyaWFsaXplTWV0cmljcyBpbnNpZGUgdGhlIGRlc3QgcmVj ZWl2ZXIsCisgKiBvciBOVUxMIGlmIHRoZSByZWNlaXZlciBpcyBub3QgYSBTZXJpYWxpemVEZXN0 UmVjZWl2ZXIgKGUuZy4gYW4gSW50b1JlbAorICogcmVjZWl2ZXIgZm9yIENSRUFURSBUQUJMRSBB UykuCisgKi8KK1NlcmlhbGl6ZU1ldHJpY3MgKgogR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoRGVz dFJlY2VpdmVyICpkZXN0KQogewotCVNlcmlhbGl6ZU1ldHJpY3MgZW1wdHk7Ci0KIAlpZiAoZGVz dC0+bXlkZXN0ID09IERlc3RFeHBsYWluU2VyaWFsaXplKQotCQlyZXR1cm4gKChTZXJpYWxpemVE ZXN0UmVjZWl2ZXIgKikgZGVzdCktPm1ldHJpY3M7Ci0KLQltZW1zZXQoJmVtcHR5LCAwLCBzaXpl b2YoU2VyaWFsaXplTWV0cmljcykpOwotCUlOU1RSX1RJTUVfU0VUX1pFUk8oZW1wdHkudGltZVNw ZW50KTsKKwkJcmV0dXJuICYoKFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBkZXN0KS0+bWV0cmlj czsKIAotCXJldHVybiBlbXB0eTsKKwlyZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YwppbmRleCA4NzZhYWQyMTAwYS4uZjdlMTU4ZTRkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMK QEAgLTU4MCwxMyArNTgwLDE2IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCUxpc3RDZWxsICAg KnA7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9 IE5VTEw7Ci0JaW5zdHJfdGltZQlwbGFuc3RhcnQ7Ci0JaW5zdHJfdGltZQlwbGFuZHVyYXRpb247 Ci0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCi0JCQkJYnVmdXNhZ2U7CisJUXVlcnlJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2Nv dW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRl eHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnMgPSBJTlNUUlVN RU5UX1RJTUVSOworCisJaWYgKGVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlvbnMgfD0g SU5TVFJVTUVOVF9CVUZGRVJTOworCisJaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoaW5zdHJ1bWVu dF9vcHRpb25zKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTU5OCw5ICs2MDEsNyBAQCBF eHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAkJc2F2ZWRfY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0 ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CisJ SW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFi bGUgKi8KIAllbnRyeSA9IEZldGNoUHJlcGFyZWRTdGF0ZW1lbnQoZXhlY3N0bXQtPm5hbWUsIHRy dWUpOwpAQCAtNjM1LDggKzYzNiw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVu dFJlc291cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVudik7CiAKLQlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKHBsYW5kdXJhdGlvbik7Ci0JSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24s IHBsYW5zdGFydCk7CisJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7CiAKIAlpZiAoZXMt Pm1lbW9yeSkKIAl7CkBAIC02NDQsMTMgKzY0NCw2IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhl Y3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CQlNZW1vcnlDb250ZXh0TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgsICZtZW1fY291bnRlcnMpOwog CX0KIAotCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCWlmIChl cy0+YnVmZmVycykKLQl7Ci0JCW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2Fn ZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAm YnVmdXNhZ2Vfc3RhcnQpOwotCX0KLQogCXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAK IAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KQEAgLTY2MCw3ICs2NTMsNyBAQCBFeHBsYWluRXhl Y3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQog CQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEks IHBzdGF0ZS0+cF9xdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVy cyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCQkJICAgJmluc3RyLT5pbnN0ci50b3RhbCwgKGVz LT5idWZmZXJzID8gJmluc3RyLT5pbnN0ci5idWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMt Pm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0 aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcHN0YXRlLCBwYXJhbUxJKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYzY5YzEyZGMwMTQuLjkwYWM1Y2NhYWNkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgRXhlY3V0ZVRydW5j YXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxzLAogCQkJCQkJICByZWwsCiAJCQkJCQkgIDAsCS8q IGR1bW15IHJhbmdldGFibGUgaW5kZXggKi8KIAkJCQkJCSAgTlVMTCwKLQkJCQkJCSAgMCk7CisJ CQkJCQkgIE5VTEwpOwogCQllc3RhdGUtPmVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25zID0KIAkJ CWxhcHBlbmQoZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9ucywgcmVzdWx0UmVsSW5m byk7CiAJCXJlc3VsdFJlbEluZm8rKzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCAyOWI4MGQ3 NTE0My4uZjI1OTdiOTE3ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTkzLDYgKzkzLDcg QEAgc3RhdGljIEhlYXBUdXBsZSBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmln ZGF0YSwKIAkJCQkJCQkJCSBpbnQgdGdpbmR4LAogCQkJCQkJCQkJIEZtZ3JJbmZvICpmaW5mbywK IAkJCQkJCQkJCSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJCQkJCSBRdWVy eUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAogCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgcGVyX3R1 cGxlX2NvbnRleHQpOwogc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8g KnNyY19wYXJ0aW5mbywKQEAgLTIzMTIsNiArMjMxMyw3IEBAIEV4ZWNDYWxsVHJpZ2dlckZ1bmMo VHJpZ2dlckRhdGEgKnRyaWdkYXRhLAogCQkJCQlpbnQgdGdpbmR4LAogCQkJCQlGbWdySW5mbyAq ZmluZm8sCiAJCQkJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3RyLAorCQkJCQlRdWVyeUlu c3RydW1lbnRhdGlvbiAqcWluc3RyLAogCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9jb250 ZXh0KQogewogCUxPQ0FMX0ZDSU5GTyhmY2luZm8sIDApOwpAQCAtMjM0Niw3ICsyMzQ4LDcgQEAg RXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJICogSWYgZG9pbmcg RVhQTEFJTiBBTkFMWVpFLCBzdGFydCBjaGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlci4KIAkg Ki8KIAlpZiAoaW5zdHIpCi0JCUluc3RyU3RhcnRUcmlnZ2VyKGluc3RyICsgdGdpbmR4KTsKKwkJ SW5zdHJTdGFydFRyaWdnZXIocWluc3RyLCBpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIERv IHRoZSBmdW5jdGlvbiBldmFsdWF0aW9uIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQs IHNvIHRoYXQKQEAgLTI0NDEsNiArMjQ0Myw3IEBAIEV4ZWNCU0luc2VydFRyaWdnZXJzKEVTdGF0 ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCQkJCQkJCQkJICAgaSwKIAkJCQkJ CQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5y aV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJ CQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKIAogCQlpZiAobmV3 dHVwbGUpCkBAIC0yNTAyLDYgKzI1MDUsNyBAQCBFeGVjQlJJbnNlcnRUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCQkJCSAgIGksCiAJCQkJCQkJ CQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJICAgcmVsaW5mby0+cmlf VHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJ CQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CiAJCWlmIChuZXd0dXBs ZSA9PSBOVUxMKQogCQl7CkBAIC0yNjA2LDYgKzI2MTAsNyBAQCBFeGVjSVJJbnNlcnRUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCQkJCSAgIGks CiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJICAgcmVs aW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2luc3RydW1l bnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CiAJCWlm IChuZXd0dXBsZSA9PSBOVUxMKQogCQl7CkBAIC0yNjcwLDYgKzI2NzUsNyBAQCBFeGVjQlNEZWxl dGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJCQkJ CQkJCSAgIGksCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJ CQkJICAgcmVsaW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVz X2luc3RydW1lbnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRl KSk7CiAKIAkJaWYgKG5ld3R1cGxlKQpAQCAtMjc4MCw2ICsyNzg2LDcgQEAgRXhlY0JSRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJCQkJCQkJCSAg IGksCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJICAg cmVsaW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2luc3Ry dW1lbnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CiAJ CWlmIChuZXd0dXBsZSA9PSBOVUxMKQogCQl7CkBAIC0yODg0LDYgKzI4OTEsNyBAQCBFeGVjSVJE ZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJ CQkJCQkJCSAgIGksCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJ CQkJCQkJICAgcmVsaW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUt PmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0 YXRlKSk7CiAJCWlmIChyZXR0dXBsZSA9PSBOVUxMKQogCQkJcmV0dXJuIGZhbHNlOwkJLyogRGVs ZXRlIHdhcyBzdXBwcmVzc2VkICovCkBAIC0yOTQyLDYgKzI5NTAsNyBAQCBFeGVjQlNVcGRhdGVU cmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJCQkJCQkJ CSAgIGksCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJ ICAgcmVsaW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2lu c3RydW1lbnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7 CiAKIAkJaWYgKG5ld3R1cGxlKQpAQCAtMzA5NCw2ICszMTAzLDcgQEAgRXhlY0JSVXBkYXRlVHJp Z2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJCQkJCQkJCSAgIGks CiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJICAgcmVs aW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2luc3RydW1l bnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CiAKIAkJ aWYgKG5ld3R1cGxlID09IE5VTEwpCkBAIC0zMjU4LDYgKzMyNjgsNyBAQCBFeGVjSVJVcGRhdGVU cmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCQkJ CSAgIGksCiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnRnVuY3Rpb25zLAogCQkJCQkJCQkJ ICAgcmVsaW5mby0+cmlfVHJpZ0luc3RydW1lbnQsCisJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2lu c3RydW1lbnQsCiAJCQkJCQkJCQkgICBHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7 CiAJCWlmIChuZXd0dXBsZSA9PSBOVUxMKQogCQl7CkBAIC0zMzE2LDYgKzMzMjcsNyBAQCBFeGVj QlNUcnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZv KQogCQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMs CiAJCQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4 dChlc3RhdGUpKTsKIAogCQlpZiAobmV3dHVwbGUpCkBAIC00MzczLDcgKzQzODUsNyBAQCBBZnRl clRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCSAqIHRvIGluY2x1ZGUgdGltZSBzcGVu dCByZS1mZXRjaGluZyB0dXBsZXMgaW4gdGhlIHRyaWdnZXIgY29zdC4KIAkgKi8KIAlpZiAoaW5z dHIpCi0JCUluc3RyU3RhcnRUcmlnZ2VyKGluc3RyICsgdGdpbmR4KTsKKwkJSW5zdHJTdGFydFRy aWdnZXIoZXN0YXRlLT5lc19pbnN0cnVtZW50LCBpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAq IEZldGNoIHRoZSByZXF1aXJlZCB0dXBsZShzKS4KQEAgLTQ1NjEsNiArNDU3Myw3IEBAIEFmdGVy VHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCSAgIHRnaW5keCwKIAkJCQkJ CQkJICAgZmluZm8sCiAJCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJCSAgIE5VTEwsCiAJCQkJCQkJ CSAgIHBlcl90dXBsZV9jb250ZXh0KTsKIAlpZiAocmV0dHVwbGUgIT0gTlVMTCAmJgogCQlyZXR0 dXBsZSAhPSBMb2NUcmlnZ2VyRGF0YS50Z190cmlndHVwbGUgJiYKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCmluZGV4IDc3ODM0Yjk2YTIxLi5jMzMwYzg5MWMwMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0zMDgsOCArMzA4LDggQEAgcGFyYWxsZWxf dmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVz LAogCSAqIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFIGFuZCBQQVJBTExFTF9WQUNV VU1fS0VZX1dBTF9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxv YWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3YXkg b2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgcGdCdWZmZXJVc2FnZSBvcgot CSAqIHBnV2FsVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdh eSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24s IHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0xMDA2LDYgKzEwMDYsNyBAQCBwYXJhbGxlbF92 YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUFZJbmRTdGF0cyAq aW5kc3RhdHM7CiAJUFZTaGFyZWQgICAqc2hhcmVkOwogCVRpZFN0b3JlICAgKmRlYWRfaXRlbXM7 CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNh Z2U7CiAJV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwogCWludAkJCW5pbmRleGVzOwpAQCAtMTA5NSw3 ICsxMDk2LDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CiAKIAkvKiBQcmVw YXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0J SW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1 ZXJ5KCk7CiAKIAkvKiBQcm9jZXNzIGluZGV4ZXMgdG8gcGVyZm9ybSB2YWN1dW0vY2xlYW51cCAq LwogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5kZXhlcygmcHZzKTsKQEAgLTExMDMs NyArMTEwNCw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0aW9uICovCiAJYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9W QUNVVU1fS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5z dHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVs V29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0p OwogCiAJLyogUmVwb3J0IGFueSByZW1haW5pbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgdGlt ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMWI5NTAwNDA1OTcuLjUzNjZjMWU4MDFj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc4LDYgKzc4LDcgQEAgRXhlY3V0b3JDaGVj a1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAvKiBkZWNs cyBmb3IgbG9jYWwgcm91dGluZXMgb25seSB1c2VkIHdpdGhpbiB0aGlzIG1vZHVsZSAqLwogc3Rh dGljIHZvaWQgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3Rh dGljIHZvaWQgQ2hlY2tWYWxpZFJvd01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBt YXJrVHlwZSk7CitzdGF0aWMgdm9pZCBFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9u KEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJvY2Vzc1BsYW4oRVN0YXRl ICplc3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUs IEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWN1dGVQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLApAQCAtMjQ3LDkgKzI0OCwxOSBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVzdGF0ZS0+ZXNfc25hcHNob3QgPSBSZWdp c3RlclNuYXBzaG90KHF1ZXJ5RGVzYy0+c25hcHNob3QpOwogCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVj a19zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QocXVlcnlEZXNjLT5jcm9zc2NoZWNrX3NuYXBz aG90KTsKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSBlZmxhZ3M7Ci0JZXN0YXRlLT5lc19pbnN0 cnVtZW50ID0gcXVlcnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnM7CiAJZXN0YXRlLT5lc19qaXRf ZmxhZ3MgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFnczsKIAorCS8qCisJICogU2V0 IHVwIHF1ZXJ5LWxldmVsIGluc3RydW1lbnRhdGlvbiBpZiBuZWVkZWQuIFdlIGRvIHRoaXMgYmVm b3JlCisJICogSW5pdFBsYW4gc28gdGhhdCBub2RlIGFuZCB0cmlnZ2VyIGluc3RydW1lbnRhdGlv biBjYW4gYmUgYWxsb2NhdGVkCisJICogd2l0aGluIHRoZSBxdWVyeSdzIGRlZGljYXRlZCBpbnN0 cnVtZW50YXRpb24gbWVtb3J5IGNvbnRleHQuCisJICovCisJaWYgKCFxdWVyeURlc2MtPnRvdGFs dGltZSAmJiBxdWVyeURlc2MtPmluc3RydW1lbnRfb3B0aW9ucykKKwl7CisJCXF1ZXJ5RGVzYy0+ dG90YWx0aW1lID0gSW5zdHJRdWVyeUFsbG9jKHF1ZXJ5RGVzYy0+aW5zdHJ1bWVudF9vcHRpb25z KTsKKwkJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gcXVlcnlEZXNjLT50b3RhbHRpbWU7CisJfQor CiAJLyoKIAkgKiBTZXQgdXAgYW4gQUZURVItdHJpZ2dlciBzdGF0ZW1lbnQgY29udGV4dCwgdW5s ZXNzIHRvbGQgbm90IHRvLCBvcgogCSAqIHVubGVzcyBpdCdzIEVYUExBSU4tb25seSBtb2RlICh3 aGVuIEV4ZWN1dG9yRmluaXNoIHdvbid0IGJlIGNhbGxlZCkuCkBAIC0zMzEsOSArMzQyLDIxIEBA IHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCSAqLwogCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCi0J LyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwor CS8qIFN0YXJ0IHVwIGluc3RydW1lbnRhdGlvbiBmb3IgdGhpcyBleGVjdXRpb24gcnVuICovCiAJ aWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKKwl7CisJCUluc3RyUXVlcnlTdGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisKKwkJ LyoKKwkJICogUmVtZW1iZXIgYWxsIG5vZGUgZW50cmllcyBmb3IgYWJvcnQgcmVjb3ZlcnkuIFdl IGRvIHRoaXMgb25jZSBoZXJlCisJCSAqIGFmdGVyIEluc3RyUXVlcnlTdGFydCBoYXMgcHVzaGVk IHRoZSBwYXJlbnQgc3RhY2sgZW50cnkuCisJCSAqLworCQlpZiAoZXN0YXRlLT5lc19pbnN0cnVt ZW50ICYmCisJCQllc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RyLm5lZWRfc3RhY2sgJiYKKwkJ CSFxdWVyeURlc2MtPmFscmVhZHlfZXhlY3V0ZWQpCisJCQlFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1 bWVudGF0aW9uKHF1ZXJ5RGVzYy0+cGxhbnN0YXRlLAorCQkJCQkJCQkJCQlxdWVyeURlc2MtPnRv dGFsdGltZSk7CisJfQogCiAJLyoKIAkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIHF1 ZXJ5IGRlc2NyaXB0b3IgYW5kIHRoZSBxdWVyeSBmZWF0dXJlLgpAQCAtMzg1LDcgKzQwOCw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQlkZXN0LT5yU2h1 dGRvd24oZGVzdCk7CiAKIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RvcChx dWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUluc3RyUXVlcnlTdG9wKHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KQEAgLTQzNSw3 ICs0NTgsNyBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykK IAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVjdXRvciBvdmVyYWxsIHJ1bnRpbWUg Ki8KIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50 b3RhbHRpbWUpOworCQlJbnN0clF1ZXJ5U3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJ LyogUnVuIE1vZGlmeVRhYmxlIG5vZGVzIHRvIGNvbXBsZXRpb24gKi8KIAlFeGVjUG9zdHByb2Nl c3NQbGFuKGVzdGF0ZSk7CkBAIC00NDQsOCArNDY3LDI2IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmlu aXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCWlmICghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAm IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTKSkKIAkJQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoZXN0YXRl KTsKIAorCS8qCisJICogQWNjdW11bGF0ZSBwZXItbm9kZSBhbmQgdHJpZ2dlciBzdGF0aXN0aWNz IHRvIHRoZWlyIHJlc3BlY3RpdmUgcGFyZW50CisJICogaW5zdHJ1bWVudGF0aW9uIHN0YWNrcy4K KwkgKgorCSAqIFdlIHNraXAgdGhpcyBpbiBwYXJhbGxlbCB3b3JrZXJzIGJlY2F1c2UgdGhlaXIg cGVyLW5vZGUgc3RhdHMgYXJlCisJICogcmVwb3J0ZWQgaW5kaXZpZHVhbGx5IHZpYSBFeGVjUGFy YWxsZWxSZXBvcnRJbnN0cnVtZW50YXRpb24sIGFuZCB0aGUKKwkgKiBsZWFkZXIncyBvd24gRXhl Y0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbiBoYW5kbGVzIHByb3BhZ2F0aW9uLiAgSWYKKwkg KiB3ZSBhY2N1bXVsYXRlZCBoZXJlLCB0aGUgbGVhZGVyIHdvdWxkIGRvdWJsZS1jb3VudDogd29y a2VyIHBhcmVudCBub2RlcworCSAqIHdvdWxkIGFscmVhZHkgaW5jbHVkZSB0aGVpciBjaGlsZHJl bidzIHN0YXRzLCBhbmQgdGhlbiB0aGUgbGVhZGVyJ3MKKwkgKiBhY2N1bXVsYXRpb24gd291bGQg YWRkIHRoZSBjaGlsZHJlbiBhZ2Fpbi4KKwkgKi8KKwlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUg JiYgZXN0YXRlLT5lc19pbnN0cnVtZW50ICYmICFJc1BhcmFsbGVsV29ya2VyKCkpCisJeworCQlF eGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKwor CQlFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKGVzdGF0ZSk7CisJfQorCiAJaWYg KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUp OworCQlJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKIAogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIApAQCAtMTI2Myw3ICsxMzA0LDcgQEAg SW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkgIFJl bGF0aW9uIHJlc3VsdFJlbGF0aW9uRGVzYywKIAkJCQkgIEluZGV4IHJlc3VsdFJlbGF0aW9uSW5k ZXgsCiAJCQkJICBSZXN1bHRSZWxJbmZvICpwYXJ0aXRpb25fcm9vdF9ycmksCi0JCQkJICBpbnQg aW5zdHJ1bWVudF9vcHRpb25zKQorCQkJCSAgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikK IHsKIAlNZW1TZXQocmVzdWx0UmVsSW5mbywgMCwgc2l6ZW9mKFJlc3VsdFJlbEluZm8pKTsKIAly ZXN1bHRSZWxJbmZvLT50eXBlID0gVF9SZXN1bHRSZWxJbmZvOwpAQCAtMTI4NCw4ICsxMzI1LDgg QEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCXBh bGxvYzBfYXJyYXkoRm1nckluZm8sIG4pOwogCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnV2hlbkV4 cHJzID0gKEV4cHJTdGF0ZSAqKikKIAkJCXBhbGxvYzBfYXJyYXkoRXhwclN0YXRlICosIG4pOwot CQlpZiAoaW5zdHJ1bWVudF9vcHRpb25zKQotCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3Ry dW1lbnQgPSBJbnN0ckFsbG9jVHJpZ2dlcihuLCBpbnN0cnVtZW50X29wdGlvbnMpOworCQlpZiAo cWluc3RyKQorCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9j VHJpZ2dlcihxaW5zdHIsIG4pOwogCX0KIAllbHNlCiAJewpAQCAtMTQ5OSw2ICsxNTQwLDMwIEBA IEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8pCiAJcmV0dXJuIHJlc3VsdFJlbEluZm8tPnJpX2FuY2VzdG9yUmVzdWx0 UmVsczsKIH0KIAorc3RhdGljIHZvaWQKK0V4ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRp b24oRVN0YXRlICplc3RhdGUpCit7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKworCXJlbHMgPSBs aXN0X2NvbmNhdChyZWxzLCBlc3RhdGUtPmVzX3R1cGxlX3JvdXRpbmdfcmVzdWx0X3JlbGF0aW9u cyk7CisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfb3BlbmVkX3Jlc3VsdF9y ZWxhdGlvbnMpOworCXJlbHMgPSBsaXN0X2NvbmNhdChyZWxzLCBlc3RhdGUtPmVzX3RyaWdfdGFy Z2V0X3JlbGF0aW9ucyk7CisKKwlmb3JlYWNoX25vZGUoUmVzdWx0UmVsSW5mbywgckluZm8sIHJl bHMpCisJeworCQlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0aSA9IHJJbmZvLT5yaV9UcmlnSW5z dHJ1bWVudDsKKworCQlpZiAodGkgPT0gTlVMTCB8fCBySW5mby0+cmlfVHJpZ0Rlc2MgPT0gTlVM TCkKKwkJCWNvbnRpbnVlOworCisJCWZvciAoaW50IG50ID0gMDsgbnQgPCBySW5mby0+cmlfVHJp Z0Rlc2MtPm51bXRyaWdnZXJzOyBudCsrKQorCQl7CisJCQlpZiAodGlbbnRdLmluc3RyLm5lZWRf c3RhY2spCisJCQkJSW5zdHJBY2N1bVN0YWNrKCZlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3Ry LCAmdGlbbnRdLmluc3RyKTsKKwkJfQorCX0KK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQb3N0 cHJvY2Vzc1BsYW4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGMxNTNk NWMxYzNiLi4wYjE4YTA1YzQzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAg LTY5NCw3ICs2OTQsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1c2UgYW5k IHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2UgY291bGQg c2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUn cwotCSAqIGxvb2tpbmcgYXQgcGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5 LgorCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFs bHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJ CQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAg LTgxOSwxMyArODE5LDEzIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW50CQkJaTsKIAogCQlpbnN0cnVtZW50YXRpb24gPSBz aG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgaW5zdHJ1bWVudGF0aW9uX2xlbik7Ci0JCWluc3Ry dW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vcHRpb25zID0gZXN0YXRlLT5lc19pbnN0cnVtZW50Owor CQlpbnN0cnVtZW50YXRpb24tPmluc3RydW1lbnRfb3B0aW9ucyA9IGVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudC0+aW5zdHJ1bWVudF9vcHRpb25zOwogCQlpbnN0cnVtZW50YXRpb24tPmluc3RydW1lbnRf b2Zmc2V0ID0gaW5zdHJ1bWVudF9vZmZzZXQ7CiAJCWluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtl cnMgPSBud29ya2VyczsKIAkJaW5zdHJ1bWVudGF0aW9uLT5udW1fcGxhbl9ub2RlcyA9IGUubm5v ZGVzOwogCQlpbnN0cnVtZW50ID0gR2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoaW5zdHJ1bWVudGF0 aW9uKTsKIAkJZm9yIChpID0gMDsgaSA8IG53b3JrZXJzICogZS5ubm9kZXM7ICsraSkKLQkJCUlu c3RySW5pdE5vZGUoJmluc3RydW1lbnRbaV0sIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQlJ bnN0ckluaXROb2RlKCZpbnN0cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3Ry dW1lbnRfb3B0aW9ucyk7CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKIAkJcGVpLT5pbnN0 cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CkBAIC0xMDc1LDE0ICsxMDc1LDI4IEBAIEV4 ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CWluc3RydW1lbnQgPSBHZXRJbnN0cnVtZW50YXRpb25BcnJheShpbnN0cnVtZW50YXRpb24pOwog CWluc3RydW1lbnQgKz0gaSAqIGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7CiAJZm9yIChu ID0gMDsgbiA8IGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7ICsrbikKKwl7CiAJCUluc3Ry QWdnTm9kZShwbGFuc3RhdGUtPmluc3RydW1lbnQsICZpbnN0cnVtZW50W25dKTsKIAorCQkvKgor CQkgKiBBbHNvIGFkZCB3b3JrZXIgV0FMIHVzYWdlIHRvIHRoZSBnbG9iYWwgcGdXYWxVc2FnZSBj b3VudGVyLgorCQkgKgorCQkgKiBXaGVuIHBlci1ub2RlIGluc3RydW1lbnRhdGlvbiBpcyBhY3Rp dmUsIHBhcmFsbGVsIHdvcmtlcnMgc2tpcAorCQkgKiBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVu dGF0aW9uICh0byBhdm9pZCBkb3VibGUtY291bnRpbmcgaW4KKwkJICogRVhQTEFJTiksIHNvIHBl ci1ub2RlIFdBTCBhY3Rpdml0eSBpcyBub3Qgcm9sbGVkIHVwIGludG8gdGhlCisJCSAqIHF1ZXJ5 LWxldmVsIHN0YXRzIHRoYXQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkgcmVjZWl2ZXMuIFdpdGhv dXQKKwkJICogdGhpcywgcGdXYWxVc2FnZSB3b3VsZCB1bmRlci1yZXBvcnQgV0FMIGdlbmVyYXRl ZCBieSBwYXJhbGxlbAorCQkgKiB3b3JrZXJzIHdoZW4gaW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2 ZS4KKwkJICovCisJCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCAmaW5zdHJ1bWVudFtuXS5pbnN0 ci53YWx1c2FnZSk7CisJfQorCiAJLyoKIAkgKiBBbHNvIHN0b3JlIHRoZSBwZXItd29ya2VyIGRl dGFpbC4KIAkgKgotCSAqIFdvcmtlciBpbnN0cnVtZW50YXRpb24gc2hvdWxkIGJlIGFsbG9jYXRl ZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIHRoZQotCSAqIHJlZ3VsYXIgaW5zdHJ1bWVudGF0aW9u IGluZm9ybWF0aW9uLCB3aGljaCBpcyB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQuCi0JICogU3dpdGNo IGludG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LgorCSAqIEVuc3VyZSB3b3JrZXIgaW5zdHJ1 bWVudGF0aW9uIGlzIGFsbG9jYXRlZCBpbiB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQuIFdlCisJICog ZG9uJ3QgbmVlZCB0byBwbGFjZSB0aGlzIGluIHRoZSBpbnN0cnVtZW50YXRpb24gY29udGV4dCBz aW5jZSBubyBtb3JlCisJICogc3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uIHdvcmsgaXMgYmVp bmcgZG9uZS4KIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5z dGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAJaWJ5dGVzID0gbXVsX3NpemUoaW5zdHJ1bWVu dGF0aW9uLT5udW1fd29ya2Vycywgc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRpb24pKTsKQEAgLTE0 NTYsNiArMTQ3MCw3IEBAIHZvaWQKIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIHsKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKKwlR dWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsK IAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKQEAgLTE1 MTYsNyArMTUzMSw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIAkgKiBsZWFkZXIsIHdoaWNoIGFsc28gZG9lc24ndCBjb3VudCBidWZmZXIgYWNj ZXNzZXMgYW5kIFdBTCBhY3Rpdml0eSB0aGF0CiAJICogb2NjdXIgZHVyaW5nIGV4ZWN1dG9yIHN0 YXJ0dXAuCiAJICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbi4gIElmIHdlIHNw ZWNpZmllZCBhIHR1cGxlIGJvdW5kLCBiZSBjYXJlZnVsIG5vdCB0byBkZW1hbmQKQEAgLTE1MzIs NyArMTU0Nyw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0 aW9uLiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgm YnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAog CQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQg aW5zdHJ1bWVudGF0aW9uIGRhdGEgaWYgYW55IGluc3RydW1lbnRhdGlvbiBvcHRpb25zIGFyZSBz ZXQuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZDk2ZDRmOTk0N2Iu LjZmMjkwOWExYmMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xMzgx LDcgKzEzODEsNyBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0 ZSwKIAl7CiAJCVJlc3VsdFJlbEluZm8gKnJyaSA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwog Ci0JCUluaXRSZXN1bHRSZWxJbmZvKHJyaSwgcmVsLCAwLCByb290UmVzdWx0UmVsSW5mbywgMCk7 CisJCUluaXRSZXN1bHRSZWxJbmZvKHJyaSwgcmVsLCAwLCByb290UmVzdWx0UmVsSW5mbywgTlVM TCk7CiAJCXByb3V0ZS0+bm9ubGVhZl9wYXJ0aXRpb25zW2Rpc3BhdGNoaWR4XSA9IHJyaTsKIAl9 CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwppbmRleCAxMzJmZTM3ZWY2MC4u MjFhZDFiMDRhNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMjMsNiAr MTIzLDggQEAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0 YXRlICpub2RlKTsKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxh blN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5T dGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CitzdGF0aWMgYm9vbCBFeGVjUmVtZW1iZXJOb2Rl SW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwor c3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0 YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc4 OCwxMCArNzkwLDEwIEBAIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwg dm9pZCAqY29udGV4dCkKIAkgKiBhdCBsZWFzdCBvbmNlIGFscmVhZHkuICBXZSBkb24ndCBleHBl Y3QgbXVjaCBDUFUgY29uc3VtcHRpb24gZHVyaW5nCiAJICogbm9kZSBzaHV0ZG93biwgYnV0IGlu IHRoZSBjYXNlIG9mIEdhdGhlciBvciBHYXRoZXIgTWVyZ2UsIHdlIG1heSBzaHV0CiAJICogZG93 biB3b3JrZXJzIGF0IHRoaXMgc3RhZ2UuICBJZiBzbywgdGhlaXIgYnVmZmVyIHVzYWdlIHdpbGwg Z2V0Ci0JICogcHJvcGFnYXRlZCBpbnRvIHBnQnVmZmVyVXNhZ2UgYXQgdGhpcyBwb2ludCwgYW5k IHdlIHdhbnQgdG8gbWFrZSBzdXJlCi0JICogdGhhdCBpdCBnZXRzIGFzc29jaWF0ZWQgd2l0aCB0 aGUgR2F0aGVyIG5vZGUuICBXZSBza2lwIHRoaXMgaWYgdGhlIG5vZGUKLQkgKiBoYXMgbmV2ZXIg YmVlbiBleGVjdXRlZCwgc28gYXMgdG8gYXZvaWQgaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVh cgotCSAqIHRoYXQgaXQgaGFzLgorCSAqIHByb3BhZ2F0ZWQgaW50byB0aGUgY3VycmVudCBpbnN0 cnVtZW50YXRpb24gc3RhY2sgZW50cnkgYXQgdGhpcyBwb2ludCwKKwkgKiBhbmQgd2Ugd2FudCB0 byBtYWtlIHN1cmUgdGhhdCBpdCBnZXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2F0aGVyIG5vZGUu CisJICogV2Ugc2tpcCB0aGlzIGlmIHRoZSBub2RlIGhhcyBuZXZlciBiZWVuIGV4ZWN1dGVkLCBz byBhcyB0byBhdm9pZAorCSAqIGluY29ycmVjdGx5IG1ha2luZyBpdCBhcHBlYXIgdGhhdCBpdCBo YXMuCiAJICovCiAJaWYgKG5vZGUtPmluc3RydW1lbnQgJiYgbm9kZS0+aW5zdHJ1bWVudC0+cnVu bmluZykKIAkJSW5zdHJTdGFydE5vZGUobm9kZS0+aW5zdHJ1bWVudCk7CkBAIC04MjksNiArODMx LDgwIEBAIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29u dGV4dCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1 bWVudGF0aW9uCisgKgorICogUmVnaXN0ZXIgYWxsIHBlci1ub2RlIGluc3RydW1lbnRhdGlvbiBl bnRyaWVzIGFzIHVuZmluYWxpemVkIGNoaWxkcmVuIG9mCisgKiB0aGUgZXhlY3V0b3IncyBpbnN0 cnVtZW50YXRpb24uIFRoaXMgaXMgbmVlZGVkIGZvciBhYm9ydCByZWNvdmVyeTogaWYgdGhlCisg KiBleGVjdXRvciBhYm9ydHMsIHdlIG5lZWQgdG8gd2FsayBlYWNoIHBlci1ub2RlIGVudHJ5IHRv IHJlY292ZXIgYnVmZmVyL1dBTAorICogZGF0YSBmcm9tIG5vZGVzIHRoYXQgbmV2ZXIgZ290IGZp bmFsaXplZCwgdGhhdCBzb21lb25lIG1pZ2h0IGJlIGludGVyZXN0ZWQKKyAqIGluIGFzIGFuIGFn Z3JlZ2F0ZS4KKyAqLwordm9pZAorRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbihQbGFu U3RhdGUgKm5vZGUsIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQpCit7CisJKHZvaWQpIEV4 ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKG5vZGUsIHBhcmVudCk7Cit9CisK K3N0YXRpYyBib29sCitFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFu U3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKnBh cmVudCA9IChRdWVyeUluc3RydW1lbnRhdGlvbiAqKSBjb250ZXh0OworCisJQXNzZXJ0KHBhcmVu dCAhPSBOVUxMKTsKKworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlm IChub2RlLT5pbnN0cnVtZW50KQorCQlJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChwYXJlbnQsICZu b2RlLT5pbnN0cnVtZW50LT5pbnN0cik7CisKKwlyZXR1cm4gcGxhbnN0YXRlX3RyZWVfd2Fsa2Vy KG5vZGUsIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyLCBjb250ZXh0KTsK K30KKworLyoKKyAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KKyAqCisgKiBBY2N1 bXVsYXRlIGluc3RydW1lbnRhdGlvbiBzdGF0cyBmcm9tIGFsbCBleGVjdXRpb24gbm9kZXMgdG8g dGhlaXIgcmVzcGVjdGl2ZQorICogcGFyZW50cyAob3IgdGhlIG9yaWdpbmFsIHBhcmVudCBpbnN0 cnVtZW50YXRpb24pLgorICoKKyAqIFRoaXMgbXVzdCBydW4gYWZ0ZXIgdGhlIGNsZWFudXAgZG9u ZSBieSBFeGVjU2h1dGRvd25Ob2RlLCBhbmQgbm90IHJlbHkgb24gYW55CisgKiByZXNvdXJjZXMg Y2xlYW5lZCB1cCBieSBpdC4gV2UgYWxzbyBleHBlY3Qgc2h1dGRvd24gYWN0aW9ucyB0byBoYXZl IG9jY3VycmVkLAorICogZS5nLiBwYXJhbGxlbCB3b3JrZXIgaW5zdHJ1bWVudGF0aW9uIHRvIGhh dmUgYmVlbiBhZGRlZCB0byB0aGUgbGVhZGVyLgorICovCit2b2lkCitFeGVjRmluYWxpemVOb2Rl SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwkodm9pZCkgRXhlY0ZpbmFsaXpl Tm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIobm9kZSwgaW5zdHJfc3RhY2suY3VycmVudCk7Cit9 CisKK3N0YXRpYyBib29sCitFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQ bGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJSW5zdHJ1bWVudGF0aW9uICpwYXJl bnQgPSAoSW5zdHJ1bWVudGF0aW9uICopIGNvbnRleHQ7CisKKwlBc3NlcnQocGFyZW50ICE9IE5V TEwpOworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBS ZWN1cnNlIGludG8gY2hpbGRyZW4gZmlyc3QgKGJvdHRvbS11cCBhY2N1bXVsYXRpb24pLCBwYXNz aW5nIG91cgorCSAqIGluc3RydW1lbnRhdGlvbiBhcyB0aGUgcGFyZW50IGNvbnRleHQuICBUaGlz IGVuc3VyZXMgY2hpbGRyZW4gY2FuCisJICogYWNjdW11bGF0ZSB0byB1cyBldmVuIGlmIHRoZXkg d2VyZSBuZXZlciBleGVjdXRlZCBieSB0aGUgbGVhZGVyIChlLmcuCisJICogbm9kZXMgYmVuZWF0 aCBHYXRoZXIgdGhhdCBvbmx5IHdvcmtlcnMgcmFuKS4KKwkgKi8KKwlwbGFuc3RhdGVfdHJlZV93 YWxrZXIobm9kZSwgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsCisJCQkJ CQkgIG5vZGUtPmluc3RydW1lbnQgPyAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIgOiBwYXJlbnQp OworCisJaWYgKCFub2RlLT5pbnN0cnVtZW50KQorCQlyZXR1cm4gZmFsc2U7CisKKwlJbnN0ckZp bmFsaXplQ2hpbGQoJm5vZGUtPmluc3RydW1lbnQtPmluc3RyLCBwYXJlbnQpOworCisJcmV0dXJu IGZhbHNlOworfQorCiAvKgogICogRXhlY1NldFR1cGxlQm91bmQKICAqCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCmluZGV4IDk4ODZhYjA2YjY5Li5jMjBkYzUwZjZmZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQp CiAJZXN0YXRlLT5lc190b3RhbF9wcm9jZXNzZWQgPSAwOwogCiAJZXN0YXRlLT5lc190b3BfZWZs YWdzID0gMDsKLQllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOworCWVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCA9IE5VTEw7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5l c19leHByY29udGV4dHMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9p bnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggNmE0 YTA4ZWJiMGMuLjY4OTI3MDZhODNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9p bnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0x NiwzMCArMTYsNDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9y L2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0 aWxzL3Jlc293bmVyLmgiCiAKLUJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7Ci1zdGF0aWMgQnVm ZmVyVXNhZ2Ugc2F2ZV9wZ0J1ZmZlclVzYWdlOwogV2FsVXNhZ2UJcGdXYWxVc2FnZTsKLXN0YXRp YyBXYWxVc2FnZSBzYXZlX3BnV2FsVXNhZ2U7CitJbnN0cnVtZW50YXRpb24gaW5zdHJfdG9wOwor SW5zdHJTdGFja1N0YXRlIGluc3RyX3N0YWNrID0gezAsIDAsIE5VTEwsICZpbnN0cl90b3B9Owog Ci1zdGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZm ZXJVc2FnZSAqYWRkKTsKLXN0YXRpYyB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdh bFVzYWdlICphZGQpOwordm9pZAorSW5zdHJTdGFja0dyb3codm9pZCkKK3sKKwlpbnQJCQlzcGFj ZSA9IGluc3RyX3N0YWNrLnN0YWNrX3NwYWNlOworCisJaWYgKGluc3RyX3N0YWNrLmVudHJpZXMg PT0gTlVMTCkKKwl7CisJCXNwYWNlID0gMTA7CQkJCS8qIEFsbG9jYXRlIHN1ZmZpY2llbnQgaW5p dGlhbCBzcGFjZSBmb3IKKwkJCQkJCQkJICogdHlwaWNhbCBhY3Rpdml0eSAqLworCQlpbnN0cl9z dGFjay5lbnRyaWVzID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJ CQkJCQkJCQkgc2l6ZW9mKEluc3RydW1lbnRhdGlvbiAqKSAqIHNwYWNlKTsKKwl9CisJZWxzZQor CXsKKwkJc3BhY2UgKj0gMjsKKwkJaW5zdHJfc3RhY2suZW50cmllcyA9IHJlcGFsbG9jX2FycmF5 KGluc3RyX3N0YWNrLmVudHJpZXMsIEluc3RydW1lbnRhdGlvbiAqLCBzcGFjZSk7CisJfQogCisJ LyogVXBkYXRlIHN0YWNrIHNwYWNlIGFmdGVyIGFsbG9jYXRpb24gc3VjY2VlZGVkIHRvIHByb3Rl Y3QgYWdhaW5zdCBPT01zICovCisJaW5zdHJfc3RhY2suc3RhY2tfc3BhY2UgPSBzcGFjZTsKK30K IAogLyogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwotSW5zdHJ1 bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9ucykKK3N0YXRpYyBp bmxpbmUgYm9vbAorSW5zdHJOZWVkU3RhY2soaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKLQlJ bnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jMChzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7 Ci0JSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKLQlyZXR1cm4g aW5zdHI7CisJcmV0dXJuIChpbnN0cnVtZW50X29wdGlvbnMgJiAoSU5TVFJVTUVOVF9CVUZGRVJT IHwgSU5TVFJVTUVOVF9XQUwpKSAhPSAwOwogfQogCiB2b2lkCiBJbnN0ckluaXRPcHRpb25zKElu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7Ci0JaW5zdHIt Pm5lZWRfYnVmdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJT KSAhPSAwOwotCWluc3RyLT5uZWVkX3dhbHVzYWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElO U1RSVU1FTlRfV0FMKSAhPSAwOworCWluc3RyLT5uZWVkX3N0YWNrID0gSW5zdHJOZWVkU3RhY2so aW5zdHJ1bWVudF9vcHRpb25zKTsKIAlpbnN0ci0+bmVlZF90aW1lciA9IChpbnN0cnVtZW50X29w dGlvbnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwOwogfQogCkBAIC01NCw0OSArNzAsMjk1IEBA IEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoaW5zdHItPnN0YXJ0dGltZSk7CiAJfQogCi0JaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdl KQotCQlpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOworCWlmIChpbnN0ci0+ bmVlZF9zdGFjaykKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworfQorCitzdGF0aWMgdm9pZAor SW5zdHJTdG9wVGltZXIoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwlpbnN0cl90aW1lCWVu ZHRpbWU7CiAKLQlpZiAoaW5zdHItPm5lZWRfd2FsdXNhZ2UpCi0JCWluc3RyLT53YWx1c2FnZV9z dGFydCA9IHBnV2FsVXNhZ2U7CisJLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhl IHRpbWVyIHdhcyByZXF1ZXN0ZWQgKi8KKwlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5z dGFydHRpbWUpKQorCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0 Iik7CisKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOworCUlOU1RSX1RJTUVfQUND VU1fRElGRihpbnN0ci0+dG90YWwsIGVuZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOworCisJSU5T VFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKIH0KIAogdm9pZAogSW5zdHJTdG9w KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JaW5zdHJfdGltZQllbmR0aW1lOworCWlmIChp bnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdG9wVGltZXIoaW5zdHIpOworCisJaWYgKGluc3Ry LT5uZWVkX3N0YWNrKQorCQlJbnN0clBvcFN0YWNrKGluc3RyKTsKK30KKworLyoKKyAqIFN0b3Bz IGluc3RydW1lbnRhdGlvbiwgZmluYWxpemVzIHRoZSBzdGFjayBlbnRyeSBhbmQgYWNjdW11bGF0 ZXMgdG8gaXRzIHBhcmVudC4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBpbnRlbnRpb25hbGx5IGFs bG93cyBwYXNzaW5nIGEgc3RhY2sgdGhhdCBpcyBub3QgdGhlIGN1cnJlbnQKKyAqIHRvcCwgYXMg Y2FuIGhhcHBlbiB3aXRoIFBHX0ZJTkFMTFksIG9yIHJlc291cmNlIG93bmVycywgd2hpY2ggZG9u J3QgaGF2ZSBhCisgKiBndWFyYW50ZWVkIGNsZWFudXAgb3JkZXIuCisgKgorICogV2UgYXJlIGNh cmVmdWwgaGVyZSB0byBhY2hpZXZlIHR3byBnb2FsczoKKyAqCisgKiAxKSBSZXNldCB0aGUgc3Rh Y2sgdG8gdGhlIHBhcmVudCBvZiB3aGljaGV2ZXIgb2YgdGhlIHJlbGVhc2VkIHN0YWNrIGVudHJp ZXMKKyAqICAgIGhhcyB0aGUgbG93ZXN0IGluZGV4CisgKiAyKSBBY2N1bXVsYXRlIGFsbCBpbnN0 cnVtZW50YXRpb24gdG8gdGhlIGN1cnJlbnRseSBhY3RpdmUgaW5zdHJ1bWVudGF0aW9uLAorICog ICAgc28gdGhhdCBjYWxsZXJzIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgYWN0aXZpdHksIGV2 ZW4gYWZ0ZXIgYW4gYWJvcnQKKyAqLwordm9pZAorSW5zdHJTdG9wRmluYWxpemUoSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKK3sKKwlpbnQJCQlpZHggPSAtMTsKKworCWZvciAoaW50IGkgPSBpbnN0 cl9zdGFjay5zdGFja19zaXplIC0gMTsgaSA+PSAwOyBpLS0pCisJeworCQlpZiAoaW5zdHJfc3Rh Y2suZW50cmllc1tpXSA9PSBpbnN0cikKKwkJeworCQkJaWR4ID0gaTsKKwkJCWJyZWFrOworCQl9 CisJfQorCisJaWYgKGlkeCA+PSAwKQorCXsKKwkJd2hpbGUgKGluc3RyX3N0YWNrLnN0YWNrX3Np emUgPiBpZHggKyAxKQorCQkJaW5zdHJfc3RhY2suc3RhY2tfc2l6ZS0tOworCisJCUluc3RyUG9w U3RhY2soaW5zdHIpOworCX0KIAotCS8qIGxldCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCiAJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQorCQlJbnN0 clN0b3BUaW1lcihpbnN0cik7CisKKwlJbnN0ckFjY3VtU3RhY2soaW5zdHJfc3RhY2suY3VycmVu dCwgaW5zdHIpOworfQorCisvKgorICogRmluYWxpemUgY2hpbGQgaW5zdHJ1bWVudGF0aW9uIGJ5 IGFjY3VtdWxhdGluZyBidWZmZXIvV0FMIHVzYWdlIHRvIHRoZQorICogcHJvdmlkZWQgaW5zdHJ1 bWVudGF0aW9uLCB3aGljaCBtYXkgYmUgdGhlIGN1cnJlbnQgZW50cnksIG9yIG9uZSB0aGUgY2Fs bGVyCisgKiB0cmVhdHMgYXMgYSBwYXJlbnQgYW5kIHdpbGwgYWRkIHRvIHRoZSB0b3RhbHMgbGF0 ZXIuCisgKgorICogQWxzbyBkZWxldGVzIHRoZSB1bmZpbmFsaXplZCBlbnRyeSB0byBhdm9pZCBk b3VibGUgY291bnRpbmcgaW4gYW4gYWJvcnQKKyAqIHNpdHVhdGlvbiwgZS5nLiBkdXJpbmcgZXhl Y3V0b3IgZmluaXNoLgorICovCit2b2lkCitJbnN0ckZpbmFsaXplQ2hpbGQoSW5zdHJ1bWVudGF0 aW9uICppbnN0ciwgSW5zdHJ1bWVudGF0aW9uICpwYXJlbnQpCit7CisJaWYgKGluc3RyLT5uZWVk X3N0YWNrKQogCXsKLQkJaWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkK LQkJCWVsb2coRVJST1IsICJJbnN0clN0b3AgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKwkJaWYg KCFkbGlzdF9ub2RlX2lzX2RldGFjaGVkKCZpbnN0ci0+dW5maW5hbGl6ZWRfZW50cnkpKQorCQkJ ZGxpc3RfZGVsZXRlX3Rob3JvdWdobHkoJmluc3RyLT51bmZpbmFsaXplZF9lbnRyeSk7CiAKLQkJ SU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZG KGluc3RyLT50b3RhbCwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CisJCUluc3RyQWNjdW1T dGFjayhwYXJlbnQsIGluc3RyKTsKKwl9Cit9CisKKworLyogUXVlcnkgaW5zdHJ1bWVudGF0aW9u IGhhbmRsaW5nICovCisKKy8qCisgKiBVc2UgUmVzb3VyY2VPd25lciBtZWNoYW5pc20gdG8gY29y cmVjdGx5IHJlc2V0IGluc3RyX3N0YWNrIG9uIGFib3J0LgorICovCitzdGF0aWMgdm9pZCBSZXNP d25lclJlbGVhc2VJbnN0cnVtZW50YXRpb24oRGF0dW0gcmVzKTsKK3N0YXRpYyBjb25zdCBSZXNv dXJjZU93bmVyRGVzYyBpbnN0cnVtZW50YXRpb25fcmVzb3duZXJfZGVzYyA9Cit7CisJLm5hbWUg PSAiaW5zdHJ1bWVudGF0aW9uIiwKKwkucmVsZWFzZV9waGFzZSA9IFJFU09VUkNFX1JFTEVBU0Vf QUZURVJfTE9DS1MsCisJLnJlbGVhc2VfcHJpb3JpdHkgPSBSRUxFQVNFX1BSSU9fSU5TVFJVTUVO VEFUSU9OLAorCS5SZWxlYXNlUmVzb3VyY2UgPSBSZXNPd25lclJlbGVhc2VJbnN0cnVtZW50YXRp b24sCisJLkRlYnVnUHJpbnQgPSBOVUxMLAkJCS8qIGRlZmF1bHQgbWVzc2FnZSBpcyBmaW5lICov Cit9OworCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3duZXJSZW1lbWJlckluc3RydW1l bnRhdGlvbihSZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3Ry KQoreworCVJlc291cmNlT3duZXJSZW1lbWJlcihvd25lciwgUG9pbnRlckdldERhdHVtKHFpbnN0 ciksICZpbnN0cnVtZW50YXRpb25fcmVzb3duZXJfZGVzYyk7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZAorUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1lbnRhdGlvbihSZXNvdXJjZU93bmVyIG93 bmVyLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQoreworCVJlc291cmNlT3duZXJGb3Jn ZXQob3duZXIsIFBvaW50ZXJHZXREYXR1bShxaW5zdHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293 bmVyX2Rlc2MpOworfQorCitzdGF0aWMgdm9pZAorUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0 aW9uKERhdHVtIHJlcykKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyID0gKFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICopIERhdHVtR2V0UG9pbnRlcihyZXMpOworCU1lbW9yeUNvbnRleHQg aW5zdHJfY3h0ID0gcWluc3RyLT5pbnN0cl9jeHQ7CisJZGxpc3RfbXV0YWJsZV9pdGVyIGl0ZXI7 CiAKLQkJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKKwkvKiBBY2N1bXVs YXRlIGRhdGEgZnJvbSBhbGwgdW5maW5hbGl6ZWQgY2hpbGQgZW50cmllcyAobm9kZXMsIHRyaWdn ZXJzKSAqLworCWRsaXN0X2ZvcmVhY2hfbW9kaWZ5KGl0ZXIsICZxaW5zdHItPnVuZmluYWxpemVk X2VudHJpZXMpCisJeworCQlJbnN0cnVtZW50YXRpb24gKmNoaWxkID0gZGxpc3RfY29udGFpbmVy KEluc3RydW1lbnRhdGlvbiwgdW5maW5hbGl6ZWRfZW50cnksIGl0ZXIuY3VyKTsKKworCQlJbnN0 ckFjY3VtU3RhY2soJnFpbnN0ci0+aW5zdHIsIGNoaWxkKTsKIAl9CiAKLQkvKiBBZGQgZGVsdGEg b2YgYnVmZmVyIHVzYWdlIHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoaW5z dHItPm5lZWRfYnVmdXNhZ2UpCi0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+YnVmdXNh Z2UsCi0JCQkJCQkJICZwZ0J1ZmZlclVzYWdlLCAmaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0KTsKKwkv KiBFbnN1cmUgdGhlIHN0YWNrIGlzIHJlc2V0IGFzIGV4cGVjdGVkLCBhbmQgd2UgYWNjdW11bGF0 ZSB0byB0aGUgcGFyZW50ICovCisJSW5zdHJTdG9wRmluYWxpemUoJnFpbnN0ci0+aW5zdHIpOwor CisJLyoKKwkgKiBEZXN0cm95IHRoZSBkZWRpY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQs IHdoaWNoIGZyZWVzIHRoZQorCSAqIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGFuZCBhbGwgY2hpbGQg YWxsb2NhdGlvbnMuCisJICovCisJTWVtb3J5Q29udGV4dERlbGV0ZShpbnN0cl9jeHQpOworfQor CitRdWVyeUluc3RydW1lbnRhdGlvbiAqCitJbnN0clF1ZXJ5QWxsb2MoaW50IGluc3RydW1lbnRf b3B0aW9ucykKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CisJTWVtb3J5Q29udGV4 dCBpbnN0cl9jeHQ7CisKKwkvKgorCSAqIFdoZW4gdGhlIGluc3RydW1lbnRhdGlvbiBzdGFjayBp cyB1c2VkLCBjcmVhdGUgYSBkZWRpY2F0ZWQgbWVtb3J5CisJICogY29udGV4dCBmb3IgdGhpcyBx dWVyeSdzIGluc3RydW1lbnRhdGlvbiBhbGxvY2F0aW9ucy4gVGhpcyBjb250ZXh0IGlzIGEKKwkg KiBjaGlsZCBvZiBUb3BNZW1vcnlDb250ZXh0IHNvIGl0IHN1cnZpdmVzIHRyYW5zYWN0aW9uIGFi b3J0IOKAlAorCSAqIFJlc291cmNlT3duZXIgcmVsZWFzZSBuZWVkcyB0byBhY2Nlc3MgaXQuCisJ ICoKKwkgKiBGb3Igc2ltcGxlciBjYXNlcyAodGltZXIvcm93cyBvbmx5KSwgdXNlIHRoZSBjdXJy ZW50IG1lbW9yeSBjb250ZXh0LgorCSAqCisJICogQWxsIGNoaWxkIGluc3RydW1lbnRhdGlvbiBh bGxvY2F0aW9ucyAobm9kZXMsIHRyaWdnZXJzLCBldGMpIG11c3QgYmUKKwkgKiBhbGxvY2F0ZWQg d2l0aGluIHRoaXMgY29udGV4dCB0byBlbnN1cmUgY29ycmVjdCBjbGVhbiB1cCBvbiBhYm9ydC4K KwkgKi8KKwlpZiAoSW5zdHJOZWVkU3RhY2soaW5zdHJ1bWVudF9vcHRpb25zKSkKKwkJaW5zdHJf Y3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJ ICAiSW5zdHJ1bWVudGF0aW9uIiwKKwkJCQkJCQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK KwllbHNlCisJCWluc3RyX2N4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCi0JaWYgKGluc3Ry LT5uZWVkX3dhbHVzYWdlKQotCQlXYWxVc2FnZUFjY3VtRGlmZigmaW5zdHItPndhbHVzYWdlLAot CQkJCQkJICAmcGdXYWxVc2FnZSwgJmluc3RyLT53YWx1c2FnZV9zdGFydCk7CisJaW5zdHIgPSBN ZW1vcnlDb250ZXh0QWxsb2NaZXJvKGluc3RyX2N4dCwgc2l6ZW9mKFF1ZXJ5SW5zdHJ1bWVudGF0 aW9uKSk7CisJaW5zdHItPmluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRfb3B0aW9uczsK KwlpbnN0ci0+aW5zdHJfY3h0ID0gaW5zdHJfY3h0OworCisJSW5zdHJJbml0T3B0aW9ucygmaW5z dHItPmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOworCWRsaXN0X2luaXQoJmluc3RyLT51bmZp bmFsaXplZF9lbnRyaWVzKTsKKworCXJldHVybiBpbnN0cjsKK30KKwordm9pZAorSW5zdHJRdWVy eVN0YXJ0KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIpCit7CisJSW5zdHJTdGFydCgmcWlu c3RyLT5pbnN0cik7CisKKwlpZiAocWluc3RyLT5pbnN0ci5uZWVkX3N0YWNrKQorCXsKKwkJQXNz ZXJ0KEN1cnJlbnRSZXNvdXJjZU93bmVyICE9IE5VTEwpOworCQlxaW5zdHItPm93bmVyID0gQ3Vy cmVudFJlc291cmNlT3duZXI7CisKKwkJUmVzb3VyY2VPd25lckVubGFyZ2UocWluc3RyLT5vd25l cik7CisJCVJlc291cmNlT3duZXJSZW1lbWJlckluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVy LCBxaW5zdHIpOworCX0KK30KKwordm9pZAorSW5zdHJRdWVyeVN0b3AoUXVlcnlJbnN0cnVtZW50 YXRpb24gKnFpbnN0cikKK3sKKwlJbnN0clN0b3AoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFp bnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwl7CisJCUFzc2VydChxaW5zdHItPm93bmVyICE9IE5V TEwpOworCQlSZXNvdXJjZU93bmVyRm9yZ2V0SW5zdHJ1bWVudGF0aW9uKHFpbnN0ci0+b3duZXIs IHFpbnN0cik7CisJCXFpbnN0ci0+b3duZXIgPSBOVUxMOworCX0KK30KKwordm9pZAorSW5zdHJR dWVyeVN0b3BGaW5hbGl6ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQoreworCUluc3Ry U3RvcEZpbmFsaXplKCZxaW5zdHItPmluc3RyKTsKKworCWlmICghcWluc3RyLT5pbnN0ci5uZWVk X3N0YWNrKQorCQlyZXR1cm47CisKKwlBc3NlcnQocWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwlS ZXNvdXJjZU93bmVyRm9yZ2V0SW5zdHJ1bWVudGF0aW9uKHFpbnN0ci0+b3duZXIsIHFpbnN0cik7 CisJcWluc3RyLT5vd25lciA9IE5VTEw7CisKKwkvKgorCSAqIFJlcGFyZW50IHRoZSBkZWRpY2F0 ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgdW5kZXIgdGhlIGN1cnJlbnQgbWVtb3J5CisJICog Y29udGV4dCwgc28gdGhhdCBpdHMgbGlmZXRpbWUgaXMgbm93IHRpZWQgdG8gdGhlIGNhbGxlcidz IGNvbnRleHQKKwkgKiByYXRoZXIgdGhhbiBUb3BNZW1vcnlDb250ZXh0LgorCSAqLworCU1lbW9y eUNvbnRleHRTZXRQYXJlbnQocWluc3RyLT5pbnN0cl9jeHQsIEN1cnJlbnRNZW1vcnlDb250ZXh0 KTsKK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgY2hpbGQgSW5zdHJ1bWVudGF0aW9uIGVudHJ5IGZv ciBhYm9ydCBwcm9jZXNzaW5nLgorICoKKyAqIE9uIGFib3J0LCBSZXNPd25lclJlbGVhc2VJbnN0 cnVtZW50YXRpb24gd2lsbCB3YWxrIHRoZSBwYXJlbnQncyBsaXN0IHRvCisgKiByZWNvdmVyIGJ1 ZmZlci9XQUwgZGF0YSBmcm9tIGVudHJpZXMgdGhhdCB3ZXJlIG5ldmVyIGZpbmFsaXplZCwgaW4g b3JkZXIgZm9yCisgKiBhZ2dyZWdhdGUgdG90YWxzIHRvIGJlIGFjY3VyYXRlIGRlc3BpdGUgdGhl IHF1ZXJ5IGVycm9yaW5nIG91dC4KKyAqLwordm9pZAorSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQo UXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwgSW5zdHJ1bWVudGF0aW9uICpjaGlsZCkKK3sK KwlpZiAoY2hpbGQtPm5lZWRfc3RhY2spCisJCWRsaXN0X3B1c2hfaGVhZCgmcGFyZW50LT51bmZp bmFsaXplZF9lbnRyaWVzLCAmY2hpbGQtPnVuZmluYWxpemVkX2VudHJ5KTsKK30KKworLyogc3Rh cnQgaW5zdHJ1bWVudGF0aW9uIGR1cmluZyBwYXJhbGxlbCBleGVjdXRvciBzdGFydHVwICovCitR dWVyeUluc3RydW1lbnRhdGlvbiAqCitJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQorewor CVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVO VF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOworCisJSW5zdHJRdWVyeVN0YXJ0KHFpbnN0cik7 CisJcmV0dXJuIHFpbnN0cjsKK30KKworLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4 ZWN1dG9yIHNodXRkb3duICovCit2b2lkCitJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2Fs dXNhZ2UpCit7CisJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShxaW5zdHIpOworCW1lbWNweShidWZ1 c2FnZSwgJnFpbnN0ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1l bWNweSh3YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkp OworfQorCisvKgorICogQWNjdW11bGF0ZSB3b3JrIGRvbmUgYnkgcGFyYWxsZWwgd29ya2VycyBp biB0aGUgbGVhZGVyJ3Mgc3RhdHMuCisgKgorICogTm90ZSB0aGF0IHdoYXQgZ2V0cyBhZGRlZCBo ZXJlIGVmZmVjdGl2ZWx5IGRlcGVuZHMgb24gd2hldGhlciBwZXItbm9kZQorICogaW5zdHJ1bWVu dGF0aW9uIGlzIGFjdGl2ZS4gSWYgaXQncyBhY3RpdmUgdGhlIHBhcmFsbGVsIHdvcmtlciBpbnRl bnRpb25hbGx5CisgKiBza2lwcyBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIG9uIGV4 ZWN1dG9yIHNodXRkb3duLCBiZWNhdXNlIGl0IHdvdWxkCisgKiBjYXVzZSBkb3VibGUgY291bnRp bmcuIEluc3RlYWQsIHRoaXMgb25seSBhY2N1bXVsYXRlcyBhbnkgZXh0cmEgYWN0aXZpdHkKKyAq IG91dHNpZGUgb2Ygbm9kZXMuCisgKgorICogT3RoZXJ3aXNlIHRoaXMgaXMgcmVzcG9uc2libGUg Zm9yIG1ha2luZyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIHF1ZXJ5CisgKiBhY3Rpdml0eSBpcyBh Y2N1bXVsYXRlZC4KKyAqLwordm9pZAorSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNh Z2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCit7CisJQnVmZmVyVXNhZ2VBZGQoJmlu c3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7CisJV2FsVXNhZ2VBZGQoJmlu c3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisKKwlXYWxVc2FnZUFkZCgm cGdXYWxVc2FnZSwgd2FsdXNhZ2UpOwogfQogCiAvKiBOb2RlIGluc3RydW1lbnRhdGlvbiBoYW5k bGluZyAqLwogCiAvKiBBbGxvY2F0ZSBuZXcgbm9kZSBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJl ICovCiBOb2RlSW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2NOb2RlKGludCBpbnN0cnVtZW50 X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kZSkKK0luc3RyQWxsb2NOb2RlKFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIsIGJvb2wgYXN5bmNfbW9kZSkKIHsKLQlOb2RlSW5zdHJ1bWVudGF0aW9u ICppbnN0ciA9IHBhbGxvYyhzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOworCU5vZGVJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gTWVtb3J5Q29udGV4dEFsbG9jKHFpbnN0ci0+aW5zdHJfY3h0 LCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwogCi0JSW5zdHJJbml0Tm9kZShpbnN0ciwg aW5zdHJ1bWVudF9vcHRpb25zKTsKKwlJbnN0ckluaXROb2RlKGluc3RyLCBxaW5zdHItPmluc3Ry dW1lbnRfb3B0aW9ucyk7CiAJaW5zdHItPmFzeW5jX21vZGUgPSBhc3luY19tb2RlOwogCiAJcmV0 dXJuIGluc3RyOwpAQCAtMTE3LDYgKzM3OSw3IEBAIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyKQogCUluc3RyU3RhcnQoJmluc3RyLT5pbnN0cik7CiB9CiAKKwogLyog RXhpdCBmcm9tIGEgcGxhbiBub2RlICovCiB2b2lkCiBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKQEAgLTE0NiwxNCArNDA5LDEyIEBAIElu c3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQog CQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOwogCX0KIAotCS8q IEFkZCBkZWx0YSBvZiBidWZmZXIgdXNhZ2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFscyAq LwotCWlmIChpbnN0ci0+aW5zdHIubmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURp ZmYoJmluc3RyLT5pbnN0ci5idWZ1c2FnZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0 ci0+aW5zdHIuYnVmdXNhZ2Vfc3RhcnQpOwotCi0JaWYgKGluc3RyLT5pbnN0ci5uZWVkX3dhbHVz YWdlKQotCQlXYWxVc2FnZUFjY3VtRGlmZigmaW5zdHItPmluc3RyLndhbHVzYWdlLAotCQkJCQkJ ICAmcGdXYWxVc2FnZSwgJmluc3RyLT5pbnN0ci53YWx1c2FnZV9zdGFydCk7CisJLyoKKwkgKiBP bmx5IHBvcCB0aGUgc3RhY2ssIGFjY3VtdWxhdGlvbiBydW5zIGluCisJICogRXhlY0ZpbmFsaXpl Tm9kZUluc3RydW1lbnRhdGlvbgorCSAqLworCWlmIChpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykK KwkJSW5zdHJQb3BTdGFjaygmaW5zdHItPmluc3RyKTsKIAogCS8qIElzIHRoaXMgdGhlIGZpcnN0 IHR1cGxlIG9mIHRoaXMgY3ljbGU/ICovCiAJaWYgKCFpbnN0ci0+cnVubmluZykKQEAgLTE4OCw4 ICs0NDksOCBAQCBJbnN0ckVuZExvb3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJaWYg KCFpbnN0ci0+cnVubmluZykKIAkJcmV0dXJuOwogCi0JaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8o aW5zdHItPmluc3RyLnN0YXJ0dGltZSkpCi0JCWVsb2coRVJST1IsICJJbnN0ckVuZExvb3AgY2Fs bGVkIG9uIHJ1bm5pbmcgbm9kZSIpOworCS8qIEVuc3VyZSBJbnN0ck5vZGVTdG9wIHdhcyBjYWxs ZWQgKi8KKwlBc3NlcnQoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUp KTsKIAogCS8qIEFjY3VtdWxhdGUgcGVyLWN5Y2xlIHN0YXRpc3RpY3MgaW50byB0b3RhbHMgKi8K IAlJTlNUUl9USU1FX0FERChpbnN0ci0+c3RhcnR1cCwgaW5zdHItPmZpcnN0dHVwbGUpOwpAQCAt MjMwLDY3ICs0OTEsNzMgQEAgSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwg Tm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKQogCWRzdC0+bmZpbHRlcmVkMiArPSBhZGQtPm5maWx0 ZXJlZDI7CiAKIAkvKiBBZGQgZGVsdGEgb2YgYnVmZmVyIHVzYWdlIHNpbmNlIGVudHJ5IHRvIG5v ZGUncyB0b3RhbHMgKi8KLQlpZiAoZHN0LT5pbnN0ci5uZWVkX2J1ZnVzYWdlKQotCQlCdWZmZXJV c2FnZUFkZCgmZHN0LT5pbnN0ci5idWZ1c2FnZSwgJmFkZC0+aW5zdHIuYnVmdXNhZ2UpOwotCi0J aWYgKGRzdC0+aW5zdHIubmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBZGQoJmRzdC0+aW5zdHIu d2FsdXNhZ2UsICZhZGQtPmluc3RyLndhbHVzYWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX3N0 YWNrKQorCQlJbnN0ckFjY3VtU3RhY2soJmRzdC0+aW5zdHIsICZhZGQtPmluc3RyKTsKIH0KIAog LyogVHJpZ2dlciBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKgotSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMp CitJbnN0ckFsbG9jVHJpZ2dlcihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBpbnQgbikK IHsKLQlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyID0gcGFsbG9jMChuICogc2l6ZW9m KFRyaWdnZXJJbnN0cnVtZW50YXRpb24pKTsKKwlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2lu c3RyOwogCWludAkJCWk7CiAKKwkvKgorCSAqIEFsbG9jYXRlIGluIHRoZSBxdWVyeSdzIGRlZGlj YXRlZCBpbnN0cnVtZW50YXRpb24gY29udGV4dCBzbyBhbGwKKwkgKiBpbnN0cnVtZW50YXRpb24g ZGF0YSBpcyBncm91cGVkIHRvZ2V0aGVyIGFuZCBjbGVhbmVkIHVwIGFzIGEgdW5pdC4KKwkgKi8K KwlBc3NlcnQocWluc3RyICE9IE5VTEwgJiYgcWluc3RyLT5pbnN0cl9jeHQgIT0gTlVMTCk7CisJ dGdpbnN0ciA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8ocWluc3RyLT5pbnN0cl9jeHQsCisJCQkJ CQkJCQkgbiAqIHNpemVvZihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKSk7CisKIAlmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKQotCQlJbnN0ckluaXRPcHRpb25zKCZ0Z2luc3RyW2ldLmluc3RyLCBpbnN0 cnVtZW50X29wdGlvbnMpOworCQlJbnN0ckluaXRPcHRpb25zKCZ0Z2luc3RyW2ldLmluc3RyLCBx aW5zdHItPmluc3RydW1lbnRfb3B0aW9ucyk7CiAKIAlyZXR1cm4gdGdpbnN0cjsKIH0KIAogdm9p ZAotSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cikKK0lu c3RyU3RhcnRUcmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIFRyaWdnZXJJbnN0 cnVtZW50YXRpb24gKnRnaW5zdHIpCiB7CiAJSW5zdHJTdGFydCgmdGdpbnN0ci0+aW5zdHIpOwor CisJLyoKKwkgKiBPbiBmaXJzdCBjYWxsLCByZWdpc3RlciB3aXRoIHRoZSBwYXJlbnQgUXVlcnlJ bnN0cnVtZW50YXRpb24gZm9yIGFib3J0CisJICogcmVjb3ZlcnkuCisJICovCisJaWYgKHFpbnN0 ciAmJiB0Z2luc3RyLT5pbnN0ci5uZWVkX3N0YWNrICYmCisJCWRsaXN0X25vZGVfaXNfZGV0YWNo ZWQoJnRnaW5zdHItPmluc3RyLnVuZmluYWxpemVkX2VudHJ5KSkKKwkJZGxpc3RfcHVzaF9oZWFk KCZxaW5zdHItPnVuZmluYWxpemVkX2VudHJpZXMsCisJCQkJCQkmdGdpbnN0ci0+aW5zdHIudW5m aW5hbGl6ZWRfZW50cnkpOwogfQogCiB2b2lkCiBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0 cnVtZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQogeworCS8qCisJICogVGhpcyB0cmln Z2VyIG1heSBiZSBjYWxsZWQgYWdhaW4sIHNvIHdlIGRvbid0IGZpbmFsaXplIGluc3RydW1lbnRh dGlvbgorCSAqIGhlcmUuIEFjY3VtdWxhdGlvbiB0byB0aGUgcGFyZW50IGhhcHBlbnMgYXQgRXhl Y3V0b3JGaW5pc2ggdGhyb3VnaAorCSAqIEV4ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRp b24uCisJICovCiAJSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0cik7CiAJdGdpbnN0ci0+ZmlyaW5n cyArPSBmaXJpbmdzOwogfQogCi0vKiBub3RlIGN1cnJlbnQgdmFsdWVzIGR1cmluZyBwYXJhbGxl bCBleGVjdXRvciBzdGFydHVwICovCiB2b2lkCi1JbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lk KQorSW5zdHJBY2N1bVN0YWNrKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24g KmFkZCkKIHsKLQlzYXZlX3BnQnVmZmVyVXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOwotCXNhdmVfcGdX YWxVc2FnZSA9IHBnV2FsVXNhZ2U7Ci19CisJQXNzZXJ0KGRzdCAhPSBOVUxMKTsKKwlBc3NlcnQo YWRkICE9IE5VTEwpOwogCi0vKiByZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Ig c2h1dGRvd24gKi8KLXZvaWQKLUluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVm dXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQltZW1zZXQoYnVmdXNhZ2UsIDAsIHNpemVv ZihCdWZmZXJVc2FnZSkpOwotCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKGJ1ZnVzYWdlLCAmcGdCdWZm ZXJVc2FnZSwgJnNhdmVfcGdCdWZmZXJVc2FnZSk7Ci0JbWVtc2V0KHdhbHVzYWdlLCAwLCBzaXpl b2YoV2FsVXNhZ2UpKTsKLQlXYWxVc2FnZUFjY3VtRGlmZih3YWx1c2FnZSwgJnBnV2FsVXNhZ2Us ICZzYXZlX3BnV2FsVXNhZ2UpOwotfQorCWlmICghYWRkLT5uZWVkX3N0YWNrKQorCQlyZXR1cm47 CiAKLS8qIGFjY3VtdWxhdGUgd29yayBkb25lIGJ5IHdvcmtlcnMgaW4gbGVhZGVyJ3Mgc3RhdHMg Ki8KLXZvaWQKLUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwg V2FsVXNhZ2UgKndhbHVzYWdlKQotewotCUJ1ZmZlclVzYWdlQWRkKCZwZ0J1ZmZlclVzYWdlLCBi dWZ1c2FnZSk7Ci0JV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsIHdhbHVzYWdlKTsKKwlCdWZmZXJV c2FnZUFkZCgmZHN0LT5idWZ1c2FnZSwgJmFkZC0+YnVmdXNhZ2UpOworCVdhbFVzYWdlQWRkKCZk c3QtPndhbHVzYWdlLCAmYWRkLT53YWx1c2FnZSk7CiB9CiAKIC8qIGRzdCArPSBhZGQgKi8KLXN0 YXRpYyB2b2lkCit2b2lkCiBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBC dWZmZXJVc2FnZSAqYWRkKQogewogCWRzdC0+c2hhcmVkX2Jsa3NfaGl0ICs9IGFkZC0+c2hhcmVk X2Jsa3NfaGl0OwpAQCAtMzExLDM5ICs1NzgsOSBAQCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2Fn ZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKQogCUlOU1RSX1RJTUVfQUREKGRzdC0+dGVt cF9ibGtfd3JpdGVfdGltZSwgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1lKTsKIH0KIAotLyogZHN0 ICs9IGFkZCAtIHN1YiAqLworLyogZHN0ICs9IGFkZCAqLwogdm9pZAotQnVmZmVyVXNhZ2VBY2N1 bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKLQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICphZGQsCi0J CQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqc3ViKQotewotCWRzdC0+c2hhcmVkX2Jsa3NfaGl0ICs9 IGFkZC0+c2hhcmVkX2Jsa3NfaGl0IC0gc3ViLT5zaGFyZWRfYmxrc19oaXQ7Ci0JZHN0LT5zaGFy ZWRfYmxrc19yZWFkICs9IGFkZC0+c2hhcmVkX2Jsa3NfcmVhZCAtIHN1Yi0+c2hhcmVkX2Jsa3Nf cmVhZDsKLQlkc3QtPnNoYXJlZF9ibGtzX2RpcnRpZWQgKz0gYWRkLT5zaGFyZWRfYmxrc19kaXJ0 aWVkIC0gc3ViLT5zaGFyZWRfYmxrc19kaXJ0aWVkOwotCWRzdC0+c2hhcmVkX2Jsa3Nfd3JpdHRl biArPSBhZGQtPnNoYXJlZF9ibGtzX3dyaXR0ZW4gLSBzdWItPnNoYXJlZF9ibGtzX3dyaXR0ZW47 Ci0JZHN0LT5sb2NhbF9ibGtzX2hpdCArPSBhZGQtPmxvY2FsX2Jsa3NfaGl0IC0gc3ViLT5sb2Nh bF9ibGtzX2hpdDsKLQlkc3QtPmxvY2FsX2Jsa3NfcmVhZCArPSBhZGQtPmxvY2FsX2Jsa3NfcmVh ZCAtIHN1Yi0+bG9jYWxfYmxrc19yZWFkOwotCWRzdC0+bG9jYWxfYmxrc19kaXJ0aWVkICs9IGFk ZC0+bG9jYWxfYmxrc19kaXJ0aWVkIC0gc3ViLT5sb2NhbF9ibGtzX2RpcnRpZWQ7Ci0JZHN0LT5s b2NhbF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5sb2NhbF9ibGtzX3dyaXR0ZW4gLSBzdWItPmxvY2Fs X2Jsa3Nfd3JpdHRlbjsKLQlkc3QtPnRlbXBfYmxrc19yZWFkICs9IGFkZC0+dGVtcF9ibGtzX3Jl YWQgLSBzdWItPnRlbXBfYmxrc19yZWFkOwotCWRzdC0+dGVtcF9ibGtzX3dyaXR0ZW4gKz0gYWRk LT50ZW1wX2Jsa3Nfd3JpdHRlbiAtIHN1Yi0+dGVtcF9ibGtzX3dyaXR0ZW47Ci0JSU5TVFJfVElN RV9BQ0NVTV9ESUZGKGRzdC0+c2hhcmVkX2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hh cmVkX2Jsa19yZWFkX3RpbWUsIHN1Yi0+c2hhcmVkX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RSX1RJ TUVfQUNDVU1fRElGRihkc3QtPnNoYXJlZF9ibGtfd3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT5z aGFyZWRfYmxrX3dyaXRlX3RpbWUsIHN1Yi0+c2hhcmVkX2Jsa193cml0ZV90aW1lKTsKLQlJTlNU Ul9USU1FX0FDQ1VNX0RJRkYoZHN0LT5sb2NhbF9ibGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQt PmxvY2FsX2Jsa19yZWFkX3RpbWUsIHN1Yi0+bG9jYWxfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJf VElNRV9BQ0NVTV9ESUZGKGRzdC0+bG9jYWxfYmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+ bG9jYWxfYmxrX3dyaXRlX3RpbWUsIHN1Yi0+bG9jYWxfYmxrX3dyaXRlX3RpbWUpOwotCUlOU1RS X1RJTUVfQUNDVU1fRElGRihkc3QtPnRlbXBfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRkLT50 ZW1wX2Jsa19yZWFkX3RpbWUsIHN1Yi0+dGVtcF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9USU1F X0FDQ1VNX0RJRkYoZHN0LT50ZW1wX2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQtPnRlbXBf YmxrX3dyaXRlX3RpbWUsIHN1Yi0+dGVtcF9ibGtfd3JpdGVfdGltZSk7Ci19Ci0KLS8qIGhlbHBl ciBmdW5jdGlvbnMgZm9yIFdBTCB1c2FnZSBhY2N1bXVsYXRpb24gKi8KLXN0YXRpYyB2b2lkCi1X YWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxVc2FnZSAqYWRkKQorV2FsVXNhZ2VBZGQoV2Fs VXNhZ2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCkKIHsKIAlkc3QtPndhbF9ieXRlcyArPSBh ZGQtPndhbF9ieXRlczsKIAlkc3QtPndhbF9yZWNvcmRzICs9IGFkZC0+d2FsX3JlY29yZHM7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAyZDc3MDg4MDVhNi4u ZjY1NTAzNWUyMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtOTAzLDcgKzkwMyw3IEBAIGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24oTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpyZWwpCiAJICogVXNlIFJlbGF0aW9uIG9wZW5lZCBieSBsb2dpY2FscmVwX3Jl bF9vcGVuKCkgaW5zdGVhZCBvZiBvcGVuaW5nIGl0CiAJICogYWdhaW4uCiAJICovCi0JSW5pdFJl c3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywgcmVsLT5sb2NhbHJlbCwgMSwgTlVMTCwgMCk7CisJ SW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywgcmVsLT5sb2NhbHJlbCwgMSwgTlVMTCwg TlVMTCk7CiAKIAkvKgogCSAqIFdlIHB1dCB0aGUgUmVzdWx0UmVsSW5mbyBpbiB0aGUgZXNfb3Bl bmVkX3Jlc3VsdF9yZWxhdGlvbnMgbGlzdCwgZXZlbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYwppbmRleCBkZmEzN2U1ZWQ0NC4uNDFhMGJhYTM0NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jCkBAIC0xMjY5LDkgKzEyNjksOSBAQCBQaW5CdWZmZXJGb3JCbG9jayhSZWxh dGlvbiByZWwsCiAJaWYgKHJlbCkKIAl7CiAJCS8qCi0JCSAqIFdoaWxlIHBnQnVmZmVyVXNhZ2Un cyAicmVhZCIgY291bnRlciBpc24ndCBidW1wZWQgdW5sZXNzIHdlIHJlYWNoCi0JCSAqIFdhaXRS ZWFkQnVmZmVycygpIChzbywgbm90IGZvciBoaXRzLCBhbmQgbm90IGZvciBidWZmZXJzIHRoYXQg YXJlCi0JCSAqIHplcm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBzdGF0cyBhbHdheXMg Y291bnQgdGhlbS4KKwkJICogV2hpbGUgdGhlIGN1cnJlbnQgYnVmZmVyIHVzYWdlICJyZWFkIiBj b3VudGVyIGlzbid0IGJ1bXBlZCB1bmxlc3MKKwkJICogd2UgcmVhY2ggV2FpdFJlYWRCdWZmZXJz KCkgKHNvLCBub3QgZm9yIGhpdHMsIGFuZCBub3QgZm9yIGJ1ZmZlcnMKKwkJICogdGhhdCBhcmUg emVyb2VkIGluc3RlYWQpLCB0aGUgcGVyLXJlbGF0aW9uIHN0YXRzIGFsd2F5cyBjb3VudCB0aGVt LgogCQkgKi8KIAkJcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCk7CiAJCWlmICgqZm91bmRQ dHIpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDllN2E4OGVjMGQw Li42MDQwMGYwYzgxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAg LTExNCw5ICsxMTQsOSBAQCBwZ3N0YXRfcHJlcGFyZV9pb190aW1lKGJvb2wgdHJhY2tfaW9fZ3Vj KQogICogcGdfc3RhdF9kYXRhYmFzZSBvbmx5IGNvdW50cyBibG9jayByZWFkIGFuZCB3cml0ZSB0 aW1lcywgdGhlc2UgYXJlIGRvbmUgZm9yCiAgKiBJT09QX1JFQUQsIElPT1BfV1JJVEUgYW5kIElP T1BfRVhURU5ELgogICoKLSAqIHBnQnVmZmVyVXNhZ2UgaXMgdXNlZCBmb3IgRVhQTEFJTi4gIHBn QnVmZmVyVXNhZ2UgaGFzIHdyaXRlIGFuZCByZWFkIHN0YXRzCi0gKiBmb3Igc2hhcmVkLCBsb2Nh bCBhbmQgdGVtcG9yYXJ5IGJsb2Nrcy4gIHBnX3N0YXRfaW8gZG9lcyBub3QgdHJhY2sgdGhlCi0g KiBhY3Rpdml0eSBvZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0aGVzZSBhcmUgaWdub3JlZCBoZXJl LgorICogRXhlY3V0b3IgaW5zdHJ1bWVudGF0aW9uIGlzIHVzZWQgZm9yIEVYUExBSU4uIEJ1ZmZl ciB1c2FnZSB0cmFja2VkIHRoZXJlIGhhcworICogd3JpdGUgYW5kIHJlYWQgc3RhdHMgZm9yIHNo YXJlZCwgbG9jYWwgYW5kIHRlbXBvcmFyeSBibG9ja3MuIHBnX3N0YXRfaW8KKyAqIGRvZXMgbm90 IHRyYWNrIHRoZSBhY3Rpdml0eSBvZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0aGVzZSBhcmUgaWdu b3JlZCBoZXJlLgogICovCiB2b2lkCiBwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09iamVjdCBp b19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXhwbGFpbl9kci5oCmluZGV4IGY5OGVhYWUxODY0Li5mYTk4ZDI5NTg5ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9kci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW5fZHIuaApAQCAtMjMsMTEgKzIzLDEwIEBAIHR5cGVkZWYgc3RydWN0IEV4cGxh aW5TdGF0ZSBFeHBsYWluU3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBTZXJpYWxpemVNZXRyaWNzCiB7 CiAJdWludDY0CQlieXRlc1NlbnQ7CQkvKiAjIG9mIGJ5dGVzIHNlcmlhbGl6ZWQgKi8KLQlpbnN0 cl90aW1lCXRpbWVTcGVudDsJCS8qIHRpbWUgc3BlbnQgc2VyaWFsaXppbmcgKi8KLQlCdWZmZXJV c2FnZSBidWZmZXJVc2FnZTsJLyogYnVmZmVycyBhY2Nlc3NlZCBkdXJpbmcgc2VyaWFsaXphdGlv biAqLworCUluc3RydW1lbnRhdGlvbiBpbnN0cjsJCS8qIHBlci10dXBsZSB0aW1pbmcvYnVmZmVy IG1lYXN1cmVtZW50ICovCiB9IFNlcmlhbGl6ZU1ldHJpY3M7CiAKIGV4dGVybiBEZXN0UmVjZWl2 ZXIgKkNyZWF0ZUV4cGxhaW5TZXJpYWxpemVEZXN0UmVjZWl2ZXIoRXhwbGFpblN0YXRlICplcyk7 Ci1leHRlcm4gU2VyaWFsaXplTWV0cmljcyBHZXRTZXJpYWxpemF0aW9uTWV0cmljcyhEZXN0UmVj ZWl2ZXIgKmRlc3QpOworZXh0ZXJuIFNlcmlhbGl6ZU1ldHJpY3MgKkdldFNlcmlhbGl6YXRpb25N ZXRyaWNzKERlc3RSZWNlaXZlciAqZGVzdCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNj LmgKaW5kZXggZDNhNTcyNDI4NDQuLjM0MDAyOWEyMDM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNj LmgKQEAgLTUxLDggKzUxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhpcyBm aWVsZCBpcyBzZXQgYnkgRXhlY3V0ZVBsYW4gKi8KIAlib29sCQlhbHJlYWR5X2V4ZWN1dGVkOwkv KiB0cnVlIGlmIHByZXZpb3VzbHkgZXhlY3V0ZWQgKi8KIAotCS8qIFRoaXMgaXMgYWx3YXlzIHNl dCBOVUxMIGJ5IHRoZSBjb3JlIHN5c3RlbSwgYnV0IHBsdWdpbnMgY2FuIGNoYW5nZSBpdCAqLwot CXN0cnVjdCBJbnN0cnVtZW50YXRpb24gKnRvdGFsdGltZTsJLyogdG90YWwgdGltZSBzcGVudCBp biBFeGVjdXRvclJ1biAqLworCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dG9yUnVuLCBv ciBwbHVnaW5zICovCisJc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICp0b3RhbHRpbWU7IC8q IHRvdGFsIHRpbWUgc3BlbnQgaW4gRXhlY3V0b3JSdW4gKi8KIH0gUXVlcnlEZXNjOwogCiAvKiBp biBwcXVlcnkuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMDdmNGIxZjc0OTAuLmY1 NmIxMzg0MWZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTIzMyw2ICsyMzMsNyBAQCBF eGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRu bywgYm9vbCAqaXNOdWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhl Y01haW4uYwogICovCit0eXBlZGVmIHN0cnVjdCBRdWVyeUluc3RydW1lbnRhdGlvbiBRdWVyeUlu c3RydW1lbnRhdGlvbjsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1 bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKQEAgLTI1NCw3ICsyNTUsNyBAQCBleHRlcm4gdm9pZCBJ bml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCSAg UmVsYXRpb24gcmVzdWx0UmVsYXRpb25EZXNjLAogCQkJCQkJCSAgSW5kZXggcmVzdWx0UmVsYXRp b25JbmRleCwKIAkJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnBhcnRpdGlvbl9yb290X3JyaSwKLQkJ CQkJCQkgIGludCBpbnN0cnVtZW50X29wdGlvbnMpOworCQkJCQkJCSAgUXVlcnlJbnN0cnVtZW50 YXRpb24gKnFpbnN0cik7CiBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0dldFRyaWdnZXJSZXN1 bHRSZWwoRVN0YXRlICplc3RhdGUsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJICBSZXN1bHRSZWxJ bmZvICpyb290UmVsSW5mbyk7CiBleHRlcm4gTGlzdCAqRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVs cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CkBAIC0zMDEs NiArMzAyLDggQEAgZXh0ZXJuIHZvaWQgRXhlY1NldEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5v ZGUsIEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbik7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjUHJv Y05vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0 ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7 CitleHRlcm4gdm9pZCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAq bm9kZSwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCk7CitleHRlcm4gdm9pZCBFeGVjRmlu YWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBF eGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25v ZGUpOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAppbmRleCAxMTM5YmU4MzMzZS4uMmQy MThkYzJhMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKQEAgLTEzLDYgKzEzLDcgQEAK ICNpZm5kZWYgSU5TVFJVTUVOVF9ICiAjZGVmaW5lIElOU1RSVU1FTlRfSAogCisjaW5jbHVkZSAi bGliL2lsaXN0LmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogCiAKQEAg LTY4LDI5ICs2OSw5MSBAQCB0eXBlZGVmIGVudW0gSW5zdHJ1bWVudE9wdGlvbgogfSBJbnN0cnVt ZW50T3B0aW9uOwogCiAvKgotICogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiB0aGF0 IGNhbiBjYXB0dXJlIHRpbWUgYW5kIFdBTC9idWZmZXIgdXNhZ2UKKyAqIEluc3RydW1lbnRhdGlv biBiYXNlIGNsYXNzIGZvciBjYXB0dXJpbmcgdGltZSBhbmQgV0FML2J1ZmZlciB1c2FnZQogICoK LSAqIEluaXRpYWxpemVkIHRocm91Z2ggSW5zdHJBbGxvYywgZm9sbG93ZWQgYnkgb25lIG9yIG1v cmUgY2FsbHMgdG8gYSBwYWlyIG9mCi0gKiBJbnN0clN0YXJ0L0luc3RyU3RvcCAoYWN0aXZpdHkg aXMgbWVhc3VyZWQgaW5iZXR3ZWVuKS4KKyAqIElmIHVzZWQgZGlyZWN0bHk6CisgKiAtIEFsbG9j YXRlIG9uIHRoZSBzdGFjayBhbmQgemVybyBpbml0aWFsaXplIHRoZSBzdHJ1Y3QKKyAqIC0gQ2Fs bCBJbnN0ckluaXRPcHRpb25zIHRvIHNldCBpbnN0cnVtZW50YXRpb24gb3B0aW9ucworICogLSBD YWxsIEluc3RyU3RhcnQgYmVmb3JlIHRoZSBhY3Rpdml0eSB5b3Ugd2FudCB0byBtZWFzdXJlCisg KiAtIENhbGwgSW5zdHJTdG9wIC8gSW5zdHJTdG9wRmluYWxpemUgYWZ0ZXIgdGhlIGFjdGl2aXR5 IHRvIGNhcHR1cmUgdG90YWxzCisgKgorICogSW5zdHJTdGFydC9JbnN0clN0b3AgbWF5IGJlIGNh bGxlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGxhc3Qgc3RvcCBjYWxsIG11c3QKKyAqIGJlIHRvIElu c3RyU3RvcEZpbmFsaXplIHRvIGVuc3VyZSBwYXJlbnQgc3RhY2sgZW50cmllcyBnZXQgdGhlIGFj Y3VtdWxhdGVkCisgKiB0b3RhbHMuIElmIHRoZXJlIGlzIHJpc2sgb2YgdHJhbnNhY3Rpb24gYWJv cnRzIHlvdSBtdXN0IGNhbGwKKyAqIEluc3RyU3RvcEZpbmFsaXplIGluIGEgUEdfVFJZL1BHX0ZJ TkFMTFkgYmxvY2sgdG8gYXZvaWQgY29ycnVwdGluZyB0aGUKKyAqIGluc3RydW1lbnRhdGlvbiBz dGFjay4KKyAqCisgKiBJbiBhIHF1ZXJ5IGNvbnRleHQgdXNlIFF1ZXJ5SW5zdHJ1bWVudGF0aW9u IGluc3RlYWQsIHdoaWNoIGhhbmRsZXMgYWJvcnRzCisgKiB1c2luZyB0aGUgcmVzb3VyY2Ugb3du ZXIgbG9naWMuCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbgogewogCS8qIFBh cmFtZXRlcnMgc2V0IGF0IGNyZWF0aW9uOiAqLwogCWJvb2wJCW5lZWRfdGltZXI7CQkvKiB0cnVl IGlmIHdlIG5lZWQgdGltZXIgZGF0YSAqLwotCWJvb2wJCW5lZWRfYnVmdXNhZ2U7CS8qIHRydWUg aWYgd2UgbmVlZCBidWZmZXIgdXNhZ2UgZGF0YSAqLwotCWJvb2wJCW5lZWRfd2FsdXNhZ2U7CS8q IHRydWUgaWYgd2UgbmVlZCBXQUwgdXNhZ2UgZGF0YSAqLworCWJvb2wJCW5lZWRfc3RhY2s7CQkv KiB0cnVlIGlmIHdlIG5lZWQgV0FML2J1ZmZlciB1c2FnZSBkYXRhICovCiAJLyogSW50ZXJuYWwg c3RhdGUga2VlcGluZzogKi8KIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsJCS8qIHN0YXJ0IHRpbWUg b2YgbGFzdCBJbnN0clN0YXJ0ICovCi0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQ7IC8qIGJ1 ZmZlciB1c2FnZSBhdCBzdGFydCAqLwotCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0OyAvKiBXQUwg dXNhZ2UgYXQgc3RhcnQgKi8KIAkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzOiAqLwogCWluc3Ry X3RpbWUJdG90YWw7CQkJLyogdG90YWwgcnVudGltZSAqLwogCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl OwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCiAJV2FsVXNhZ2UJd2FsdXNhZ2U7CQkvKiB0b3Rh bCBXQUwgdXNhZ2UgKi8KKwkvKiBBYm9ydCBoYW5kbGluZzogbGluayBpbiBwYXJlbnQgUXVlcnlJ bnN0cnVtZW50YXRpb24ncyB1bmZpbmFsaXplZCBsaXN0ICovCisJZGxpc3Rfbm9kZQl1bmZpbmFs aXplZF9lbnRyeTsKIH0gSW5zdHJ1bWVudGF0aW9uOwogCisvKgorICogUXVlcnktcmVsYXRlZCBp bnN0cnVtZW50YXRpb24gdHJhY2tpbmcuCisgKgorICogVXNhZ2U6CisgKiAtIEFsbG9jYXRlIG9u IHRoZSBoZWFwIHVzaW5nIEluc3RyUXVlcnlBbGxvYyAocmVxdWlyZWQgZm9yIGFib3J0IGhhbmRs aW5nKQorICogLSBDYWxsIEluc3RyUXVlcnlTdGFydCBiZWZvcmUgdGhlIGFjdGl2aXR5IHlvdSB3 YW50IHRvIG1lYXN1cmUKKyAqIC0gQ2FsbCBJbnN0clF1ZXJ5U3RvcCAvIEluc3RyUXVlcnlTdG9w RmluYWxpemUgYWZ0ZXJ3YXJkcyB0byBjYXB0dXJlIHRvdGFscworICoKKyAqIEluc3RyUXVlcnlT dGFydC9JbnN0clF1ZXJ5U3RvcCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGUgbGFz dCBzdG9wCisgKiBjYWxsIG11c3QgYmUgdG8gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZSB0byBlbnN1 cmUgcGFyZW50IHN0YWNrIGVudHJpZXMgZ2V0CisgKiB0aGUgYWNjdW11bGF0ZWQgdG90YWxzLgor ICoKKyAqIFVzZXMgcmVzb3VyY2Ugb3duZXIgbWVjaGFuaXNtIGZvciBoYW5kbGluZyBhYm9ydHMs IGFzIHN1Y2gsIHRoZSBjYWxsZXIKKyAqICptdXN0KiBub3QgZXhpdCBvdXQgb2YgdGhlIHRvcCBs ZXZlbCB0cmFuc2FjdGlvbiBhZnRlciBoYXZpbmcgY2FsbGVkCisgKiBJbnN0clF1ZXJ5U3RhcnQs IHdpdGhvdXQgZmlyc3QgY2FsbGluZyBJbnN0clF1ZXJ5U3RvcCBvcgorICogSW5zdHJRdWVyeVN0 b3BGaW5hbGl6ZS4gSW4gdGhlIGNhc2Ugb2YgYSB0cmFuc2FjdGlvbiBhYm9ydCwgbG9naWMgZXF1 aXZhbGVudAorICogdG8gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZSB3aWxsIGJlIGNhbGxlZCBhdXRv bWF0aWNhbGx5LgorICovCitzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGE7Cit0eXBlZGVmIHN0cnVj dCBRdWVyeUluc3RydW1lbnRhdGlvbgoreworCUluc3RydW1lbnRhdGlvbiBpbnN0cjsKKworCS8q IE9yaWdpbmFsIGluc3RydW1lbnRfb3B0aW9ucyBmbGFncyB1c2VkIHRvIGNyZWF0ZSB0aGlzIGlu c3RydW1lbnRhdGlvbiAqLworCWludAkJCWluc3RydW1lbnRfb3B0aW9uczsKKworCS8qIFJlc291 cmNlIG93bmVyIHVzZWQgZm9yIGNsZWFudXAgZm9yIGFib3J0cyBiZXR3ZWVuIEluc3RyU3RhcnQv SW5zdHJTdG9wICovCisJc3RydWN0IFJlc291cmNlT3duZXJEYXRhICpvd25lcjsKKworCS8qCisJ ICogRGVkaWNhdGVkIG1lbW9yeSBjb250ZXh0IGZvciBhbGwgaW5zdHJ1bWVudGF0aW9uIGFsbG9j YXRpb25zIGJlbG9uZ2luZworCSAqIHRvIHRoaXMgcXVlcnkgKG5vZGUgaW5zdHJ1bWVudGF0aW9u LCB0cmlnZ2VyIGluc3RydW1lbnRhdGlvbiwgZXRjLikuCisJICogSW5pdGlhbGx5IGEgY2hpbGQg b2YgVG9wTWVtb3J5Q29udGV4dCBzbyBpdCBzdXJ2aXZlcyB0cmFuc2FjdGlvbiBhYm9ydAorCSAq IGZvciBSZXNvdXJjZU93bmVyIGNsZWFudXAsIHdoaWNoIGlzIHRoZW4gcmVhc3NpZ25lZCB0byB0 aGUgY3VycmVudAorCSAqIG1lbW9yeSBjb250ZXh0IG9uIEluc3RyUXVlcnlTdG9wRmluYWxpemUu CisJICovCisJTWVtb3J5Q29udGV4dCBpbnN0cl9jeHQ7CisKKwkvKgorCSAqIENoaWxkIGVudHJp ZXMgdGhhdCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAgb24gYWJvcnQsIHNpbmNlIHRoZXkgYXJlIG5v dAorCSAqIHJlZ2lzdGVyZWQgYXMgYSByZXNvdXJjZSBvd25lciB0aGVtc2VsdmVzLiBDb250YWlu cyBib3RoIG5vZGUgYW5kCisJICogdHJpZ2dlciBpbnN0cnVtZW50YXRpb24gZW50cmllcyBsaW5r ZWQgdmlhIGluc3RyLnVuZmluYWxpemVkX2VudHJ5LgorCSAqLworCWRsaXN0X2hlYWQJdW5maW5h bGl6ZWRfZW50cmllczsKK30gUXVlcnlJbnN0cnVtZW50YXRpb247CisKIC8qCiAgKiBTcGVjaWFs aXplZCBpbnN0cnVtZW50YXRpb24gZm9yIHBlci1ub2RlIGV4ZWN1dGlvbiBzdGF0aXN0aWNzCisg KgorICogUmVsaWVzIG9uIGFuIG91dGVyIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGhhdmluZyBiZWVu IHNldCB1cCB0byBoYW5kbGUgdGhlCisgKiBzdGFjayB1c2VkIGZvciBXQUwvYnVmZmVyIHVzYWdl IHN0YXRpc3RpY3MsIGFuZCByZWxpZXMgb24gaXQgZm9yIG1hbmFnaW5nCisgKiBhYm9ydHMuIFNv bGVseSBpbnRlbmRlZCBmb3IgdGhlIGV4ZWN1dG9yIGFuZCBhbnlvbmUgcmVwb3J0aW5nIGFib3V0 IGl0cworICogYWN0aXZpdGllcyAoZS5nLiBFWFBMQUlOIEFOQUxZWkUpLgogICovCiB0eXBlZGVm IHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCiB7CkBAIC0xMTEsNiArMTc0LDEwIEBAIHR5cGVk ZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIAlkb3VibGUJCW5maWx0ZXJlZDI7CQkvKiAj IG9mIHR1cGxlcyByZW1vdmVkIGJ5ICJvdGhlciIgcXVhbHMgKi8KIH0gTm9kZUluc3RydW1lbnRh dGlvbjsKIAorLyoKKyAqIENhcmUgbXVzdCBiZSB0YWtlbiB3aXRoIGFueSBwb2ludGVycyBjb250 YWluZWQgd2l0aGluIHRoaXMgc3RydWN0LCBhcyB0aGlzCisgKiBnZXRzIGNvcGllZCBhY3Jvc3Mg cHJvY2Vzc2VzIGR1cmluZyBwYXJhbGxlbCBxdWVyeSBleGVjdXRpb24uCisgKi8KIHR5cGVkZWYg c3RydWN0IFdvcmtlck5vZGVJbnN0cnVtZW50YXRpb24KIHsKIAlpbnQJCQludW1fd29ya2VyczsJ LyogIyBvZiBzdHJ1Y3R1cmVzIHRoYXQgZm9sbG93ICovCkBAIC0xMjQsMTYgKzE5MSwxMDIgQEAg dHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogCQkJCQkJCQkgKiB3YXMgZmly ZWQgKi8KIH0gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIAotZXh0ZXJuIFBHRExMSU1QT1JUIEJ1 ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CisvKgorICogRHluYW1pYyBhcnJheS1iYXNlZCBzdGFj ayBmb3IgdHJhY2tpbmcgY3VycmVudCBXQUwvYnVmZmVyIHVzYWdlIGNvbnRleHQuCisgKgorICog V2hlbiB0aGUgc3RhY2sgaXMgZW1wdHksICdjdXJyZW50JyBwb2ludHMgdG8gaW5zdHJfdG9wIHdo aWNoIGFjY3VtdWxhdGVzCisgKiBzZXNzaW9uLWxldmVsIHRvdGFscy4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgSW5zdHJTdGFja1N0YXRlCit7CisJaW50CQkJc3RhY2tfc3BhY2U7CS8qIGFsbG9jYXRl ZCBjYXBhY2l0eSBvZiBlbnRyaWVzIGFycmF5ICovCisJaW50CQkJc3RhY2tfc2l6ZTsJCS8qIGN1 cnJlbnQgbnVtYmVyIG9mIGVudHJpZXMgKi8KKworCUluc3RydW1lbnRhdGlvbiAqKmVudHJpZXM7 CS8qIGR5bmFtaWMgYXJyYXkgb2YgcG9pbnRlcnMgKi8KKwlJbnN0cnVtZW50YXRpb24gKmN1cnJl bnQ7CS8qIHRvcCBvZiBzdGFjaywgb3IgJmluc3RyX3RvcCB3aGVuIGVtcHR5ICovCit9IEluc3Ry U3RhY2tTdGF0ZTsKKwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdlIHBnV2FsVXNhZ2U7CiAK LWV4dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9u cyk7CisvKgorICogVGhlIHRvcCBpbnN0cnVtZW50YXRpb24gcmVwcmVzZW50cyBhIHJ1bm5pbmcg dG90YWwgb2YgdGhlIGN1cnJlbnQgYmFja2VuZAorICogV0FML2J1ZmZlciB1c2FnZSBpbmZvcm1h dGlvbi4gVGhpcyB3aWxsIG5vdCBiZSB1cGRhdGVkIGltbWVkaWF0ZWx5LCBidXQKKyAqIHJhdGhl ciB3aGVuIHRoZSBjdXJyZW50IHN0YWNrIGVudHJ5IGdldHMgYWNjdW11bGF0ZWQgd2hpY2ggdHlw aWNhbGx5IGhhcHBlbnMKKyAqIGF0IHF1ZXJ5IGVuZC4KKyAqCisgKiBDYXJlIG11c3QgYmUgdGFr ZW4gd2hlbiB1dGlsaXppbmcgdGhpcyBpbiB0aGUgcGFyYWxsZWwgd29ya2VyIGNvbnRleHQ6Cisg KiBQYXJhbGxlbCB3b3JrZXJzIHdpbGwgcmVwb3J0IGJhY2sgdGhlaXIgaW5zdHJ1bWVudGF0aW9u IHRvIHRoZSBjYWxsZXIsCisgKiBhbmQgdGhpcyBnZXRzIGFkZGVkIHRvIHRoZSBjYWxsZXIncyBz dGFjay4gSWYgdGhpcyB3ZXJlIHRvIGJlIHVzZWQgaW4gdGhlCisgKiBzaGFyZWQgbWVtb3J5IHN0 YXRzIGluZnJhc3RydWN0dXJlIGl0IHdvdWxkIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBwYXJhbGxl bAorICogd29ya2VycyB0byBhdm9pZCBkb3VibGUgY291bnRpbmcuCisgKi8KK2V4dGVybiBQR0RM TElNUE9SVCBJbnN0cnVtZW50YXRpb24gaW5zdHJfdG9wOworCisvKgorICogVGhlIGluc3RydW1l bnRhdGlvbiBzdGFjayBzdGF0ZS4gVGhlICdjdXJyZW50JyBmaWVsZCBwb2ludHMgdG8gdGhlCisg KiBjdXJyZW50bHkgYWN0aXZlIHN0YWNrIGVudHJ5IHRoYXQgaXMgZ2V0dGluZyB1cGRhdGVkIGFz IGFjdGl2aXR5IGhhcHBlbnMsCisgKiBhbmQgd2lsbCBiZSBhY2N1bXVsYXRlZCB0byBwYXJlbnQg c3RhY2tzIHdoZW4gaXQgZ2V0cyBmaW5hbGl6ZWQgYnkKKyAqIEluc3RyU3RvcCAoZm9yIG5vbi1l eGVjdXRvciB1c2UgY2FzZXMpLCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uCisgKiAo ZXhlY3V0b3IgZmluaXNoKSBvciBSZXNPd25lclJlbGVhc2VJbnN0cnVtZW50YXRpb24gb24gYWJv cnQuCisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBJbnN0clN0YWNrU3RhdGUgaW5zdHJfc3RhY2s7 CisKK2V4dGVybiB2b2lkIEluc3RyU3RhY2tHcm93KHZvaWQpOworCisvKgorICogUHVzaGVzIHRo ZSBzdGFjayBzbyB0aGF0IGFsbCBXQUwvYnVmZmVyIHVzYWdlIHVwZGF0ZXMgZ28gdG8gdGhlIHBh c3NlZCBpbgorICogaW5zdHJ1bWVudGF0aW9uIGVudHJ5LgorICoKKyAqIFNlZSBub3RlIG9uIElu c3RyUG9wU3RhY2sgcmVnYXJkaW5nIHNhZmUgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucy4KKyAqLwor c3RhdGljIGlubGluZSB2b2lkCitJbnN0clB1c2hTdGFjayhJbnN0cnVtZW50YXRpb24gKmluc3Ry KQoreworCWlmICh1bmxpa2VseShpbnN0cl9zdGFjay5zdGFja19zaXplID09IGluc3RyX3N0YWNr LnN0YWNrX3NwYWNlKSkKKwkJSW5zdHJTdGFja0dyb3coKTsKKworCWluc3RyX3N0YWNrLmVudHJp ZXNbaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSsrXSA9IGluc3RyOworCWluc3RyX3N0YWNrLmN1cnJl bnQgPSBpbnN0cjsKK30KKworLyoKKyAqIFBvcHMgdGhlIHN0YWNrIGVudHJ5IGJhY2sgdG8gdGhl IHByZXZpb3VzIG9uZSB0aGF0IHdhcyBlZmZlY3RpdmUgYXQKKyAqIEluc3RyUHVzaFN0YWNrLgor ICoKKyAqIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBpbnRlcm1lZGlhdGUgc3RhY2sgZW50 cmllcyBhcmUgc2tpcHBlZCwgdG8KKyAqIGhhbmRsZSBhYm9ydHMgY29ycmVjdGx5LiBJZiB5b3Un cmUgdGhpbmtpbmcgb2YgY2FsbGluZyB0aGlzIGluIGEgUEdfRklOQUxMWQorICogYmxvY2ssIGNv bnNpZGVyIGluc3RlYWQgdXNpbmcgSW5zdHJTdGFydCArIEluc3RyU3RvcEZpbmFsaXplIHdoaWNo IGNhbiBza2lwCisgKiBpbnRlcm1lZGlhdGUgc3RhY2sgZW50cmllcy4KKyAqLworc3RhdGljIGlu bGluZSB2b2lkCitJbnN0clBvcFN0YWNrKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJQXNz ZXJ0KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlBc3NlcnQoaW5zdHJfc3RhY2suZW50 cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXplIC0gMV0gPT0gaW5zdHIpOworCWluc3RyX3N0YWNr LnN0YWNrX3NpemUtLTsKKwlpbnN0cl9zdGFjay5jdXJyZW50ID0gaW5zdHJfc3RhY2suc3RhY2tf c2l6ZSA+IDAKKwkJPyBpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUg LSAxXQorCQk6ICZpbnN0cl90b3A7Cit9CisKIGV4dGVybiB2b2lkIEluc3RySW5pdE9wdGlvbnMo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRlcm4g dm9pZCBJbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5z dHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJTdG9wRmlu YWxpemUoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0ckZpbmFsaXpl Q2hpbGQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgSW5zdHJ1bWVudGF0aW9uICpwYXJlbnQpOwor ZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVN0YWNrKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVt ZW50YXRpb24gKmFkZCk7CiAKLWV4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9j Tm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9k ZSk7CitleHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24gKkluc3RyUXVlcnlBbGxvYyhpbnQgaW5z dHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlTdGFydChRdWVyeUluc3Ry dW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVN0b3AoUXVlcnlJbnN0 cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlTdG9wRmluYWxpemUo UXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlSZW1l bWJlckNoaWxkKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQsIEluc3RydW1lbnRhdGlvbiAq aW5zdHIpOworCitwZ19ub2Rpc2NhcmQgZXh0ZXJuIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpJbnN0 clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKTsKK2V4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxR dWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2Us IFdhbFVzYWdlICp3YWx1c2FnZSk7CitleHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVy eShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CisKK2V4dGVybiBO b2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9kZShRdWVyeUluc3RydW1lbnRhdGlvbiAq cWluc3RyLCBib29sIGFzeW5jX21vZGUpOwogZXh0ZXJuIHZvaWQgSW5zdHJJbml0Tm9kZShOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRlcm4g dm9pZCBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4g dm9pZCBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1 cGxlcyk7CkBAIC0xNDEsMzUgKzI5NCwzNiBAQCBleHRlcm4gdm9pZCBJbnN0clVwZGF0ZVR1cGxl Q291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVy biB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4g dm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVu dGF0aW9uICphZGQpOwogCi1leHRlcm4gVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxv Y1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotZXh0ZXJuIHZvaWQgSW5z dHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cik7CitleHRlcm4g VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50 YXRpb24gKnFpbnN0ciwgaW50IG4pOworZXh0ZXJuIHZvaWQgSW5zdHJTdGFydFRyaWdnZXIoUXVl cnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwKKwkJCQkJCQkgIFRyaWdnZXJJbnN0cnVtZW50YXRp b24gKnRnaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncyk7CiAKLWV4dGVybiB2b2lkIEluc3RyU3Rh cnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5 KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKLWV4dGVybiB2b2lk IEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2Ug KndhbHVzYWdlKTsKLWV4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdl ICpkc3QsCi0JCQkJCQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLCBjb25zdCBCdWZmZXJVc2Fn ZSAqc3ViKTsKK2V4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3QsIGNv bnN0IEJ1ZmZlclVzYWdlICphZGQpOworZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2Ug KmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCk7CiBleHRlcm4gdm9pZCBXYWxVc2FnZUFjY3VtRGlm ZihXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkLAogCQkJCQkJCSAgY29uc3QgV2Fs VXNhZ2UgKnN1Yik7CiAKICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfSU5DUihmbGQpIGRvIHsgXAot CQlwZ0J1ZmZlclVzYWdlLmZsZCsrOyBcCisJCWluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdl LmZsZCsrOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9BREQoZmxkLHZh bCkgZG8geyBcCi0JCXBnQnVmZmVyVXNhZ2UuZmxkICs9IHZhbDsgXAorCQlpbnN0cl9zdGFjay5j dXJyZW50LT5idWZ1c2FnZS5mbGQgKz0gdmFsOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNU Ul9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwKLQlJTlNUUl9USU1FX0FERChwZ0J1 ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCUlOU1RSX1RJTUVfQUREKGluc3RyX3N0YWNrLmN1cnJl bnQtPmJ1ZnVzYWdlLmZsZCwgdmFsKTsgXAogCX0gd2hpbGUgKDApCiAjZGVmaW5lIElOU1RSX0JV RlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0YXJ0dmFsKSBkbyB7IFwKLQlJTlNU Ul9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQsIGVuZHZhbCwgc3RhcnR2YWwpOyBc CisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLmZs ZCwgZW5kdmFsLCBzdGFydHZhbCk7IFwKIAl9IHdoaWxlICgwKQorCiAjZGVmaW5lIElOU1RSX1dB TFVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKIAkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCQlpbnN0cl9z dGFjay5jdXJyZW50LT53YWx1c2FnZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUgSU5T VFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAogCQlwZ1dhbFVzYWdlLmZsZCArPSB2YWw7 IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+d2FsdXNhZ2UuZmxkICs9IHZhbDsgXAogCX0gd2hp bGUoMCkKIAogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCA1MDJhZDRmMmRhNS4uYWVmMTAwM2Y2MDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC01Myw2ICs1Myw3IEBAIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbiBJbnN0cnVtZW50 YXRpb247CiB0eXBlZGVmIHN0cnVjdCBwYWlyaW5naGVhcCBwYWlyaW5naGVhcDsKIHR5cGVkZWYg c3RydWN0IFBsYW5TdGF0ZSBQbGFuU3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBRdWVyeUVudmlyb25t ZW50IFF1ZXJ5RW52aXJvbm1lbnQ7Cit0eXBlZGVmIHN0cnVjdCBRdWVyeUluc3RydW1lbnRhdGlv biBRdWVyeUluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YSAqUmVs YXRpb247CiB0eXBlZGVmIFJlbGF0aW9uICpSZWxhdGlvblB0cjsKIHR5cGVkZWYgc3RydWN0IFNj YW5LZXlEYXRhIFNjYW5LZXlEYXRhOwpAQCAtNzMxLDcgKzczMiw3IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCQkJCQkJCQkJICogRXhlY3V0b3JSdW4oKSBjYWxscy4gKi8KIAogCWludAkJCWVz X3RvcF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwotCWludAkJ CWVzX2luc3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KKwlRdWVy eUluc3RydW1lbnRhdGlvbiAqZXNfaW5zdHJ1bWVudDsJLyogcXVlcnktbGV2ZWwgaW5zdHJ1bWVu dGF0aW9uICovCiAJYm9vbAkJZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlz aCBpcyBkb25lICovCiAKIAlMaXN0CSAgICplc19leHByY29udGV4dHM7CS8qIExpc3Qgb2YgRXhw ckNvbnRleHRzIHdpdGhpbiBFU3RhdGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3Jlc293bmVyLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCmluZGV4IGViNjAzM2I0 ZmRiLi41NDYzYmM5MjFmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCkBAIC03NSw2ICs3NSw3IEBAIHR5 cGVkZWYgdWludDMyIFJlc291cmNlUmVsZWFzZVByaW9yaXR5OwogI2RlZmluZSBSRUxFQVNFX1BS SU9fU05BUFNIT1RfUkVGUwkJCTUwMAogI2RlZmluZSBSRUxFQVNFX1BSSU9fRklMRVMJCQkJCTYw MAogI2RlZmluZSBSRUxFQVNFX1BSSU9fV0FJVEVWRU5UU0VUUwkJCTcwMAorI2RlZmluZSBSRUxF QVNFX1BSSU9fSU5TVFJVTUVOVEFUSU9OCQk4MDAKIAogLyogMCBpcyBjb25zaWRlcmVkIGludmFs aWQgKi8KICNkZWZpbmUgUkVMRUFTRV9QUklPX0ZJUlNUCQkJCQkxCmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IGU5MDU5ZDFiMjU1Li5jYWUxZTJhODg1NyAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTEzNDEsNiArMTM0MSw3IEBAIEluamVjdGlvblBvaW50U2hhcmVkU3RhdGUK IEluamVjdGlvblBvaW50c0N0bAogSW5saW5lQ29kZUJsb2NrCiBJbnNlcnRTdG10CitJbnN0clN0 YWNrU3RhdGUKIEluc3RydW1lbnRhdGlvbgogSW50MTI4QWdnU3RhdGUKIEludDhUcmFuc1R5cGVE YXRhCkBAIC0yNDU4LDYgKzI0NTksNyBAQCBRdWVyeUNvbXBsZXRpb24KIFF1ZXJ5RGVzYwogUXVl cnlFbnZpcm9ubWVudAogUXVlcnlJbmZvCitRdWVyeUluc3RydW1lbnRhdGlvbgogUXVlcnlJdGVt CiBRdWVyeUl0ZW1UeXBlCiBRdWVyeU1vZGUKLS0gCjIuNDcuMQoK --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Disposition: attachment; filename="v10-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di560 RnJvbSAzMGVlZjg3YTY1M2QyYzlkYTkxOTkyNzQ0MmI2ZTkxYmJjNzIwYWUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCAxLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgdHJpZ2dlciBsb2dpYyBmcm9tIG90aGVyCiB1c2VzCgpJ bnRyb2R1Y2UgVHJpZ2dlckluc3RydW1lbnRhdGlvbiB0byBjYXB0dXJlIHRyaWdnZXIgdGltaW5n IGFuZCBmaXJpbmdzCihwcmV2aW91c2x5IGNvdW50ZWQgaW4gIm50dXBsZXMiKSwgdG8gYWlkIGEg ZnV0dXJlIHJlZmFjdG9yaW5nIHRoYXQKc3BsaXRzIG91dCBhbGwgSW5zdHJ1bWVudGF0aW9uIGZp ZWxkcyBiZXlvbmQgdGltaW5nIGFuZCBXQUwvYnVmZmVycyBpbnRvCm1vcmUgc3BlY2lmaWMgc3Ry dWN0cy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6 CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgIHwgMTkg KysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgIHwg MjIgKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyB8IDI2ICsrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50Lmgg fCAxMiArKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICB8ICAz ICsrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgIDEgKwogNyBmaWxlcyBj aGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggZTRiNzAxNjZiMGUuLmViNmVmMjNjMmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC0xMTAxLDE4ICsxMTAxLDE1IEBAIHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZv ICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJZm9yIChudCA9 IDA7IG50IDwgckluZm8tPnJpX1RyaWdEZXNjLT5udW10cmlnZ2VyczsgbnQrKykKIAl7CiAJCVRy aWdnZXIgICAgKnRyaWcgPSBySW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdnZXJzICsgbnQ7Ci0JCUlu c3RydW1lbnRhdGlvbiAqaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQgKyBudDsKKwkJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9IHJJbmZvLT5yaV9UcmlnSW5zdHJ1bWVu dCArIG50OwogCQljaGFyCSAgICpyZWxuYW1lOwogCQljaGFyCSAgICpjb25uYW1lID0gTlVMTDsK IAotCQkvKiBNdXN0IGNsZWFuIHVwIGluc3RydW1lbnRhdGlvbiBzdGF0ZSAqLwotCQlJbnN0ckVu ZExvb3AoaW5zdHIpOwotCiAJCS8qCiAJCSAqIFdlIGlnbm9yZSB0cmlnZ2VycyB0aGF0IHdlcmUg bmV2ZXIgaW52b2tlZDsgdGhleSBsaWtlbHkgYXJlbid0CiAJCSAqIHJlbGV2YW50IHRvIHRoZSBj dXJyZW50IHF1ZXJ5IHR5cGUuCiAJCSAqLwotCQlpZiAoaW5zdHItPm50dXBsZXMgPT0gMCkKKwkJ aWYgKHRnaW5zdHItPmZpcmluZ3MgPT0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCUV4cGxhaW5PcGVu R3JvdXAoIlRyaWdnZXIiLCBOVUxMLCB0cnVlLCBlcyk7CkBAIC0xMTM3LDExICsxMTM0LDExIEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlpZiAoc2hvd19yZWxuYW1lKQogCQkJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwgIiBvbiAlcyIsIHJlbG5hbWUpOwogCQkJaWYgKGVzLT50aW1pbmcpCi0J CQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1lPSUuM2YgY2FsbHM9JS4wZlxuIiwK LQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLT50b3RhbCksCi0JCQkJCQkJ CSBpbnN0ci0+bnR1cGxlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1l PSUuM2YgY2FsbHM9JWRcbiIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2lu c3RyLT5pbnN0ci50b3RhbCksCisJCQkJCQkJCSB0Z2luc3RyLT5maXJpbmdzKTsKIAkJCWVsc2UK LQkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSUuMGZcbiIsIGluc3RyLT5u dHVwbGVzKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSVkXG4iLCB0 Z2luc3RyLT5maXJpbmdzKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTExNTEsOSArMTE0OCw5IEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJSZWxhdGlvbiIsIHJl bG5hbWUsIGVzKTsKIAkJCWlmIChlcy0+dGltaW5nKQogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0 KCJUaW1lIiwgIm1zIiwKLQkJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+ dG90YWwpLCAzLAorCQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHRnaW5zdHItPmlu c3RyLnRvdGFsKSwgMywKIAkJCQkJCQkJCSBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi Q2FsbHMiLCBOVUxMLCBpbnN0ci0+bnR1cGxlcywgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5 SW50ZWdlcigiQ2FsbHMiLCBOVUxMLCB0Z2luc3RyLT5maXJpbmdzLCBlcyk7CiAJCX0KIAogCQlp ZiAoY29ubmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA2NTk2ODQzYThkOC4uMjliODBk NzUxNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIGJv b2wgVHJpZ2dlckVuYWJsZWQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8s CiBzdGF0aWMgSGVhcFR1cGxlIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLAogCQkJCQkJCQkJIGludCB0Z2luZHgsCiAJCQkJCQkJCQkgRm1nckluZm8gKmZpbmZvLAot CQkJCQkJCQkJIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCQkgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBwZXJfdHVwbGVfY29u dGV4dCk7CiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICplc3RhdGUs IFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqc3JjX3Bh cnRpbmZvLApAQCAtMjMxMSw3ICsyMzExLDcgQEAgc3RhdGljIEhlYXBUdXBsZQogRXhlY0NhbGxU cmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJCQkJCWludCB0Z2luZHgsCiAJCQkJ CUZtZ3JJbmZvICpmaW5mbywKLQkJCQkJSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQgcGVyX3R1cGxl X2NvbnRleHQpCiB7CiAJTE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ2LDcgKzIzNDYs NyBAQCBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkgKiBJZiBk b2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2Vy LgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIERvIHRoZSBm dW5jdGlvbiBldmFsdWF0aW9uIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQsIHNvIHRo YXQKQEAgLTIzOTEsMTAgKzIzOTEsMTAgQEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEsCiAKIAkvKgogCSAqIElmIGRvaW5nIEVYUExBSU4gQU5BTFlaRSwgc3RvcCBj aGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlciwgYW5kIGNvdW50Ci0JICogb25lICJ0dXBsZSBy ZXR1cm5lZCIgKHJlYWxseSB0aGUgbnVtYmVyIG9mIGZpcmluZ3MpLgorCSAqIHRoZSBmaXJpbmcg b2YgdGhlIHRyaWdnZXIuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0b3BOb2RlKGluc3Ry ICsgdGdpbmR4LCAxKTsKKwkJSW5zdHJTdG9wVHJpZ2dlcihpbnN0ciArIHRnaW5keCwgMSk7CiAK IAlyZXR1cm4gKEhlYXBUdXBsZSkgRGF0dW1HZXRQb2ludGVyKHJlc3VsdCk7CiB9CkBAIC0zOTM4 LDcgKzM5MzgsNyBAQCBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0 YXRlLAogCQkJCQkJCQlSZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJCQkJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjLAogCQkJCQkJCQlGbWdySW5mbyAqZmluZm8sCi0JCQkJCQkJCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3Ry LAogCQkJCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9jb250ZXh0LAogCQkJCQkJCQlUdXBs ZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MSwKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnRy aWdfdHVwbGVfc2xvdDIpOwpAQCAtNDMzMiw3ICs0MzMyLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0 ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJUmVzdWx0UmVsSW5mbyAqc3JjX3JlbEluZm8sCiAJCQkJ CVJlc3VsdFJlbEluZm8gKmRzdF9yZWxJbmZvLAogCQkJCQlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2Ms Ci0JCQkJCUZtZ3JJbmZvICpmaW5mbywgSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJRm1n ckluZm8gKmZpbmZvLCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwKIAkJCQkJTWVtb3J5 Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJVHVwbGVUYWJsZVNsb3QgKnRyaWdfdHVw bGVfc2xvdDEsCiAJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxlX3Nsb3QyKQpAQCAtNDM3 Myw3ICs0MzczLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAkgKiB0 byBpbmNsdWRlIHRpbWUgc3BlbnQgcmUtZmV0Y2hpbmcgdHVwbGVzIGluIHRoZSB0cmlnZ2VyIGNv c3QuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0YXJ0Tm9kZShpbnN0ciArIHRnaW5keCk7 CisJCUluc3RyU3RhcnRUcmlnZ2VyKGluc3RyICsgdGdpbmR4KTsKIAogCS8qCiAJICogRmV0Y2gg dGhlIHJlcXVpcmVkIHR1cGxlKHMpLgpAQCAtNDU5MCwxMCArNDU5MCwxMCBAQCBBZnRlclRyaWdn ZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCiAJLyoKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFO QUxZWkUsIHN0b3AgY2hhcmdpbmcgdGltZSB0byB0aGlzIHRyaWdnZXIsIGFuZCBjb3VudAotCSAq IG9uZSAidHVwbGUgcmV0dXJuZWQiIChyZWFsbHkgdGhlIG51bWJlciBvZiBmaXJpbmdzKS4KKwkg KiB0aGUgZmlyaW5nIG9mIHRoZSB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJT dG9wTm9kZShpbnN0ciArIHRnaW5keCwgMSk7CisJCUluc3RyU3RvcFRyaWdnZXIoaW5zdHIgKyB0 Z2luZHgsIDEpOwogfQogCiAKQEAgLTQ3MDksNyArNDcwOSw3IEBAIGFmdGVyVHJpZ2dlckludm9r ZUV2ZW50cyhBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywKIAlSZWxhdGlvbglyZWwgPSBO VUxMOwogCVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IE5VTEw7CiAJRm1nckluZm8gICAqZmluZm8g PSBOVUxMOwotCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOworCVRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDEgPSBOVUxMLAog CQkJICAgKnNsb3QyID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNThiODQ5 NTVjMmIuLjUzNjMxMTYzZGQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyODUsNyAr MTI4NSw3IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRlICoqKQogCQkJ cGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7CiAJCWlmIChpbnN0cnVtZW50X29wdGlvbnMp Ci0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2MobiwgaW5z dHJ1bWVudF9vcHRpb25zLCBmYWxzZSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1 bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CiAJfQogCWVs c2UKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggYTQwNjEwYmMyNTIuLjkzNTRh ZDdiZTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xOTYsNiArMTk2LDMyIEBA IEluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQp CiAJCVdhbFVzYWdlQWRkKCZkc3QtPndhbHVzYWdlLCAmYWRkLT53YWx1c2FnZSk7CiB9CiAKKy8q IFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCitUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICoKK0luc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQor eworCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBwYWxsb2MwKG4gKiBzaXplb2Yo VHJpZ2dlckluc3RydW1lbnRhdGlvbikpOworCWludAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKQorCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGluc3RydW1lbnRfb3B0aW9u cyk7CisKKwlyZXR1cm4gdGdpbnN0cjsKK30KKwordm9pZAorSW5zdHJTdGFydFRyaWdnZXIoVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cikKK3sKKwlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0 ci0+aW5zdHIpOworfQorCit2b2lkCitJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQoreworCUluc3RyU3RvcE5vZGUoJnRnaW5zdHIt Pmluc3RyLCAwKTsKKwl0Z2luc3RyLT5maXJpbmdzICs9IGZpcmluZ3M7Cit9CisKIC8qIG5vdGUg Y3VycmVudCB2YWx1ZXMgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dG9yIHN0YXJ0dXAgKi8KIHZvaWQK IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgK aW5kZXggOTc1OWYzZWE1ZDguLmE5YzIyMzMyMjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCkBAIC0xMDAsNiArMTAwLDEzIEBAIHR5cGVkZWYgc3RydWN0IFdvcmtlckluc3RydW1lbnRh dGlvbgogCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CiB9IFdvcmtlckluc3RydW1lbnRhdGlvbjsKIAordHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbgoreworCUluc3RydW1lbnRhdGlvbiBpbnN0cjsKKwlpbnQJCQlmaXJpbmdzOwkJ LyogbnVtYmVyIG9mIHRpbWVzIHRoZSBpbnN0cnVtZW50ZWQgdHJpZ2dlcgorCQkJCQkJCQkgKiB3 YXMgZmlyZWQgKi8KK30gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKKwogZXh0ZXJuIFBHRExMSU1Q T1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNh Z2UgcGdXYWxVc2FnZTsKIApAQCAtMTExLDYgKzExOCwxMSBAQCBleHRlcm4gdm9pZCBJbnN0clN0 b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2 b2lkIEluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUg blR1cGxlcyk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3Ry dW1lbnRhdGlvbiAqYWRkKTsKKworZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lk IEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpOworZXh0 ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry LCBpbnQgZmlyaW5ncyk7CisKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZv aWQpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKIGV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggNjg0ZTM5OGY4MjQuLjE3ODIyOWM1YzQ0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2Fu S2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7CiB0eXBlZGVm IHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBzdHJ1Y3QgVElE Qml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVtZW50YXRpb24g VHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29udmVyc2lvbk1h cCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NEYXRhICpUdXBs ZURlc2M7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZXNvcnRzdGF0ZSBUdXBsZXNvcnRzdGF0ZTsKQEAg LTUzMyw3ICs1MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJRXhwclN0YXRl ICoqcmlfVHJpZ1doZW5FeHByczsKIAogCS8qIG9wdGlvbmFsIHJ1bnRpbWUgbWVhc3VyZW1lbnRz IGZvciB0cmlnZ2VycyAqLwotCUluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CisJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CiAKIAkvKiBPbi1kZW1h bmQgY3JlYXRlZCBzbG90cyBmb3IgdHJpZ2dlcnMgLyByZXR1cm5pbmcgcHJvY2Vzc2luZyAqLwog CVR1cGxlVGFibGVTbG90ICpyaV9SZXR1cm5pbmdTbG90OwkvKiBmb3IgdHJpZ2dlciBvdXRwdXQg dHVwbGVzICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDBjMDdjOTQ1ZjA1Li42ZWMz Y2RlZmY1YiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMxOTEsNiArMzE5MSw3IEBA IFRyaWdnZXJEZXNjCiBUcmlnZ2VyRXZlbnQKIFRyaWdnZXJGbGFncwogVHJpZ2dlckluZm8KK1Ry aWdnZXJJbnN0cnVtZW50YXRpb24KIFRyaWdnZXJUcmFuc2l0aW9uCiBUcnVuY2F0ZVN0bXQKIFRz bVJvdXRpbmUKLS0gCjIuNDcuMQoK --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Disposition: attachment; filename="v10-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5f2 RnJvbSAxZTg4ZWJhNWFkNDViYWEwNzY4ZmJiMTUwMjNmZjUzMmY2NGU1ZDJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTI6MTI6MzkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCAzLzldIGlu c3RydW1lbnRhdGlvbjogUmVwbGFjZSBkaXJlY3QgY2hhbmdlcyBvZgogcGdCdWZmZXJVc2FnZS9w Z1dhbFVzYWdlIHdpdGggSU5TVFJfKiBtYWNyb3MKClRoaXMgZW5jYXBzdWxhdGVzIHRoZSBvd25l cnNoaXAgb2YgdGhlc2UgZ2xvYmFscyBiZXR0ZXIsIGFuZCB3aWxsIGFsbG93CmEgc3Vic2VxdWVu dCByZWZhY3RvcmluZy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2 aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBUDUzUGt6WjNVb3Ru UnJyblhXQXYlM0RGNGF2UnE5TVE4elUlMkJieG9OOXRwb3ZFdTZmR1ElNDBtYWlsLmdtYWlsLmNv bSNmYzcxNDBlOGFmMjFlMDdhOTBhMDlkN2U3NmIzMDBjNAotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgIHwgMTAgKysrKystLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvaW5zdHJ1bWVudC5jICAgICAgfCAgMSAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYyAgICB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvbG9jYWxidWYuYyAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9idWZmaWxlLmMgICAgIHwgIDggKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9pby5jIHwgIDggKysrKy0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3Ry dW1lbnQuaCAgICAgIHwgMTkgKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA0 NyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKaW5kZXggZjVjOWEzNDM3NGQuLjliMzM1ODRmNDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCkBAIC0xMDgxLDEwICsxMDgxLDEwIEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0Rh dGEgKnJkYXRhLAogCS8qIFJlcG9ydCBXQUwgdHJhZmZpYyB0byB0aGUgaW5zdHJ1bWVudGF0aW9u LiAqLwogCWlmIChpbnNlcnRlZCkKIAl7Ci0JCXBnV2FsVXNhZ2Uud2FsX2J5dGVzICs9IHJlY2hk ci0+eGxfdG90X2xlbjsKLQkJcGdXYWxVc2FnZS53YWxfcmVjb3JkcysrOwotCQlwZ1dhbFVzYWdl LndhbF9mcGkgKz0gbnVtX2ZwaTsKLQkJcGdXYWxVc2FnZS53YWxfZnBpX2J5dGVzICs9IGZwaV9i eXRlczsKKwkJSU5TVFJfV0FMVVNBR0VfQUREKHdhbF9ieXRlcywgcmVjaGRyLT54bF90b3RfbGVu KTsKKwkJSU5TVFJfV0FMVVNBR0VfSU5DUih3YWxfcmVjb3Jkcyk7CisJCUlOU1RSX1dBTFVTQUdF X0FERCh3YWxfZnBpLCBudW1fZnBpKTsKKwkJSU5TVFJfV0FMVVNBR0VfQUREKHdhbF9mcGlfYnl0 ZXMsIGZwaV9ieXRlcyk7CiAKIAkJLyogUmVxdWlyZWQgZm9yIHRoZSBmbHVzaCBvZiBwZW5kaW5n IHN0YXRzIFdBTCBkYXRhICovCiAJCXBnc3RhdF9yZXBvcnRfZml4ZWQgPSB0cnVlOwpAQCAtMjA2 Myw3ICsyMDYzLDcgQEAgQWR2YW5jZVhMSW5zZXJ0QnVmZmVyKFhMb2dSZWNQdHIgdXB0bywgVGlt ZUxpbmVJRCB0bGksIGJvb2wgb3Bwb3J0dW5pc3RpYykKIAkJCQkJV3JpdGVScXN0LkZsdXNoID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJCQkJCVhMb2dXcml0ZShXcml0ZVJxc3QsIHRsaSwgZmFsc2Up OwogCQkJCQlMV0xvY2tSZWxlYXNlKFdBTFdyaXRlTG9jayk7Ci0JCQkJCXBnV2FsVXNhZ2Uud2Fs X2J1ZmZlcnNfZnVsbCsrOworCQkJCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9idWZmZXJzX2Z1 bGwpOwogCQkJCQlUUkFDRV9QT1NUR1JFU1FMX1dBTF9CVUZGRVJfV1JJVEVfRElSVFlfRE9ORSgp OwogCiAJCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggYmM1NTFmOTVhMDgu LjZhNGEwOGViYjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC01NCw3ICs1NCw2 IEBAIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlQoaW5zdHItPnN0YXJ0dGltZSk7CiAJfQogCi0JLyogc2F2ZSBidWZmZXIgdXNhZ2Ug dG90YWxzIGF0IG5vZGUgZW50cnksIGlmIG5lZWRlZCAqLwogCWlmIChpbnN0ci0+bmVlZF9idWZ1 c2FnZSkKIAkJaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCAwMGJjNjA5NTI5YS4uZGZhMzdlNWVkNDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC04MzUsNyArODM1LDcgQEAgUmVhZFJl Y2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJlciBmb3JrTnVtLCBC bG9ja051bWJlciBibG9ja04KIAkJewogCQkJUGluTG9jYWxCdWZmZXIoYnVmSGRyLCB0cnVlKTsK IAotCQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX2hpdCsrOworCQkJSU5TVFJfQlVGVVNBR0Vf SU5DUihsb2NhbF9ibGtzX2hpdCk7CiAKIAkJCXJldHVybiB0cnVlOwogCQl9CkBAIC04NTYsNyAr ODU2LDcgQEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051 bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja04KIAkJewogCQkJaWYgKEJ1ZmZlclRhZ3NF cXVhbCgmdGFnLCAmYnVmSGRyLT50YWcpKQogCQkJewotCQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVk X2Jsa3NfaGl0Kys7CisJCQkJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwog CQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJVW5waW5CdWZmZXIoYnVmSGRyKTsKQEAgLTEyNTcs MTQgKzEyNTcsMTQgQEAgUGluQnVmZmVyRm9yQmxvY2soUmVsYXRpb24gcmVsLAogCXsKIAkJYnVm SGRyID0gTG9jYWxCdWZmZXJBbGxvYyhzbWdyLCBmb3JrTnVtLCBibG9ja051bSwgZm91bmRQdHIp OwogCQlpZiAoKmZvdW5kUHRyKQotCQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX2hpdCsrOwor CQkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX2hpdCk7CiAJfQogCWVsc2UKIAl7CiAJ CWJ1ZkhkciA9IEJ1ZmZlckFsbG9jKHNtZ3IsIHBlcnNpc3RlbmNlLCBmb3JrTnVtLCBibG9ja051 bSwKIAkJCQkJCQkgc3RyYXRlZ3ksIGZvdW5kUHRyLCBpb19jb250ZXh0KTsKIAkJaWYgKCpmb3Vu ZFB0cikKLQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0Kys7CisJCQlJTlNUUl9CVUZV U0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAJfQogCWlmIChyZWwpCiAJewpAQCAtMTk5OCw5 ICsxOTk4LDkgQEAgQXN5bmNSZWFkQnVmZmVycyhSZWFkQnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0 aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJCQkJCQkJCQkJICB0cnVlKTsKIAogCQlpZiAo cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKLQkJCXBnQnVmZmVyVXNhZ2UubG9j YWxfYmxrc19oaXQgKz0gMTsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19oaXQp OwogCQllbHNlCi0JCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCArPSAxOworCQkJSU5T VFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwogCiAJCWlmIChvcGVyYXRpb24tPnJl bCkKIAkJCXBnc3RhdF9jb3VudF9idWZmZXJfaGl0KG9wZXJhdGlvbi0+cmVsKTsKQEAgLTIwNjgs OSArMjA2OCw5IEBAIEFzeW5jUmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9wZXJh dGlvbiwgaW50ICpuYmxvY2tzX3Byb2dyZXNzKQogCQkJCQkJCQlpb19zdGFydCwgMSwgaW9fYnVm ZmVyc19sZW4gKiBCTENLU1opOwogCiAJCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5D RV9URU1QKQotCQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19s ZW47CisJCQlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc19yZWFkLCBpb19idWZmZXJzX2xl bik7CiAJCWVsc2UKLQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArPSBpb19idWZm ZXJzX2xlbjsKKwkJCUlOU1RSX0JVRlVTQUdFX0FERChzaGFyZWRfYmxrc19yZWFkLCBpb19idWZm ZXJzX2xlbik7CiAKIAkJLyoKIAkJICogVHJhY2sgdmFjdXVtIGNvc3Qgd2hlbiBpc3N1aW5nIElP LCBub3QgYWZ0ZXIgd2FpdGluZyBmb3IgaXQuCkBAIC0yOTU5LDcgKzI5NTksNyBAQCBFeHRlbmRC dWZmZXJlZFJlbFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQlUZXJtaW5hdGVC dWZmZXJJTyhidWZfaGRyLCBmYWxzZSwgQk1fVkFMSUQsIHRydWUsIGZhbHNlKTsKIAl9CiAKLQlw Z0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gZXh0ZW5kX2J5OworCUlOU1RSX0JV RlVTQUdFX0FERChzaGFyZWRfYmxrc193cml0dGVuLCBleHRlbmRfYnkpOwogCiAJKmV4dGVuZGVk X2J5ID0gZXh0ZW5kX2J5OwogCkBAIC0zMTA1LDcgKzMxMDUsNyBAQCBNYXJrQnVmZmVyRGlydHko QnVmZmVyIGJ1ZmZlcikKIAkgKi8KIAlpZiAoIShvbGRfYnVmX3N0YXRlICYgQk1fRElSVFkpKQog CXsKLQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVkKys7CisJCUlOU1RSX0JVRlVT QUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfZGlydGllZCk7CiAJCWlmIChWYWN1dW1Db3N0QWN0aXZlKQog CQkJVmFjdXVtQ29zdEJhbGFuY2UgKz0gVmFjdXVtQ29zdFBhZ2VEaXJ0eTsKIAl9CkBAIC00NTIw LDcgKzQ1MjAsNyBAQCBGbHVzaEJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIFNNZ3JSZWxhdGlvbiBy ZWxuLCBJT09iamVjdCBpb19vYmplY3QsCiAJcGdzdGF0X2NvdW50X2lvX29wX3RpbWUoSU9PQkpF Q1RfUkVMQVRJT04sIGlvX2NvbnRleHQsCiAJCQkJCQkJSU9PUF9XUklURSwgaW9fc3RhcnQsIDEs IEJMQ0tTWik7CiAKLQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX3dyaXR0ZW4rKzsKKwlJTlNU Ul9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX3dyaXR0ZW4pOwogCiAJLyoKIAkgKiBNYXJrIHRo ZSBidWZmZXIgYXMgY2xlYW4gYW5kIGVuZCB0aGUgQk1fSU9fSU5fUFJPR1JFU1Mgc3RhdGUuCkBA IC01NjYzLDcgKzU2NjMsNyBAQCBNYXJrU2hhcmVkQnVmZmVyRGlydHlIaW50KEJ1ZmZlciBidWZm ZXIsIEJ1ZmZlckRlc2MgKmJ1ZkhkciwgdWludDY0IGxvY2tzdGF0ZSwKIAkJCVVubG9ja0J1Zkhk cihidWZIZHIpOwogCQl9CiAKLQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVkKys7 CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfZGlydGllZCk7CiAJCWlmIChWYWN1 dW1Db3N0QWN0aXZlKQogCQkJVmFjdXVtQ29zdEJhbGFuY2UgKz0gVmFjdXVtQ29zdFBhZ2VEaXJ0 eTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwppbmRleCA0MDRjNmJjY2Jk ZC4uODg0NWIwYWVlZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xv Y2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwpAQCAt MjE3LDcgKzIxNyw3IEBAIEZsdXNoTG9jYWxCdWZmZXIoQnVmZmVyRGVzYyAqYnVmSGRyLCBTTWdy UmVsYXRpb24gcmVsbikKIAkvKiBNYXJrIG5vdC1kaXJ0eSAqLwogCVRlcm1pbmF0ZUxvY2FsQnVm ZmVySU8oYnVmSGRyLCB0cnVlLCAwLCBmYWxzZSk7CiAKLQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Js a3Nfd3JpdHRlbisrOworCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc193cml0dGVuKTsK IH0KIAogc3RhdGljIEJ1ZmZlcgpAQCAtNDc4LDcgKzQ3OCw3IEBAIEV4dGVuZEJ1ZmZlcmVkUmVs TG9jYWwoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAogCSpleHRlbmRlZF9ieSA9IGV4dGVu ZF9ieTsKIAotCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc193cml0dGVuICs9IGV4dGVuZF9ieTsK KwlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc193cml0dGVuLCBleHRlbmRfYnkpOwogCiAJ cmV0dXJuIGZpcnN0X2Jsb2NrOwogfQpAQCAtNTA5LDcgKzUwOSw3IEBAIE1hcmtMb2NhbEJ1ZmZl ckRpcnR5KEJ1ZmZlciBidWZmZXIpCiAJYnVmX3N0YXRlID0gcGdfYXRvbWljX3JlYWRfdTY0KCZi dWZIZHItPnN0YXRlKTsKIAogCWlmICghKGJ1Zl9zdGF0ZSAmIEJNX0RJUlRZKSkKLQkJcGdCdWZm ZXJVc2FnZS5sb2NhbF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2Nh bF9ibGtzX2RpcnRpZWQpOwogCiAJYnVmX3N0YXRlIHw9IEJNX0RJUlRZOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9maWxlL2J1ZmZpbGUuYwppbmRleCBjNGFmZTRkMzY4YS4uOGI1MDFkZmNhZGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2J1ZmZpbGUuYwpAQCAtNDc1LDEzICs0NzUsMTMgQEAgQnVmRmlsZUxvYWRC dWZmZXIoQnVmRmlsZSAqZmlsZSkKIAlpZiAodHJhY2tfaW9fdGltaW5nKQogCXsKIAkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChpb190aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVm ZmVyVXNhZ2UudGVtcF9ibGtfcmVhZF90aW1lLCBpb190aW1lLCBpb19zdGFydCk7CisJCUlOU1RS X0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRih0ZW1wX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUsIGlv X3N0YXJ0KTsKIAl9CiAKIAkvKiB3ZSBjaG9vc2Ugbm90IHRvIGFkdmFuY2UgY3VyT2Zmc2V0IGhl cmUgKi8KIAogCWlmIChmaWxlLT5uYnl0ZXMgPiAwKQotCQlwZ0J1ZmZlclVzYWdlLnRlbXBfYmxr c19yZWFkKys7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IodGVtcF9ibGtzX3JlYWQpOwogfQogCiAv KgpAQCAtNTQ5LDEzICs1NDksMTMgQEAgQnVmRmlsZUR1bXBCdWZmZXIoQnVmRmlsZSAqZmlsZSkK IAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJewogCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChp b190aW1lKTsKLQkJCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1ZmZlclVzYWdlLnRlbXBfYmxr X3dyaXRlX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKKwkJCUlOU1RSX0JVRlVTQUdFX1RJTUVf QUNDVU1fRElGRih0ZW1wX2Jsa193cml0ZV90aW1lLCBpb190aW1lLCBpb19zdGFydCk7CiAJCX0K IAogCQlmaWxlLT5jdXJPZmZzZXQgKz0gYnl0ZXN0b3dyaXRlOwogCQl3cG9zICs9IGJ5dGVzdG93 cml0ZTsKIAotCQlwZ0J1ZmZlclVzYWdlLnRlbXBfYmxrc193cml0dGVuKys7CisJCUlOU1RSX0JV RlVTQUdFX0lOQ1IodGVtcF9ibGtzX3dyaXR0ZW4pOwogCX0KIAlmaWxlLT5kaXJ0eSA9IGZhbHNl OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDI4ZGUyNDUzOGRj Li45ZTdhODhlYzBkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAg LTEzNSwxNyArMTM1LDE3IEBAIHBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT2JqZWN0IGlvX29i amVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9fb3AsCiAJCQl7CiAJCQkJcGdzdGF0 X2NvdW50X2J1ZmZlcl93cml0ZV90aW1lKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGlvX3RpbWUp KTsKIAkJCQlpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1JFTEFUSU9OKQotCQkJCQlJTlNUUl9U SU1FX0FERChwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtfd3JpdGVfdGltZSwgaW9fdGltZSk7CisJ CQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKHNoYXJlZF9ibGtfd3JpdGVfdGltZSwgaW9fdGlt ZSk7CiAJCQkJZWxzZSBpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1RFTVBfUkVMQVRJT04pCi0J CQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrX3dyaXRlX3RpbWUsIGlv X3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChsb2NhbF9ibGtfd3JpdGVfdGlt ZSwgaW9fdGltZSk7CiAJCQl9CiAJCQllbHNlIGlmIChpb19vcCA9PSBJT09QX1JFQUQpCiAJCQl7 CiAJCQkJcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkX3RpbWUoSU5TVFJfVElNRV9HRVRfTUlDUk9T RUMoaW9fdGltZSkpOwogCQkJCWlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfUkVMQVRJT04pCi0J CQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa19yZWFkX3RpbWUsIGlv X3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChzaGFyZWRfYmxrX3JlYWRfdGlt ZSwgaW9fdGltZSk7CiAJCQkJZWxzZSBpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1RFTVBfUkVM QVRJT04pCi0JCQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrX3JlYWRf dGltZSwgaW9fdGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGxvY2FsX2Jsa19y ZWFkX3RpbWUsIGlvX3RpbWUpOwogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQu aAppbmRleCBiMTFkNjQ2MzNiNS4uMTEzOWJlODMzM2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVt ZW50LmgKQEAgLTE1Myw0ICsxNTMsMjMgQEAgZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBY2N1bURp ZmYoQnVmZmVyVXNhZ2UgKmRzdCwKIGV4dGVybiB2b2lkIFdhbFVzYWdlQWNjdW1EaWZmKFdhbFVz YWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQsCiAJCQkJCQkJICBjb25zdCBXYWxVc2FnZSAq c3ViKTsKIAorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9JTkNSKGZsZCkgZG8geyBcCisJCXBnQnVm ZmVyVXNhZ2UuZmxkKys7IFwKKwl9IHdoaWxlKDApCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0FE RChmbGQsdmFsKSBkbyB7IFwKKwkJcGdCdWZmZXJVc2FnZS5mbGQgKz0gdmFsOyBcCisJfSB3aGls ZSgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwKKwlJ TlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCX0gd2hpbGUgKDApCisj ZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0YXJ0dmFs KSBkbyB7IFwKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQsIGVuZHZh bCwgc3RhcnR2YWwpOyBcCisJfSB3aGlsZSAoMCkKKyNkZWZpbmUgSU5TVFJfV0FMVVNBR0VfSU5D UihmbGQpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCsrOyBcCisJfSB3aGlsZSgwKQorI2RlZmlu ZSBJTlNUUl9XQUxVU0FHRV9BREQoZmxkLHZhbCkgZG8geyBcCisJCXBnV2FsVXNhZ2UuZmxkICs9 IHZhbDsgXAorCX0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAqLwot LSAKMi40Ny4xCgo= --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Disposition: attachment; filename="v10-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5h3 RnJvbSAxNzY5NTVmMzQwMGE3ZGJkMWQyMTYzZmFiYTk1NGJiMzYzZGY2NWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIyIEZlYiAyMDI2IDE2OjEyOjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTAgNC85XSBp bnN0cnVtZW50YXRpb246IEFkZCBhZGRpdGlvbmFsIHJlZ3Jlc3Npb24gdGVzdHMKIGNvdmVyaW5n IGJ1ZmZlciB1c2FnZQoKVGhpcyBhZGRzIHJlZ3Jlc3Npb24gdGVzdHMgdGhhdCBjb3ZlciBzb21l IG9mIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIKYXJvdW5kIHRoZSBidWZmZXIgc3RhdGlzdGljcyBy ZXBvcnRlZCBpbiBFWFBMQUlOIEFOQUxZWkUsIHNwZWNpZmljYWxseQpob3cgdGhleSBiZWhhdmUg aW4gcGFyYWxsZWwgcXVlcnksIG5lc3RlZCBmdW5jdGlvbiBjYWxscyBhbmQgYWJvcnQKc2l0dWF0 aW9ucy4KClRlc3RpbmcgdGhpcyBpcyBjaGFsbGVuZ2luZyBiZWNhdXNlIHRoZXJlIGNhbiBiZSBk aWZmZXJlbnQgc291cmNlcyBvZgpidWZmZXIgYWN0aXZpdHksIHNvIHdlIHJlbHkgb24gdGVtcG9y YXJ5IHRhYmxlcyB3aGVyZSB3ZSBjYW4gdG8gcHJvdmUKdGhhdCBhY3Rpdml0eSB3YXMgY2FwdHVy ZWQgYW5kIG5vdCBsb3N0LiBUaGlzIHN1cHBvcnRzIGEgZnV0dXJlIGNvbW1pdAp0aGF0IHdpbGwg cmV3b3JrIHNvbWUgb2YgdGhlIGluc3RydW1lbnRhdGlvbiBsb2dpYyB0aGF0IGNvdWxkIGNhdXNl CmFyZWFzIGNvdmVyZWQgYnkgdGhlc2UgdGVzdHMgdG8gZmFpbC4KCkF1dGhvcjogTHVrYXMgRml0 dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogLi4uL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dCAgIHwgIDcwICsrKysrKysKIGNv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQgICB8ICA0OCArKysrKwog Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsICAgIHwgIDU2ICsrKysr CiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNxbCAgICAgICAgfCAgMzMgKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0ICAgICAgICAgfCAxOTcgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAg ICAgICAgfCAxOTQgKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC91dGlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxp dHkub3V0CmluZGV4IGU0ZDY1NjRlYTViLi5jYmE0ODdmNmJlNSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKKysrIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKQEAgLTI4OSw2ICsyODksNzYg QEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdAogKDMgcm93cykKIAorLS0gQnVmZmVy IHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBU QUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRP IGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitDUkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVm ZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNV VEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdo X3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRl bWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKyBydW5fZXhwbGFpbl9idWZmZXJz X3Rlc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBFWFBM QUlOIGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1QgcXVl cnksIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVyX3N0 YXRzCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNUIHJ1 bl9leHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAg ICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgfCBoYXNfYnVmZmVyX3N0YXRzIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgU0VM RUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpIHwgdAorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdDsKK0RST1AgVEFCTEUgZmxvd190aHJvdWdoX3Rl c3Q7CistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9ydAorU0VUIHBn X3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19j YWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19jYWxs X3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIgVkFM VUVTICgwLCAnenp6Jyk7CitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19wcm9j KCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQTEFJTiBBTkFMWVpF IFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxFQ1QgKiBGUk9NIHBn c3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGlu czsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVM TCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK0NBTEwgcGdzc19jYWxsX3JvbGxiYWNr X3Byb2MoKTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Js a3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVz X2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxi YWNrX3Byb2MlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgcXVl cnkgICAgICAgICAgICAgIHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVy YXRlZCB8IHdhbF9yZWNvcmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKSB8ICAg ICAxIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisK K0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitE Uk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRl bWVudHMudHJhY2sgPSAndG9wJzsKIC0tIENBTEwKIENSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVS RSBzdW1fb25lKGkgaW50KSBBUyAkJAogREVDTEFSRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL2V4cGVjdGVkL3dhbC5vdXQKaW5kZXggOTc3ZTM4MmQ4NDguLjYxMTIxM2RhZWY2IDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0CisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKQEAgLTI4LDMgKzI4 LDUxIEBAIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0 OwogIHQKICgxIHJvdykKIAorLS0KKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgd2l0 aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcGdz c19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJyb3Jf dGFiIFZBTFVFUyAoMCwgJ3p6eicpOworQ1JFQVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygp IFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRI IGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19lcnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVU VVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBX SEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFT IHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIHBnc3NfZXJyb3JfZnVuYygpOwor IHBnc3NfZXJyb3JfZnVuYyAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEJ1 ZmZlci9XQUwgdXNhZ2UgZnJvbSB0aGUgd0NURSBJTlNFUlQgc2hvdWxkIHN1cnZpdmUgdGhlIGV4 Y2VwdGlvbgorU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNf Z2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2Vycm9yX2Z1bmMl JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgcXVlcnkgICAgICAgICAg IHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVyYXRlZCB8IHdhbF9yZWNv cmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNFTEVDVCBwZ3NzX2Vycm9yX2Z1bmMoKSB8ICAgICAxIHwgdCAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgcGdzc19lcnJvcl90YWI7 CitEUk9QIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYzsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVu dHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbCBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbAppbmRleCBkZDk3MjAzYzIx MC4uNzU0MGU0OWM3M2MgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC91dGlsaXR5LnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0 eS5zcWwKQEAgLTE1Miw2ICsxNTIsNjIgQEAgRVhQTEFJTiAoY29zdHMgb2ZmKSBTRUxFQ1QgYSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyB0YWIoYSkgV0hFUkUgYSA9IDc7CiAKIFNFTEVD VCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVl cnkgQ09MTEFURSAiQyI7CiAKKy0tIEJ1ZmZlciBzdGF0cyBzaG91bGQgZmxvdyB0aHJvdWdoIEVY UExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZmxvd190aHJvdWdoX3Rlc3QgKGEgaW50 LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBmbG93X3Rocm91Z2hfdGVzdCBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCitD UkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFT ICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdoX3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisKK1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKworLS0gRVhQTEFJ TiBlbnRyaWVzIHNob3VsZCBoYXZlIG5vbi16ZXJvIGJ1ZmZlciBzdGF0cworU0VMRUNUIHF1ZXJ5 LCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgaGFzX2J1ZmZlcl9zdGF0 cworRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJ1NFTEVDVCBydW5f ZXhwbGFpbl9idWZmZXJzX3Rlc3QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RS T1AgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93X3Ro cm91Z2hfdGVzdDsKKworLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyBkdXJpbmcgYWJv cnQKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK0NSRUFURSBURU1QIFRB QkxFIHBnc3NfY2FsbF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBURU1QIFRBQkxF IHBnc3NfY2FsbF90YWIyIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Nh bGxfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9y b2xsYmFja19wcm9jKCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQ TEFJTiBBTkFMWVpFIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxF Q1QgKiBGUk9NIHBnc3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElO VE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNl dCgpIElTIE5PVCBOVUxMIEFTIHQ7CitDQUxMIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jKCk7CisK K1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+ IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVzX2dlbmVyYXRl ZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZST00gcGdfc3Rh dF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxiYWNrX3Byb2Ml JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgcGdzc19jYWxsX3Rh YjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitEUk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxf cm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKKwog LS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIHN1bV9vbmUoaSBpbnQpIEFTICQk CiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2Fs LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsCmluZGV4IDFkYzE1 NTJhODFlLi40NjdlMzIxYjIwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvc3FsL3dhbC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dhbC5z cWwKQEAgLTE4LDMgKzE4LDM2IEBAIHdhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5l cmF0ZWQsCiB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3MKIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogU0VMRUNUIHBn X3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBWYWxp ZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIHdpdGggY2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NR TAorLS0KK0NSRUFURSBURU1QIFRBQkxFIHBnc3NfZXJyb3JfdGFiIChhIGludCwgYiBjaGFyKDIw KSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKworQ1JF QVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFS RQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19l cnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAw IElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgor ICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKK1NFTEVDVCBwZ3NzX2Vycm9yX2Z1 bmMoKTsKKworLS0gQnVmZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91bGQg c3Vydml2ZSB0aGUgZXhjZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19o aXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAw IGFzIHdhbF9ieXRlc19nZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNf Z2VuZXJhdGVkCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBn c3NfZXJyb3JfZnVuYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJM RSBwZ3NzX2Vycm9yX3RhYjsKK0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VMRUNU IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCA3YzFmMjZiMTgyYy4uZTI4ZTc1NDM2OTMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtODIyLDMgKzgyMiwyMDAgQEAg c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3Rz IG9mZikgc2VsZWN0IHN1bShuKSBvdmUKICg5IHJvd3MpCiAKIHJlc2V0IHdvcmtfbWVtOworLS0g RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2UgZnJv bSBQTC9wZ1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2FjdGlv biByb2xsYmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQsIGIg Y2hhcigyMCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6eicp OworQ1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQK K0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRP IGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxF Q1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVy byBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgRlVO Q1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpIFJFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0 b3RhbF9idWZmZXJzIGludDsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGV4cGxhaW5f ZXhjX2Z1bmMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQ bGFuJzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAw OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKyBleGNlcHRpb25f YnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCistLSBBbHNvIHRlc3Qgd2l0aCBuZXN0ZWQgRVhQTEFJTiBBTkFMWVpFICh0d28gbGV2ZWxz IG9mIGluc3RydW1lbnRhdGlvbikKK0NSRUFURSBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzX25lc3RlZCgpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQorICAg IHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0b3RhbF9idWZmZXJzIGludDsK K0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1 ZmZlcnMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAwOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlv bl9idWZmZXJzX25lc3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlOwor IGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWlu X2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9l eGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYzsKK0RST1Ag VEFCTEUgZXhwbGFpbl9leGNfdGFiOworLS0gQ3Vyc29yIGluc3RydW1lbnRhdGlvbiB0ZXN0Lgor LS0gVmVyaWZ5IHRoYXQgYnVmZmVyIHVzYWdlIGlzIGNvcnJlY3RseSB0cmFja2VkIHRocm91Z2gg Y3Vyc29yIGV4ZWN1dGlvbiBwYXRocy4KKy0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvcnMgZXhlcmNp c2UgRXhlY1NodXRkb3duTm9kZSBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCistLSAoRVhFQ19GTEFH X0JBQ0tXQVJEIGlzIG5vdCBzZXQpLCB3aGlsZSBzY3JvbGxhYmxlIGN1cnNvcnMgb25seSBzaHV0 IGRvd24KKy0tIG5vZGVzIGluIEV4ZWN1dG9yRmluaXNoLiBJbiBib3RoIGNhc2VzLCBidWZmZXIg dXNhZ2UgZnJvbSB0aGUgaW5uZXIgY3Vyc29yCistLSBzY2FuIHNob3VsZCBiZSBjb3JyZWN0bHkg YWNjdW11bGF0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3QgQVMgU0VMRUNU ICogRlJPTSB0ZW5rMTsKK0NSRUFURSBGVU5DVElPTiBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJF VFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9S IFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250 IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZF VENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7 CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsK KyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW4oKSBSRVRVUk5TIGJpZ2ludCBBUyAkJAorREVDTEFSRQor ICAgIGN1ciBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdDsK KyAgICByZWMgUkVDT1JEOworICAgIGNudCBiaWdpbnQgOj0gMDsKK0JFR0lOCisgICAgT1BFTiBj dXI7CisgICAgTE9PUAorICAgICAgICBGRVRDSCBORVhUIEZST00gY3VyIElOVE8gcmVjOworICAg ICAgICBFWElUIFdIRU4gTk9UIEZPVU5EOworICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICBF TkQgTE9PUDsKKyAgICBDTE9TRSBjdXI7CisgICAgUkVUVVJOIGNudDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVy cygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sgYm9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4p IEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAg IGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xsX2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBp bnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2FuOiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1 ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT LCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9i dWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9k ZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVORCBMT09QOworICAgIGRpcmVjdF9idWYgOj0K KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsK KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsK KworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1 bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jf bm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+ MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBza2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VM RUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBs YW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vy c29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVyIGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisg ICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRhdGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJo ZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1jb3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2Nh bikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIChub3Njcm9sbF9idWYgPj0gZGly ZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAg ICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICogMC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0 X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCAqIEZST00gY2hl Y2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpOworIG5vc2Nyb2xsX29rIHwgc2Nyb2xsX29rIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHQgICAgICAgICAgIHwgdAorKDEgcm93KQorCitE Uk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZVTkNUSU9O IGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW47 CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKy0tIFBhcmFsbGVsIHF1ZXJ5IGJ1ZmZlciBk b3VibGUtY291bnRpbmcgdGVzdC4KKy0tCistLSBDb21wYXJlcyBzZXJpYWwgU2VxIFNjYW4gYnVm ZmVycyB2cyBwYXJhbGxlbCBTZXEgU2NhbiBidWZmZXJzLgorLS0gVGhleSBzY2FuIHRoZSBzYW1l IHRhYmxlIHNvIHRoZSBidWZmZXIgY291bnQgc2hvdWxkIGJlIHNpbWlsYXIuCistLSBEb3VibGUt Y291bnRpbmcgd291bGQgbWFrZSB0aGUgcGFyYWxsZWwgY291bnQgfjJ4IGxhcmdlci4KK0NSRUFU RSBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxF KHJhdGlvIG51bWVyaWMpIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAg c2VyaWFsX2J1ZmZlcnMgaW50OworICAgIHBhcmFsbGVsX2J1ZmZlcnMgaW50OworICAgIG5vZGUg anNvbjsKK0JFR0lOCisgICAgLS0gU2VyaWFsIC0tCisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+ J1BsYW4nOworICAgIHNlcmlhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J1NoYXJlZCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidTaGFyZWQgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIFBhcmFsbGVsIC0tCisg ICAgU0VUIExPQ0FMIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBwYXJh bGxlbF90dXBsZV9jb3N0ID0gMDsKKyAgICBTRVQgTE9DQUwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAyOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9m ZjsKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZP Uk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMScgSU5UTyBwbGFu X2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBwYXJhbGxlbF9i dWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBIaXQgQmxvY2tzJyk6 OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidTaGFyZWQgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKworICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1Qgcm91bmQocGFyYWxsZWxfYnVm ZmVyczo6bnVtZXJpYyAvIEdSRUFURVNUKHNlcmlhbF9idWZmZXJzLCAxKSk7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworU0VMRUNUICogRlJPTSBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1 ZmZlcnMoKTsKKyByYXRpbyAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5z cWwKaW5kZXggZWJkYWI0MjYwNGIuLmNmNWM2MzM1YTE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWlu LnNxbApAQCAtMTg4LDMgKzE4OCwxOTcgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmUKIC0tIFRl c3QgdHVwbGVzdG9yZSBzdG9yYWdlIHVzYWdlIGluIFdpbmRvdyBhZ2dyZWdhdGUgKG1lbW9yeSBh bmQgZGlzayBjYXNlLCBmaW5hbCByZXN1bHQgaXMgZGlzaykKIHNlbGVjdCBleHBsYWluX2ZpbHRl cignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikg b3ZlcihwYXJ0aXRpb24gYnkgbSkgZnJvbSAoU0VMRUNUIG4gPCAzIGFzIG0sIG4gZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwyNTAwKSBhKG4pKScpOwogcmVzZXQgd29ya19tZW07CisKKy0tIEVYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMpIHNob3VsZCByZXBvcnQgYnVmZmVyIHVzYWdlIGZyb20gUEwv cGdTUUwKKy0tIEVYQ0VQVElPTiBibG9ja3MsIGV2ZW4gYWZ0ZXIgc3VidHJhbnNhY3Rpb24gcm9s bGJhY2suCitDUkVBVEUgVEVNUCBUQUJMRSBleHBsYWluX2V4Y190YWIgKGEgaW50LCBiIGNoYXIo MjApKTsKK0lOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKwor Q1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RF Q0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIGV4 cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1Qg YSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBU SEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFT ICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRv dGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgZXhwbGFpbl9l eGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1Bs YW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNl cHRpb25fYnVmZmVycygpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2libGU7CisKKy0tIEFsc28g dGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBsZXZlbHMgb2YgaW5zdHJ1bWVu dGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNf bmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpz b247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBF WEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09O KQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpJyBJTlRP IHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHRvdGFs X2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2Nrcycp OjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyc19u ZXN0ZWQoKSBBUyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlzaWJsZTsKKworRFJPUCBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJ T04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFp bl9leGNfZnVuYzsKK0RST1AgVEFCTEUgZXhwbGFpbl9leGNfdGFiOworCistLSBDdXJzb3IgaW5z dHJ1bWVudGF0aW9uIHRlc3QuCistLSBWZXJpZnkgdGhhdCBidWZmZXIgdXNhZ2UgaXMgY29ycmVj dGx5IHRyYWNrZWQgdGhyb3VnaCBjdXJzb3IgZXhlY3V0aW9uIHBhdGhzLgorLS0gTm9uLXNjcm9s bGFibGUgY3Vyc29ycyBleGVyY2lzZSBFeGVjU2h1dGRvd25Ob2RlIGFmdGVyIGVhY2ggRXhlY3V0 b3JSdW4KKy0tIChFWEVDX0ZMQUdfQkFDS1dBUkQgaXMgbm90IHNldCksIHdoaWxlIHNjcm9sbGFi bGUgY3Vyc29ycyBvbmx5IHNodXQgZG93bgorLS0gbm9kZXMgaW4gRXhlY3V0b3JGaW5pc2guIElu IGJvdGggY2FzZXMsIGJ1ZmZlciB1c2FnZSBmcm9tIHRoZSBpbm5lciBjdXJzb3IKKy0tIHNjYW4g c2hvdWxkIGJlIGNvcnJlY3RseSBhY2N1bXVsYXRlZC4KKworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vy c29yX2J1Zl90ZXN0IEFTIFNFTEVDVCAqIEZST00gdGVuazE7CisKK0NSRUFURSBGVU5DVElPTiBj dXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAg Y3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0Owor ICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1 cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAg ICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVO RCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxfc2NhbigpIFJFVFVS TlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVD VCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2lu dCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5F WFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAg ICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBS RVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9O IGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxFKG5vc2Nyb2xsX29r IGJvb2xlYW4sIHNjcm9sbF9vayBib29sZWFuKSBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNv biBqc29uOworICAgIG5vZGUganNvbjsKKyAgICBkaXJlY3RfYnVmIGludDsKKyAgICBub3Njcm9s bF9idWYgaW50OworICAgIHNjcm9sbF9idWYgaW50OworQkVHSU4KKyAgICAtLSBEaXJlY3Qgc2Nh bjogZ2V0IGxlYWYgU2VxIFNjYW4gbm9kZSBidWZmZXJzIGFzIGJhc2VsaW5lCisgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAg ICAgICAgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3QnIElOVE8gcGxhbl9qc29uOworICAg IG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgV0hJTEUgbm9kZS0+J1BsYW5zJyBJ UyBOT1QgTlVMTCBMT09QCisgICAgICAgIG5vZGUgOj0gbm9kZS0+J1BsYW5zJy0+MDsKKyAgICBF TkQgTE9PUDsKKyAgICBkaXJlY3RfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBOb24tc2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBydW5zIGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKyAg ICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBK U09OKQorICAgICAgICBTRUxFQ1QgY3Vyc29yX25vc2Nyb2xsX3NjYW4oKScgSU5UTyBwbGFuX2pz b247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBub3Njcm9sbF9idWYg Oj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDAp ICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAw KTsKKworICAgIC0tIFNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgaXMg c2tpcHBlZAorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfc2Nyb2xsX3NjYW4oKScgSU5U TyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBzY3Jv bGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6 aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6 OmludCwgMCk7CisKKyAgICAtLSBCb3RoIGN1cnNvciBwYXRocyBzaG91bGQgcmVwb3J0IGJ1ZmZl ciBjb3VudHMgYWJvdXQgYXMgaGlnaCBhcworICAgIC0tIHRoZSBkaXJlY3Qgc2NhbiAoc2FtZSBk YXRhIHBsdXMgbWlub3IgY2F0YWxvZyBvdmVyaGVhZCksIGFuZCBub3QKKyAgICAtLSBkb3VibGUt Y291bnRlZCAoPCAyeCB0aGUgZGlyZWN0IHNjYW4pCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAor ICAgICAgICAobm9zY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUgQU5EIG5vc2Nyb2xsX2J1 ZiA8IGRpcmVjdF9idWYgKiAyKSwKKyAgICAgICAgKHNjcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAq IDAuNSBBTkQgc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKTsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygp OworCitEUk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZV TkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xs X3NjYW47CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKworLS0gUGFyYWxsZWwgcXVlcnkg YnVmZmVyIGRvdWJsZS1jb3VudGluZyB0ZXN0LgorLS0KKy0tIENvbXBhcmVzIHNlcmlhbCBTZXEg U2NhbiBidWZmZXJzIHZzIHBhcmFsbGVsIFNlcSBTY2FuIGJ1ZmZlcnMuCistLSBUaGV5IHNjYW4g dGhlIHNhbWUgdGFibGUgc28gdGhlIGJ1ZmZlciBjb3VudCBzaG91bGQgYmUgc2ltaWxhci4KKy0t IERvdWJsZS1jb3VudGluZyB3b3VsZCBtYWtlIHRoZSBwYXJhbGxlbCBjb3VudCB+MnggbGFyZ2Vy LgorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVycygpIFJFVFVS TlMgVEFCTEUocmF0aW8gbnVtZXJpYykgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNv bjsKKyAgICBzZXJpYWxfYnVmZmVycyBpbnQ7CisgICAgcGFyYWxsZWxfYnVmZmVycyBpbnQ7Cisg ICAgbm9kZSBqc29uOworQkVHSU4KKyAgICAtLSBTZXJpYWwgLS0KKyAgICBTRVQgTE9DQUwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9q c29uLT4wLT4nUGxhbic7CisgICAgc2VyaWFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nU2hhcmVkIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NF KChub2RlLT4+J1NoYXJlZCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gUGFyYWxs ZWwgLS0KKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExP Q0FMIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uID0gb2ZmOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RT IE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxJyBJ TlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHBh cmFsbGVsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIEhpdCBC bG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBSZWFk IEJsb2NrcycpOjppbnQsIDApOworCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVCByb3VuZChwYXJh bGxlbF9idWZmZXJzOjpudW1lcmljIC8gR1JFQVRFU1Qoc2VyaWFsX2J1ZmZlcnMsIDEpKTsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfcGFyYWxsZWxf ZXhwbGFpbl9idWZmZXJzKCk7CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfZXhwbGFp bl9idWZmZXJzOwotLSAKMi40Ny4xCgo= --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Disposition: attachment; filename="v10-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5c1 RnJvbSAwMjkyNTEwOTQxN2UzYTU3MzdmODZlMjQ3NTg1ODViN2ZkOWE5ZDY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMDE6MTk6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCAyLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgcGVyLW5vZGUgbG9naWMgZnJvbSBvdGhlcgogdXNlcwoK UHJldmlvdXNseSBkaWZmZXJlbnQgcGxhY2VzIChlLmcuIHF1ZXJ5ICJ0b3RhbCB0aW1lIikgd2Vy ZSByZXB1cnBvc2luZwp0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpbml0aWFsbHkgaW50cm9k dWNlZCBmb3IgY2FwdHVyaW5nIHBlci1ub2RlCnN0YXRpc3RpY3MgZHVyaW5nIGV4ZWN1dGlvbi4g VGhpcyBvdmVydXNlIG9mIHRoZSBzYW1lIHN0cnVjdCBpcyBjb25mdXNpbmcsCmUuZy4gYnkgY2x1 dHRlcmluZyBjYWxscyBvZiBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGluIHVucmVsYXRl ZApjb2RlIHBhdGhzLCBhbmQgcHJldmVudHMgZnV0dXJlIHJlZmFjdG9yaW5ncy4KCkluc3RlYWQs IHNpbXBsaWZ5IHRoZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IHRvIG9ubHkgdHJhY2sgdGltZSBh bmQKV0FML2J1ZmZlciB1c2FnZS4gU2ltaWxhcmx5LCBkcm9wIHRoZSB1c2Ugb2YgSW5zdHJFbmRM b29wIG91dHNpZGUgb2YKcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIC0gdGhlc2UgY2FsbHMgd2Vy ZSBhZGRlZCB3aXRob3V0IGFueSBhcHBhcmVudApiZW5lZml0IHNpbmNlIHRoZSByZWxldmFudCBm aWVsZHMgd2VyZSBuZXZlciByZWFkLgoKSW50cm9kdWNlIHRoZSBOb2RlSW5zdHJ1bWVudGF0aW9u IHN0cnVjdCB0byBjYXJyeSBmb3J3YXJkIHRoZSBwZXItbm9kZQppbnN0cnVtZW50YXRpb24gaW5m b3JtYXRpb24uIFdvcmtlckluc3RydW1lbnRhdGlvbiBpcyByZW5hbWVkIHRvCldvcmtlck5vZGVJ bnN0cnVtZW50YXRpb24gZm9yIGNsYXJpdHkuCgpJbiBwYXNzaW5nLCBkcm9wIHRoZSAibiIgYXJn dW1lbnQgdG8gSW5zdHJBbGxvYywgYXMgYWxsIHJlbWFpbmluZyBjYWxsZXJzCm5lZWQgZXhhY3Rs eSBvbmUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwgICA4ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgIDggKy0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDIwICstLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMjQgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2luc3RydW1lbnQuYyAgICAgICAgICAgICB8IDE0MiArKysrKysrKysrKystLS0tLS0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgICAgICAgICB8ICA2MCArKysrKy0tLQog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA5ICstCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDEx IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1 dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBlODU2Y2QzNWE2Zi4uMzliZjI1NDNiNzAg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2Nv bnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0zMTUsNyArMzE1LDcgQEAgZXhw bGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0 aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFsc2UpOworCQkJcXVlcnlEZXNj LT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKIAkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMzgxLDEyICszODEsNiBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCi0J CS8qCi0JCSAqIE1ha2Ugc3VyZSBzdGF0cyBhY2N1bXVsYXRpb24gaXMgZG9uZS4gIChOb3RlOiBp dCdzIG9rYXkgaWYgc2V2ZXJhbAotCQkgKiBsZXZlbHMgb2YgaG9vayBhbGwgZG8gdGhpcy4pCi0J CSAqLwotCQlJbnN0ckVuZExvb3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwotCiAJCS8qIExvZyBw bGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwogCQltc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKIAkJaWYgKG1zZWMgPj0gYXV0 b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDZjYjE0ODI0ZWMzLi4zZTc5MTA4ODQ2ZSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMK QEAgLTEwMjQsNyArMTAyNCw3IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJCQlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9BTEws IGZhbHNlKTsKKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5U X0FMTCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KQEAgLTEw ODMsMTIgKzEwODMsNiBAQCBwZ3NzX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CWlmIChxdWVyeUlkICE9IElOVDY0Q09OU1QoMCkgJiYgcXVlcnlEZXNjLT50b3RhbHRpbWUgJiYK IAkJcGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpKQogCXsKLQkJLyoKLQkJICogTWFrZSBzdXJl IHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0J3Mgb2theSBpZiBzZXZlcmFs Ci0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJICovCi0JCUluc3RyRW5kTG9v cChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeURlc2MtPnNvdXJj ZVRleHQsCiAJCQkJICAgcXVlcnlJZCwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5z dG10X2xvY2F0aW9uLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNf ZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0MWU0N2Nj Nzk1Yi4uY2M4ZWMyNGMzMGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0y Nzc5LDcgKzI3NzksNyBAQCBwb3N0Z3Jlc0l0ZXJhdGVEaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5T dGF0ZSAqbm9kZSkKIAlpZiAoIXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcpCiAJ ewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7Ci0J CUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBub2RlLT5zcy5wcy5pbnN0cnVtZW50OworCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CiAKIAkJQXNz ZXJ0KCFkbXN0YXRlLT5oYXNfcmV0dXJuaW5nKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IGViNmVmMjNjMmQ2Li5lNzNkYzEyOTEzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTgz Nyw3ICsxODM3LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFu Y2VzdG9ycywKIAl7CiAJCWRvdWJsZQkJbmxvb3BzID0gcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5u bG9vcHM7CiAJCWRvdWJsZQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBs YW5zdGF0ZS0+aW5zdHJ1bWVudC0+c3RhcnR1cCkgLyBubG9vcHM7Ci0JCWRvdWJsZQkJdG90YWxf bXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwbGFuc3RhdGUtPmluc3RydW1lbnQtPnRvdGFs KSAvIG5sb29wczsKKwkJZG91YmxlCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIudG90YWwpIC8gbmxvb3BzOwogCQlkb3VibGUJ CXJvd3MgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKQEAgLTE4OTAsMTEgKzE4OTAsMTEg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkv KiBwcmVwYXJlIHBlci13b3JrZXIgZ2VuZXJhbCBleGVjdXRpb24gZGV0YWlscyAqLwogCWlmIChl cy0+d29ya2Vyc19zdGF0ZSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtlckluc3RydW1lbnRh dGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdvcmtlck5vZGVJbnN0 cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50OwogCiAJCWZvciAo aW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3VibGUJCW5sb29wcyA9 IGluc3RydW1lbnQtPm5sb29wczsKIAkJCWRvdWJsZQkJc3RhcnR1cF9tczsKIAkJCWRvdWJsZQkJ dG90YWxfbXM7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJaWYgKG5sb29wcyA8PSAwKQogCQkJCWNvbnRp bnVlOwogCQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RydW1lbnQt PnN0YXJ0dXApIC8gbmxvb3BzOwotCQkJdG90YWxfbXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF QyhpbnN0cnVtZW50LT50b3RhbCkgLyBubG9vcHM7CisJCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVf R0VUX01JTExJU0VDKGluc3RydW1lbnQtPmluc3RyLnRvdGFsKSAvIG5sb29wczsKIAkJCXJvd3Mg PSBpbnN0cnVtZW50LT5udHVwbGVzIC8gbmxvb3BzOwogCiAJCQlFeHBsYWluT3Blbldvcmtlcihu LCBlcyk7CkBAIC0yMjkwLDE4ICsyMjkwLDE4IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2UgKi8K IAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+YnVmdXNhZ2UpOworCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOwog CWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKLQkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPndhbHVzYWdlKTsKKwkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAogCS8qIFByZXBh cmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCiAJaWYgKGVzLT53b3JrZXJzX3N0YXRl ICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtl ckluc3RydW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdv cmtlck5vZGVJbnN0cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50 OwogCiAJCWZvciAoaW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3Vi bGUJCW5sb29wcyA9IGluc3RydW1lbnQtPm5sb29wczsKIAogCQkJaWYgKG5sb29wcyA8PSAwKQpA QCAtMjMwOSw5ICsyMzA5LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMpOwogCQkJaWYgKGVz LT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+YnVmdXNh Z2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNh Z2UpOwogCQkJaWYgKGVzLT53YWwpCi0JCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50 LT53YWx1c2FnZSk7CisJCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53 YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xvc2VXb3JrZXIobiwgZXMpOwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggNTM2MzExNjNkZDYuLjFiOTUwMDQwNTk3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVj dXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RhcnROb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwkJSW5zdHJTdGFydChxdWVyeURl c2MtPnRvdGFsdGltZSk7CiAKIAkvKgogCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUg cXVlcnkgZGVzY3JpcHRvciBhbmQgdGhlIHF1ZXJ5IGZlYXR1cmUuCkBAIC0zODUsNyArMzg1LDcg QEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCWRlc3QtPnJT aHV0ZG93bihkZXN0KTsKIAogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdG9w Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSwgZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQlJbnN0 clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNo KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCiAJLyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4 ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJ SW5zdHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clN0YXJ0KHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCS8qIFJ1biBNb2RpZnlUYWJsZSBub2RlcyB0byBjb21wbGV0 aW9uICovCiAJRXhlY1Bvc3Rwcm9jZXNzUGxhbihlc3RhdGUpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQlBZnRlclRy aWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJ bnN0clN0b3BOb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCAwKTsKKwkJSW5zdHJTdG9wKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhYzg0YWYyOTRjOS4uYzE1M2Q1 YzFjM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04Nyw3ICs4Nyw3IEBA IHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlCiAgKiBpbnN0cnVtZW50 X29wdGlvbnM6IFNhbWUgbWVhbmluZyBoZXJlIGFzIGluIGluc3RydW1lbnQuYy4KICAqCiAgKiBp bnN0cnVtZW50X29mZnNldDogT2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBz dHJ1Y3R1cmUsCi0gKiBvZiB0aGUgZmlyc3QgSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMg d2lsbCBkZXBlbmQgb24gdGhlIGxlbmd0aCBvZgorICogb2YgdGhlIGZpcnN0IE5vZGVJbnN0cnVt ZW50YXRpb24gb2JqZWN0LiAgVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCiAgKiB0 aGUgcGxhbl9ub2RlX2lkIGFycmF5LgogICoKICAqIG51bV93b3JrZXJzOiBOdW1iZXIgb2Ygd29y a2Vycy4KQEAgLTEwNCwxMSArMTA0LDE1IEBAIHN0cnVjdCBTaGFyZWRFeGVjdXRvckluc3RydW1l bnRhdGlvbgogCWludAkJCW51bV93b3JrZXJzOwogCWludAkJCW51bV9wbGFuX25vZGVzOwogCWlu dAkJCXBsYW5fbm9kZV9pZFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwotCS8qIGFycmF5IG9mIG51 bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgSW5zdHJ1bWVudGF0aW9uIG9iamVjdHMgZm9sbG93 cyAqLworCisJLyoKKwkgKiBhcnJheSBvZiBudW1fcGxhbl9ub2RlcyAqIG51bV93b3JrZXJzIE5v ZGVJbnN0cnVtZW50YXRpb24gb2JqZWN0cworCSAqIGZvbGxvd3MKKwkgKi8KIH07CiAjZGVmaW5l IEdldEluc3RydW1lbnRhdGlvbkFycmF5KHNlaSkgXAogCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlz T2ZUeXBlTWFjcm8oc2VpLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAotCSAo SW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9vZmZz ZXQpKQorCSAoTm9kZUluc3RydW1lbnRhdGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmlu c3RydW1lbnRfb2Zmc2V0KSkKIAogLyogQ29udGV4dCBvYmplY3QgZm9yIEV4ZWNQYXJhbGxlbEVz dGltYXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRXhlY1BhcmFsbGVsRXN0aW1hdGVDb250ZXh0CkBA IC03MjUsNyArNzI5LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlpbnN0cnVtZW50YXRpb25fbGVuID0gTUFYQUxJR04oaW5z dHJ1bWVudGF0aW9uX2xlbik7CiAJCWluc3RydW1lbnRfb2Zmc2V0ID0gaW5zdHJ1bWVudGF0aW9u X2xlbjsKIAkJaW5zdHJ1bWVudGF0aW9uX2xlbiArPQotCQkJbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksCisJCQltdWxfc2l6ZShzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbiksCiAJ CQkJCSBtdWxfc2l6ZShlLm5ub2RlcywgbndvcmtlcnMpKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwpAQCAtODExLDcgKzgxNSw3IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkgKi8KIAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQogCXsKLQkJSW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50OworCQlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCQlpbnQJ CQlpOwogCiAJCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKQEAgLTgyMSw3ICs4MjUsNyBAQCBFeGVjSW5pdFBhcmFsbGVs UGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRh dGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBlLm5ub2RlczsKIAkJaW5zdHJ1bWVudCA9IEdldEluc3Ry dW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9IDA7IGkgPCBud29y a2VycyAqIGUubm5vZGVzOyArK2kpCi0JCQlJbnN0ckluaXQoJmluc3RydW1lbnRbaV0sIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQlJbnN0ckluaXROb2RlKCZpbnN0cnVtZW50W2ldLCBlc3Rh dGUtPmVzX2luc3RydW1lbnQpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7CiAJCXBlaS0+ aW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1bWVudGF0aW9uOwpAQCAtMTA1Myw3ICsxMDU3LDcgQEAg c3RhdGljIGJvb2wKIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbikKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CisJTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKIAlpbnQJCQlpOwogCWludAkJCW47CiAJaW50CQkJ aWJ5dGVzOwpAQCAtMTA4MSw5ICsxMDg1LDkgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVt ZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogU3dpdGNoIGludG8gcGVyLXF1ZXJ5 IG1lbW9yeSBjb250ZXh0LgogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQlpYnl0ZXMgPSBtdWxfc2l6ZShp bnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJ aWJ5dGVzID0gbXVsX3NpemUoaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2Vycywgc2l6ZW9mKE5v ZGVJbnN0cnVtZW50YXRpb24pKTsKIAlwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50ID0KLQkJ cGFsbG9jKGlieXRlcyArIG9mZnNldG9mKFdvcmtlckluc3RydW1lbnRhdGlvbiwgaW5zdHJ1bWVu dCkpOworCQlwYWxsb2MoaWJ5dGVzICsgb2Zmc2V0b2YoV29ya2VyTm9kZUluc3RydW1lbnRhdGlv biwgaW5zdHJ1bWVudCkpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAog CXBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQtPm51bV93b3JrZXJzID0gaW5zdHJ1bWVudGF0 aW9uLT5udW1fd29ya2VyczsKQEAgLTEzMTMsNyArMTMxNyw3IEBAIEV4ZWNQYXJhbGxlbFJlcG9y dEluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIHsKIAlpbnQJCQlpOwogCWlu dAkJCXBsYW5fbm9kZV9pZCA9IHBsYW5zdGF0ZS0+cGxhbi0+cGxhbl9ub2RlX2lkOwotCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 OwogCiAJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZDM1OTc2OTI1YWUuLjEzMmZlMzdlZjYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDE0LDggKzQxNCw4IEBAIEV4ZWNJbml0Tm9k ZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBp bnN0cnVtZW50YXRpb24gZm9yIHRoaXMgbm9kZSBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0YXRl LT5lc19pbnN0cnVtZW50KQotCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jKDEsIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKLQkJCQkJCQkJCQlyZXN1bHQtPmFzeW5jX2NhcGFibGUpOwor CQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2luc3RydW1l bnQsCisJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKIAlyZXR1cm4gcmVzdWx0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDkzNTRhZDdiZTEyLi5iYzU1MWY5 NWEwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjYsNTEgKzI2LDMwIEBAIHN0 YXRpYyB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3QsIGNvbnN0IEJ1ZmZlclVz YWdlICphZGQpOwogc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNh Z2UgKmFkZCk7CiAKIAotLyogQWxsb2NhdGUgbmV3IGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUo cykgKi8KKy8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIElu c3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z LCBib29sIGFzeW5jX21vZGUpCitJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7 Ci0JSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQotCS8qIGluaXRpYWxpemUgYWxsIGZpZWxkcyB0 byB6ZXJvZXMsIHRoZW4gbW9kaWZ5IGFzIG5lZWRlZCAqLwotCWluc3RyID0gcGFsbG9jMChuICog c2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwotCWlmIChpbnN0cnVtZW50X29wdGlvbnMgJiAoSU5T VFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9USU1FUiB8IElOU1RSVU1FTlRfV0FMKSkKLQl7 Ci0JCWJvb2wJCW5lZWRfYnVmZmVycyA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5U X0JVRkZFUlMpICE9IDA7Ci0JCWJvb2wJCW5lZWRfd2FsID0gKGluc3RydW1lbnRfb3B0aW9ucyAm IElOU1RSVU1FTlRfV0FMKSAhPSAwOwotCQlib29sCQluZWVkX3RpbWVyID0gKGluc3RydW1lbnRf b3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7Ci0JCWludAkJCWk7Ci0KLQkJZm9yIChp ID0gMDsgaSA8IG47IGkrKykKLQkJewotCQkJaW5zdHJbaV0ubmVlZF9idWZ1c2FnZSA9IG5lZWRf YnVmZmVyczsKLQkJCWluc3RyW2ldLm5lZWRfd2FsdXNhZ2UgPSBuZWVkX3dhbDsKLQkJCWluc3Ry W2ldLm5lZWRfdGltZXIgPSBuZWVkX3RpbWVyOwotCQkJaW5zdHJbaV0uYXN5bmNfbW9kZSA9IGFz eW5jX21vZGU7Ci0JCX0KLQl9Ci0KKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jMChz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwgaW5zdHJ1 bWVudF9vcHRpb25zKTsKIAlyZXR1cm4gaW5zdHI7CiB9CiAKLS8qIEluaXRpYWxpemUgYSBwcmUt YWxsb2NhdGVkIGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUuICovCiB2b2lkCi1JbnN0ckluaXQo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK0luc3RySW5p dE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykK IHsKLQltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKIAlpbnN0ci0+ bmVlZF9idWZ1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZFUlMp ICE9IDA7CiAJaW5zdHItPm5lZWRfd2FsdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5T VFJVTUVOVF9XQUwpICE9IDA7CiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRp b25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotLyogRW50cnkgdG8gYSBwbGFuIG5v ZGUgKi8KIHZvaWQKLUluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCitJbnN0 clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaWYgKGluc3RyLT5uZWVkX3RpbWVy KQogCXsKIAkJaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCi0JCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydE5vZGUgY2FsbGVkIHR3aWNlIGluIGEgcm93Iik7CisJCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydCBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKIAkJZWxzZQog CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC04Mywy NCArNjIsMTkgQEAgSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJaW5z dHItPndhbHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKIH0KIAotLyogRXhpdCBmcm9tIGEgcGxh biBub2RlICovCiB2b2lkCi1JbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRv dWJsZSBuVHVwbGVzKQorSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JZG91 YmxlCQlzYXZlX3R1cGxlY291bnQgPSBpbnN0ci0+dHVwbGVjb3VudDsKIAlpbnN0cl90aW1lCWVu ZHRpbWU7CiAKLQkvKiBjb3VudCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCi0JaW5zdHItPnR1cGxl Y291bnQgKz0gblR1cGxlczsKLQogCS8qIGxldCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCiAJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQogCXsKIAkJ aWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJCQllbG9nKEVSUk9SLCAi SW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CiAKIAkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChlbmR0aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3Ry LT50b3RhbCwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CiAKIAkJSU5TVFJfVElNRV9TRVRf WkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC0xMTMsNiArODcsNzQgQEAgSW5zdHJTdG9w Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAlpZiAoaW5zdHIt Pm5lZWRfd2FsdXNhZ2UpCiAJCVdhbFVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+d2FsdXNhZ2UsCiAJ CQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdlX3N0YXJ0KTsKK30KKworLyogTm9k ZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KKworLyogQWxsb2NhdGUgbmV3IG5vZGUgaW5z dHJ1bWVudGF0aW9uIHN0cnVjdHVyZSAqLworTm9kZUluc3RydW1lbnRhdGlvbiAqCitJbnN0ckFs bG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCit7CisJTm9k ZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRp b24pKTsKKworCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJaW5z dHItPmFzeW5jX21vZGUgPSBhc3luY19tb2RlOworCisJcmV0dXJuIGluc3RyOworfQorCisvKiBJ bml0aWFsaXplIGEgcHJlLWFsbG9jYXRlZCBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJlLiAqLwor dm9pZAorSW5zdHJJbml0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3Ry dW1lbnRfb3B0aW9ucykKK3sKKwltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihOb2RlSW5zdHJ1bWVu dGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0cnVtZW50X29w dGlvbnMpOworfQorCisvKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLwordm9pZAorSW5zdHJTdGFy dE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJSW5zdHJTdGFydCgmaW5zdHIt Pmluc3RyKTsKK30KKworLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCit2b2lkCitJbnN0clN0 b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK3sKKwlk b3VibGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNvdW50OworCWluc3RyX3RpbWUJ ZW5kdGltZTsKKworCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVw bGVjb3VudCArPSBuVHVwbGVzOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIHRpbWUgb25seSBpZiB0 aGUgdGltZXIgd2FzIHJlcXVlc3RlZC4KKwkgKgorCSAqIE5vdGUgdGhpcyBpcyBkaWZmZXJlbnQg ZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKwkgKiBJbnN0 ckVuZExvb3AuIFdlIG5lZWQgdGhlIHNlcGFyYXRlIGNvdW50ZXIgdmFyaWFibGUgYmVjYXVzZSB3 ZSBuZWVkIHRvCisJICogY2FsY3VsYXRlIHN0YXJ0LXVwIHRpbWUgZm9yIHRoZSBmaXJzdCB0dXBs ZSBpbiBlYWNoIGN5Y2xlLCBhbmQgdGhlbgorCSAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisJ ICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyKQorCXsKKwkJaWYgKElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSkKKwkJCWVsb2coRVJST1IsICJJbnN0clN0 b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChlbmR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0 aW1lLCBpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKKworCQlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5pbnN0ci5zdGFydHRpbWUpOworCX0KKworCS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNh Z2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFscyAqLworCWlmIChpbnN0ci0+aW5zdHIubmVl ZF9idWZ1c2FnZSkKKwkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5pbnN0ci5idWZ1c2Fn ZSwKKwkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2Vfc3RhcnQp OworCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFjY3VtRGlm ZigmaW5zdHItPmluc3RyLndhbHVzYWdlLAorCQkJCQkJICAmcGdXYWxVc2FnZSwgJmluc3RyLT5p bnN0ci53YWx1c2FnZV9zdGFydCk7CiAKIAkvKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlPyAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcpCkBAIC0xMzMsNyArMTc1LDcgQEAg SW5zdHJTdG9wTm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAog LyogVXBkYXRlIHR1cGxlIGNvdW50ICovCiB2b2lkCi1JbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCitJbnN0clVwZGF0ZVR1cGxlQ291 bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogewogCS8qIGNv dW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KIAlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVwbGVz OwpAQCAtMTQxLDI0ICsxODMsMjQgQEAgSW5zdHJVcGRhdGVUdXBsZUNvdW50KEluc3RydW1lbnRh dGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCiAvKiBGaW5pc2ggYSBydW4gY3ljbGUgZm9y IGEgcGxhbiBub2RlICovCiB2b2lkCi1JbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cikKK0luc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAkvKiBTa2lw IGlmIG5vdGhpbmcgaGFzIGhhcHBlbmVkLCBvciBhbHJlYWR5IHNodXQgZG93biAqLwogCWlmICgh aW5zdHItPnJ1bm5pbmcpCiAJCXJldHVybjsKIAotCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGlu c3RyLT5zdGFydHRpbWUpKQorCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5z dGFydHRpbWUpKQogCQllbG9nKEVSUk9SLCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5n IG5vZGUiKTsKIAogCS8qIEFjY3VtdWxhdGUgcGVyLWN5Y2xlIHN0YXRpc3RpY3MgaW50byB0b3Rh bHMgKi8KIAlJTlNUUl9USU1FX0FERChpbnN0ci0+c3RhcnR1cCwgaW5zdHItPmZpcnN0dHVwbGUp OwotCUlOU1RSX1RJTUVfQUREKGluc3RyLT50b3RhbCwgaW5zdHItPmNvdW50ZXIpOworCUlOU1RS X1RJTUVfQUREKGluc3RyLT5pbnN0ci50b3RhbCwgaW5zdHItPmNvdW50ZXIpOwogCWluc3RyLT5u dHVwbGVzICs9IGluc3RyLT50dXBsZWNvdW50OwogCWluc3RyLT5ubG9vcHMgKz0gMTsKIAogCS8q IFJlc2V0IGZvciBuZXh0IGN5Y2xlIChpZiBhbnkpICovCiAJaW5zdHItPnJ1bm5pbmcgPSBmYWxz ZTsKLQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVf U0VUX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhp bnN0ci0+Y291bnRlcik7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+Zmlyc3R0dXBsZSk7 CiAJaW5zdHItPnR1cGxlY291bnQgPSAwOwpAQCAtMTY2LDcgKzIwOCw3IEBAIEluc3RyRW5kTG9v cChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCiAvKiBhZ2dyZWdhdGUgaW5zdHJ1bWVudGF0aW9u IGluZm9ybWF0aW9uICovCiB2b2lkCi1JbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3Qs IEluc3RydW1lbnRhdGlvbiAqYWRkKQorSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24g KmRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKQogewogCWlmICghZHN0LT5ydW5uaW5nICYm IGFkZC0+cnVubmluZykKIAl7CkBAIC0xODEsNyArMjIzLDcgQEAgSW5zdHJBZ2dOb2RlKEluc3Ry dW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAogCWRzdC0+dHVwbGVjb3Vu dCArPSBhZGQtPnR1cGxlY291bnQ7CiAJSU5TVFJfVElNRV9BREQoZHN0LT5zdGFydHVwLCBhZGQt PnN0YXJ0dXApOwotCUlOU1RSX1RJTUVfQUREKGRzdC0+dG90YWwsIGFkZC0+dG90YWwpOworCUlO U1RSX1RJTUVfQUREKGRzdC0+aW5zdHIudG90YWwsIGFkZC0+aW5zdHIudG90YWwpOwogCWRzdC0+ bnR1cGxlcyArPSBhZGQtPm50dXBsZXM7CiAJZHN0LT5udHVwbGVzMiArPSBhZGQtPm50dXBsZXMy OwogCWRzdC0+bmxvb3BzICs9IGFkZC0+bmxvb3BzOwpAQCAtMTg5LDExICsyMzEsMTEgQEAgSW5z dHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAlk c3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCiAJLyogQWRkIGRlbHRhIG9mIGJ1 ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGRzdC0+bmVl ZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX2J1ZnVzYWdlKQorCQlCdWZmZXJVc2FnZUFkZCgm ZHN0LT5pbnN0ci5idWZ1c2FnZSwgJmFkZC0+aW5zdHIuYnVmdXNhZ2UpOwogCi0JaWYgKGRzdC0+ bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBZGQoJmRzdC0+d2FsdXNhZ2UsICZhZGQtPndhbHVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFkZCgmZHN0 LT5pbnN0ci53YWx1c2FnZSwgJmFkZC0+aW5zdHIud2FsdXNhZ2UpOwogfQogCiAvKiBUcmlnZ2Vy IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpAQCAtMjA0LDcgKzI0Niw3IEBAIEluc3RyQWxs b2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogCWludAkJCWk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGlu c3RydW1lbnRfb3B0aW9ucyk7CisJCUluc3RySW5pdE9wdGlvbnMoJnRnaW5zdHJbaV0uaW5zdHIs IGluc3RydW1lbnRfb3B0aW9ucyk7CiAKIAlyZXR1cm4gdGdpbnN0cjsKIH0KQEAgLTIxMiwxMyAr MjU0LDEzIEBAIEluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogdm9pZAogSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0 cikKIHsKLQlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0ci0+aW5zdHIpOworCUluc3RyU3RhcnQoJnRn aW5zdHItPmluc3RyKTsKIH0KIAogdm9pZAogSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKIHsKLQlJbnN0clN0b3BOb2RlKCZ0Z2lu c3RyLT5pbnN0ciwgMCk7CisJSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0cik7CiAJdGdpbnN0ci0+ ZmlyaW5ncyArPSBmaXJpbmdzOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXgg YTljMjIzMzIyN2YuLmIxMWQ2NDYzM2I1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBA IC02NywzOCArNjcsNTUgQEAgdHlwZWRlZiBlbnVtIEluc3RydW1lbnRPcHRpb24KIAlJTlNUUlVN RU5UX0FMTCA9IFBHX0lOVDMyX01BWAogfSBJbnN0cnVtZW50T3B0aW9uOwogCisvKgorICogR2Vu ZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiB0aGF0IGNhbiBjYXB0dXJlIHRpbWUgYW5kIFdB TC9idWZmZXIgdXNhZ2UKKyAqCisgKiBJbml0aWFsaXplZCB0aHJvdWdoIEluc3RyQWxsb2MsIGZv bGxvd2VkIGJ5IG9uZSBvciBtb3JlIGNhbGxzIHRvIGEgcGFpciBvZgorICogSW5zdHJTdGFydC9J bnN0clN0b3AgKGFjdGl2aXR5IGlzIG1lYXN1cmVkIGluYmV0d2VlbikuCisgKi8KIHR5cGVkZWYg c3RydWN0IEluc3RydW1lbnRhdGlvbgogewotCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3Jl YXRpb246ICovCisJLyogUGFyYW1ldGVycyBzZXQgYXQgY3JlYXRpb246ICovCiAJYm9vbAkJbmVl ZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCiAJYm9vbAkJbmVlZF9i dWZ1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1c2FnZSBkYXRhICovCiAJYm9vbAkJ bmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCisJLyog SW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KKwlpbnN0cl90aW1lCXN0YXJ0dGltZTsJCS8qIHN0 YXJ0IHRpbWUgb2YgbGFzdCBJbnN0clN0YXJ0ICovCisJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3Rh cnQ7IC8qIGJ1ZmZlciB1c2FnZSBhdCBzdGFydCAqLworCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0 OyAvKiBXQUwgdXNhZ2UgYXQgc3RhcnQgKi8KKwkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzOiAq LworCWluc3RyX3RpbWUJdG90YWw7CQkJLyogdG90YWwgcnVudGltZSAqLworCUJ1ZmZlclVzYWdl IGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCisJV2FsVXNhZ2UJd2FsdXNhZ2U7 CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KK30gSW5zdHJ1bWVudGF0aW9uOworCisvKgorICogU3Bl Y2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXItbm9kZSBleGVjdXRpb24gc3RhdGlzdGlj cworICovCit0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCit7CisJSW5zdHJ1bWVu dGF0aW9uIGluc3RyOworCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3JlYXRpb246ICovCiAJ Ym9vbAkJYXN5bmNfbW9kZTsJCS8qIHRydWUgaWYgbm9kZSBpcyBpbiBhc3luYyBtb2RlICovCiAJ LyogSW5mbyBhYm91dCBjdXJyZW50IHBsYW4gY3ljbGU6ICovCiAJYm9vbAkJcnVubmluZzsJCS8q IHRydWUgaWYgd2UndmUgY29tcGxldGVkIGZpcnN0IHR1cGxlICovCi0JaW5zdHJfdGltZQlzdGFy dHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGN1cnJlbnQgaXRlcmF0aW9uIG9mIG5vZGUgKi8KIAlp bnN0cl90aW1lCWNvdW50ZXI7CQkvKiBhY2N1bXVsYXRlZCBydW50aW1lIGZvciB0aGlzIG5vZGUg Ki8KIAlpbnN0cl90aW1lCWZpcnN0dHVwbGU7CQkvKiB0aW1lIGZvciBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlICovCiAJZG91YmxlCQl0dXBsZWNvdW50OwkJLyogIyBvZiB0dXBsZXMgZW1pdHRl ZCBzbyBmYXIgdGhpcyBjeWNsZSAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0OyAvKiBi dWZmZXIgdXNhZ2UgYXQgc3RhcnQgKi8KLQlXYWxVc2FnZQl3YWx1c2FnZV9zdGFydDsgLyogV0FM IHVzYWdlIGF0IHN0YXJ0ICovCiAJLyogQWNjdW11bGF0ZWQgc3RhdGlzdGljcyBhY3Jvc3MgYWxs IGNvbXBsZXRlZCBjeWNsZXM6ICovCiAJaW5zdHJfdGltZQlzdGFydHVwOwkJLyogdG90YWwgc3Rh cnR1cCB0aW1lICovCi0JaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCB0aW1lICovCiAJZG91 YmxlCQludHVwbGVzOwkJLyogdG90YWwgdHVwbGVzIHByb2R1Y2VkICovCiAJZG91YmxlCQludHVw bGVzMjsJCS8qIHNlY29uZGFyeSBub2RlLXNwZWNpZmljIHR1cGxlIGNvdW50ZXIgKi8KIAlkb3Vi bGUJCW5sb29wczsJCQkvKiAjIG9mIHJ1biBjeWNsZXMgZm9yIHRoaXMgbm9kZSAqLwogCWRvdWJs ZQkJbmZpbHRlcmVkMTsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgc2NhbnF1YWwgb3Igam9p bnF1YWwgKi8KIAlkb3VibGUJCW5maWx0ZXJlZDI7CQkvKiAjIG9mIHR1cGxlcyByZW1vdmVkIGJ5 ICJvdGhlciIgcXVhbHMgKi8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZl ciB1c2FnZSAqLwotCVdhbFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCi19 IEluc3RydW1lbnRhdGlvbjsKK30gTm9kZUluc3RydW1lbnRhdGlvbjsKIAotdHlwZWRlZiBzdHJ1 Y3QgV29ya2VySW5zdHJ1bWVudGF0aW9uCit0eXBlZGVmIHN0cnVjdCBXb3JrZXJOb2RlSW5zdHJ1 bWVudGF0aW9uCiB7CiAJaW50CQkJbnVtX3dvcmtlcnM7CS8qICMgb2Ygc3RydWN0dXJlcyB0aGF0 IGZvbGxvdyAqLwotCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Ci19IFdvcmtlckluc3RydW1lbnRhdGlvbjsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uIGlu c3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gV29ya2VyTm9kZUluc3RydW1lbnRh dGlvbjsKIAogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogewpAQCAtMTEw LDE0ICsxMjcsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogZXh0 ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJ TVBPUlQgV2FsVXNhZ2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5z dHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucywKLQkJCQkJCQkJICAgYm9vbCBh c3luY19tb2RlKTsKLWV4dGVybiB2b2lkIEluc3RySW5pdChJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKLWV4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKElu c3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9kZShJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7Ci1leHRlcm4gdm9pZCBJbnN0clVwZGF0 ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwotZXh0 ZXJuIHZvaWQgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZv aWQgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFk ZCk7CitleHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29w dGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmlu c3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5z dHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CisKK2V4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9k ZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7 CitleHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBp bnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKK2V4dGVybiB2b2lkIEluc3Ry VXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBs ZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3Ry KTsKK2V4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5v ZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRl cm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMTc4MjI5YzVjNDQuLjUwMmFkNGYyZGE1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5 RGF0YSBTY2FuS2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7 CiB0eXBlZGVmIHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBz dHJ1Y3QgVElEQml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50 YXRpb24gTm9kZUluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29u dmVyc2lvbk1hcCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NE YXRhICpUdXBsZURlc2M7CkBAIC02Nyw3ICs2OCw3IEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlc3Rv cmVzdGF0ZSBUdXBsZXN0b3Jlc3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCBU dXBsZVRhYmxlU2xvdDsKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90T3BzIFR1cGxlVGFi bGVTbG90T3BzOwogdHlwZWRlZiBzdHJ1Y3QgV2FsVXNhZ2UgV2FsVXNhZ2U7Ci10eXBlZGVmIHN0 cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRpb24gV29ya2VySW5zdHJ1bWVudGF0aW9uOwordHlwZWRl ZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTExODUsOCArMTE4NiwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBQbGFuU3RhdGUKIAlFeGVjUHJvY05vZGVNdGQgRXhlY1Byb2NOb2RlUmVhbDsJ LyogYWN0dWFsIGZ1bmN0aW9uLCBpZiBhYm92ZSBpcyBhCiAJCQkJCQkJCQkJICogd3JhcHBlciAq LwogCi0JSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0 YXRzIGZvciB0aGlzIG5vZGUgKi8KLQlXb3JrZXJJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0 cnVtZW50OwkvKiBwZXItd29ya2VyIGluc3RydW1lbnRhdGlvbiAqLworCU5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUgc3RhdHMgZm9yIHRoaXMKKwkJ CQkJCQkJCQkgKiBub2RlICovCisJV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiAqd29ya2VyX2lu c3RydW1lbnQ7CS8qIHBlci13b3JrZXIKKwkJCQkJCQkJCQkJCQkgKiBpbnN0cnVtZW50YXRpb24g Ki8KIAogCS8qIFBlci13b3JrZXIgSklUIGluc3RydW1lbnRhdGlvbiAqLwogCXN0cnVjdCBTaGFy ZWRKaXRJbnN0cnVtZW50YXRpb24gKndvcmtlcl9qaXRfaW5zdHJ1bWVudDsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggNmVjM2NkZWZmNWIuLmU5MDU5ZDFiMjU1IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTgwNyw2ICsxODA3LDcgQEAgTmV4dFNhbXBsZUJsb2NrX2Z1bmN0 aW9uCiBOZXh0U2FtcGxlVHVwbGVfZnVuY3Rpb24KIE5leHRWYWx1ZUV4cHIKIE5vZGUKK05vZGVJ bnN0cnVtZW50YXRpb24KIE5vZGVUYWcKIE5vbkVtcHR5UmFuZ2UKIE5vbmVDb21wcmVzc29yU3Rh dGUKQEAgLTM0MTMsOSArMzQxNCw5IEBAIFdvcmtUYWJsZVNjYW4KIFdvcmtUYWJsZVNjYW5TdGF0 ZQogV29ya2VySW5mbwogV29ya2VySW5mb0RhdGEKLVdvcmtlckluc3RydW1lbnRhdGlvbgogV29y a2VySm9iRHVtcFB0clR5cGUKIFdvcmtlckpvYlJlc3RvcmVQdHJUeXBlCitXb3JrZXJOb2RlSW5z dHJ1bWVudGF0aW9uCiBXb3JraW5nX1N0YXRlCiBXcml0ZUJ1ZlB0clR5cGUKIFdyaXRlQnl0ZVB0 clR5cGUKLS0gCjIuNDcuMQoK --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Disposition: attachment; filename="v10-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5p6 RnJvbSBiZTRkZTVmM2I3M2Q1NWUyYjE5Zjk0OTUxNjdlNmVmMzM3ZTkyNTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTc6NTI6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCA3LzldIGlu c3RydW1lbnRhdGlvbjogT3B0aW1pemUgRXhlY1Byb2NOb2RlSW5zdHIKIGluc3RydWN0aW9ucyBi eSBpbmxpbmluZwoKRm9yIG1vc3QgcXVlcmllcywgdGhlIGJ1bGsgb2YgdGhlIG92ZXJoZWFkIG9m IEVYUExBSU4gQU5BTFlaRSBoYXBwZW5zIGluCkV4ZWNQcm9jTm9kZUluc3RyIHdoZW4gc3RhcnRp bmcvc3RvcHBpbmcgaW5zdHJ1bWVudGF0aW9uIGZvciB0aGF0IG5vZGUuCgpQcmV2aW91c2x5IGVh Y2ggRXhlY1Byb2NOb2RlSW5zdHIgd291bGQgY2hlY2sgd2hpY2ggaW5zdHJ1bWVudGF0aW9uCm9w dGlvbnMgYXJlIGFjdGl2ZSBpbiB0aGUgSW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSBjYWxs cywgYW5kIGRvIHRoZQpjb3JyZXNwb25kaW5nIHdvcmsgKHRpbWVycywgaW5zdHJ1bWVudGF0aW9u IHN0YWNrLCBldGMuKS4gVGhlc2UKY29uZGl0aW9uYWxzIGJlaW5nIGNoZWNrZWQgZm9yIGVhY2gg dHVwbGUgYmVpbmcgZW1pdHRlZCBhZGQgdXAsIGFuZCBjYXVzZQpub24tb3B0aW1hbCBzZXQgb2Yg aW5zdHJ1Y3Rpb25zIHRvIGJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIuCgpCZWNhdXNlIHdl IGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZWNoYW5pc20gdG8gc3BlY2lmeSBhIGZ1bmN0aW9u CnBvaW50ZXIgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgZW5hYmxlZCwgd2UgY2FuIGluc3RlYWQg Y3JlYXRlIHNwZWNpYWxpemVkCmZ1bmN0aW9ucyB0aGF0IGFyZSB0YWlsb3JlZCB0byB0aGUgaW5z dHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxlZCwgYW5kCmF2b2lkIGNvbmRpdGlvbmFscyBvbiBz dWJzZXF1ZW50IEV4ZWNQcm9jTm9kZUluc3RyIGNhbGxzLiBUaGlzIHJlc3VsdHMgaW4KdGhlIG92 ZXJoZWFkIGZvciBFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikgZm9y IGEgc3RyZXNzCnRlc3Qgd2l0aCBhIGxhcmdlIENPVU5UKCopIHRoYXQgZG9lcyBtYW55IEV4ZWNQ cm9jTm9kZSBjYWxscyBmcm9tIH4gMjAlIG9uCnRvcCBvZiBhY3R1YWwgcnVudGltZSB0byB+IDMl LiBXaGVuIHVzaW5nIEJVRkZFUlMgT04gdGhlIHNhbWUgcXVlcnkgZ29lcwpmcm9tIH4gMjAlIHRv IH4gMTAlIG9uIHRvcCBvZiBhY3R1YWwgcnVudGltZS4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lA cGVyY29uYS5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC9DQVA1M1BreEZQN2k3LXd5OThabUVKMTFlZFlxLVJyUHZKb2E0a3pHaEJCakVS QTROeXclNDBtYWlsLmdtYWlsLmNvbSNlOGRmZDAxOGEwN2Q3ZjhkNDE1NjVhMDc5ZDQwYzU2NAot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIHwgIDIyICstLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgIHwgMTk4ICsrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgIHwgICA1ICsKIDMg ZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggMjFhZDFiMDRhNTcuLjlmNTY5ODA2M2YwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTIxLDcgKzEyMSw2IEBACiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1By b2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhl Y1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93 bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiBzdGF0aWMgYm9v bCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRh dGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKQEAgLTQ2NSw3ICs0 NjQsNyBAQCBFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiAJICogaGF2ZSBFeGVj UHJvY05vZGUoKSBkaXJlY3RseSBjYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5vdyBv bi4KIAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCkKLQkJbm9kZS0+RXhlY1Byb2NOb2RlID0g RXhlY1Byb2NOb2RlSW5zdHI7CisJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEluc3RyTm9kZVNldHVw RXhlY1Byb2NOb2RlKG5vZGUtPmluc3RydW1lbnQpOwogCWVsc2UKIAkJbm9kZS0+RXhlY1Byb2NO b2RlID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbDsKIApAQCAtNDczLDI1ICs0NzIsNiBAQCBFeGVj UHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQcm9jTm9k ZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkga2VlcGlu ZwotICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0aGUg bm9ybWFsIGNhc2Ugd2hlcmUKLSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQuCi0gKi8K LXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5v ZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2RlKG5vZGUt Pmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2RlKTsK LQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3VsdCkgPyAw LjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJTXVs dGlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCAwOWQ1ZmZlODY1 MS4uNGVhODA3ZTI5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTU5LDI5ICs1 OSwyMCBAQCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0 cnVtZW50X29wdGlvbnMpCiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25z ICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotdm9pZAotSW5zdHJTdGFydChJbnN0cnVt ZW50YXRpb24gKmluc3RyKQorc3RhdGljIGlubGluZSB2b2lkCitJbnN0clN0YXJ0VGltZXIoSW5z dHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIpCi0JewotCQlp ZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwotCQllbHNlCi0JCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwotCX0KKwlBc3NlcnQoSU5TVFJfVElN RV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKTsKIAotCWlmIChpbnN0ci0+bmVlZF9zdGFjaykK LQkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5zdHIt PnN0YXJ0dGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQKIEluc3Ry U3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaW5zdHJfdGltZQllbmR0aW1l OwogCi0JLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVyIHdhcyByZXF1 ZXN0ZWQgKi8KLQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQll bG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJQXNzZXJ0KCFJ TlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpOwogCiAJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKQEAgLTg5LDYgKzgwLDE2IEBAIEluc3RyU3RvcFRp bWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+ c3RhcnR0aW1lKTsKIH0KIAordm9pZAorSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQoreworCWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdGFydFRpbWVyKGluc3RyKTsK KworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworfQor CiB2b2lkCiBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKQEAgLTM3Miw2NSAr MzczLDU3IEBAIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBp bnN0cnVtZW50X29wdGlvbnMpCiAJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0 cnVtZW50X29wdGlvbnMpOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLworLyogRW50 cnkgdG8gYSBwbGFuIG5vZGUuIElmIHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJOb2RlU2V0 dXBFeGVjUHJvY05vZGUuICovCiB2b2lkCiBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cikKIHsKIAlJbnN0clN0YXJ0KCZpbnN0ci0+aW5zdHIpOwogfQogCi0KLS8qIEV4 aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwotdm9pZAotSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCisvKgorICogVXBkYXRlcyB0aGUgbm9kZSBp bnN0cnVtZW50YXRpb24gdGltZSBjb3VudGVyLgorICoKKyAqIE5vdGUgdGhpcyBpcyBkaWZmZXJl bnQgZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKyAqIElu c3RyRW5kTG9vcC4gV2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNl IHdlIG5lZWQgdG8KKyAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVw bGUgaW4gZWFjaCBjeWNsZSwgYW5kIHRoZW4KKyAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdG9wTm9kZVRpbWVyKE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyKQogewotCWRvdWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxl Y291bnQ7CiAJaW5zdHJfdGltZQllbmR0aW1lOwogCi0JLyogY291bnQgdGhlIHJldHVybmVkIHR1 cGxlcyAqLwotCWluc3RyLT50dXBsZWNvdW50ICs9IG5UdXBsZXM7CisJQXNzZXJ0KCFJTlNUUl9U SU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSkpOworCisJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIs IGVuZHRpbWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVfU0VUX1pFUk8o aW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAKIAkvKgotCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5 IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkLgorCSAqIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxl IG9mIHRoaXMgY3ljbGU/CiAJICoKLQkgKiBOb3RlIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gSW5z dHJTdG9wIGJlY2F1c2UgdG90YWwgaXMgb25seSB1cGRhdGVkIGluCi0JICogSW5zdHJFbmRMb29w LiBXZSBuZWVkIHRoZSBzZXBhcmF0ZSBjb3VudGVyIHZhcmlhYmxlIGJlY2F1c2Ugd2UgbmVlZCB0 bwotCSAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVwbGUgaW4gZWFj aCBjeWNsZSwgYW5kIHRoZW4KLQkgKiBhY2N1bXVsYXRlIGl0IHRvZ2V0aGVyLgorCSAqIEluIGFz eW5jIG1vZGUsIGlmIHRoZSBwbGFuIG5vZGUgaGFkbid0IGVtaXR0ZWQgYW55IHR1cGxlcyBiZWZv cmUsIHRoaXMKKwkgKiBtaWdodCBiZSB0aGUgZmlyc3QgdHVwbGUKIAkgKi8KLQlpZiAoaW5zdHIt Pmluc3RyLm5lZWRfdGltZXIpCi0JewotCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5p bnN0ci5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcE5vZGUgY2FsbGVkIHdp dGhvdXQgc3RhcnQiKTsKLQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOwotCQlJ TlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5pbnN0 ci5zdGFydHRpbWUpOworCWlmICghaW5zdHItPnJ1bm5pbmcgfHwgKGluc3RyLT5hc3luY19tb2Rl ICYmIGluc3RyLT50dXBsZWNvdW50IDwgMS4wKSkKKwkJaW5zdHItPmZpcnN0dHVwbGUgPSBpbnN0 ci0+Y291bnRlcjsKK30KIAotCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0ci5zdGFy dHRpbWUpOwotCX0KKy8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZS4gSWYgeW91IG1vZGlmeSB0aGlz LCBjaGVjayBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZS4gKi8KK3ZvaWQKK0luc3RyU3RvcE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWlmIChp bnN0ci0+aW5zdHIubmVlZF90aW1lcikKKwkJSW5zdHJTdG9wTm9kZVRpbWVyKGluc3RyKTsKIAot CS8qCi0JICogT25seSBwb3AgdGhlIHN0YWNrLCBhY2N1bXVsYXRpb24gcnVucyBpbgotCSAqIEV4 ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KLQkgKi8KKwkvKiBPbmx5IHBvcCB0aGUgc3Rh Y2ssIGFjY3VtdWxhdGlvbiBydW5zIGluIEluc3RyRmluYWxpemVOb2RlICovCiAJaWYgKGluc3Ry LT5pbnN0ci5uZWVkX3N0YWNrKQogCQlJbnN0clBvcFN0YWNrKCZpbnN0ci0+aW5zdHIpOwogCi0J LyogSXMgdGhpcyB0aGUgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZT8gKi8KLQlpZiAoIWluc3Ry LT5ydW5uaW5nKQotCXsKLQkJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOwotCQlpbnN0ci0+Zmlyc3R0 dXBsZSA9IGluc3RyLT5jb3VudGVyOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBJbiBhc3lu YyBtb2RlLCBpZiB0aGUgcGxhbiBub2RlIGhhZG4ndCBlbWl0dGVkIGFueSB0dXBsZXMgYmVmb3Jl LAotCQkgKiB0aGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCB0dXBsZQotCQkgKi8KLQkJaWYgKGluc3Ry LT5hc3luY19tb2RlICYmIHNhdmVfdHVwbGVjb3VudCA8IDEuMCkKLQkJCWluc3RyLT5maXJzdHR1 cGxlID0gaW5zdHItPmNvdW50ZXI7Ci0JfQorCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKworCS8q IGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVw bGVzOwogfQogCiAvKiBVcGRhdGUgdHVwbGUgY291bnQgKi8KQEAgLTQ5NSw2ICs0ODgsOTkgQEAg SW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlv biAqYWRkKQogCQlJbnN0ckFjY3VtU3RhY2soJmRzdC0+aW5zdHIsICZhZGQtPmluc3RyKTsKIH0K IAorLyoKKyAqIFNwZWNpYWxpemVkIGhhbmRsaW5nIG9mIGluc3RydW1lbnRlZCBFeGVjUHJvY05v ZGUKKyAqCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyBFeGVj UHJvY05vZGVSZWFsIHdyYXBwZWQgaW4KKyAqIEluc3RyU3RhcnROb2RlIGFuZCBJbnN0clN0b3BO b2RlLCBidXQgYXZvaWQgdGhlIGNvbmRpdGlvbmFscyBpbiB0aGUgaG90IHBhdGgKKyAqIGJ5IGNo ZWNraW5nIHRoZSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyB3aGVuIHRoZSBFeGVjUHJvY05vZGUg cG9pbnRlciBnZXRzCisgKiBmaXJzdCBzZXQsIGFuZCB0aGVuIHVzaW5nIGEgc3BlY2lhbC1wdXJw b3NlIGZ1bmN0aW9uIGZvciBlYWNoLiBUaGlzIHJlc3VsdHMKKyAqIGluIGEgbW9yZSBvcHRpbWl6 ZWQgc2V0IG9mIGNvbXBpbGVkIGluc3RydWN0aW9ucy4KKyAqLworCisjaW5jbHVkZSAiZXhlY3V0 b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKworLyogU2ltcGxp ZmllZCBwb3A6IHJlc3RvcmUgc2F2ZWQgc3RhdGUgaW5zdGVhZCBvZiByZS1kZXJpdmluZyBmcm9t IGFycmF5ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2tUbyhJbnN0cnVtZW50 YXRpb24gKnByZXYpCit7CisJQXNzZXJ0KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlB c3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDEgPyBpbnN0cl9zdGFjay5lbnRyaWVzW2lu c3RyX3N0YWNrLnN0YWNrX3NpemUgLSAyXSA9PSBwcmV2IDogJmluc3RyX3RvcCA9PSBwcmV2KTsK KwlpbnN0cl9zdGFjay5zdGFja19zaXplLS07CisJaW5zdHJfc3RhY2suY3VycmVudCA9IHByZXY7 Cit9CisKK3N0YXRpYyBpbmxpbmUgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHIo UGxhblN0YXRlICpub2RlLCBib29sIG5lZWRfdGltZXIsIGJvb2wgbmVlZF9zdGFjaykKK3sKKwlO b2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmluc3RydW1lbnQ7CisJSW5zdHJ1bWVu dGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVz dWx0OworCisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKCZpbnN0ci0+aW5zdHIp OworCWlmIChuZWVkX3RpbWVyKQorCQlJbnN0clN0YXJ0VGltZXIoJmluc3RyLT5pbnN0cik7CisK KwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJaWYgKG5lZWRfdGlt ZXIpCisJCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CisJaWYgKG5lZWRfc3RhY2spCisJCUlu c3RyUG9wU3RhY2tUbyhwcmV2KTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1 cElzTnVsbChyZXN1bHQpKQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJG dWxsKFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwg dHJ1ZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJ bnN0clJvd3NTdGFja09ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05v ZGVJbnN0cihub2RlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq CitFeGVjUHJvY05vZGVJbnN0clJvd3NUaW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJl dHVybiBFeGVjUHJvY05vZGVJbnN0cihub2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBU dXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NPbmx5KFBsYW5TdGF0ZSAqbm9k ZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgZmFsc2UsIGZhbHNlKTsKK30K KworLyoKKyAqIFJldHVybnMgYW4gRXhlY1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBp bnN0cnVtZW50YXRpb24gY2FsbHMsCisgKiB0YWlsb3JlZCB0byB0aGUgaW5zdHJ1bWVudGF0aW9u IG9wdGlvbnMgZW5hYmxlZCBmb3IgdGhlIG5vZGUuCisgKi8KK0V4ZWNQcm9jTm9kZU10ZAorSW5z dHJOb2RlU2V0dXBFeGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJ Ym9vbAkJbmVlZF90aW1lciA9IGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyOworCWJvb2wJCW5lZWRf c3RhY2sgPSBpbnN0ci0+aW5zdHIubmVlZF9zdGFjazsKKworCWlmIChuZWVkX3RpbWVyICYmIG5l ZWRfc3RhY2spCisJCXJldHVybiBFeGVjUHJvY05vZGVJbnN0ckZ1bGw7CisJZWxzZSBpZiAobmVl ZF9zdGFjaykKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c1N0YWNrT25seTsKKwllbHNl IGlmIChuZWVkX3RpbWVyKQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzVGltZXJPbmx5 OworCWVsc2UKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c09ubHk7Cit9CisKIC8qIFRy aWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICoKIEluc3RyQWxsb2NUcmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBu KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGMzNGExY2ZmZjQyLi5hMjU5MGEyZTVi MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBleHRl cm4gdm9pZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRh dGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpOwogCit0eXBlZGVmIHN0cnVjdCBU dXBsZVRhYmxlU2xvdCBUdXBsZVRhYmxlU2xvdDsKK3R5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZSBQ bGFuU3RhdGU7Cit0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNQcm9jTm9kZU10ZCkgKFBs YW5TdGF0ZSAqcHN0YXRlKTsKK2V4dGVybiBFeGVjUHJvY05vZGVNdGQgSW5zdHJOb2RlU2V0dXBF eGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCiBleHRlcm4gVHJpZ2dl ckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0ciwgaW50IG4pOwogZXh0ZXJuIHZvaWQgSW5zdHJTdGFydFRyaWdnZXIoUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0ciwKIAkJCQkJCQkgIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRn aW5zdHIpOwotLSAKMi40Ny4xCgo= --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Disposition: attachment; filename="v10-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5n5 RnJvbSAwMWIyYjgzM2ZkZjQ1YjI5ZGM5N2MxN2JhM2M2OTY0NTI3NmE4YTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTAgNi85XSBp bnN0cnVtZW50YXRpb246IFVzZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGZvcgogcGFyYWxsZWwg d29ya2VycwoKVGhpcyBzaW1wbGlmaWVzIHRoZSBEU00gYWxsb2NhdGlvbnMgYSBiaXQgc2luY2Ug d2UgZG9uJ3QgbmVlZCB0bwpzZXBhcmF0ZWx5IGFsbG9jYXRlIFdBTCBhbmQgYnVmZmVyIHVzYWdl LCBhbmQgYWxsb3dzIHRoZSBlYXNpZXIgZnV0dXJlCmFkZGl0aW9uIG9mIGEgdGhpcmQgc3RhY2st YmFzZWQgc3RydWN0IGJlaW5nIGRpc2N1c3NlZC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICB8IDQzICsrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgfCA0MyArKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDUyICsrKysrKysrLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8IDY2ICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j ICAgICB8IDE0ICsrKy0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8 ICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDQgKy0KIDgg ZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwppbmRleCAxY2ViMjMwNjk1NC4uMWM5NWVjOWY2MDUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTUxLDggKzUxLDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0JSSU5f U0hBUkVECQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAz KQotI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAw MDAwMDAwMDA0KQotI2RlZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05T VCgweEIwMDAwMDAwMDAwMDAwMDUpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJ T04JVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBp bmRleCBidWlsZHMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4g YQpAQCAtMTQ4LDggKzE0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5MZWFkZXIKIAlCcmluU2hh cmVkICpicmluc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJU25hcHNob3QJc25h cHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJyaW5MZWFkZXI7CiAKIC8qCkBAIC0yMzg3 LDggKzIzODUsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIg PSBwYWxsb2MwX29iamVjdChCcmluTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlC dWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29s CQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC0yNDMw LDE4ICsyNDI3LDE0IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZv ciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAq IGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJ bnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90 b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVy VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTI1MTQsMTUgKzI1MDcsMTIgQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCX0KIAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2Vy J3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3Bh Y2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5p dGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAot CQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Up OwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAg IG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3Rv Y19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2Fn ZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3Np emUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAK IAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwog CUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTI1MzMsOCArMjUyMyw3IEBAIF9icmlu X2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAlicmlubGVhZGVyLT5icmluc2hhcmVkID0gYnJpbnNoYXJlZDsK IAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKIAlicmlubGVhZGVyLT5zbmFw c2hvdCA9IHNuYXBzaG90OwotCWJyaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7Ci0JYnJp bmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKKwlicmlubGVhZGVyLT5pbnN0ciA9 IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwg YmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPT0gMCkKQEAgLTI1NzMsNyArMjU2Miw3IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVh ZGVyICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJICogb3Igd2UgbWlnaHQg Z2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXIt PnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5 KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsK KwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJyaW5sZWFkZXItPmluc3RyW2ldKTsKIAogCS8q IEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICov CiAJaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKQEAgLTI4ODcsOCAr Mjg3Niw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2tt b2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJf aW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogCS8qCkBAIC0yOTQ5LDExICsyOTM3LDggQEAgX2Jy aW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKIAogCS8qIFJlcG9y dCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlidWZmZXJ1 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFs c2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VT QUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVm ZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4 X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBo ZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggMDRjZDUzOTE2 Y2EuLjUxYmIwOThhMmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTQ1LDgg KzQ1LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQJCQlVSU5UNjRDT05TVCgw eEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQJCQlVSU5U NjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9U RVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAzKQotI2RlZmluZSBQQVJBTExFTF9L RVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQotI2RlZmluZSBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDUp CisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1QoMHhCMDAw MDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBpbmRleCBidWlsZHMgcGVyZm9ybWVk IGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4gYQpAQCAtMTM4LDggKzEzNyw3IEBA IHR5cGVkZWYgc3RydWN0IEdpbkxlYWRlcgogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJ U2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKIH0gR2luTGVhZGVyOwogCiB0eXBlZGVmIHN0cnVjdApAQCAtOTQ1LDggKzk0Myw3 IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlT aGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IHBhbGxvYzBf b2JqZWN0KEdpbkxlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIApAQCAtOTg3LDE4ICs5ODQsMTQg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQg QnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24g LS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBu byBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJ ICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5z dHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShz aXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5 cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBj eHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3Bh Y2UgKi8KQEAgLTEwNjYsMTUgKzEwNTksMTIgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl9CiAK IAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBC dWZmZXJVc2FnZTsgbm8gbmVlZCB0bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtl cidzIEluc3RydW1lbnRhdGlvbjsgbm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0J d2FsdXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUo c2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv YywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2ht X3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVt ZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg UEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtl cnMsIHNhdmluZyBzdGF0dXMgZm9yIGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdv cmtlcnMocGN4dCk7CkBAIC0xMDg1LDggKzEwNzUsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CWdpbmxlYWRlci0+Z2luc2hhcmVkID0gZ2luc2hhcmVkOwogCWdpbmxlYWRlci0+c2hhcmVkc29y dCA9IHNoYXJlZHNvcnQ7CiAJZ2lubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWdpbmxl YWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQlnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVm ZmVydXNhZ2U7CisJZ2lubGVhZGVyLT5pbnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKQEAgLTExMjUsNyArMTExNCw3 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQot CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdp bmxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVh ZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNo b3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNu YXBzaG90KSkKQEAgLTIxMTgsOCArMjEwNyw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwog CUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwot CVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0 cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTIx OTksMTEgKzIxODcsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZh bHNlKTsKIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGlu c3RyLAotCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJ ICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJO dW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJs ZV9jbG9zZShoZWFwUmVsLCBoZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCA2YTI2MWM4ZGNiZC4uNTA0YjM0Y2M5MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC02Niw4ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlRfU1BPT0wyCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMykKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAw MDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEEw MDAwMDAwMDAwMDAwMDUpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2 NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTglVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDUpCiAKIC8qCiAgKiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OIGRpc2FibGVzIHRoZSBsZWFkZXIncyBwYXJ0aWNpcGF0aW9u IGluCkBAIC0xOTUsOCArMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKIAlTaGFyZWRz b3J0ICpzaGFyZWRzb3J0OwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQyOwogCVNuYXBzaG90CXNu YXBzaG90OwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogfSBCVExlYWRlcjsKIAogLyoKQEAgLTE0MDgs OCArMTQwNiw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0 MjsKIAlCVFNwb29sICAgICpidHNwb29sID0gYnVpbGRzdGF0ZS0+c3Bvb2w7CiAJQlRMZWFkZXIg ICAqYnRsZWFkZXIgPSBwYWxsb2MwX29iamVjdChCVExlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5z dHI7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsK IApAQCAtMTQ2MiwxOCArMTQ1OSwxNCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJfQogCiAJLyoK LQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlIC0tIFBBUkFM TEVMX0tFWV9XQUxfVVNBR0UKLQkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KKwkg KiBFc3RpbWF0ZSBzcGFjZSBmb3IgSW5zdHJ1bWVudGF0aW9uIC0tIFBBUkFMTEVMX0tFWV9JTlNU UlVNRU5UQVRJT04uCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQg dGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQogCSAqIGhhdmUgbm8gd2F5IG9mIGtu b3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KIAkg KiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm cGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAg IG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOwogCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAogCS8qIEZpbmFsbHks IGVzdGltYXRlIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0xNTYwLDE1ICsx NTUzLDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNw YWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZTsgbm8gbmVlZCB0 bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEluc3RydW1lbnRhdGlvbjsg bm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2Fs bG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0JVRkZF Ul9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29y a2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtlcnMsIHNhdmluZyBzdGF0dXMgZm9y IGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdvcmtlcnMocGN4dCk7CkBAIC0xNTgw LDggKzE1NzAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRsZWFkZXItPnNoYXJlZHNvcnQg PSBzaGFyZWRzb3J0OwogCWJ0bGVhZGVyLT5zaGFyZWRzb3J0MiA9IHNoYXJlZHNvcnQyOwogCWJ0 bGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWJ0bGVhZGVyLT53YWx1c2FnZSA9IHdhbHVz YWdlOwotCWJ0bGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJ0bGVhZGVyLT5p bnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVu Y2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNf bGF1bmNoZWQgPT0gMCkKQEAgLTE2MjAsNyArMTYwOSw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRM ZWFkZXIgKmJ0bGVhZGVyKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQog CSAqLwogCWZvciAoaSA9IDA7IGkgPCBidGxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7 IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtp XSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZi dGxlYWRlci0+aW5zdHJbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXIt PnNuYXBzaG90KSkKQEAgLTE3NTQsOCArMTc0Myw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKICNpZmRlZiBC VFJFRV9CVUlMRF9TVEFUUwpAQCAtMTgzNywxMSArMTgyNSw4IEBAIF9idF9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkgICBzaGFyZWRz b3J0Miwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVy aW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtl ck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdv cmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRB VElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0 cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKIAlp ZiAobG9nX2J0cmVlX2J1aWxkX3N0YXRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKaW5kZXggYzMzMGM4OTFjMDMuLmI1ZmVkNTRmYjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTQ3LDkgKzQ3LDggQEAKICAqLwogI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX1NIQVJFRAkJCTEKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9RVUVSWV9U RVhUCQkyCi0jZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFCTMKLSNkZWZp bmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKLSNkZWZpbmUgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUwkJNQorI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RS VU1FTlRBVElPTgkzCisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJCTQK IAogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3b3JrZXJzLiAgU28g dGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQpAQCAtMTg4LDExICsxODcsOCBAQCBzdHJ1Y3Qg UGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIFNoYXJlZCBkZWFkIGl0ZW1zIHNwYWNlIGFtb25nIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzICovCiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAotCS8q IFBvaW50cyB0byBidWZmZXIgdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlCdWZmZXJVc2FnZSAqYnVm ZmVyX3VzYWdlOwotCi0JLyogUG9pbnRzIHRvIFdBTCB1c2FnZSBhcmVhIGluIERTTSAqLwotCVdh bFVzYWdlICAgKndhbF91c2FnZTsKKwkvKiBQb2ludHMgdG8gaW5zdHJ1bWVudGF0aW9uIGFyZWEg aW4gRFNNICovCisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAogCS8qCiAJICogRmFsc2UgaWYg dGhlIGluZGV4IGlzIHRvdGFsbHkgdW5zdWl0YWJsZSB0YXJnZXQgZm9yIGFsbCBwYXJhbGxlbApA QCAtMjUwLDggKzI0Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlk U3RvcmUgICAqZGVhZF9pdGVtczsKIAlQVkluZFN0YXRzICppbmRzdGF0czsKLQlCdWZmZXJVc2Fn ZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsKKwlJbnN0cnVtZW50YXRp b24gKmluc3RyOwogCWJvb2wJICAgKndpbGxfcGFyYWxsZWxfdmFjdXVtOwogCVNpemUJCWVzdF9p bmRzdGF0c19sZW47CiAJU2l6ZQkJZXN0X3NoYXJlZF9sZW47CkBAIC0zMDQsMTggKzI5OSwxNSBA QCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsCiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEp OwogCiAJLyoKLQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgQnVmZmVyVXNhZ2UgYW5kIFdhbFVzYWdl IC0tCi0JICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfV0FMX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRp b24gLS0KKwkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2Fs VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfVkFD VVVNX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0zOTYsMTcgKzM4OCwxMyBAQCBwYXJhbGxl bF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsCiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZv ciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlIGFuZCBXYWxVc2FnZTsgbm8gbmVlZCB0bwotCSAq IGluaXRpYWxpemUKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVt ZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgogCSAqLwotCWJ1ZmZlcl91c2Fn ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9m KEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJfdXNhZ2UpOwotCXB2 cy0+YnVmZmVyX3VzYWdlID0gYnVmZmVyX3VzYWdlOwotCXdhbF91c2FnZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfV0FMX1VTQUdFLCB3YWxfdXNhZ2UpOwotCXB2cy0+d2FsX3VzYWdlID0gd2FsX3VzYWdl OworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXpl KHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3Ry KTsKKwlwdnMtPmluc3RyID0gaW5zdHI7CiAKIAkvKiBTdG9yZSBxdWVyeSBzdHJpbmcgZm9yIHdv cmtlcnMgKi8KIAlpZiAoZGVidWdfcXVlcnlfc3RyaW5nKQpAQCAtNzQ5LDcgKzczNyw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChw dnMtPnBjeHQpOwogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQotCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+aW5zdHJbaV0pOwogCX0KIAogCS8qCkBAIC0xMDA3LDggKzk5NSw3IEBAIHBhcmFsbGVs X3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlQVlNoYXJlZCAg ICpzaGFyZWQ7CiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAlRdWVyeUluc3RydW1lbnRhdGlv biAqaW5zdHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxf dXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJbmluZGV4ZXM7 CiAJY2hhcgkgICAqc2hhcmVkcXVlcnk7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJh Y2s7CkBAIC0xMTAyLDExICsxMDg5LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5k ZXhlcygmcHZzKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KLQlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd KTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgYW55 IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB0aW1lICovCiAJaWYgKHRyYWNrX2Nv c3RfZGVsYXlfdGltaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCAwYjE4 YTA1YzQzNC4uN2EzOTAzNTA1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBA IC02MCwxMyArNjAsMTIgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0VYRUNVVE9SX0ZJWEVECQlV SU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9QTEFO TkVEU1RNVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAyKQogI2RlZmluZSBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTwkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAzKQotI2Rl ZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDQpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1Qo MHhFMDAwMDAwMDAwMDAwMDA0KQogI2RlZmluZSBQQVJBTExFTF9LRVlfVFVQTEVfUVVFVUUJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RS VU1FTlRBVElPTglVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MDYpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9EU0EJCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAw MDAwMDA3KQogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElP TiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEEpCiAKICNkZWZpbmUgUEFS QUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjI1LDggKzYyNCw2IEBAIEV4ZWNJ bml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlj aGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOwogCWNoYXIJICAgKnBh cmFtbGlzdGluZm9fc3BhY2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwotCVdhbFVz YWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICpp bnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2lu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwpAQCAtNjkwLDIxICs2ODcs MTQgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAog CS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIEJ1ZmZlclVzYWdlLgorCSAqIEVzdGltYXRlIHNw YWNlIGZvciBJbnN0cnVtZW50YXRpb24uCiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1 c2UgYW5kIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2Ug Y291bGQgc2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBh bnlvbmUncwogCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRp dGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMp KTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Ci0KLQkvKgot CSAqIFNhbWUgdGhpbmcgZm9yIFdhbFVzYWdlLgotCSAqLwotCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSks IHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0 aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3IgdHVwbGUgcXVldWVzLiAqLwpA QCAtNzkwLDE3ICs3ODAsMTggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFu c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBh cmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbywgJnBhcmFtbGlzdGluZm9fc3BhY2Up OwogCi0JLyogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgQnVmZmVyVXNhZ2U7IG5v IG5lZWQgdG8gaW5pdGlhbGl6ZS4gKi8KLQlidWZ1c2FnZV9zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLAotCQkJCQkJCQkJICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgYnVmdXNhZ2Vfc3BhY2UpOwotCXBlaS0+YnVmZmVyX3VzYWdlID0gYnVm dXNhZ2Vfc3BhY2U7CisJLyoKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJ bnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgorCSAqLworCXsKKwkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAotCS8qIFNhbWUgZm9yIFdhbFVzYWdlLiAqLwotCXdh bHVzYWdlX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCQkgIG11 bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2FnZV9zcGFjZSk7Ci0J cGVpLT53YWxfdXNhZ2UgPSB3YWx1c2FnZV9zcGFjZTsKKwkJaW5zdHIgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywKKwkJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24p LCBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsKKwkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBp bnN0cjsKKwl9CiAKIAkvKiBTZXQgdXAgdGhlIHR1cGxlIHF1ZXVlcyB0aGF0IHRoZSB3b3JrZXJz IHdpbGwgd3JpdGUgaW50by4gKi8KIAlwZWktPnRxdWV1ZSA9IEV4ZWNQYXJhbGxlbFNldHVwVHVw bGVRdWV1ZXMocGN4dCwgZmFsc2UpOwpAQCAtODI2LDkgKzgxNyw5IEBAIEV4ZWNJbml0UGFyYWxs ZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVu dCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9 IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2RlKCZpbnN0 cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RydW1lbnRfb3B0aW9ucyk7Ci0J CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwK KwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfTk9ERV9JTlNUUlVNRU5U QVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7Ci0JCXBlaS0+aW5zdHJ1bWVudGF0aW9u ID0gaW5zdHJ1bWVudGF0aW9uOworCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1 bWVudGF0aW9uOwogCiAJCWlmIChlc3RhdGUtPmVzX2ppdF9mbGFncyAhPSBQR0pJVF9OT05FKQog CQl7CkBAIC0xMjMwLDcgKzEyMjEsNyBAQCBFeGVjUGFyYWxsZWxGaW5pc2goUGFyYWxsZWxFeGVj dXRvckluZm8gKnBlaSkKIAkgKiBmaW5pc2gsIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRh dGEuKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgaSsrKQotCQlJbnN0ckFjY3Vt UGFyYWxsZWxRdWVyeSgmcGVpLT5idWZmZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7 CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwZWktPmluc3RydW1lbnRhdGlvbltpXSk7CiAK IAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsKIH0KQEAgLTEyNDQsMTAgKzEyMzUsMTAgQEAgRXhlY1Bh cmFsbGVsRmluaXNoKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB2b2lkCiBFeGVjUGFyYWxs ZWxDbGVhbnVwKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB7Ci0JLyogQWNjdW11bGF0ZSBp bnN0cnVtZW50YXRpb24sIGlmIGFueS4gKi8KLQlpZiAocGVpLT5pbnN0cnVtZW50YXRpb24pCisJ LyogQWNjdW11bGF0ZSBub2RlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLworCWlmIChwZWkt Pm5vZGVfaW5zdHJ1bWVudGF0aW9uKQogCQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRh dGlvbihwZWktPnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOwor CQkJCQkJCQkJCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uKTsKIAogCS8qIEFjY3VtdWxhdGUg SklUIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmppdF9pbnN0cnVtZW50 YXRpb24pCkBAIC0xNDcxLDggKzE0NjIsNiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiB7CiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZw ZXM7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCUJ1ZmZlclVzYWdlICpidWZmZXJf dXNhZ2U7Ci0JV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwogCURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7 CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50YXRpb247CkBAIC0xNDg3LDcgKzE0NzYsNyBAQCBQYXJhbGxlbFF1ZXJ5TWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTZXQgdXAgRGVzdFJlY2Vp dmVyLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiwgYW5kIFF1ZXJ5RGVzYy4gKi8KIAly ZWNlaXZlciA9IEV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKHNlZywgdG9jKTsKLQlpbnN0cnVtZW50 YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04s IHRydWUpOworCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX05PREVfSU5TVFJVTUVOVEFUSU9OLCB0cnVlKTsKIAlpZiAoaW5zdHJ1bWVudGF0aW9uICE9 IE5VTEwpCiAJCWluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVu dF9vcHRpb25zOwogCWppdF9pbnN0cnVtZW50YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OLApAQCAtMTU0NSwxMSArMTUzNCwxMiBAQCBQ YXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRXhlY3V0 b3JGaW5pc2gocXVlcnlEZXNjKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmlu ZyBwYXJhbGxlbCBleGVjdXRpb24uICovCi0JYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwor CXsKKwkJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CisKKwkJd29ya2VyX2luc3RyID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7 CisJCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdv cmtlck51bWJlcl0pOworCX0KIAogCS8qIFJlcG9ydCBpbnN0cnVtZW50YXRpb24gZGF0YSBpZiBh bnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4gKi8KIAlpZiAoaW5zdHJ1bWVudGF0 aW9uICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggNjg5MjcwNmE4M2Eu LjA5ZDVmZmU4NjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0zMjIsMTEgKzMy MiwxMiBAQCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQogCiAvKiByZXBvcnQgdXNhZ2Ug YWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQKLUluc3RyRW5kUGFyYWxs ZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBJbnN0cnVtZW50YXRpb24gKmRzdCkKIHsKIAlJbnN0clF1ZXJ5 U3RvcEZpbmFsaXplKHFpbnN0cik7Ci0JbWVtY3B5KGJ1ZnVzYWdlLCAmcWluc3RyLT5pbnN0ci5i dWZ1c2FnZSwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JbWVtY3B5KHdhbHVzYWdlLCAmcWluc3Ry LT5pbnN0ci53YWx1c2FnZSwgc2l6ZW9mKFdhbFVzYWdlKSk7CisJZHN0LT5uZWVkX3N0YWNrID0g cWluc3RyLT5pbnN0ci5uZWVkX3N0YWNrOworCW1lbWNweSgmZHN0LT5idWZ1c2FnZSwgJnFpbnN0 ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1lbWNweSgmZHN0LT53 YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkpOwogfQog CiAvKgpAQCAtMzQyLDEyICszNDMsMTEgQEAgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXMKICAqIGFj dGl2aXR5IGlzIGFjY3VtdWxhdGVkLgogICovCiB2b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVy eShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyQWNjdW1Q YXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JQnVmZmVyVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7Ci0JV2FsVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisJSW5zdHJBY2N1bVN0 YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKIAotCVdhbFVzYWdlQWRkKCZwZ1dhbFVz YWdlLCB3YWx1c2FnZSk7CisJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNh Z2UpOwogfQogCiAvKiBOb2RlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjUGFyYWxsZWwuaAppbmRleCA1YTIwMzQ4MTFkNS4uNmM4YjYwMmQwN2YgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCkBAIC0yNSw5ICsyNSw4IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsRXhlY3V0b3JJbmZvCiB7CiAJUGxhblN0YXRlICAqcGxhbnN0YXRlOwkJLyog cGxhbiBzdWJ0cmVlIHdlJ3JlIHJ1bm5pbmcgaW4gcGFyYWxsZWwgKi8KIAlQYXJhbGxlbENvbnRl eHQgKnBjeHQ7CQkvKiBwYXJhbGxlbCBjb250ZXh0IHdlJ3JlIHVzaW5nICovCi0JQnVmZmVyVXNh Z2UgKmJ1ZmZlcl91c2FnZTsJLyogcG9pbnRzIHRvIGJ1ZnVzYWdlIGFyZWEgaW4gRFNNICovCi0J V2FsVXNhZ2UgICAqd2FsX3VzYWdlOwkJLyogd2FsdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOyAvKiBvcHRpb25hbCAq LworCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOwkvKiBpbnN0cnVtZW50YXRpb24g YXJlYSBpbiBEU00gKi8KKwlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqbm9kZV9pbnN0 cnVtZW50YXRpb247CS8qIG9wdGlvbmFsICovCiAJc3RydWN0IFNoYXJlZEppdEluc3RydW1lbnRh dGlvbiAqaml0X2luc3RydW1lbnRhdGlvbjsJLyogb3B0aW9uYWwgKi8KIAlkc2FfYXJlYSAgICph cmVhOwkJCS8qIHBvaW50cyB0byBEU0EgYXJlYSBpbiBEU00gKi8KIAlkc2FfcG9pbnRlciBwYXJh bV9leGVjOwkJLyogc2VyaWFsaXplZCBQQVJBTV9FWEVDIHBhcmFtZXRlcnMgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2luc3RydW1lbnQuaAppbmRleCAyZDIxOGRjMmExNS4uYzM0YTFjZmZmNDIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKQEAgLTI4Myw4ICsyODMsOCBAQCBleHRlcm4gdm9pZCBJbnN0 clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4g dm9pZCBJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50 LCBJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIAogcGdfbm9kaXNjYXJkIGV4dGVybiBRdWVyeUlu c3RydW1lbnRhdGlvbiAqSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1leHRlcm4gdm9p ZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgSW5z dHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2Fs dXNhZ2UpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIsIEluc3RydW1lbnRhdGlvbiAqZHN0KTsKK2V4dGVybiB2b2lkIEluc3Ry QWNjdW1QYXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogCiBleHRlcm4gTm9k ZUluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY05vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFp bnN0ciwgYm9vbCBhc3luY19tb2RlKTsKIGV4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotLSAKMi40Ny4x Cgo= --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0009-Add-pg_session_buffer_usage-contrib-module.patch" Content-Disposition: attachment; filename="v10-0009-Add-pg_session_buffer_usage-contrib-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5u8 RnJvbSA3ZjMwYmFiYzNhZTVmMmU0NDcwZmNlZTliZjZkN2FhMjBmYWRiMmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCA5LzldIEFk ZCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSBjb250cmliIG1vZHVsZQoKVGhpcyBpcyBpbnRlbmRl ZCBmb3IgdGVzdGluZyBpbnN0cnVtZW50YXRpb24gcmVsYXRlZCBsb2dpYyBhcyBpdCBwZXJ0YWlu cwp0byB0aGUgdG9wIGxldmVsIHN0YWNrIHRoYXQgaXMgbWFpbnRhaW5lZCBhcyBhIHJ1bm5pbmcg dG90YWwuIFRoZXJlIGlzCmN1cnJlbnRseSBubyBpbi1jb3JlIHVzZXIgdGhhdCB1dGlsaXplcyB0 aGUgdG9wLWxldmVsIHZhbHVlcyBpbiB0aGlzCm1hbm5lciwgYW5kIGVzcGVjaWFsbHkgZHVyaW5n IGFib3J0IHNpdHVhdGlvbnMgdGhpcyBoZWxwcyBlbnN1cmUgd2UgZG9uJ3QKbG9zZSBhY3Rpdml0 eSBkdWUgdG8gaW5jb3JyZWN0IGhhbmRsaW5nIG9mIHVuZmluYWxpemVkIG5vZGUgc3RhY2tzLgot LS0KIGNvbnRyaWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBjb250cmliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog Y29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmlsZSAgICAgIHwgIDIzICsrCiAu Li4vZXhwZWN0ZWQvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0ICAgICAgfCAzNDIgKysrKysr KysrKysrKysrKysrCiBjb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxk ICAgfCAgMzQgKysKIC4uLi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCAgICAgICAg ICB8ICAzMSArKwogLi4uL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMgICAgICAgICAgICAgICAg IHwgIDk1ICsrKysrCiAuLi4vcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbCAgICAgICAg ICAgfCAgIDUgKwogLi4uL3NxbC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwgICAgICAgICAg IHwgMjQ1ICsrKysrKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2Vm aWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9l eHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBj b250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGNv bnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29u dHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uv c3FsL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvTWFr ZWZpbGUgYi9jb250cmliL01ha2VmaWxlCmluZGV4IGRkMDRjMjBhY2QyLi5hYzA0ZjllYjk5NyAx MDA2NDQKLS0tIGEvY29udHJpYi9NYWtlZmlsZQorKysgYi9jb250cmliL01ha2VmaWxlCkBAIC0z Niw2ICszNiw3IEBAIFNVQkRJUlMgPSBcCiAJCXBnX292ZXJleHBsYWluIFwKIAkJcGdfcGxhbl9h ZHZpY2UgXAogCQlwZ19wcmV3YXJtCVwKKwkJcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgXAogCQlw Z19zdGF0X3N0YXRlbWVudHMgXAogCQlwZ19zdXJnZXJ5CVwKIAkJcGdfdHJnbQkJXApkaWZmIC0t Z2l0IGEvY29udHJpYi9tZXNvbi5idWlsZCBiL2NvbnRyaWIvbWVzb24uYnVpbGQKaW5kZXggNWE3 NTJlYWMzNDcuLjJiMTM5OWU1NmYzIDEwMDY0NAotLS0gYS9jb250cmliL21lc29uLmJ1aWxkCisr KyBiL2NvbnRyaWIvbWVzb24uYnVpbGQKQEAgLTUxLDYgKzUxLDcgQEAgc3ViZGlyKCdwZ19vdmVy ZXhwbGFpbicpCiBzdWJkaXIoJ3BnX3BsYW5fYWR2aWNlJykKIHN1YmRpcigncGdfcHJld2FybScp CiBzdWJkaXIoJ3Bncm93bG9ja3MnKQorc3ViZGlyKCdwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScp CiBzdWJkaXIoJ3BnX3N0YXRfc3RhdGVtZW50cycpCiBzdWJkaXIoJ3Bnc3RhdHR1cGxlJykKIHN1 YmRpcigncGdfc3VyZ2VyeScpCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVy X3VzYWdlL01ha2VmaWxlIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmls ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzViZDhlMDliM2QKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxl CkBAIC0wLDAgKzEsMjMgQEAKKyMgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtl ZmlsZQorCitNT0RVTEVfYmlnID0gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UKK09CSlMgPSBcCisJ JChXSU4zMlJFUykgXAorCXBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLm8KKworRVhURU5TSU9OID0g cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UKK0RBVEEgPSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS0t MS4wLnNxbAorUEdGSUxFREVTQyA9ICJwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSAtIHNob3cgYnVm ZmVyIHVzYWdlIHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24iCisKK1JFR1JFU1Mg PSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZQorCitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0g cGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUg JChQR1hTKQorZWxzZQorc3ViZGlyID0gY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZQor dG9wX2J1aWxkZGlyID0gLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1r CitlbmRpZgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBl Y3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQgYi9jb250cmliL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlL2V4cGVjdGVkL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWUzZjkwYTdiNjkKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL2V4cGVjdGVkL3BnX3Nlc3Npb25f YnVmZmVyX3VzYWdlLm91dApAQCAtMCwwICsxLDM0MiBAQAorTE9BRCAncGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UnOworQ1JFQVRFIEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZTsKKy0t IFZlcmlmeSBhbGwgY29sdW1ucyBhcmUgbm9uLW5lZ2F0aXZlCitTRUxFQ1QgY291bnQoKikgPSAx IEFTIG9rIEZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKQorV0hFUkUgc2hhcmVkX2Jsa3Nf aGl0ID49IDAgQU5EIHNoYXJlZF9ibGtzX3JlYWQgPj0gMAorICBBTkQgc2hhcmVkX2Jsa3NfZGly dGllZCA+PSAwIEFORCBzaGFyZWRfYmxrc193cml0dGVuID49IDAKKyAgQU5EIGxvY2FsX2Jsa3Nf aGl0ID49IDAgQU5EIGxvY2FsX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBsb2NhbF9ibGtzX2RpcnRp ZWQgPj0gMCBBTkQgbG9jYWxfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHRlbXBfYmxrc19yZWFk ID49IDAgQU5EIHRlbXBfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHNoYXJlZF9ibGtfcmVhZF90 aW1lID49IDAgQU5EIHNoYXJlZF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCBsb2NhbF9ibGtf cmVhZF90aW1lID49IDAgQU5EIGxvY2FsX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5EIHRlbXBf YmxrX3JlYWRfdGltZSA+PSAwIEFORCB0ZW1wX2Jsa193cml0ZV90aW1lID49IDA7Cisgb2sgCist LS0tCisgdAorKDEgcm93KQorCistLSBWZXJpZnkgY291bnRlcnMgaW5jcmVhc2UgYWZ0ZXIgYnVm ZmVyIGFjdGl2aXR5CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9idWZfYWN0aXZpdHkg KGlkIGludCwgZGF0YSB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRlc3RfYnVmX2FjdGl2aXR5IFNFTEVD VCBpLCByZXBlYXQoJ3gnLCAxMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIGk7 CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgMTAwMAorKDEgcm93KQorCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtz X3JlYWQgPiAwIEFTIGJsb2Nrc19pbmNyZWFzZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2UoKTsKKyBibG9ja3NfaW5jcmVhc2VkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCitEUk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5OworLS0gUGFyYWxsZWwgcXVlcnkgdGVz dAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQg SU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfZGNfdGFiOwor IGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1cmUgc2VyaWFsIHNj YW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NFVCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNl dCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfZGNf dGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRB QkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgQVMgc2VyaWFs X2RlbHRhIEZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKy0tIE1lYXN1cmUgcGFyYWxs ZWwgc2NhbiBkZWx0YSB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGluZyBpbiBzY2FubmluZy4K Ky0tIFdvcmtlcnMgZG8gYWxsIHRhYmxlIHNjYW5uaW5nOyBsZWFkZXIgb25seSBydW5zIHRoZSBH YXRoZXIgbm9kZS4KK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90 dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK1NFVCBwYXJhbGxlbF9sZWFk ZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9y ZXNldCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJf ZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIENvbmZpcm0g d2UgZ290IGEgc2ltaWxhciBoaXQgY291bnRlciB0aHJvdWdoIHBhcmFsbGVsIHdvcmtlciBhY2N1 bXVsYXRpb24KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPiBzLnNlcmlhbF9kZWx0YSAvIDIgQU5E IHNoYXJlZF9ibGtzX2hpdCA8IHMuc2VyaWFsX2RlbHRhICogMgorICAgICAgIEFTIGxlYWRlcl9i dWZmZXJzX21hdGNoCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9y ZXN1bHQgczsKKyBsZWFkZXJfYnVmZmVyc19tYXRjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxl bF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJf cGFydGljaXBhdGlvbjsKK0RST1AgVEFCTEUgcGFyX2RjX3RhYiwgZGNfc2VyaWFsX3Jlc3VsdDsK Ky0tCistLSBBYm9ydC9leGNlcHRpb24gdGVzdHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2 ZXMgdmFyaW91cyBlcnJvciBwYXRocy4KKy0tCistLSBSb2xsZWQtYmFjayBkaXZpZGUtYnktemVy byB1bmRlciBFWFBMQUlOIEFOQUxZWkUKK0NSRUFURSBURU1QIFRBQkxFIGV4Y190YWIgKGEgaW50 LCBiIGNoYXIoMjApKTsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOwor IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBP RkYpCisgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBleGNfdGFiIFZBTFVFUyAoMSwg J2FhYScpIFJFVFVSTklORyBhKQorICAgICAgICBTRUxFQ1QgYSAvIDAgRlJPTSBpbnM7CitFUlJP UjogIGRpdmlzaW9uIGJ5IHplcm8KK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIGV4 Y2VwdGlvbl9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGV4Y190YWI7CistLSBVbmlxdWUgY29uc3RyYWlu dCB2aW9sYXRpb24gaW4gcmVndWxhciBxdWVyeQorQ1JFQVRFIFRFTVAgVEFCTEUgdW5pcXVlX3Rh YiAoYSBpbnQgVU5JUVVFLCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFM VUVTICgxLCAnZmlyc3QnKTsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgp OworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAo MSwgJ2R1cGxpY2F0ZScpOworRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVu aXF1ZSBjb25zdHJhaW50ICJ1bmlxdWVfdGFiX2Ffa2V5IgorREVUQUlMOiAgS2V5IChhKT0oMSkg YWxyZWFkeSBleGlzdHMuCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPiAwIEFTIHVuaXF1ZV92aW9s YXRpb25fYnVmZmVyc192aXNpYmxlCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7Cisg dW5pcXVlX3Zpb2xhdGlvbl9idWZmZXJzX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHVuaXF1ZV90YWI7CistLSBD YXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMIHN1YnRyYW5zYWN0aW9uIChCRUdJTi4uLkVYQ0VQ VElPTikKK0NSRUFURSBURU1QIFRBQkxFIHN1YnhhY3RfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7 CitDUkVBVEUgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAor QkVHSU4KKyAgICBCRUdJTgorICAgICAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTLCBDT1NUUyBPRkYpCisgICAgICAgICAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gc3Vi eGFjdF90YWIgVkFMVUVTICgxLCAnJ2FhYScnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAgICAgIFNF TEVDVCBhIC8gMCBGUk9NIGlucyc7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVy byBUSEVOCisgICAgICAgIFJFVFVSTiAnY2F1Z2h0JzsKKyAgICBFTkQ7CisgICAgUkVUVVJOICdu b3QgcmVhY2hlZCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBz dWJ4YWN0X2V4Y19mdW5jKCk7Cisgc3VieGFjdF9leGNfZnVuYyAKKy0tLS0tLS0tLS0tLS0tLS0t LQorIGNhdWdodAorKDEgcm93KQorCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBz dWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOwor IHN1YnhhY3RfYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworRFJPUCBGVU5DVElPTiBzdWJ4YWN0X2V4Y19mdW5jOworRFJPUCBUQUJMRSBz dWJ4YWN0X3RhYjsKKy0tIEN1cnNvciAoRk9SIGxvb3ApIGluIGFib3J0ZWQgc3VidHJhbnNhY3Rp b247IHZlcmlmeSBwb3N0LWV4Y2VwdGlvbiB0cmFja2luZworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vy c29yX3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIGN1cnNvcl90YWIgU0VM RUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBp OworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAor REVDTEFSRQorICAgIHJlYyByZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBC RUdJTgorICAgICAgICBGT1IgcmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisg ICAgICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVO CisgICAgICAgICAgICAgICAgUEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAg ICAgICAgRU5EIExPT1A7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVO CisgICAgICAgIFJFVFVSTiAnY2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAg RU5EOworICAgIFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3Nx bDsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Npb25f YnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgY3Vyc29yX2V4Y19mdW5jKCk7CisgICAgY3Vyc29yX2V4Y19mdW5j ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjYXVnaHQgYWZ0ZXIgMjUwIHJvd3MKKygx IHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMAorICAg ICAgIEFTIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZSgpOworIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9OIGN1 cnNvcl9leGNfZnVuYzsKK0RST1AgVEFCTEUgY3Vyc29yX3RhYjsKKy0tIFRyaWdnZXIgYWJvcnQg dW5kZXIgRVhQTEFJTiBBTkFMWVpFOiB2ZXJpZnkgdGhhdCBidWZmZXIgYWN0aXZpdHkgZnJvbSBh CistLSB0cmlnZ2VyIHRoYXQgdGhyb3dzIGFuIGVycm9yIGlzIHN0aWxsIHByb3Blcmx5IHByb3Bh Z2F0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX2Vycl90YWIgKGEgaW50KTsKK0NSRUFURSBU RU1QIFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5U TyB0cmlnX3dvcmtfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMCkgQVMgaTsKKy0tIFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtf dGFiIHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFi OworIGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElPTiB0 cmlnX2Vycl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZPUk0g Y291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworICAgIFJBSVNFIEVYQ0VQVElPTiAndHJpZ2dl ciBlcnJvcic7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitD UkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgorICAg IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKy0tIE1lYXN1 cmUgaG93IG1hbnkgbG9jYWwgYnVmZmVyIGhpdHMgYSBzY2FuIG9mIHRyaWdfd29ya190YWIgcHJv ZHVjZXMKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworIGNvdW50 IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfc2Vy aWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9oaXRzIEZST00g cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKy0tIE5vdyB0cmlnZ2VyIHRoZSBzYW1lIHNjYW4g dmlhIGEgdHJpZ2dlciB0aGF0IGVycm9ycworU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdl X3Jlc2V0KCk7CisgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMsIENPU1RTIE9GRikKKyAgICBJTlNFUlQgSU5UTyB0cmlnX2Vycl90YWIgVkFMVUVTICgxKTsK K0VSUk9SOiAgdHJpZ2dlciBlcnJvcgorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHRyaWdf ZXJyX2Z1bmMoKSBsaW5lIDQgYXQgUkFJU0UKKy0tIFRoZSB0cmlnZ2VyIHNjYW5uZWQgdHJpZ193 b3JrX3RhYiBidXQgZXJyb3JlZCBiZWZvcmUgSW5zdHJTdG9wVHJpZ2dlciByYW4uCistLSBJbnN0 clN0b3BGaW5hbGl6ZSBpbiB0aGUgUEdfQ0FUQ0ggZW5zdXJlcyBidWZmZXIgZGF0YSBpcyBzdGls bCBwcm9wYWdhdGVkLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID49IHMuc2VyaWFsX2hpdHMgLyAy CisgICAgICAgQVMgdHJpZ2dlcl9hYm9ydF9idWZmZXJzX3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2UoKSwgdHJpZ19zZXJpYWxfcmVzdWx0IHM7CisgdHJpZ2dlcl9hYm9y dF9idWZmZXJzX3Byb3BhZ2F0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRyaWdfZXJyX3RhYiwgdHJpZ193b3JrX3RhYiwg dHJpZ19zZXJpYWxfcmVzdWx0OworRFJPUCBGVU5DVElPTiB0cmlnX2Vycl9mdW5jOworLS0gUGFy YWxsZWwgd29ya2VyIGFib3J0OiB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBO T1QgcHJvcGFnYXRlZCBvbiBhYm9ydC4KKy0tCistLSBXaGVuIGEgcGFyYWxsZWwgd29ya2VyIGFi b3J0cywgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5IGFuZAorLS0gRXhlY1BhcmFsbGVsUmVwb3J0SW5z dHJ1bWVudGF0aW9uIG5ldmVyIHJ1biwgc28gdGhlIHdvcmtlcidzIGJ1ZmZlcgorLS0gYWN0aXZp dHkgaXMgbmV2ZXIgd3JpdHRlbiB0byBzaGFyZWQgbWVtb3J5LCBkZXNwaXRlIHRoZSBpbmZvcm1h dGlvbiBoYXZpbmcgYmVlbgorLS0gY2FwdHVyZWQgYnkgdGhlIHJlcyBvd25lciByZWxlYXNlIGlu c3RydW1lbnRhdGlvbiBoYW5kbGluZy4KK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfdGFiIChhIGlu dCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gcGFyX2Fib3J0X3RhYiBTRUxFQ1QgaSwgcmVw ZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworLS0gV2Fy bSBzaGFyZWQgYnVmZmVycyBzbyBhbGwgcmVhZHMgYmVjb21lIGhpdHMKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHBhcl9hYm9ydF90YWI7CisgY291bnQgCistLS0tLS0tCisgIDUwMDAKKygxIHJvdykK KworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSBhcyBhIHJlZmVyZW5jZSAobGVhZGVyIHJl YWRzIGFsbCBibG9ja3MpCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7 CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIGI6OmludDIgRlJPTSBwYXJfYWJvcnRfdGFiIFdIRVJFIGEgPiAxMDAw OworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBzbWFsbGludDogInh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IgorQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF9zZXJpYWxf cmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9NIHBn X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBOb3cgZm9yY2UgcGFyYWxsZWwgd2l0aCBsZWFk ZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0 ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFi bGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0g MjsKK1NFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK1NFVCBkZWJ1Z19w YXJhbGxlbF9xdWVyeSA9IG9uOyAtLSBFbnN1cmUgd2UgZ2V0IENPTlRFWFQgbGluZSBjb25zaXN0 ZW50bHkKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+ IDEwMDA7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAi eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiCitDT05URVhUOiAgcGFyYWxsZWwgd29ya2Vy CitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFi bGUgYnV0IGFib3J0ZWQgYmVmb3JlIHJlcG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRl cidzIGRlbHRhIHNob3VsZCBiZSBtdWNoIGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVu dGluZworLS0gdGhhdCB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitT RUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29y a2VyX2Fib3J0X2J1ZmZlcnNfbm90X3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2UoKSwgcGFyX2Fib3J0X3NlcmlhbF9yZXN1bHQgczsKKyB3b3JrZXJfYWJvcnRfYnVmZmVy c19ub3RfcHJvcGFnYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxl bF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJf cGFydGljaXBhdGlvbjsKK0RST1AgVEFCTEUgcGFyX2Fib3J0X3RhYiwgcGFyX2Fib3J0X3Nlcmlh bF9yZXN1bHQ7CistLSBDbGVhbnVwCitEUk9QIEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24u YnVpbGQgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNGM3NTAyYmViNAotLS0gL2Rldi9u dWxsCisrKyBiL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKQEAg LTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKK3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3NvdXJjZXMgPSBmaWxl cygKKyAgJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9 PSAnd2luZG93cycKKyAgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vfc291cmNlcyArPSByY19saWJf Z2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Bn X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICAnLS1GSUxFREVTQycsICdwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZSAtIHNob3cgYnVmZmVyIHVzYWdlIHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50 IHNlc3Npb24nLF0pCitlbmRpZgorCitwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSA9IHNoYXJlZF9t b2R1bGUoJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgcGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2Vfc291cmNlcywKKyAga3dhcmdzOiBjb250cmliX21vZF9hcmdzLAorKQorY29udHJpYl90YXJn ZXRzICs9IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlCisKK2luc3RhbGxfZGF0YSgKKyAgJ3BnX3Nl c3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsJywKKyAgJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdl LmNvbnRyb2wnLAorICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9hcmdzLAorKQorCit0ZXN0cyArPSB7 CisgICduYW1lJzogJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgJ3NkJzogbWVzb24uY3Vy cmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisg ICdyZWdyZXNzJzogeworICAgICdzcWwnOiBbCisgICAgICAncGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2UnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsIGIvY29udHJpYi9wZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjMwMGZkYmM2NDMKLS0tIC9kZXYv bnVsbAorKysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlLS0xLjAuc3FsCkBAIC0wLDAgKzEsMzEgQEAKKy8qIGNvbnRyaWIvcGdfc2Vzc2lv bl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgKi8KKworLS0g Y29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENS RUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZSIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZSgKKyAgICBPVVQgc2hhcmVkX2Jsa3NfaGl0IGJpZ2ludCwK KyAgICBPVVQgc2hhcmVkX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtzX2Rp cnRpZWQgYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrc193cml0dGVuIGJpZ2ludCwKKyAgICBP VVQgbG9jYWxfYmxrc19oaXQgYmlnaW50LAorICAgIE9VVCBsb2NhbF9ibGtzX3JlYWQgYmlnaW50 LAorICAgIE9VVCBsb2NhbF9ibGtzX2RpcnRpZWQgYmlnaW50LAorICAgIE9VVCBsb2NhbF9ibGtz X3dyaXR0ZW4gYmlnaW50LAorICAgIE9VVCB0ZW1wX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VU IHRlbXBfYmxrc193cml0dGVuIGJpZ2ludCwKKyAgICBPVVQgc2hhcmVkX2Jsa19yZWFkX3RpbWUg ZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgc2hhcmVkX2Jsa193cml0ZV90aW1lIGRvdWJsZSBw cmVjaXNpb24sCisgICAgT1VUIGxvY2FsX2Jsa19yZWFkX3RpbWUgZG91YmxlIHByZWNpc2lvbiwK KyAgICBPVVQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQg dGVtcF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHRlbXBfYmxrX3dy aXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbgorKQorUkVUVVJOUyByZWNvcmQKK0FTICdNT0RVTEVf UEFUSE5BTUUnLCAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnCitMQU5HVUFHRSBDIFBBUkFMTEVM IFJFU1RSSUNURUQ7CisKK0NSRUFURSBGVU5DVElPTiBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9y ZXNldCgpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAncGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2VfcmVzZXQnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFJFU1RSSUNURUQ7CmRpZmYg LS1naXQgYS9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVy X3VzYWdlLmMgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4Njk5 NTZiM2E5Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5jCkBAIC0wLDAgKzEsOTUgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKKyAqCSAgc2hvdyBidWZm ZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbgorICoKKyAqIENvcHly aWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KgkgIGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2UuYworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2luc3Ry dW1lbnQuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworUEdfTU9EVUxFX01BR0lDX0VYVCgKKwkJCQkJ Lm5hbWUgPSAicGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UiLAorCQkJCQkudmVyc2lvbiA9IFBHX1ZF UlNJT04KKyk7CisKKyNkZWZpbmUgTlVNX0JVRkZFUl9VU0FHRV9DT0xVTU5TIDE2CisKK1BHX0ZV TkNUSU9OX0lORk9fVjEocGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UpOworUEdfRlVOQ1RJT05fSU5G T19WMShwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCk7CisKKyNkZWZpbmUgSEFWRV9JTlNU Ul9TVEFDSyAxCQkvKiBDaGFuZ2UgdG8gMCB3aGVuIHRlc3RpbmcgYmVmb3JlIHN0YWNrCisJCQkJ CQkJCSAqIGNoYW5nZSAqLworCisvKgorICogU1FMIGZ1bmN0aW9uOiBwZ19zZXNzaW9uX2J1ZmZl cl91c2FnZSgpCisgKgorICogUmV0dXJucyBhIHNpbmdsZSByb3cgd2l0aCBhbGwgQnVmZmVyVXNh Z2UgY291bnRlcnMgYWNjdW11bGF0ZWQgc2luY2UgdGhlCisgKiBzdGFydCBvZiB0aGUgc2Vzc2lv bi4gRXhjbHVkZXMgYW55IHVzYWdlIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAq IHN0YWNrIChlLmcuIGlmIHRoaXMgZ2V0cyBjYWxsZWQgaW5zaWRlIGEgc3RhdGVtZW50IHRoYXQg YWxzbyBoYWQgYnVmZmVyCisgKiBhY3Rpdml0eSkuCisgKi8KK0RhdHVtCitwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZShQR19GVU5DVElPTl9BUkdTKQoreworCVR1cGxlRGVzYwl0dXBkZXNjOworCURh dHVtCQl2YWx1ZXNbTlVNX0JVRkZFUl9VU0FHRV9DT0xVTU5TXTsKKwlib29sCQludWxsc1tOVU1f QlVGRkVSX1VTQUdFX0NPTFVNTlNdOworCUJ1ZmZlclVzYWdlICp1c2FnZTsKKworCWlmIChnZXRf Y2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01Q T1NJVEUpCisJCWVsb2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsK KworCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CisKKyNpZiBIQVZFX0lOU1RSX1NU QUNLCisJdXNhZ2UgPSAmaW5zdHJfdG9wLmJ1ZnVzYWdlOworI2Vsc2UKKwl1c2FnZSA9ICZwZ0J1 ZmZlclVzYWdlOworI2VuZGlmCisKKwl2YWx1ZXNbMF0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5z aGFyZWRfYmxrc19oaXQpOworCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJl ZF9ibGtzX3JlYWQpOworCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJlZF9i bGtzX2RpcnRpZWQpOworCXZhbHVlc1szXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJlZF9i bGtzX3dyaXR0ZW4pOworCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Js a3NfaGl0KTsKKwl2YWx1ZXNbNV0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3Jl YWQpOworCXZhbHVlc1s2XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfZGlydGll ZCk7CisJdmFsdWVzWzddID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc193cml0dGVu KTsKKwl2YWx1ZXNbOF0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT50ZW1wX2Jsa3NfcmVhZCk7CisJ dmFsdWVzWzldID0gSW50NjRHZXREYXR1bSh1c2FnZS0+dGVtcF9ibGtzX3dyaXR0ZW4pOworCXZh bHVlc1sxMF0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+ c2hhcmVkX2Jsa19yZWFkX3RpbWUpKTsKKwl2YWx1ZXNbMTFdID0gRmxvYXQ4R2V0RGF0dW0oSU5T VFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnNoYXJlZF9ibGtfd3JpdGVfdGltZSkpOworCXZh bHVlc1sxMl0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+ bG9jYWxfYmxrX3JlYWRfdGltZSkpOworCXZhbHVlc1sxM10gPSBGbG9hdDhHZXREYXR1bShJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+bG9jYWxfYmxrX3dyaXRlX3RpbWUpKTsKKwl2YWx1 ZXNbMTRdID0gRmxvYXQ4R2V0RGF0dW0oSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnRl bXBfYmxrX3JlYWRfdGltZSkpOworCXZhbHVlc1sxNV0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfd3JpdGVfdGltZSkpOworCisJUEdfUkVU VVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1 ZXMsIG51bGxzKSkpOworfQorCisvKgorICogU1FMIGZ1bmN0aW9uOiBwZ19zZXNzaW9uX2J1ZmZl cl91c2FnZV9yZXNldCgpCisgKgorICogUmVzZXRzIGFsbCBCdWZmZXJVc2FnZSBjb3VudGVycyBv biB0aGUgdG9wIGluc3RydW1lbnRhdGlvbiBzdGFjayB0byB6ZXJvLgorICogVXNlZnVsIGluIHRl c3RzIHRvIGF2b2lkIHRoZSBiYXNlbGluZS9kZWx0YSBwYXR0ZXJuLgorICovCitEYXR1bQorcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZiBIQVZF X0lOU1RSX1NUQUNLCisJbWVtc2V0KCZpbnN0cl90b3AuYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZm ZXJVc2FnZSkpOworI2Vsc2UKKwltZW1zZXQoJnBnQnVmZmVyVXNhZ2UsIDAsIHNpemVvZihCdWZm ZXJVc2FnZSkpOworI2VuZGlmCisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5j b250cm9sIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZl cl91c2FnZS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m YWJkMDVlZTAyNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbApAQCAtMCwwICsxLDUgQEAKKyMg cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgZXh0ZW5zaW9uCitjb21tZW50ID0gJ3Nob3cgYnVmZmVy IHVzYWdlIHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24nCitkZWZhdWx0X3ZlcnNp b24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2UnCityZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lv bl9idWZmZXJfdXNhZ2Uvc3FsL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbCBiL2NvbnRyaWIv cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uvc3FsL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTkyMDY4MTY4YjIKLS0tIC9k ZXYvbnVsbAorKysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC9wZ19zZXNz aW9uX2J1ZmZlcl91c2FnZS5zcWwKQEAgLTAsMCArMSwyNDUgQEAKK0xPQUQgJ3BnX3Nlc3Npb25f YnVmZmVyX3VzYWdlJzsKK0NSRUFURSBFWFRFTlNJT04gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7 CisKKy0tIFZlcmlmeSBhbGwgY29sdW1ucyBhcmUgbm9uLW5lZ2F0aXZlCitTRUxFQ1QgY291bnQo KikgPSAxIEFTIG9rIEZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKQorV0hFUkUgc2hhcmVk X2Jsa3NfaGl0ID49IDAgQU5EIHNoYXJlZF9ibGtzX3JlYWQgPj0gMAorICBBTkQgc2hhcmVkX2Js a3NfZGlydGllZCA+PSAwIEFORCBzaGFyZWRfYmxrc193cml0dGVuID49IDAKKyAgQU5EIGxvY2Fs X2Jsa3NfaGl0ID49IDAgQU5EIGxvY2FsX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBsb2NhbF9ibGtz X2RpcnRpZWQgPj0gMCBBTkQgbG9jYWxfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHRlbXBfYmxr c19yZWFkID49IDAgQU5EIHRlbXBfYmxrc193cml0dGVuID49IDAKKyAgQU5EIHNoYXJlZF9ibGtf cmVhZF90aW1lID49IDAgQU5EIHNoYXJlZF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCBsb2Nh bF9ibGtfcmVhZF90aW1lID49IDAgQU5EIGxvY2FsX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5E IHRlbXBfYmxrX3JlYWRfdGltZSA+PSAwIEFORCB0ZW1wX2Jsa193cml0ZV90aW1lID49IDA7CisK Ky0tIFZlcmlmeSBjb3VudGVycyBpbmNyZWFzZSBhZnRlciBidWZmZXIgYWN0aXZpdHkKK1NFTEVD VCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworCitDUkVBVEUgVEVNUCBUQUJMRSB0 ZXN0X2J1Zl9hY3Rpdml0eSAoaWQgaW50LCBkYXRhIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9i dWZfYWN0aXZpdHkgU0VMRUNUIGksIHJlcGVhdCgneCcsIDEwMCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMCkgQVMgaTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfYnVmX2FjdGl2aXR5 OworCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIEFTIGJsb2Nr c19pbmNyZWFzZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKworRFJPUCBUQUJM RSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKworLS0gUGFyYWxsZWwgcXVlcnkgdGVzdAorQ1JFQVRFIFRB QkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBwYXJfZGNf dGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApIEFTIGk7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKKy0tIE1lYXN1 cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKworU0VMRUNUIHBnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfZGNfdGFiOworCitD UkVBVEUgVEVNUCBUQUJMRSBkY19zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3Nf aGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKKy0t IE1lYXN1cmUgcGFyYWxsZWwgc2NhbiBkZWx0YSB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGlu ZyBpbiBzY2FubmluZy4KKy0tIFdvcmtlcnMgZG8gYWxsIHRhYmxlIHNjYW5uaW5nOyBsZWFkZXIg b25seSBydW5zIHRoZSBHYXRoZXIgbm9kZS4KK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsK K1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK1NF VCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKKworU0VMRUNUIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfZGNfdGFi OworCistLSBDb25maXJtIHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNvdW50ZXIgdGhyb3VnaCBwYXJh bGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0ID4gcy5zZXJp YWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9kZWx0YSAqIDIKKyAg ICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRjaAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZSgpLCBkY19zZXJpYWxfcmVzdWx0IHM7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitS RVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5f c2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJh bGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbjsKKworRFJPUCBUQUJMRSBwYXJfZGNfdGFiLCBkY19z ZXJpYWxfcmVzdWx0OworCistLQorLS0gQWJvcnQvZXhjZXB0aW9uIHRlc3RzOiB2ZXJpZnkgYnVm ZmVyIHVzYWdlIHN1cnZpdmVzIHZhcmlvdXMgZXJyb3IgcGF0aHMuCistLQorCistLSBSb2xsZWQt YmFjayBkaXZpZGUtYnktemVybyB1bmRlciBFWFBMQUlOIEFOQUxZWkUKK0NSRUFURSBURU1QIFRB QkxFIGV4Y190YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKKworU0VMRUNUIHBnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RikKKyAgICAgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIGV4Y190YWIgVkFMVUVTICgxLCAn YWFhJykgUkVUVVJOSU5HIGEpCisgICAgICAgIFNFTEVDVCBhIC8gMCBGUk9NIGluczsKKworU0VM RUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZQor RlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIFRBQkxFIGV4Y190YWI7CisK Ky0tIFVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbiBpbiByZWd1bGFyIHF1ZXJ5CitDUkVBVEUg VEVNUCBUQUJMRSB1bmlxdWVfdGFiIChhIGludCBVTklRVUUsIGIgY2hhcigyMCkpOworSU5TRVJU IElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdmaXJzdCcpOworCitTRUxFQ1QgcGdfc2Vzc2lv bl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFMVUVTICgx LCAnZHVwbGljYXRlJyk7CisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCA+IDAgQVMgdW5pcXVlX3Zp b2xhdGlvbl9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KworRFJPUCBUQUJMRSB1bmlxdWVfdGFiOworCistLSBDYXVnaHQgZXhjZXB0aW9uIGluIFBML3Bn U1FMIHN1YnRyYW5zYWN0aW9uIChCRUdJTi4uLkVYQ0VQVElPTikKK0NSRUFURSBURU1QIFRBQkxF IHN1YnhhY3RfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CisKK0NSRUFURSBGVU5DVElPTiBzdWJ4 YWN0X2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQkCitCRUdJTgorICAgIEJFR0lOCisgICAg ICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRikKKyAgICAg ICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBzdWJ4YWN0X3RhYiBWQUxVRVMgKDEsICcn YWFhJycpIFJFVFVSTklORyBhKQorICAgICAgICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zJzsK KyAgICBFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICAgICAgUkVUVVJO ICdjYXVnaHQnOworICAgIEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQk IExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNl dCgpOworU0VMRUNUIHN1YnhhY3RfZXhjX2Z1bmMoKTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGly dGllZCA+IDAgQVMgc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UoKTsKKworRFJPUCBGVU5DVElPTiBzdWJ4YWN0X2V4Y19mdW5jOworRFJPUCBUQUJM RSBzdWJ4YWN0X3RhYjsKKworLS0gQ3Vyc29yIChGT1IgbG9vcCkgaW4gYWJvcnRlZCBzdWJ0cmFu c2FjdGlvbjsgdmVyaWZ5IHBvc3QtZXhjZXB0aW9uIHRyYWNraW5nCitDUkVBVEUgVEVNUCBUQUJM RSBjdXJzb3JfdGFiIChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gY3Vyc29yX3Rh YiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAp IEFTIGk7CisKK0NSRUFURSBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQg QVMgJCQKK0RFQ0xBUkUKKyAgICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lO CisgICAgQkVHSU4KKyAgICAgICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIg TE9PUAorICAgICAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAy NTAgVEhFTgorICAgICAgICAgICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQg SUY7CisgICAgICAgIEVORCBMT09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3pl cm8gVEhFTgorICAgICAgICBSRVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3Mn OworICAgIEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VM RUNUIGN1cnNvcl9leGNfZnVuYygpOworCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9i bGtzX3JlYWQgPiAwCisgICAgICAgQVMgY3Vyc29yX3N1YnhhY3RfYnVmZmVyc192aXNpYmxlCitG Uk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgRlVOQ1RJT04gY3Vyc29yX2V4 Y19mdW5jOworRFJPUCBUQUJMRSBjdXJzb3JfdGFiOworCistLSBUcmlnZ2VyIGFib3J0IHVuZGVy IEVYUExBSU4gQU5BTFlaRTogdmVyaWZ5IHRoYXQgYnVmZmVyIGFjdGl2aXR5IGZyb20gYQorLS0g dHJpZ2dlciB0aGF0IHRocm93cyBhbiBlcnJvciBpcyBzdGlsbCBwcm9wZXJseSBwcm9wYWdhdGVk LgorQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ19lcnJfdGFiIChhIGludCk7CitDUkVBVEUgVEVNUCBU QUJMRSB0cmlnX3dvcmtfdGFiIChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gdHJp Z193b3JrX3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MDApIEFTIGk7CisKKy0tIFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtfdGFi IHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOwor CitDUkVBVEUgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAor QkVHSU4KKyAgICBQRVJGT1JNIGNvdW50KCopIEZST00gdHJpZ193b3JrX3RhYjsKKyAgICBSQUlT RSBFWENFUFRJT04gJ3RyaWdnZXIgZXJyb3InOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJU IE9OIHRyaWdfZXJyX3RhYgorICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdf ZXJyX2Z1bmMoKTsKKworLS0gTWVhc3VyZSBob3cgbWFueSBsb2NhbCBidWZmZXIgaGl0cyBhIHNj YW4gb2YgdHJpZ193b3JrX3RhYiBwcm9kdWNlcworU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworCitDUkVB VEUgVEVNUCBUQUJMRSB0cmlnX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBsb2NhbF9ibGtzX2hp dCBBUyBzZXJpYWxfaGl0cyBGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKKy0tIE5v dyB0cmlnZ2VyIHRoZSBzYW1lIHNjYW4gdmlhIGEgdHJpZ2dlciB0aGF0IGVycm9ycworU0VMRUNU IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTLCBDT1NUUyBPRkYpCisgICAgSU5TRVJUIElOVE8gdHJpZ19lcnJfdGFiIFZBTFVFUyAoMSk7 CisKKy0tIFRoZSB0cmlnZ2VyIHNjYW5uZWQgdHJpZ193b3JrX3RhYiBidXQgZXJyb3JlZCBiZWZv cmUgSW5zdHJTdG9wVHJpZ2dlciByYW4uCistLSBJbnN0clN0b3BGaW5hbGl6ZSBpbiB0aGUgUEdf Q0FUQ0ggZW5zdXJlcyBidWZmZXIgZGF0YSBpcyBzdGlsbCBwcm9wYWdhdGVkLgorU0VMRUNUIGxv Y2FsX2Jsa3NfaGl0ID49IHMuc2VyaWFsX2hpdHMgLyAyCisgICAgICAgQVMgdHJpZ2dlcl9hYm9y dF9idWZmZXJzX3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKSwgdHJp Z19zZXJpYWxfcmVzdWx0IHM7CisKK0RST1AgVEFCTEUgdHJpZ19lcnJfdGFiLCB0cmlnX3dvcmtf dGFiLCB0cmlnX3NlcmlhbF9yZXN1bHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmM7CisK Ky0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2VyIGJ1ZmZlciBhY3Rpdml0eSBpcyBjdXJy ZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCistLQorLS0gV2hlbiBhIHBhcmFsbGVsIHdv cmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVyeSBhbmQKKy0tIEV4ZWNQYXJhbGxlbFJl cG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNvIHRoZSB3b3JrZXIncyBidWZmZXIKKy0t IGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hhcmVkIG1lbW9yeSwgZGVzcGl0ZSB0aGUg aW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1cmVkIGJ5IHRoZSByZXMgb3duZXIgcmVs ZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitDUkVBVEUgVEFCTEUgcGFyX2Fib3J0X3Rh YiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9hYm9ydF90YWIgU0VMRUNU IGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsK KworLS0gV2FybSBzaGFyZWQgYnVmZmVycyBzbyBhbGwgcmVhZHMgYmVjb21lIGhpdHMKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHBhcl9hYm9ydF90YWI7CisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4g ZGVsdGEgYXMgYSByZWZlcmVuY2UgKGxlYWRlciByZWFkcyBhbGwgYmxvY2tzKQorU0VUIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVS RSBhID4gMTAwMDsKKworQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0IEFTCitT RUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9NIHBnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlKCk7CisKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFy dGljaXBhdGluZyBpbiBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VU IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBh cmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1 ZXJ5ID0gb247IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorCitT RUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBiOjppbnQyIEZS T00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKKworUkVTRVQgZGVidWdfcGFyYWxsZWxf cXVlcnk7CisKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFibGUgYnV0IGFib3J0ZWQgYmVmb3Jl IHJlcG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRlcidzIGRlbHRhIHNob3VsZCBiZSBt dWNoIGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVudGluZworLS0gdGhhdCB3b3JrZXIg YnVmZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0 IDwgcy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90 X3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKSwgcGFyX2Fib3J0X3Nl cmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRBQkxFIHBhcl9hYm9ydF90YWIsIHBhcl9hYm9ydF9z ZXJpYWxfcmVzdWx0OworCistLSBDbGVhbnVwCitEUk9QIEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZTsKLS0gCjIuNDcuMQoK --0000000000007e0ea4064dbeeae8 Content-Type: application/octet-stream; name="v10-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Disposition: attachment; filename="v10-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn47di5r7 RnJvbSA2Y2VmNTMwNmM0ODFlNTVhNmUzYzRhOTg1Yjk5NDM2MDU3NzRmNzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCA4LzldIElu ZGV4IHNjYW5zOiBTaG93IHRhYmxlIGJ1ZmZlciBhY2Nlc3NlcyBzZXBhcmF0ZWx5IGluCiBFWFBM QUlOIEFOQUxZWkUKClRoaXMgc2V0cyB1cCBhIHNlcGFyYXRlIGluc3RydW1lbnRhdGlvbiBzdGFj ayB0aGF0IGlzIHVzZWQgd2hpbHN0IGFuCkluZGV4IFNjYW4gb3IgSW5kZXggT25seSBTY2FuIGRv ZXMgc2Nhbm5pbmcgb24gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZSBkdWUKdG8gYWRkaXRpb25hbCBk YXRhIGJlaW5nIG5lZWRlZC4KCkVYUExBSU4gQU5BTFlaRSB3aWxsIG5vdyBzaG93ICJUYWJsZSBC dWZmZXJzIiB0aGF0IHJlcHJlc2VudCBzdWNoIGFjdGl2aXR5LgpUaGUgYWN0aXZpdHkgaXMgYWxz byBpbmNsdWRlZCBpbiByZWd1bGFyICJCdWZmZXJzIiB0b2dldGhlciB3aXRoIGluZGV4CmFjdGl2 aXR5IGFuZCB0aGF0IG9mIGFueSBjaGlsZCBub2Rlcy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6 ZWwuZGU+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BreHJt cEVDelZGcGVlRUVIREdlNnU2MjVzJTJCWWttVnY1LWd3M0xfTkRTZmJpQSU0MG1haWwuZ21haWwu Y29tI2NiNTgzYTA4ZThlMDk2YWExZjA5M2JiMTc4OTA2MTczCi0tLQogZG9jL3NyYy9zZ21sL3Bl cmZvcm0uc2dtbCAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQogZG9jL3NyYy9zZ21sL3JlZi9l eHBsYWluLnNnbWwgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICB8ICA0NyArKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jICAgICAgICB8ICA1MyArKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyNyArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKystLS0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICAgIHwgICA1ICsKIHNyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8ICAgMSArCiA5IGZpbGVzIGNoYW5nZWQs IDIyNCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcGVyZm9ybS5zZ21sIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbAppbmRleCA2MDRl ODU3OGE4ZC4uZDI4ZjRmMjI1MzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbApAQCAtNzM0LDYgKzczNCw3IEBAIFdI RVJFIHQxLnVuaXF1ZTEgJmx0OyAxMCBBTkQgdDEudW5pcXVlMiA9IHQyLnVuaXF1ZTI7CiAgICAt Jmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMl91bmlxdWUyIG9uIHRlbmsyIHQyICAoY29zdD0w LjI5Li43LjkwIHJvd3M9MSB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjAwMy4uMC4wMDMgcm93 cz0xLjAwIGxvb3BzPTEwKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSB0MS51bmlx dWUyKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEwCisgICAgICAgICBUYWJsZSBCdWZmZXJz OiBzaGFyZWQgaGl0PTEwCiAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTI0IHJlYWQ9Ngog IFBsYW5uaW5nOgogICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNSBkaXJ0aWVkPTkKQEAgLTEwMDUs NyArMTAwNiw4IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBGUk9NIHBvbHlnb25fdGJsIFdI RVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4wKSc7CiAgICBJbmRleCBDb25kOiAoZjEgQCZn dDsgJygoMC41LDIpKSc6OnBvbHlnb24pCiAgICBSb3dzIFJlbW92ZWQgYnkgSW5kZXggUmVjaGVj azogMQogICAgSW5kZXggU2VhcmNoZXM6IDEKLSAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQorICAg VGFibGUgQnVmZmVyczogc2hhcmVkIGhpdD0xCisgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTIKICBQ bGFubmluZyBUaW1lOiAwLjAzOSBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA5OCBtcwogPC9zY3Jl ZW4+CkBAIC0xMDE0LDcgKzEwMTYsOSBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSBw b2x5Z29uX3RibCBXSEVSRSBmMSBAJmd0OyBwb2x5Z29uICcoMC41LDIuMCknOwogICAgIHRoZW4g cmVqZWN0ZWQgYnkgYSByZWNoZWNrIG9mIHRoZSBpbmRleCBjb25kaXRpb24uICBUaGlzIGhhcHBl bnMgYmVjYXVzZSBhCiAgICAgR2lTVCBpbmRleCBpcyA8cXVvdGU+bG9zc3k8L3F1b3RlPiBmb3Ig cG9seWdvbiBjb250YWlubWVudCB0ZXN0czogaXQgYWN0dWFsbHkKICAgICByZXR1cm5zIHRoZSBy b3dzIHdpdGggcG9seWdvbnMgdGhhdCBvdmVybGFwIHRoZSB0YXJnZXQsIGFuZCB0aGVuIHdlIGhh dmUKLSAgICB0byBkbyB0aGUgZXhhY3QgY29udGFpbm1lbnQgdGVzdCBvbiB0aG9zZSByb3dzLgor ICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9uIHRob3NlIHJvd3MuIFRoZSA8 bGl0ZXJhbD5UYWJsZSBCdWZmZXJzPC9saXRlcmFsPgorICAgIGNvdW50cyBpbmRpY2F0ZSBob3cg bWFueSBvcGVyYXRpb25zIHdlcmUgcGVyZm9ybWVkIG9uIHRoZSB0YWJsZSBpbnN0ZWFkIG9mCisg ICAgdGhlIGluZGV4LiBUaGlzIG51bWJlciBpcyBpbmNsdWRlZCBpbiB0aGUgPGxpdGVyYWw+QnVm ZmVyczwvbGl0ZXJhbD4gY291bnRzLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTEyMDMs MTMgKzEyMDcsMTQgQEAgRVhQTEFJTiBBTkFMWVpFIFNFTEVDVCAqIEZST00gdGVuazEgV0hFUkUg dW5pcXVlMSAmbHQ7IDEwMCBBTkQgdW5pcXVlMiAmZ3Q7IDkwMDAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tJnp3c3A7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgTGltaXQgIChjb3N0PTAuMjkuLjE0LjMzIHJvd3M9MiB3aWR0aD0y NDQpIChhY3R1YWwgdGltZT0wLjA1MS4uMC4wNzEgcm93cz0yLjAwIGxvb3BzPTEpCi0gICBCdWZm ZXJzOiBzaGFyZWQgaGl0PTE2CisgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE0CiAgICAtJmd0OyAg SW5kZXggU2NhbiB1c2luZyB0ZW5rMV91bmlxdWUyIG9uIHRlbmsxICAoY29zdD0wLjI5Li43MC41 MCByb3dzPTEwIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDUxLi4wLjA3MCByb3dzPTIuMDAg bG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyICZndDsgOTAwMCkKICAgICAg ICAgIEZpbHRlcjogKHVuaXF1ZTEgJmx0OyAxMDApCiAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkg RmlsdGVyOiAyODcKICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxCi0gICAgICAgICBCdWZmZXJz OiBzaGFyZWQgaGl0PTE2CisgICAgICAgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTExCisg ICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE0CiAgUGxhbm5pbmcgVGltZTogMC4wNzcgbXMK ICBFeGVjdXRpb24gVGltZTogMC4wODYgbXMKIDwvc2NyZWVuPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbApp bmRleCA1YjhiNTIxODAyZS4uNzEwNzA3MzZhY2IgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCkBAIC01 MDksNiArNTA5LDcgQEAgRVhQTEFJTiBBTkFMWVpFIEVYRUNVVEUgcXVlcnkoMTAwLCAyMDApOwog ICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVzdF9wa2V5IG9uIHRlc3QgIChjb3N0PTAuMjku LjEwLjI3IHJvd3M9OTkgd2lkdGg9OCkgKGFjdHVhbCB0aW1lPTAuMDA5Li4wLjAyNSByb3dzPTk5 LjAwIGxvb3BzPTEpCiAgICAgICAgICBJbmRleCBDb25kOiAoKGlkICZndDsgMTAwKSBBTkQgKGlk ICZsdDsgMjAwKSkKICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxCisgICAgICAgICBUYWJsZSBC dWZmZXJzOiBzaGFyZWQgaGl0PTEKICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NAogIFBs YW5uaW5nIFRpbWU6IDAuMjQ0IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAuMDczIG1zCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKaW5kZXggZGM1ZTYzOTU1YmMuLmVlZjM0M2E5ZDk3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgc2hvd19pbnN0cnVtZW50 YXRpb25fY291bnQoY29uc3QgY2hhciAqcWxhYmVsLCBpbnQgd2hpY2gsCiBzdGF0aWMgdm9pZCBz aG93X2ZvcmVpZ25zY2FuX2luZm8oRm9yZWlnblNjYW5TdGF0ZSAqZnNzdGF0ZSwgRXhwbGFpblN0 YXRlICplcyk7CiBzdGF0aWMgY29uc3QgY2hhciAqZXhwbGFpbl9nZXRfaW5kZXhfbmFtZShPaWQg aW5kZXhJZCk7CiBzdGF0aWMgYm9vbCBwZWVrX2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOwotc3RhdGljIHZvaWQgc2hvd19idWZmZXJfdXNh Z2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyB2 b2lkIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdl ICp1c2FnZSwgY29uc3QgY2hhciAqdGl0bGUpOwogc3RhdGljIHZvaWQgc2hvd193YWxfdXNhZ2Uo RXhwbGFpblN0YXRlICplcywgY29uc3QgV2FsVXNhZ2UgKnVzYWdlKTsKIHN0YXRpYyB2b2lkIHNo b3dfbWVtb3J5X2NvdW50ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkJCQkJCSBjb25zdCBNZW1v cnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb3VudGVycyk7CkBAIC02MTAsNyArNjEwLDcgQEAgRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQl9CiAKIAkJaWYgKGJ1ZnVzYWdlKQotCQkJc2hvd19idWZmZXJf dXNhZ2UoZXMsIGJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCBidWZ1c2FnZSwg TlVMTCk7CiAKIAkJaWYgKG1lbV9jb3VudGVycykKIAkJCXNob3dfbWVtb3J5X2NvdW50ZXJzKGVz LCBtZW1fY291bnRlcnMpOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgRXhwbGFpblByaW50U2VyaWFs aXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCWlmIChl cy0+YnVmZmVycyAmJiBwZWVrX2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVz YWdlKSkKIAkJewogCQkJZXMtPmluZGVudCsrOwotCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZt ZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CisJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJp Y3MtPmluc3RyLmJ1ZnVzYWdlLCBOVUxMKTsKIAkJCWVzLT5pbmRlbnQtLTsKIAkJfQogCX0KQEAg LTEwNDEsNyArMTA0MSw3IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVz LCBTZXJpYWxpemVNZXRyaWNzICptZXRyaWNzKQogCQkJCQkJCQlCWVRFU19UT19LSUxPQllURVMo bWV0cmljcy0+Ynl0ZXNTZW50KSwgZXMpOwogCQlFeHBsYWluUHJvcGVydHlUZXh0KCJGb3JtYXQi LCBmb3JtYXQsIGVzKTsKIAkJaWYgKGVzLT5idWZmZXJzKQotCQkJc2hvd19idWZmZXJfdXNhZ2Uo ZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CisJCQlzaG93X2J1ZmZlcl91c2FnZShlcywg Jm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlLCBOVUxMKTsKIAl9CiAKIAlFeHBsYWluQ2xvc2VHcm91 cCgiU2VyaWFsaXphdGlvbiIsICJTZXJpYWxpemF0aW9uIiwgdHJ1ZSwgZXMpOwpAQCAtMTk2OSw2 ICsxOTY5LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2Vz dG9ycywKIAkJCQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEZp bHRlciIsIDEsCiAJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CiAJCQlzaG93X2luZGV4c2Vh cmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVzKTsKKworCQkJaWYgKGVzLT5idWZmZXJzICYmIHBsYW5z dGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJigoSW5kZXhTY2Fu U3RhdGUgKikgcGxhbnN0YXRlKS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLmJ1ZnVzYWdl LCAiVGFibGUiKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfSW5kZXhPbmx5U2NhbjoKIAkJCXNob3df c2Nhbl9xdWFsKCgoSW5kZXhPbmx5U2NhbiAqKSBwbGFuKS0+aW5kZXhxdWFsLApAQCAtMTk4Niw2 ICsxOTg5LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2Vz dG9ycywKIAkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiSGVhcCBGZXRjaGVzIiwgTlVMTCwKIAkJ CQkJCQkJCSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMyLCAwLCBlcyk7CiAJCQlzaG93 X2luZGV4c2VhcmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVzKTsKKworCQkJaWYgKGVzLT5idWZmZXJz ICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJigo SW5kZXhPbmx5U2NhblN0YXRlICopIHBsYW5zdGF0ZSktPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVf aW5zdHIuYnVmdXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9CaXRtYXBJbmRl eFNjYW46CiAJCQlzaG93X3NjYW5fcXVhbCgoKEJpdG1hcEluZGV4U2NhbiAqKSBwbGFuKS0+aW5k ZXhxdWFsb3JpZywKQEAgLTIyODcsNyArMjI5Myw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2Ug Ki8KIAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOwor CQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVm dXNhZ2UsIE5VTEwpOwogCWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKIAkJ c2hvd193YWxfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdl KTsKIApAQCAtMjMwNiw3ICsyMzEyLDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3Rh dGUsIExpc3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMpOwogCQkJ aWYgKGVzLT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+ aW5zdHIuYnVmdXNhZ2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+ aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJaWYgKGVzLT53YWwpCiAJCQkJc2hvd193YWxfdXNh Z2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xvc2VXb3Jr ZXIobiwgZXMpOwpAQCAtNDEwNiw3ICs0MTEyLDcgQEAgcGVla19idWZmZXJfdXNhZ2UoRXhwbGFp blN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogICogU2hvdyBidWZmZXIgdXNh Z2UgZGV0YWlscy4gIFRoaXMgYmV0dGVyIGJlIHN5bmMgd2l0aCBwZWVrX2J1ZmZlcl91c2FnZS4K ICAqLwogc3RhdGljIHZvaWQKLXNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKK3Nob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwgY29uc3QgY2hhciAqdGl0bGUpCiB7CiAJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKIAl7CkBAIC00MTMxLDYgKzQxMzcs OCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2Fn ZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hhcmVkIHx8IGhhc19sb2NhbCB8fCBoYXNfdGVtcCkKIAkJ ewogCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJaWYgKHRpdGxlKQorCQkJCWFwcGVuZFN0 cmluZ0luZm8oZXMtPnN0ciwgIiVzICIsIHRpdGxlKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoZXMtPnN0ciwgIkJ1ZmZlcnM6Iik7CiAKIAkJCWlmIChoYXNfc2hhcmVkKQpAQCAtNDE4Niw2 ICs0MTk0LDggQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVm ZmVyVXNhZ2UgKnVzYWdlKQogCQlpZiAoaGFzX3NoYXJlZF90aW1pbmcgfHwgaGFzX2xvY2FsX3Rp bWluZyB8fCBoYXNfdGVtcF90aW1pbmcpCiAJCXsKIAkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsK KwkJCWlmICh0aXRsZSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIlcyAiLCB0aXRs ZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIsICJJL08gVGltaW5nczoiKTsK IAogCQkJaWYgKGhhc19zaGFyZWRfdGltaW5nKQpAQCAtNDIyNyw2ICs0MjM3LDE0IEBAIHNob3df YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkK IAl9CiAJZWxzZQogCXsKKwkJY2hhcgkgICAqYnVmZmVyc190aXRsZSA9IE5VTEw7CisKKwkJaWYg KHRpdGxlKQorCQl7CisJCQlidWZmZXJzX3RpdGxlID0gcHNwcmludGYoIiVzIEJ1ZmZlcnMiLCB0 aXRsZSk7CisJCQlFeHBsYWluT3Blbkdyb3VwKGJ1ZmZlcnNfdGl0bGUsIGJ1ZmZlcnNfdGl0bGUs IHRydWUsIGVzKTsKKwkJfQorCiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBIaXQg QmxvY2tzIiwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+c2hhcmVkX2Jsa3NfaGl0LCBlcyk7CiAJ CUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBSZWFkIEJsb2NrcyIsIE5VTEwsCkBAIC00 MjQ3LDggKzQyNjUsMjAgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29u c3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3NfcmVhZCwg ZXMpOwogCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJUZW1wIFdyaXR0ZW4gQmxvY2tzIiwgTlVM TCwKIAkJCQkJCQkgICB1c2FnZS0+dGVtcF9ibGtzX3dyaXR0ZW4sIGVzKTsKKworCQlpZiAoYnVm ZmVyc190aXRsZSkKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKGJ1ZmZlcnNfdGl0bGUsIGJ1ZmZlcnNf dGl0bGUsIHRydWUsIGVzKTsKKwogCQlpZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CisJCQljaGFy CSAgICp0aW1pbmdzX3RpdGxlID0gTlVMTDsKKworCQkJaWYgKHRpdGxlKQorCQkJeworCQkJCXRp bWluZ3NfdGl0bGUgPSBwc3ByaW50ZigiJXMgSS9PIFRpbWluZ3MiLCB0aXRsZSk7CisJCQkJRXhw bGFpbk9wZW5Hcm91cCh0aW1pbmdzX3RpdGxlLCB0aW1pbmdzX3RpdGxlLCB0cnVlLCBlcyk7CisJ CQl9CisKIAkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJTaGFyZWQgSS9PIFJlYWQgVGltZSIsICJt cyIsCiAJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa19y ZWFkX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwpAQCAtNDI2Nyw2ICs0Mjk3LDkgQEAgc2hvd19i dWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQog CQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlRlbXAgSS9PIFdyaXRlIFRpbWUiLCAibXMiLAogCQkJ CQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnRlbXBfYmxrX3dyaXRlX3RpbWUp LAogCQkJCQkJCQkgMywgZXMpOworCisJCQlpZiAodGltaW5nc190aXRsZSkKKwkJCQlFeHBsYWlu Q2xvc2VHcm91cCh0aW1pbmdzX3RpdGxlLCB0aW1pbmdzX3RpdGxlLCB0cnVlLCBlcyk7CiAJCX0K IAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDlmNTY5ODA2M2YwLi43 MWE4OTdmMmI4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2Rl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTQxOCw2ICs0 MTgsMjkgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2lu c3RydW1lbnQsCiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKKwkvKgorCSAq IEluZGV4U2NhbiAvIEluZGV4T25seVNjYW4gdHJhY2sgdGFibGUgYW5kIGluZGV4IGFjY2VzcyBz ZXBhcmF0ZWx5LgorCSAqCisJICogV2UgaW50ZW50aW9uYWxseSBkb24ndCBjb2xsZWN0IHRpbWlu ZyBmb3IgdGhlbSAoZXZlbiBpZiBlbmFibGVkKSwgc2luY2UKKwkgKiB3ZSBkb24ndCBuZWVkIGl0 LCBhbmQgZXhlY3V0b3Igbm9kZXMgY2FsbCBJbnN0clB1c2hTdGFjayAvCisJICogSW5zdHJQb3BT dGFjayAoaW5zdGVhZCBvZiB0aGUgZnVsbCBJbnN0ck5vZGUqKSB0byByZWR1Y2Ugb3ZlcmhlYWQu CisJICovCisJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCAmJiAoZXN0YXRlLT5lc19pbnN0cnVt ZW50LT5pbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZFUlMpICE9IDApCisJewor CQlpZiAoSXNBKHJlc3VsdCwgSW5kZXhTY2FuU3RhdGUpKQorCQl7CisJCQlJbmRleFNjYW5TdGF0 ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIHJlc3VsdCk7CisKKwkJCUluc3RySW5p dE9wdGlvbnMoJmlzcy0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCBJTlNUUlVNRU5UX0JV RkZFUlMpOworCQl9CisJCWVsc2UgaWYgKElzQShyZXN1bHQsIEluZGV4T25seVNjYW5TdGF0ZSkp CisJCXsKKwkJCUluZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKEluZGV4T25seVNj YW5TdGF0ZSwgcmVzdWx0KTsKKworCQkJSW5zdHJJbml0T3B0aW9ucygmaW9zcy0+aW9zc19JbnN0 cnVtZW50LT50YWJsZV9pbnN0ciwgSU5TVFJVTUVOVF9CVUZGRVJTKTsKKwkJfQorCX0KKwogCXJl dHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzNyw4ICs4NjAsMjQgQEAgRXhlY1JlbWVtYmVyTm9kZUlu c3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQly ZXR1cm4gZmFsc2U7CiAKIAlpZiAobm9kZS0+aW5zdHJ1bWVudCkKKwl7CiAJCUluc3RyUXVlcnlS ZW1lbWJlckNoaWxkKHBhcmVudCwgJm5vZGUtPmluc3RydW1lbnQtPmluc3RyKTsKIAorCQkvKiBJ bmRleFNjYW4vSW5kZXhPbmx5U2NhbiBoYXZlIGEgc2VwYXJhdGUgZW50cnkgdG8gdHJhY2sgdGFi bGUgYWNjZXNzICovCisJCWlmIChJc0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCQl7CisJCQlJ bmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIG5vZGUpOworCisJ CQlJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChwYXJlbnQsICZpc3MtPmlzc19JbnN0cnVtZW50LT50 YWJsZV9pbnN0cik7CisJCX0KKwkJZWxzZSBpZiAoSXNBKG5vZGUsIEluZGV4T25seVNjYW5TdGF0 ZSkpCisJCXsKKwkJCUluZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKEluZGV4T25s eVNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHBhcmVudCwg Jmlvc3MtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOworCQl9CisJfQorCiAJcmV0dXJu IHBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0 aW9uX3dhbGtlciwgY29udGV4dCk7CiB9CiAKQEAgLTg4MCw2ICs5MTksMjAgQEAgRXhlY0ZpbmFs aXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250 ZXh0KQogCWlmICghbm9kZS0+aW5zdHJ1bWVudCkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyogSW5k ZXhTY2FuL0luZGV4T25seVNjYW4gaGF2ZSBhIHNlcGFyYXRlIGVudHJ5IHRvIHRyYWNrIHRhYmxl IGFjY2VzcyAqLworCWlmIChJc0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhT Y2FuU3RhdGUgKmlzcyA9IGNhc3ROb2RlKEluZGV4U2NhblN0YXRlLCBub2RlKTsKKworCQlJbnN0 ckZpbmFsaXplQ2hpbGQoJmlzcy0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAmbm9kZS0+ aW5zdHJ1bWVudC0+aW5zdHIpOworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgSW5kZXhPbmx5U2Nh blN0YXRlKSkKKwl7CisJCUluZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKEluZGV4 T25seVNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJSW5zdHJGaW5hbGl6ZUNoaWxkKCZpb3NzLT5pb3Nz X0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOworCX0K KwogCUluc3RyRmluYWxpemVDaGlsZCgmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIsIHBhcmVudCk7 CiAKIAlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhz Y2FuLmMKaW5kZXggNzBjNTVlZTZkNjEuLjYzZTI0YTBiY2Q0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yNzYsNyArMjc2LDcgQEAgRXhlY0luaXRC aXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAogCS8qIFNldCB1cCBpbnN0cnVtZW50YXRpb24gb2YgYml0bWFwIGluZGV4IHNj YW5zIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCi0JCWluZGV4 c3RhdGUtPmJpc3NfSW5zdHJ1bWVudCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4U2Nhbkluc3RydW1l bnRhdGlvbik7CisJCWluZGV4c3RhdGUtPmJpc3NfSW5zdHJ1bWVudCA9IE1lbW9yeUNvbnRleHRB bGxvY1plcm8oZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0cl9jeHQsIHNpemVvZihJbmRleFNj YW5JbnN0cnVtZW50YXRpb24pKTsKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwog CWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+ cmVsbG9ja21vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhv bmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRl eCA5ZWFiODFmZDFjOC4uNjZiMDI3ODhiM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYwpAQCAtNjcsNiArNjcsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNj YW5TdGF0ZSAqbm9kZSkKIAlJbmRleFNjYW5EZXNjIHNjYW5kZXNjOwogCVR1cGxlVGFibGVTbG90 ICpzbG90OwogCUl0ZW1Qb2ludGVyIHRpZDsKKwlJbnN0cnVtZW50YXRpb24gKnRhYmxlX2luc3Ry ID0gTlVMTDsKIAogCS8qCiAJICogZXh0cmFjdCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSBp bmRleCBzY2FuIG5vZGUKQEAgLTgzLDYgKzg0LDkgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlT Y2FuU3RhdGUgKm5vZGUpCiAJZWNvbnRleHQgPSBub2RlLT5zcy5wcy5wc19FeHByQ29udGV4dDsK IAlzbG90ID0gbm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdDsKIAorCWlmIChub2RlLT5pb3NzX0lu c3RydW1lbnQgJiYgbm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ci5uZWVkX3N0YWNr KQorCQl0YWJsZV9pbnN0ciA9ICZub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyOwor CiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJewogCQkvKgpAQCAtMTYzLDExICsxNjcsMjIgQEAg SW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCQkJCQkJSXRlbVBvaW50 ZXJHZXRCbG9ja051bWJlcih0aWQpLAogCQkJCQkJCSZub2RlLT5pb3NzX1ZNQnVmZmVyKSkKIAkJ eworCQkJYm9vbAkJZm91bmQ7CisKIAkJCS8qCiAJCQkgKiBSYXRzLCB3ZSBoYXZlIHRvIHZpc2l0 IHRoZSBoZWFwIHRvIGNoZWNrIHZpc2liaWxpdHkuCiAJCQkgKi8KIAkJCUluc3RyQ291bnRUdXBs ZXMyKG5vZGUsIDEpOwotCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBub2RlLT5p b3NzX1RhYmxlU2xvdCkpCisKKwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJbnN0clB1c2hTdGFj ayh0YWJsZV9pbnN0cik7CisKKwkJCWZvdW5kID0gaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywg bm9kZS0+aW9zc19UYWJsZVNsb3QpOworCisJCQlpZiAodGFibGVfaW5zdHIpCisJCQkJSW5zdHJQ b3BTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJCWlmICghZm91bmQpCiAJCQkJY29udGludWU7CQkv KiBubyB2aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAqLwogCiAJCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CkBAIC00MzQsNiArNDQ5LDcgQEAgRXhlY0Vu ZEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkgKiB3aGljaCB3aWxs IGhhdmUgYSBuZXcgSW5kZXhPbmx5U2NhblN0YXRlIGFuZCB6ZXJvZWQgc3RhdHMuCiAJCSAqLwog CQl3aW5zdHJ1bWVudC0+bnNlYXJjaGVzICs9IG5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+bnNlYXJj aGVzOworCQlJbnN0ckFjY3VtU3RhY2soJndpbnN0cnVtZW50LT50YWJsZV9pbnN0ciwgJm5vZGUt Pmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOwogCX0KIAogCS8qCkBAIC02MDgsNyArNjI0 LDcgQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBpbmRl eC1vbmx5IHNjYW5zIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQp Ci0JCWluZGV4c3RhdGUtPmlvc3NfSW5zdHJ1bWVudCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbik7CisJCWluZGV4c3RhdGUtPmlvc3NfSW5zdHJ1bWVudCA9IE1lbW9y eUNvbnRleHRBbGxvY1plcm8oZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0cl9jeHQsIHNpemVv ZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pKTsKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0 aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwg ZXN0YXRlKS0+cmVsbG9ja21vZGU7CkBAIC04OTMsNCArOTA5LDExIEBAIEV4ZWNJbmRleE9ubHlT Y2FuUmV0cmlldmVJbnN0cnVtZW50YXRpb24oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQlT aGFyZWRJbmZvLT5udW1fd29ya2VycyAqIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24p OwogCW5vZGUtPmlvc3NfU2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHkobm9kZS0+ aW9zc19TaGFyZWRJbmZvLCBTaGFyZWRJbmZvLCBzaXplKTsKKworCS8qIEFnZ3JlZ2F0ZSB3b3Jr ZXJzJyB0YWJsZSBidWZmZXIvV0FMIHVzYWdlIGludG8gbGVhZGVyJ3MgZW50cnkgKi8KKwlmb3Ig KGludCBpID0gMDsgaSA8IG5vZGUtPmlvc3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnM7IGkrKykK Kwl7CisJCUluc3RyQWNjdW1TdGFjaygmbm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0 ciwKKwkJCQkJCSZub2RlLT5pb3NzX1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLnRhYmxlX2lu c3RyKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggMDYxNDNl OTRjNWEuLmU2NmI2ZDY0MDdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBA IC04NSw3ICs4NSwxMCBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJRXhwckNv bnRleHQgKmVjb250ZXh0OwogCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uOwogCUluZGV4U2NhbkRl c2Mgc2NhbmRlc2M7CisJSXRlbVBvaW50ZXIgdGlkOwogCVR1cGxlVGFibGVTbG90ICpzbG90Owor CWJvb2wJCWZvdW5kOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5zdHIgPSBOVUxMOwogCiAJ LyoKIAkgKiBleHRyYWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9k ZQpAQCAtMTAyLDYgKzEwNSw5IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAll Y29udGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90OwogCisJaWYgKG5vZGUtPmlzc19JbnN0cnVtZW50ICYmIG5vZGUtPmlz c19JbnN0cnVtZW50LT50YWJsZV9pbnN0ci5uZWVkX3N0YWNrKQorCQl0YWJsZV9pbnN0ciA9ICZu b2RlLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVM TCkKIAl7CiAJCS8qCkBAIC0xMzAsOCArMTM2LDI0IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0 ZSAqbm9kZSkKIAkvKgogCSAqIG9rLCBub3cgdGhhdCB3ZSBoYXZlIHdoYXQgd2UgbmVlZCwgZmV0 Y2ggdGhlIG5leHQgdHVwbGUuCiAJICovCi0Jd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2Fu ZGVzYywgZGlyZWN0aW9uLCBzbG90KSkKKwl3aGlsZSAoKHRpZCA9IGluZGV4X2dldG5leHRfdGlk KHNjYW5kZXNjLCBkaXJlY3Rpb24pKSAhPSBOVUxMKQogCXsKKwkJaWYgKHRhYmxlX2luc3RyKQor CQkJSW5zdHJQdXNoU3RhY2sodGFibGVfaW5zdHIpOworCisJCWZvciAoOzspCisJCXsKKwkJCWZv dW5kID0gaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCk7CisJCQlpZiAoZm91bmQgfHwg IXNjYW5kZXNjLT54c19oZWFwX2NvbnRpbnVlKQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKHRh YmxlX2luc3RyKQorCQkJSW5zdHJQb3BTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJaWYgKHVubGlr ZWx5KCFmb3VuZCkpCisJCQljb250aW51ZTsKKwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCS8qCkBAIC0xNzksNiArMjAxLDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2Fu U3RhdGUgKm5vZGUpCiAJRGF0dW0JICAgKmxhc3RmZXRjaGVkX3ZhbHM7CiAJYm9vbAkgICAqbGFz dGZldGNoZWRfbnVsbHM7CiAJaW50CQkJY21wOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5z dHIgPSBOVUxMOwogCiAJZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CiAKQEAgLTE5OCw2ICsy MjEsOSBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAllY29u dGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90OwogCisJaWYgKG5vZGUtPmlzc19JbnN0cnVtZW50ICYmIG5vZGUtPmlzc19J bnN0cnVtZW50LT50YWJsZV9pbnN0ci5uZWVkX3N0YWNrKQorCQl0YWJsZV9pbnN0ciA9ICZub2Rl LT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkK IAl7CiAJCS8qCkBAIC0yNTksMzYgKzI4NSw2NyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRl eFNjYW5TdGF0ZSAqbm9kZSkKIAkJfQogCiAJCS8qCi0JCSAqIEZldGNoIG5leHQgdHVwbGUgZnJv bSB0aGUgaW5kZXguCisJCSAqIEZldGNoIG5leHQgdmFsaWQgdHVwbGUgZnJvbSB0aGUgaW5kZXgu CiAJCSAqLwotbmV4dF9pbmRleHR1cGxlOgotCQlpZiAoIWluZGV4X2dldG5leHRfc2xvdChzY2Fu ZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQorCQlmb3IgKDs7KQogCQl7CisJCQlJ dGVtUG9pbnRlciB0aWQ7CisJCQlib29sCQlmb3VuZDsKKworCQkJLyogVGltZSB0byBmZXRjaCB0 aGUgbmV4dCBUSUQgZnJvbSB0aGUgaW5kZXggKi8KKwkJCXRpZCA9IGluZGV4X2dldG5leHRfdGlk KHNjYW5kZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbik7CisKKwkJCS8qIElmIHdlJ3JlIG91dCBv ZiBpbmRleCBlbnRyaWVzLCB3ZSdyZSBkb25lICovCisJCQlpZiAodGlkID09IE5VTEwpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBObyBtb3JlIHR1cGxlcyBmcm9tIHRoZSBpbmRleC4gIEJ1dCB3ZSBz dGlsbCBuZWVkIHRvIGRyYWluCisJCQkJICogYW55IHJlbWFpbmluZyB0dXBsZXMgZnJvbSB0aGUg cXVldWUgYmVmb3JlIHdlJ3JlIGRvbmUuCisJCQkJICovCisJCQkJbm9kZS0+aXNzX1JlYWNoZWRF bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCisJCQlBc3NlcnQoSXRlbVBvaW50ZXJFcXVh bHModGlkLCAmc2NhbmRlc2MtPnhzX2hlYXB0aWQpKTsKKworCQkJaWYgKHRhYmxlX2luc3RyKQor CQkJCUluc3RyUHVzaFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJZm9yICg7OykKKwkJCXsKKwkJ CQlmb3VuZCA9IGluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIHNsb3QpOworCQkJCWlmIChmb3Vu ZCB8fCAhc2NhbmRlc2MtPnhzX2hlYXBfY29udGludWUpCisJCQkJCWJyZWFrOworCQkJfQorCisJ CQlpZiAodGFibGVfaW5zdHIpCisJCQkJSW5zdHJQb3BTdGFjayh0YWJsZV9pbnN0cik7CisKIAkJ CS8qCi0JCQkgKiBObyBtb3JlIHR1cGxlcyBmcm9tIHRoZSBpbmRleC4gIEJ1dCB3ZSBzdGlsbCBu ZWVkIHRvIGRyYWluIGFueQotCQkJICogcmVtYWluaW5nIHR1cGxlcyBmcm9tIHRoZSBxdWV1ZSBi ZWZvcmUgd2UncmUgZG9uZS4KKwkJCSAqIElmIHRoZSBpbmRleCB3YXMgbG9zc3ksIHdlIGhhdmUg dG8gcmVjaGVjayB0aGUgaW5kZXggcXVhbHMgYW5kCisJCQkgKiBPUkRFUiBCWSBleHByZXNzaW9u cyB1c2luZyB0aGUgZmV0Y2hlZCB0dXBsZS4KIAkJCSAqLwotCQkJbm9kZS0+aXNzX1JlYWNoZWRF bmQgPSB0cnVlOwotCQkJY29udGludWU7Ci0JCX0KLQotCQkvKgotCQkgKiBJZiB0aGUgaW5kZXgg d2FzIGxvc3N5LCB3ZSBoYXZlIHRvIHJlY2hlY2sgdGhlIGluZGV4IHF1YWxzIGFuZAotCQkgKiBP UkRFUiBCWSBleHByZXNzaW9ucyB1c2luZyB0aGUgZmV0Y2hlZCB0dXBsZS4KLQkJICovCi0JCWlm IChzY2FuZGVzYy0+eHNfcmVjaGVjaykKLQkJewotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxl ID0gc2xvdDsKLQkJCWlmICghRXhlY1F1YWxBbmRSZXNldChub2RlLT5pbmRleHF1YWxvcmlnLCBl Y29udGV4dCkpCisJCQlpZiAoZm91bmQgJiYgc2NhbmRlc2MtPnhzX3JlY2hlY2spCiAJCQl7Ci0J CQkJLyogRmFpbHMgcmVjaGVjaywgc28gZHJvcCBpdCBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVy ICovCi0JCQkJSW5zdHJDb3VudEZpbHRlcmVkMihub2RlLCAxKTsKLQkJCQkvKiBhbGxvdyB0aGlz IGxvb3AgdG8gYmUgY2FuY2VsbGFibGUgKi8KLQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot CQkJCWdvdG8gbmV4dF9pbmRleHR1cGxlOworCQkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9 IHNsb3Q7CisJCQkJaWYgKCFFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9yaWcsIGVj b250ZXh0KSkKKwkJCQl7CisJCQkJCS8qIEZhaWxzIHJlY2hlY2ssIHNvIGRyb3AgaXQgYW5kIGxv b3AgYmFjayBmb3IgYW5vdGhlciAqLworCQkJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEp OworCQkJCQkvKiBhbGxvdyB0aGlzIGxvb3AgdG8gYmUgY2FuY2VsbGFibGUgKi8KKwkJCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCQkJY29udGludWU7CisJCQkJfQogCQkJfQorCisJCQlp ZiAoZm91bmQpCisJCQkJYnJlYWs7CiAJCX0KIAorCQkvKiBObyBtb3JlIGluZGV4IGVudHJpZXMs IHJlLXJ1biB0byBjbGVhciB0aGUgcmVvcmRlciBxdWV1ZSAqLworCQlpZiAobm9kZS0+aXNzX1Jl YWNoZWRFbmQpCisJCQljb250aW51ZTsKKwogCQlpZiAoc2NhbmRlc2MtPnhzX3JlY2hlY2tvcmRl cmJ5KQogCQl7CiAJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwpAQCAtODE0LDYg Kzg3MSw3IEBAIEV4ZWNFbmRJbmRleFNjYW4oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCSAqIHdo aWNoIHdpbGwgaGF2ZSBhIG5ldyBJbmRleE9ubHlTY2FuU3RhdGUgYW5kIHplcm9lZCBzdGF0cy4K IAkJICovCiAJCXdpbnN0cnVtZW50LT5uc2VhcmNoZXMgKz0gbm9kZS0+aXNzX0luc3RydW1lbnQt Pm5zZWFyY2hlczsKKwkJSW5zdHJBY2N1bVN0YWNrKCZ3aW5zdHJ1bWVudC0+dGFibGVfaW5zdHIs ICZub2RlLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOwogCX0KIAogCS8qCkBAIC05NzYs NyArMTAzNCw3IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5zdHJ1bWVudGF0aW9uIG9mIGluZGV4 IHNjYW5zIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCi0JCWlu ZGV4c3RhdGUtPmlzc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhTY2FuSW5zdHJ1 bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+aXNzX0luc3RydW1lbnQgPSBNZW1vcnlDb250ZXh0 QWxsb2NaZXJvKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHJfY3h0LCBzaXplb2YoSW5kZXhT Y2FuSW5zdHJ1bWVudGF0aW9uKSk7CiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8K IAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSkt PnJlbGxvY2ttb2RlOwpAQCAtMTgyNiw0ICsxODg0LDExIEBAIEV4ZWNJbmRleFNjYW5SZXRyaWV2 ZUluc3RydW1lbnRhdGlvbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJU2hhcmVkSW5mby0+bnVt X3dvcmtlcnMgKiBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKIAlub2RlLT5pc3Nf U2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHkobm9kZS0+aXNzX1NoYXJlZEluZm8s IFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRlIHdvcmtlcnMnIHRhYmxlIGJ1ZmZl ci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwg bm9kZS0+aXNzX1NoYXJlZEluZm8tPm51bV93b3JrZXJzOyBpKyspCisJeworCQlJbnN0ckFjY3Vt U3RhY2soJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwKKwkJCQkJCSZub2RlLT5p c3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0udGFibGVfaW5zdHIpOworCX0KIH0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKaW5kZXggODg0N2Q3Zjk0ZmEuLmU4NTMxYjg0 ZWZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaApAQCAtMTgsNiArMTgs OCBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX05PREVfSAogI2RlZmluZSBJTlNUUlVNRU5UX05PREVf SAogCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgorCiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJSW5zdHJ1bWVudGF0aW9uIGluZm9ybWF0aW9uIGZvciBhZ2dyZWdhdGUg ZnVuY3Rpb24gZXhlY3V0aW9uCkBAIC00OCw2ICs1MCw5IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4 U2Nhbkluc3RydW1lbnRhdGlvbgogewogCS8qIEluZGV4IHNlYXJjaCBjb3VudCAoaW5jcmVtZW50 ZWQgd2l0aCBwZ3N0YXRfY291bnRfaW5kZXhfc2NhbiBjYWxsKSAqLwogCXVpbnQ2NAkJbnNlYXJj aGVzOworCisJLyogSW5zdHJ1bWVudGF0aW9uIHV0aWxpemVkIGZvciB0cmFja2luZyBidWZmZXIg dXNhZ2UgZHVyaW5nIHRhYmxlIGFjY2VzcyAqLworCUluc3RydW1lbnRhdGlvbiB0YWJsZV9pbnN0 cjsKIH0gSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCBhZWYxMDAzZjYwOC4uZWY5NTE2NDMzMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0x NzkwLDYgKzE3OTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleE9ubHlTY2FuU3RhdGUKIAlzdHJ1 Y3QgSW5kZXhTY2FuRGVzY0RhdGEgKmlvc3NfU2NhbkRlc2M7CiAJSW5kZXhTY2FuSW5zdHJ1bWVu dGF0aW9uICppb3NzX0luc3RydW1lbnQ7CiAJU2hhcmVkSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9u ICppb3NzX1NoYXJlZEluZm87CisKIAlUdXBsZVRhYmxlU2xvdCAqaW9zc19UYWJsZVNsb3Q7CiAJ QnVmZmVyCQlpb3NzX1ZNQnVmZmVyOwogCVNpemUJCWlvc3NfUHNjYW5MZW47Ci0tIAoyLjQ3LjEK Cg== --0000000000007e0ea4064dbeeae8--