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 1w895i-000Fiq-1N for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 03:51:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w895h-003hPg-06 for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 03:51:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w895g-003hPX-0d for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 03:51:33 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w895T-000000007Xx-0l8a for pgsql-hackers@postgresql.org; Thu, 02 Apr 2026 03:51:31 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2a871daa98fso2888785ad.1 for ; Wed, 01 Apr 2026 20:51:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775101878; cv=none; d=google.com; s=arc-20240605; b=IMntbym958hKLCOsVSdqlf6IxQEvYIsbEPwG9hzSmaDQSO28DJfYfeZ455w7w/0CzC ZJreVpQjYIEoqIYhJ1qU+FS+AUe1vAKxZS8S7wscOeHKhSE4ccpq9R5RAcoI98v8up3H UmxJpGV3ek6NaC3kJF8hPG03hvmz97PkSMVaV4buYshODOw4AlBxk2tiGL4t/RO3CywQ 0PjqIfLjSQyHK4c7gQwt05P7eLV9B/KlZqaar7optv9eNLjoYEt3YOchcDNyB6MRU8Se pmn8gMkMGW87fb/yhAie3FZyCm85SeeL3IfswRdy6VBDRS/ZEHa8X9gtnnfpkyg9Mpa1 sFuQ== 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:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=5CndXJ4eXXCN2CS8glK/ZQ679Yk/e6C+h7rB4rVrx5k=; fh=XNbqic28UW4qvIhpVvWbT8EBBRgNmPZuPIffW0vDwEs=; b=Fw8hQT+UDualKqp07fazeXpeFzNdW+3Ce/1TDwA/vk2q/qk3urlwnYZ9A37NAEBf0L kkyMayDm9Wd/my/6DLwLFcNraZxovA0ds2wEMrAWPesvLq9x16XVFVwWaCAPxzOmTM7j UJfw/8pUy8rdXEVPkzC0NFT/naYIo2zdx9gawyITOiznYT/xwPUhaB3WVboLN70sszKh AP4f0QAbLqcWo4qA4XFjoh1bYfPi4tTq+reNaGUNbTDPotFLY3yXP1RA9a8OUzt6CHx3 QHwTlq3haSJ9U3oQ2oK2ascJcF1TS2vhEFNFGfg35JqhKLPHoNTkKhvCi2dfkRQ1GJYy oQ2g==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775101878; x=1775706678; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5CndXJ4eXXCN2CS8glK/ZQ679Yk/e6C+h7rB4rVrx5k=; b=qryryWTmQOVpFVJalwa3eE5uEruDZA+Lyis0m/WAKteLT3sIO9CITEaAy672nNib1m ues6qziPTNA5aAtB3yyyhvvlUgayKKmBJQ/HxFDOFuUpDBfH0QL0sGOL3WmZ05Ya8pgA W3SbfQS/wooJvjbXm8hALIaqYtnnVLzeP8k3yyKRTDC4NDB0VFKVrSMe0Cpbb56mnTzC E6eMnVgx83bZexLuIjkmAxkajSp6PfjrrhatLZpP9NdJwufT/2wLB/HKG5HTLHGNuv13 eQ6w6V1ET+PxO67zkefbXKQCVW1dlApFn/BOqcEHbQdc/TX2qRQqWVfdKgVt0Jm4Q4IE o/rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775101878; x=1775706678; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5CndXJ4eXXCN2CS8glK/ZQ679Yk/e6C+h7rB4rVrx5k=; b=rIFoaRJRAOCgIi2dMfStWMLyGOu8VRuUEVdNEtIXEhh4w7QwLTllXyAMe44q7QoXPd BU3GvBDm3dO2NFjF8t7T9EjF4vkK06/Cyhz4yRwazOTBYScCwnAtnviGGG1yxqVsBrwo tixKYxTlNgAPlnq/b5MF5L+pnD2fuQqBBciNJCX3PjpVR8GwWes1/6cRZXIgkyz/upvj LVr15gMkjrJeCnB4qtZzVYfYvWaQRYGjAu5PHC3vHVACHI9kM884UGkXR/EVW4lUM7xp Gc7CiDJsVQ+bImqeHX3ad5SYHQob/yTuWkutjQjUDwdcVL5pizrt0tvyeWqJZUCVbAdP TAnQ== X-Forwarded-Encrypted: i=1; AJvYcCVnQnzdFiW4LgPukzQJycKXjV3FP5+sbTkBVSo9GcLAyF5jBxktu6r6QnZpJ8JA+WqBmqpVR/4Zu+lzNxhL@postgresql.org X-Gm-Message-State: AOJu0Yyyp2GaLLKd4Yb6ULU77Nz4eUBf9sJ2NvC9xZ+bwOO39rXmd4ZB lopagDctSvRHli46P3WXs7EeGWiOm1w1OT0v/QxztE17t9I5YyP3Af0PkXI7yEv/DPwMcX4PYBl PkqWF65T9F/vxXlpuQcQnxUlgGuiBU50= X-Gm-Gg: ATEYQzyMwE/bZT6WdOd86JfDtT2AiM2WRdyym03y/YZ20ht1ywAl7CE+YCupR6vU4Az WJMtJ6cV6x+xKME251V3GtJ69skW6fnBt1CCPWn/MX2Q9oti8uESy6XN8m2yODONJ3gT0Tqt8eB fsfzfwOwcEATCICmyYu0Dx//3clqHPDRi6M5ohBoGXs+XXPeIAnQvdsUYc23XCGuXgiPFcnQ1qA Af3FIegRRyPw4xlI4lxpQpRo0e3YkUO7Edbcm+fukwqhDn4VhAf2e+2tChKY+q5YTg2mgxkdia8 HNVnGfgwgJpfjA6eQ/cwgQwtGMSjUpSTL2UBhmM= X-Received: by 2002:a17:903:2ec3:b0:2ae:66c9:494f with SMTP id d9443c01a7336-2b269a8c805mr58391785ad.2.1775101878296; Wed, 01 Apr 2026 20:51:18 -0700 (PDT) MIME-Version: 1.0 References: <20260322.142326.546998002680149319.ishii@postgresql.org> <20260330.133428.1197197778850463943.ishii@postgresql.org> In-Reply-To: <20260330.133428.1197197778850463943.ishii@postgresql.org> Reply-To: assam258@gmail.com From: Henson Choi Date: Thu, 2 Apr 2026 12:51:05 +0900 X-Gm-Features: AQROBzAl1s4oEKeJaSdi1aEe3re4dcNJ520pk_ksCaQdJ0y5zEos6VICLu3QTgM Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000e57c52064e721c75" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e57c52064e721c75 Content-Type: multipart/alternative; boundary="000000000000e57c51064e721c73" --000000000000e57c51064e721c73 Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, Thank you for the review and the attached patch for 0005. I appreciate you taking the time to look at each patch carefully. Attached are 8 incremental patches on top of v46 (replacing the previous 6-patch set). 0001-0003 are unchanged. 0004 and 0005 incorporate your feedback below. 0006 is a new planner fix. Previous 0006 becomes 0007. 0008 is new. > 0004: Fix in-place modification of defineClause TargetEntry > > Probably we want to modify the comment above since it implies an > in-place modification? What about something like this? (Modifies -> > Replace) > > /* > * Replace an expression tree in each DEFINE clause so that all Var > * nodes's varno refers to OUTER_VAR. > */ > Good point, thank you. Applied in the updated 0004. > > 0005: Fix mark handling for last_value() under RPR > > I think instead we can set a mark at frameheadpos when seek type is > SEEK_TAIL and RPR is enabled. See attached patch. > Thank you for the patch. Your approach is cleaner -- setting the mark at frameheadpos is more direct than suppressing advancement. I've adopted it in the updated 0005. > > 0006: Implement 1-slot PREV/NEXT navigation for RPR > > Excellent! I will take a look at it. (it will take for a while). > No rush at all. In the meantime, while testing the PREV/NEXT patch in various query patterns, I found a planner issue. I've also added JIT support. Here is a summary of the new patches: 0006: Prevent removal of RPR window functions in unused subquery outputs Wrapping an RPR window query in a subquery with an outer aggregate causes a crash: SELECT count(*) FROM ( SELECT count(*) OVER w FROM ... WINDOW w AS (... DEFINE A AS i > PREV(i)) ) t; remove_unused_subquery_outputs() replaces unused subquery target entries with NULL constants. When an RPR window function's result is not referenced by the outer query, this replacement eliminates all active window functions for the WindowClause, causing the planner to omit the WindowAgg node. DEFINE clause expressions containing RPRNavExpr (PREV/NEXT) then lose their execution context, leading to a crash. The fix skips the NULL replacement for window functions whose WindowClause has a defineClause. Even when the window function result is unused, RPR pattern matching (frame reduction) must still execute -- the WindowAgg node must be preserved. An alternative would be to let the planner remove the window function but teach it to still generate the WindowAgg node when defineClause is present, even with no active window functions. That would be a more targeted optimization but requires deeper planner changes. Do you think the current approach is sufficient, or would you prefer a different strategy? 0007: Implement 1-slot PREV/NEXT navigation for RPR (unchanged from previous 0006) > > 2. LLVM JIT fallback (in 0006): The mid-expression slot swap > > I am not an expert of JIT, but for me, it sounds reasonable. We can > enhance it later on. > 0008: Add JIT compilation support for RPR PREV/NEXT navigation EEOP_OUTER_VAR normally uses slot pointers cached in the entry block, but the mid-expression slot swap in NAV_SET/RESTORE invalidates them. To avoid penalizing existing expressions, the reload path is only generated when RPR navigation opcodes are present in the expression (compile-time decision). Expressions without PREV/NEXT produce identical machine code as before. NAV_SET/RESTORE use the standard build_EvalXFunc pattern. A 100K-row PREV/NEXT test case that runs under jit_above_cost=0 is included in rpr.sql. I would appreciate your thoughts on these when you have time. Best regards, Henson --000000000000e57c51064e721c73 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Thank = you for the review and the attached patch for 0005.
I appreciate you tak= ing the time to look at each patch
carefully.

Attached are 8 incr= emental patches on top of v46 (replacing
the previous 6-patch set). 0001= -0003 are unchanged. 0004 and
0005 incorporate your feedback below. 0006= is a new planner
fix. Previous 0006 becomes 0007. 0008 is new.

>=C2=A0 =C2=A00004: Fix in-place modification of defineClause TargetEntr= y

Probably we want to modify the comment above since it implies an
in-place modification? What about something like this? (Modifies -> Repl= ace)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Replace an expression tree in each DEFI= NE clause so that all Var
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* nodes's varno refers to OUTER_VAR.<= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/

Go= od point, thank you. Applied in the updated 0004.
=C2=A0
>=C2=A0 =C2=A00005: Fix mark handling for last_value() under RPR

I think instead we can set a mark at frameheadpos when seek type is
SEEK_TAIL and RPR is enabled. See attached patch.

=
Thank you for the patch. Your approach is cleaner -- setting
= the mark at frameheadpos is more direct than suppressing
advancement. I&= #39;ve adopted it in the updated 0005.
=C2=A0
>=C2=A0 =C2=A00006: Implement 1-slot PREV/NEXT navigation for RPR

Excellent! I will take a look at it. (it will take for a while).

No rush at all. In the meantime, while testing th= e PREV/NEXT
patch in various query patterns, I found a planner issue.I've also added JIT support. Here is a summary of the new
patches:<= br>

=C2=A0 0006: Prevent removal of RPR window functions in unused=C2=A0 =C2=A0 =C2=A0 =C2=A0 subquery outputs

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 Wrapping an RPR window query in a subquery with an
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 outer aggregate causes a crash:

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 SELECT count(*) FROM (
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 SELECT count(*) OVER w FROM ...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 WINDOW w AS (... DEFINE A AS i > PREV(i))
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 ) t;

=C2=A0 =C2=A0 =C2=A0 =C2=A0 remove_unused_= subquery_outputs() replaces unused subquery
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = target entries with NULL constants. When an RPR window
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 function's result is not referenced by the outer query,
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 this replacement eliminates all active window f= unctions
=C2=A0 =C2=A0 =C2=A0 =C2=A0 for the WindowClause, causing the p= lanner to omit the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 WindowAgg node. DEFINE cl= ause expressions containing
=C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRNavExpr (PREV= /NEXT) then lose their execution context,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 le= ading to a crash.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 The fix skips the NULL= replacement for window functions
=C2=A0 =C2=A0 =C2=A0 =C2=A0 whose Wind= owClause has a defineClause. Even when the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 w= indow function result is unused, RPR pattern matching
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 (frame reduction) must still execute -- the WindowAgg
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 node must be preserved.

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 An alternative would be to let the planner remove the
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 window function but teach it to still generate the
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 WindowAgg node when defineClause is present, even = with
=C2=A0 =C2=A0 =C2=A0 =C2=A0 no active window functions. That would = be a more
=C2=A0 =C2=A0 =C2=A0 =C2=A0 targeted optimization but requires= deeper planner
=C2=A0 =C2=A0 =C2=A0 =C2=A0 changes. Do you think the cu= rrent approach is
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sufficient, or would you p= refer a different strategy?


=C2=A0 0007: Implement 1-slot PREV/N= EXT navigation for RPR
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (unchanged from previ= ous 0006)
=C2=A0
> 2. LLVM JIT fallback (in 0006): The mid-expression slot swa= p

I am not an expert of JIT, but for me, it sounds reasonable.=C2=A0 We can enhance it later on.

=C2=A0 0008: Add J= IT compilation support for RPR PREV/NEXT navigation

=C2=A0 =C2=A0 = =C2=A0 =C2=A0 EEOP_OUTER_VAR normally uses slot pointers cached in the
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 entry block, but the mid-expression slot swap i= n
=C2=A0 =C2=A0 =C2=A0 =C2=A0 NAV_SET/RESTORE invalidates them. To avoid= penalizing
=C2=A0 =C2=A0 =C2=A0 =C2=A0 existing expressions, the reload= path is only generated
=C2=A0 =C2=A0 =C2=A0 =C2=A0 when RPR navigation = opcodes are present in the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 expression (compi= le-time decision). Expressions without
=C2=A0 =C2=A0 =C2=A0 =C2=A0 PREV/= NEXT produce identical machine code as before.
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 NAV_SET/RESTORE use the standard build_EvalXFunc pattern.

=C2=A0= =C2=A0 =C2=A0 =C2=A0 A 100K-row PREV/NEXT test case that runs under
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 jit_above_cost=3D0 is included in rpr.sql.

= I would appreciate your thoughts on these when you have time.


Be= st regards,
Henson
=C2=A0
--000000000000e57c51064e721c73-- --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0001-Remove-unused-regex-include.txt" Content-Disposition: attachment; filename="nocfbot-0001-Remove-unused-regex-include.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmktb0 RnJvbSBiMjZlNmVlNWUxMzM1ZjFlMGY5NzZmNmE2NTMxZWVlZDAxOWVjODM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IE1hciAyMDI2IDE5OjA0OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAxLzhdIFJl bW92ZSB1bnVzZWQgcmVnZXgvcmVnZXguaCBpbmNsdWRlIGZyb20gbm9kZVdpbmRvd0FnZy5jCgot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEgLQogMSBmaWxlIGNo YW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5k ZXggNGY4ODJiODc3YjEuLjE4NWQ3YTBkNWFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNl LmgiCi0jaW5jbHVkZSAicmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCi0tIAoy LjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0002-CHECK_FOR_INTERRUPTS-nfa_add_state_unique.txt" Content-Disposition: attachment; filename="nocfbot-0002-CHECK_FOR_INTERRUPTS-nfa_add_state_unique.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmmf21 RnJvbSBjZmRiNjU2YjQxNmM2N2M5YjlhOWEzM2NjNmU1OTU1YTBjNTc4MWU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjI1OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSCAyLzhdIEFk ZCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIG5mYV9hZGRfc3RhdGVfdW5pcXVlKCkgZm9yCiBz dGF0ZSBleHBsb3Npb24gcGF0dGVybnMKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSUFIuYwppbmRleCBiYWI1MjU3ZjY4Zi4uY2Y1NGUwYzc2YzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UlBSLmMKQEAgLTE3NjMsNiArMTc2Myw4IEBAIG5mYV9hZGRfc3RhdGVfdW5pcXVlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBSUFJORkFTdGF0ZSAqCiAJLyog Q2hlY2sgZm9yIGR1cGxpY2F0ZSBhbmQgZmluZCB0YWlsICovCiAJZm9yIChzID0gY3R4LT5zdGF0 ZXM7IHMgIT0gTlVMTDsgcyA9IHMtPm5leHQpCiAJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCiAJCWlmIChuZmFfc3RhdGVzX2VxdWFsKHdpbnN0YXRlLCBzLCBzdGF0ZSkpCiAJCXsKIAkJ CS8qCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-CHECK_FOR_INTERRUPTS-nfa_try_absorb_context.txt" Content-Disposition: attachment; filename="nocfbot-0003-CHECK_FOR_INTERRUPTS-nfa_try_absorb_context.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmnsv2 RnJvbSA5ODdiZmFhNDE4MGFmMjdhMTk0NDI3NTY2ZDVkMDkwYzQ0ZWFkODk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDExOjAzOjM5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAzLzhdIEFk ZCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIG5mYV90cnlfYWJzb3JiX2NvbnRleHQoKQogbG9v cAoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgfCAyICsrCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGNmNTRlMGM3 NmMzLi41OGY5ZGEwYjgxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMjA4NCw2ICsyMDg0 LDggQEAgbmZhX3RyeV9hYnNvcmJfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQ Uk5GQUNvbnRleHQgKmN0eCkKIAogCWZvciAob2xkZXIgPSBjdHgtPnByZXY7IG9sZGVyICE9IE5V TEw7IG9sZGVyID0gb2xkZXItPnByZXYpCiAJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CiAJCS8qCiAJCSAqIEJ5IGludmFyaWFudDogY3R4LT5wcmV2IGNoYWluIGlzIGluIGNyZWF0aW9u IG9yZGVyIChvbGRlc3QgZmlyc3QpLAogCQkgKiBhbmQgZWFjaCByb3cgY3JlYXRlcyBhdCBtb3N0 IG9uZSBjb250ZXh0LiBTbyBhbGwgY29udGV4dHMgaW4gdGhpcwotLSAKMi41MC4xIChBcHBsZSBH aXQtMTU1KQoK --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt" Content-Disposition: attachment; filename="nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmp9o3 RnJvbSAwMzhiYWQ1NmJlMGVkMzg3MzQ0OTBmODg1M2VlZmRiMGU3MWFkNzVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjIwOjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSCA0LzhdIEZp eCBpbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgZGVmaW5lQ2xhdXNlIFRhcmdldEVudHJ5IGluCiBz ZXRyZWZzLmMKCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIHwgNCAr KystCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDY5Y2QxODYxZTliLi44MTNhMzI2YmQ3 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjYzMyw3ICsyNjMzLDcg QEAgc2V0X3VwcGVyX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sIGlu dCBydG9mZnNldCkKIAkJCQkJICAgTlVNX0VYRUNfUVVBTChwbGFuKSk7CiAKIAkvKgotCSAqIE1v ZGlmaWVzIGFuIGV4cHJlc3Npb24gdHJlZSBpbiBlYWNoIERFRklORSBjbGF1c2Ugc28gdGhhdCBh bGwgVmFyCisJICogUmVwbGFjZSBhbiBleHByZXNzaW9uIHRyZWUgaW4gZWFjaCBERUZJTkUgY2xh dXNlIHNvIHRoYXQgYWxsIFZhcgogCSAqIG5vZGVzJ3MgdmFybm8gcmVmZXJzIHRvIE9VVEVSX1ZB Ui4KIAkgKi8KIAlpZiAoSXNBKHBsYW4sIFdpbmRvd0FnZykpCkBAIC0yNjQ2LDYgKzI2NDYsNyBA QCBzZXRfdXBwZXJfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50 IHJ0b2Zmc2V0KQogCQkJewogCQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikg bGZpcnN0KGwpOwogCisJCQkJdGxlID0gZmxhdENvcHlUYXJnZXRFbnRyeSh0bGUpOwogCQkJCXRs ZS0+ZXhwciA9IChFeHByICopCiAJCQkJCWZpeF91cHBlcl9leHByKHJvb3QsCiAJCQkJCQkJCSAg IChOb2RlICopIHRsZS0+ZXhwciwKQEAgLTI2NTQsNiArMjY1NSw3IEBAIHNldF91cHBlcl9yZWZl cmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQkJ CQkJCSAgIHJ0b2Zmc2V0LAogCQkJCQkJCQkgICBOUk1fRVFVQUwsCiAJCQkJCQkJCSAgIE5VTV9F WEVDX1FVQUwocGxhbikpOworCQkJCWxmaXJzdChsKSA9IHRsZTsKIAkJCX0KIAkJfQogCX0KLS0g CjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-Fix-mark-handling-last_value-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0005-Fix-mark-handling-last_value-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmqxo4 RnJvbSA4NzZjMGI4ZmI1MmM1YmRlMmUxYTBjM2U5ZGQ5ZDFhYzUwMzk2NDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjM3OjUwICswOTAwClN1YmplY3Q6IFtQQVRDSCA1LzhdIEZp eCBtYXJrIGhhbmRsaW5nIGZvciBsYXN0X3ZhbHVlKCkgdW5kZXIgUlBSCgpFbmFibGUgbWFyayBh ZHZhbmNlbWVudCBpbiB3aW5kb3dfbGFzdF92YWx1ZSgpIGZvcgpiZXR0ZXIgdHVwbGVzdG9yZSBt ZW1vcnkgdXNhZ2UgaW4gbm9uLVJQUiBjYXNlcywgd2hpbGUKYWRkaW5nIGEgZ3VhcmQgaW4gV2lu R2V0RnVuY0FyZ0luRnJhbWUgdG8gc3VwcHJlc3MgaXQKZm9yIFJQUiBTRUVLX1RBSUwgdG8gcHJl dmVudCBwb3NpdGlvbiBpbnZhbGlkYXRpb24KZnJvbSByZWR1Y2VkIGZyYW1lIHNoaWZ0cy4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgfCAxMCArKysrKysrKysrCiBz cmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyAgfCAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jCmluZGV4IDE4NWQ3YTBkNWFlLi5hZWQ3Y2JlZjk5YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtNDkzMiw3ICs0OTMyLDE3IEBAIFdpbkdldFNsb3RJ bkZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIFR1cGxlVGFibGVTbG90ICpzbG90LAogCWlmIChp c291dCkKIAkJKmlzb3V0ID0gZmFsc2U7CiAJaWYgKHNldF9tYXJrKQorCXsKKwkJLyoKKwkJICog SWYgUlBSIGlzIGVuYWJsZWQgYW5kIHNlZWsgdHlwZSBpcyBXSU5ET1dfU0VFS19UQUlMLCB3ZSBz ZXQgdGhlCisJCSAqIG1hcmsgcG9zaXRpb24gdW5jb25kaXRpb25hbGx5IHRvIGZyYW1laGVhZHBv cy4gSW4gdGhpcyBjYXNlIHRoZQorCQkgKiBmcmFtZSBhbHdheXMgc3RhcnRzIGF0IENVUlJFTlRf Uk9XIGFuZCBuZXZlciBnb2VzIGJhY2ssIHRodXMKKwkJICogc2V0dGluZyB0aGUgbWFyayBhdCB0 aGUgcG9zaXRpb24gaXMgc2FmZS4KKwkJICovCisJCWlmICh3aW5zdGF0ZS0+cnBQYXR0ZXJuICE9 IE5VTEwgJiYgc2Vla3R5cGUgPT0gV0lORE9XX1NFRUtfVEFJTCkKKwkJCW1hcmtfcG9zID0gd2lu c3RhdGUtPmZyYW1laGVhZHBvczsKIAkJV2luU2V0TWFya1Bvc2l0aW9uKHdpbm9iaiwgbWFya19w b3MpOworCX0KIAlyZXR1cm4gMDsKIAogb3V0X29mX2ZyYW1lOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvd2lu ZG93ZnVuY3MuYwppbmRleCBlZmI2MGM5OTA1Mi4uNzRlZjEwOWY3MmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC93aW5kb3dmdW5jcy5jCkBAIC02ODIsNyArNjgyLDcgQEAgd2luZG93X2xhc3RfdmFsdWUo UEdfRlVOQ1RJT05fQVJHUykKIAogCVdpbkNoZWNrQW5kSW5pdGlhbGl6ZU51bGxUcmVhdG1lbnQo d2lub2JqLCB0cnVlLCBmY2luZm8pOwogCXJlc3VsdCA9IFdpbkdldEZ1bmNBcmdJbkZyYW1lKHdp bm9iaiwgMCwKLQkJCQkJCQkJICAwLCBXSU5ET1dfU0VFS19UQUlMLCBmYWxzZSwKKwkJCQkJCQkJ ICAwLCBXSU5ET1dfU0VFS19UQUlMLCB0cnVlLAogCQkJCQkJCQkgICZpc251bGwsIE5VTEwpOwog CWlmIChpc251bGwpCiAJCVBHX1JFVFVSTl9OVUxMKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgo= --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Prevent-RPR-window-removal-in-subquery.txt" Content-Disposition: attachment; filename="nocfbot-0006-Prevent-RPR-window-removal-in-subquery.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmtdx5 RnJvbSAyZDQ4OTA3ZDUyZTNhZjg3MzhiMDlkZjY5ZDNjMDE2YjYyMjRkNjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTE6NTU6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIDYvOF0gUHJl dmVudCByZW1vdmFsIG9mIFJQUiB3aW5kb3cgZnVuY3Rpb25zIGluIHVudXNlZAogc3VicXVlcnkg b3V0cHV0cwoKcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKCkgcmVwbGFjZXMgdW51c2Vk IHN1YnF1ZXJ5IHRhcmdldAplbnRyaWVzIHdpdGggTlVMTCBjb25zdGFudHMuIFdoZW4gYW4gUlBS IHdpbmRvdyBmdW5jdGlvbidzIHJlc3VsdAppcyBub3QgcmVmZXJlbmNlZCBieSB0aGUgb3V0ZXIg cXVlcnksIHRoaXMgcmVwbGFjZW1lbnQgZWxpbWluYXRlcwphbGwgYWN0aXZlIHdpbmRvdyBmdW5j dGlvbnMgZm9yIHRoZSBXaW5kb3dDbGF1c2UsIGNhdXNpbmcgdGhlCnBsYW5uZXIgdG8gb21pdCB0 aGUgV2luZG93QWdnIG5vZGUuIERFRklORSBjbGF1c2UgZXhwcmVzc2lvbnMKY29udGFpbmluZyBS UFJOYXZFeHByIChQUkVWL05FWFQpIHRoZW4gbG9zZSB0aGVpciBleGVjdXRpb24KY29udGV4dCwg bGVhZGluZyB0byBhbiBBc3NlcnQgZmFpbHVyZSBpbiBleGVjRXhwci5jLgoKU2tpcCB0aGUgTlVM TCByZXBsYWNlbWVudCBmb3Igd2luZG93IGZ1bmN0aW9ucyB3aG9zZSBXaW5kb3dDbGF1c2UKaGFz IGEgZGVmaW5lQ2xhdXNlLCBzbyB0aGUgV2luZG93QWdnIG5vZGUgaXMgcHJlc2VydmVkIGFuZCBS UFIKcGF0dGVybiBtYXRjaGluZyBleGVjdXRlcyBjb3JyZWN0bHkuCi0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICAgIHwgMzMgKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICAgIHwgMjYg KysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCBmNDJhMmJhZTE0YS4uOWQz YWY0M2E3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNDc1MCw2 ICs0NzUwLDM0IEBAIHJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cyhRdWVyeSAqc3VicXVl cnksIFJlbE9wdEluZm8gKnJlbCwKIAkJaWYgKGNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKHRl eHByKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIElmIGl0J3MgYSB3aW5kb3cgZnVuY3Rp b24gcmVmZXJlbmNpbmcgYSB3aW5kb3cgY2xhdXNlIHdpdGggUlBSIChSb3cKKwkJICogUGF0dGVy biBSZWNvZ25pdGlvbiksIGRvbid0IHJlbW92ZSBpdC4gIEV2ZW4gd2hlbiB0aGUgd2luZG93CisJ CSAqIGZ1bmN0aW9uIHJlc3VsdCBpcyB1bnVzZWQgYnkgdGhlIG91dGVyIHF1ZXJ5LCB0aGUgUlBS IHBhdHRlcm4KKwkJICogbWF0Y2hpbmcgKGZyYW1lIHJlZHVjdGlvbiB2aWEgREVGSU5FL1BBVFRF Uk4pIG11c3Qgc3RpbGwgZXhlY3V0ZS4KKwkJICogUmVwbGFjaW5nIHRoaXMgd2l0aCBOVUxMIHdv dWxkIGxlYXZlIG5vIGFjdGl2ZSB3aW5kb3cgZnVuY3Rpb25zIGZvcgorCQkgKiB0aGUgV2luZG93 Q2xhdXNlLCBjYXVzaW5nIHRoZSBwbGFubmVyIHRvIG9taXQgdGhlIFdpbmRvd0FnZyBub2RlCisJ CSAqIGVudGlyZWx5LgorCQkgKi8KKwkJaWYgKElzQSh0ZXhwciwgV2luZG93RnVuYykpCisJCXsK KwkJCVdpbmRvd0Z1bmMgKndmdW5jID0gKFdpbmRvd0Z1bmMgKikgdGV4cHI7CisJCQlMaXN0Q2Vs bCAgICp3bGM7CisKKwkJCWZvcmVhY2god2xjLCBzdWJxdWVyeS0+d2luZG93Q2xhdXNlKQorCQkJ eworCQkJCVdpbmRvd0NsYXVzZSAqd2MgPSBsZmlyc3Rfbm9kZShXaW5kb3dDbGF1c2UsIHdsYyk7 CisKKwkJCQlpZiAod2MtPndpbnJlZiA9PSB3ZnVuYy0+d2lucmVmICYmCisJCQkJCXdjLT5kZWZp bmVDbGF1c2UgIT0gTklMKQorCQkJCXsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaWYg KHdsYyAhPSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQl9CisKIAkJLyoKIAkJICogT0ssIHdlIGRv bid0IG5lZWQgaXQuICBSZXBsYWNlIHRoZSBleHByZXNzaW9uIHdpdGggYSBOVUxMIGNvbnN0YW50 LgogCQkgKiBQcmVzZXJ2ZSB0aGUgZXhwb3NlZCB0eXBlIG9mIHRoZSBleHByZXNzaW9uLCBpbiBj YXNlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IGU3MjE3MTA1MGM3 Li41NGE2ODU3YmRiOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMTYwNCw2ICsx NjA0LDM5IEBAIFNFTEVDVCBtYXRjaF9maXJzdCwgbWF0Y2hfbGFzdCwgbWF0Y2hfbGVuIEZST00g cmVzdWx0IFdIRVJFIG1hdGNoX2xlbiA+IDA7CiAgICAgICAgICAgIDAgfCAgICAgIDk5OTk4IHwg ICAgIDk5OTk5CiAoMSByb3cpCiAKKy0tCistLSBTdWJxdWVyeSB3cmFwcGluZzogUlBSIHdpbmRv dyBpbnNpZGUgb3V0ZXIgYWdncmVnYXRlLgorLS0gVGVzdHMgdGhhdCBXaW5kb3dBZ2cgaXMgbm90 IHJlbW92ZWQgYnkgcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKCkKKy0tIHdoZW4gREVG SU5FIGNsYXVzZSBjb250YWlucyBQUkVWL05FWFQuCistLQorLS0gUFJFViBpbiBERUZJTkUgKyBv dXRlciBhZ2dyZWdhdGUKK1NFTEVDVCBjb3VudCgqKSBGUk9NICgKKyAgU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpCisgIFdJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBpID4gUFJFVihpKQorICApCispIHQ7CisgY291 bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworLS0gREVGSU5FIHdpdGhvdXQgUFJFViAr IG91dGVyIGFnZ3JlZ2F0ZSAoV2luZG93QWdnIG11c3Qgc3RpbGwgYmUgcHJlc2VydmVkKQorU0VM RUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMg YyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpCisgIFdJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCisgICkKKykgdDsKKyBjb3VudCB8IHN1bSAKKy0t LS0tLS0rLS0tLS0KKyAgICAxMCB8ICAxMAorKDEgcm93KQorCiAtLQogLS0gSUdOT1JFIE5VTExT CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggOTU3OTRkNDA5ZTEuLjk5NjEzNTYzNGZkIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKQEAgLTc2NCw2ICs3NjQsMzIgQEAgcmVzdWx0IEFTICgKIC0tIFNob3Vs ZCBtYXRjaDogQSAoMzMzMzMgcm93cykgKyBCICgzMzMzMyByb3dzKSArIEMgKDMzMzMzIHJvd3Mp ID0gOTk5OTkgcm93cwogU0VMRUNUIG1hdGNoX2ZpcnN0LCBtYXRjaF9sYXN0LCBtYXRjaF9sZW4g RlJPTSByZXN1bHQgV0hFUkUgbWF0Y2hfbGVuID4gMDsKIAorLS0KKy0tIFN1YnF1ZXJ5IHdyYXBw aW5nOiBSUFIgd2luZG93IGluc2lkZSBvdXRlciBhZ2dyZWdhdGUuCistLSBUZXN0cyB0aGF0IFdp bmRvd0FnZyBpcyBub3QgcmVtb3ZlZCBieSByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMo KQorLS0gd2hlbiBERUZJTkUgY2xhdXNlIGNvbnRhaW5zIFBSRVYvTkVYVC4KKy0tCisKKy0tIFBS RVYgaW4gREVGSU5FICsgb3V0ZXIgYWdncmVnYXRlCitTRUxFQ1QgY291bnQoKikgRlJPTSAoCisg IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaQorICBX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgaSA+IFBSRVYoaSkK KyAgKQorKSB0OworCistLSBERUZJTkUgd2l0aG91dCBQUkVWICsgb3V0ZXIgYWdncmVnYXRlIChX aW5kb3dBZ2cgbXVzdCBzdGlsbCBiZSBwcmVzZXJ2ZWQpCitTRUxFQ1QgY291bnQoKiksIHN1bShj KSBGUk9NICgKKyAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTApIGkKKyAgV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIFRSVUUKKyAgKQorKSB0OworCiAtLQogLS0gSUdOT1JFIE5VTExTCiAtLQotLSAKMi41MC4x IChBcHBsZSBHaXQtMTU1KQoK --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0007-Implement-PREV-NEXT-navigation.txt" Content-Disposition: attachment; filename="nocfbot-0007-Implement-PREV-NEXT-navigation.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmvlf6 RnJvbSBkZmRmZmY0NmQ0N2YyZjZiMDY1N2U4OWZkYTJlNGFhMzhhMTg2ZDg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDIwIE1hciAyMDI2IDIzOjUyOjQyICswOTAwClN1YmplY3Q6IFtQQVRDSCA3LzhdIElt cGxlbWVudCAxLXNsb3QgUFJFVi9ORVhUIG5hdmlnYXRpb24gZm9yIFJQUgoKQWRkIFBSRVYodmFs dWUgWywgb2Zmc2V0XSkgYW5kIE5FWFQodmFsdWUgWywgb2Zmc2V0XSkgbmF2aWdhdGlvbgpmdW5j dGlvbnMgZm9yIHVzZSBpbiB0aGUgREVGSU5FIGNsYXVzZSBvZiByb3cgcGF0dGVybiByZWNvZ25p dGlvbi4KClRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGNvbHVtbiB2YWx1ZSBhdCBhIHJvdyBv ZmZzZXQgcm93cwpiZWZvcmUvYWZ0ZXIgdGhlIGN1cnJlbnQgcm93IHdpdGhpbiB0aGUgcGFydGl0 aW9uLCByZXR1cm5pbmcgTlVMTAppZiB0aGUgdGFyZ2V0IHJvdyBpcyBvdXRzaWRlIHRoZSBwYXJ0 aXRpb24uIFRoZSBvZmZzZXQgZGVmYXVsdHMKdG8gMSBpZiBvbWl0dGVkOyBvZmZzZXQ9MCByZWZl cnMgdG8gdGhlIGN1cnJlbnQgcm93IGl0c2VsZjsKTlVMTCBvciBuZWdhdGl2ZSBvZmZzZXQgcmFp c2VzIGFuIGVycm9yLgoKS2V5IGRlc2lnbjogaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgMy1zbG90 IG1vZGVsIChvdXRlci9zY2FuL2lubmVyKSwKYSBzaW5nbGUtc2xvdCBzd2FwIG1vZGVsIGlzIHVz ZWQuIEVFT1BfUlBSX05BVl9TRVQgdGVtcG9yYXJpbHkKcmVwbGFjZXMgZWN4dF9vdXRlcnR1cGxl IHdpdGggdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudApleHByZXNzaW9uIGV2YWx1YXRlcyBh Z2FpbnN0IGl0LCBhbmQgRUVPUF9SUFJfTkFWX1JFU1RPUkUgcmVzdG9yZXMKdGhlIG9yaWdpbmFs IHNsb3QuIFRoaXMgZWxpbWluYXRlcyB2YXJubyByZXdyaXRpbmcgYW5kIG5hdHVyYWxseQpzdXBw b3J0cyBhcmJpdHJhcnkgb2Zmc2V0cy4KCkEgZGVkaWNhdGVkIG5hdl93aW5vYmogd2l0aCBpdHMg b3duIHR1cGxlc3RvcmUgcmVhZCBwb2ludGVyIGF2b2lkcwppbnRlcmZlcmVuY2Ugd2l0aCBhZ2dy ZWdhdGUgcHJvY2Vzc2luZy4gQSBtYXJrIHBvaW50ZXIgcGlubmVkIGF0CnBvc2l0aW9uIDAgcHJl dmVudHMgdHVwbGVzdG9yZSB0cnVuY2F0aW9uIHNvIHRoYXQgUFJFVihleHByLCBOKQpjYW4gcmVh Y2ggYW55IHByaW9yIHJvdy4KClJQUk5hdkV4cHIgaXMgYSBuZXcgZXhwcmVzc2lvbiBub2RlIHRo YXQgcmVwbGFjZXMgdGhlIHByZXZpb3VzCmFwcHJvYWNoIG9mIGlkZW50aWZ5aW5nIFBSRVYvTkVY VCBieSBmdW5jaWQuIFRoZSBwYXJzZXIgdHJhbnNmb3JtcwpQUkVWL05FWFQgZnVuY3Rpb24gY2Fs bHMgaW50byBSUFJOYXZFeHByIG5vZGVzIGluIFBhcnNlRnVuY09yQ29sdW1uKCkuClZhbGlkYXRp b24gaW4gcGFyc2VfcnByLmMgcmVqZWN0cyBuZXN0ZWQgUFJFVi9ORVhULCByZXF1aXJlcyBhdAps ZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZSBpbiB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCBlbnN1 cmVzCnRoZSBvZmZzZXQgaXMgYSBydW4tdGltZSBjb25zdGFudC4KClJQUk5hdktpbmQgdXNlcyBw bGFpbiBlbnVtIHZhbHVlcyAobm90IC0xLysxKSBzbyB0aGF0IEZJUlNUL0xBU1QKY2FuIGJlIGFk ZGVkIGxhdGVyIHdpdGhvdXQgYXJpdGhtZXRpYyB0cmlja3MuCgpMTFZNIEpJVCBmYWxscyBiYWNr IHRvIHRoZSBpbnRlcnByZXRlciBmb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZwpSUFIgbmF2aWdh dGlvbiBvcGNvZGVzLCBiZWNhdXNlIEpJVCBjb2RlIGNhY2hlcyB0aGUgb3V0ZXJ0dXBsZSdzCnR0 c192YWx1ZXMvdHRzX2lzbnVsbCBwb2ludGVycyBpbiB0aGUgZW50cnkgYmxvY2sgYW5kIHRoZQpt aWQtZXhwcmVzc2lvbiBzbG90IHN3YXAgbGVhdmVzIHRoZW0gc3RhbGUuIE9ubHkgREVGSU5FIGNs YXVzZQpleHByZXNzaW9ucyB3aXRoIFBSRVYvTkVYVCBhcmUgYWZmZWN0ZWQ7IG90aGVyIGV4cHJl c3Npb25zIGluCnRoZSBzYW1lIHF1ZXJ5IGFyZSBzdGlsbCBKSVQtY29tcGlsZWQgbm9ybWFsbHku Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbCAgICAgICAgfCAgMjIgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgIHwgIDU2ICsrKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgfCAxMTAgKysrKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgIHwgMjQzICsrKystLS0tLS0KIHNy Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgICAgIHwgIDQwICsrCiBzcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICB8ICAzMyArKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2Z1bmMuYyAgICAgICAgICAgfCAgMzAgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYyAgICAgICAgICAgIHwgIDg3ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyAgICAgICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5j cy5jICAgICAgIHwgIDUyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICB8 ICAxOCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmggICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgfCAgMzEgKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICAgICAgIHwgNTUxICsrKysrKysrKysrKysrKysr KysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0IHwgMTE0ICsr KystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICAgICAgICB8IDMyMiArKysr KysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgICAgICB8ICA4 NCArKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMyAr LQogMjEgZmlsZXMgY2hhbmdlZCwgMTYzOCBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbCBiL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKaW5kZXggYWUzNmUwZjMxMzUuLjFiOWI5OTNh ODE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKQEAgLTMwNCwxMiArMzA0LDE3IEBA CiAgICAgICAgIDxpbmRleHRlcm0+CiAgICAgICAgICA8cHJpbWFyeT5wcmV2PC9wcmltYXJ5Pgog ICAgICAgICA8L2luZGV4dGVybT4KLSAgICAgICAgPGZ1bmN0aW9uPnByZXY8L2Z1bmN0aW9uPiAo IDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gKQor ICAgICAgICA8ZnVuY3Rpb24+cHJldjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFy YW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNldDwvcGFy YW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQogICAgICAgICA8cmV0dXJudmFsdWU+YW55 ZWxlbWVudDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAg ICAgICBSZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHByZXZpb3VzIHJvdzsKLSAgICAg ICAgcmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIHJvdyBpbiB0aGUgd2luZG93 IGZyYW1lLgorICAgICAgICBSZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHJvdyA8cGFy YW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPgorICAgICAgICByb3dzIGJlZm9yZSB0aGUgY3VycmVu dCByb3cgd2l0aGluIHRoZSB3aW5kb3cgZnJhbWU7CisgICAgICAgIHJldHVybnMgTlVMTCBpZiB0 aGUgdGFyZ2V0IHJvdyBpcyBvdXRzaWRlIHRoZSB3aW5kb3cgZnJhbWUuCisgICAgICAgIDxwYXJh bWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IGRlZmF1bHRzIHRvIDEgaWYgb21pdHRlZC4KKyAgICAg ICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBp bnRlZ2VyOworICAgICAgICBhbiBvZmZzZXQgb2YgMCByZWZlcnMgdG8gdGhlIGN1cnJlbnQgcm93 IGl0c2VsZi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBub3Qg YmUgTlVMTC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCkBAIC0zMTgs MTIgKzMyMywxNyBAQAogICAgICAgICA8aW5kZXh0ZXJtPgogICAgICAgICAgPHByaW1hcnk+bmV4 dDwvcHJpbWFyeT4KICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlvbj5uZXh0 PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+ICkKKyAgICAgICAgPGZ1bmN0aW9uPm5leHQ8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0 ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gWywgPHBhcmFtZXRl cj5vZmZzZXQ8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiBdICkKICAgICAgICAgPHJl dHVybnZhbHVlPmFueWVsZW1lbnQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAg ICA8cGFyYT4KLSAgICAgICAgUmV0dXJucyB0aGUgY29sdW1uIHZhbHVlIGF0IHRoZSBuZXh0IHJv dzsKLSAgICAgICAgcmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIG5leHQgcm93IGluIHRoZSB3 aW5kb3cgZnJhbWUuCisgICAgICAgIFJldHVybnMgdGhlIGNvbHVtbiB2YWx1ZSBhdCB0aGUgcm93 IDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+CisgICAgICAgIHJvd3MgYWZ0ZXIgdGhlIGN1 cnJlbnQgcm93IHdpdGhpbiB0aGUgd2luZG93IGZyYW1lOworICAgICAgICByZXR1cm5zIE5VTEwg aWYgdGhlIHRhcmdldCByb3cgaXMgb3V0c2lkZSB0aGUgd2luZG93IGZyYW1lLgorICAgICAgICA8 cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZhdWx0cyB0byAxIGlmIG9taXR0ZWQuCisg ICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3QgYmUgYSBub24tbmVnYXRp dmUgaW50ZWdlcjsKKyAgICAgICAgYW4gb2Zmc2V0IG9mIDAgcmVmZXJzIHRvIHRoZSBjdXJyZW50 IHJvdyBpdHNlbGYuCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3Qg bm90IGJlIE5VTEwuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggNzcyMjkxNDFiMzguLmRiZWQ0ZjQ4YTBmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTEyMjIsNiArMTIyMiw2MiBAQCBFeGVjSW5pdEV4cHJSZWMo RXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNl IFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJQUiBuYXZpZ2F0aW9uIGZ1bmN0 aW9ucyAoUFJFVi9ORVhUKSBhcmUgY29tcGlsZWQgaW50bworCQkJCSAqIEVFT1BfUlBSX05BVl9T RVQgLyBFRU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIGluc3RlYWQgb2YKKwkJCQkgKiBhIG5v cm1hbCBmdW5jdGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUgc3dhcHMKKwkJCQkgKiBlY3h0X291 dGVydHVwbGUgdG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudCBleHByZXNzaW9uCisJCQkJ ICogaXMgY29tcGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQgc2xvdCksIGFu ZCB0aGUKKwkJCQkgKiBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc2xvdC4K KwkJCQkgKi8KKwkJCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJ CVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKworCQkJCUFzc2VydChzdGF0ZS0+cGFyZW50ICYm IElzQShzdGF0ZS0+cGFyZW50LCBXaW5kb3dBZ2dTdGF0ZSkpOworCQkJCXdpbnN0YXRlID0gKFdp bmRvd0FnZ1N0YXRlICopIHN0YXRlLT5wYXJlbnQ7CisKKwkJCQkvKiBFbWl0IFNFVCBvcGNvZGU6 IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93ICovCisJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1JQ Ul9OQVZfU0VUOworCQkJCXNjcmF0Y2guZC5ycHJfbmF2LndpbnN0YXRlID0gd2luc3RhdGU7CisJ CQkJc2NyYXRjaC5kLnJwcl9uYXYua2luZCA9IG5hdi0+a2luZDsKKworCQkJCWlmIChuYXYtPm9m ZnNldF9hcmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEFsbG9jYXRlIHN0b3Jh Z2UgZm9yIHRoZSBydW50aW1lIG9mZnNldCB2YWx1ZS4gIFRoZQorCQkJCQkgKiBvZmZzZXQgZXhw cmVzc2lvbiBpcyBjb21waWxlZCBiZWxvdyBzbyBpdCBydW5zIGJlZm9yZQorCQkJCQkgKiBFRU9Q X1JQUl9OQVZfU0VULgorCQkJCQkgKi8KKwkJCQkJRGF0dW0JICAgKm9mZnNldF92YWx1ZSA9IHBh bGxvY19vYmplY3QoRGF0dW0pOworCQkJCQlib29sCSAgICpvZmZzZXRfaXNudWxsID0gcGFsbG9j X29iamVjdChib29sKTsKKworCQkJCQkvKiBDb21waWxlIHRoZSBvZmZzZXQgZXhwcmVzc2lvbiBp bnRvIHRoZSB0ZW1wIHN0b3JhZ2UgKi8KKwkJCQkJRXhlY0luaXRFeHByUmVjKG5hdi0+b2Zmc2V0 X2FyZywgc3RhdGUsCisJCQkJCQkJCQlvZmZzZXRfdmFsdWUsIG9mZnNldF9pc251bGwpOworCisJ CQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IG9mZnNldF92YWx1ZTsKKwkJCQkJ c2NyYXRjaC5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCA9IG9mZnNldF9pc251bGw7CisJCQkJfQor CQkJCWVsc2UKKwkJCQl7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IE5V TEw7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBOVUxMOworCQkJCX0K KworCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCQkJCS8qIENvbXBp bGUgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb24gbm9ybWFsbHkgKi8KKwkJCQlFeGVjSW5pdEV4cHJS ZWMobmF2LT5hcmcsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkJCS8qIEVtaXQgUkVTVE9S RSBvcGNvZGU6IHJlc3RvcmUgb3JpZ2luYWwgc2xvdCAqLworCQkJCXNjcmF0Y2gub3Bjb2RlID0g RUVPUF9SUFJfTkFWX1JFU1RPUkU7CisJCQkJc2NyYXRjaC5kLnJwcl9uYXYud2luc3RhdGUgPSB3 aW5zdGF0ZTsKKwkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJY2FzZSBUX0Z1bmNFeHByOgogCQkJewogCQkJCUZ1bmNFeHByICAgKmZ1 bmMgPSAoRnVuY0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CmluZGV4IDQzMTE2NDMxZWRmLi4zOWRiMTEzMDFjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCkBAIC01NiwxMiArNTYsMTQgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2Fz dC5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKQEAgLTU3 OCw2ICs1ODAsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4 dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfV0lORE9XX0ZVTkMsCiAJ CSYmQ0FTRV9FRU9QX01FUkdFX1NVUFBPUlRfRlVOQywKIAkJJiZDQVNFX0VFT1BfU1VCUExBTiwK KwkJJiZDQVNFX0VFT1BfUlBSX05BVl9TRVQsCisJCSYmQ0FTRV9FRU9QX1JQUl9OQVZfUkVTVE9S RSwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSwKIAkJJiZDQVNFX0VFT1Bf QUdHX0RFU0VSSUFMSVpFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0lOUFVUX0NIRUNLX0FS R1MsCkBAIC0yMDA1LDYgKzIwMDksMjQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0 ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwog CQl9CiAKKwkJLyogUlBSIG5hdmlnYXRpb246IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93ICovCisJ CUVFT19DQVNFKEVFT1BfUlBSX05BVl9TRVQpCisJCXsKKwkJCUV4ZWNFdmFsUlBSTmF2U2V0KHN0 YXRlLCBvcCwgZWNvbnRleHQpOworCQkJb3V0ZXJzbG90ID0gZWNvbnRleHQtPmVjeHRfb3V0ZXJ0 dXBsZTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCS8qIFJQUiBuYXZpZ2F0aW9uOiByZXN0 b3JlIHNsb3QgdG8gb3JpZ2luYWwgcm93ICovCisJCUVFT19DQVNFKEVFT1BfUlBSX05BVl9SRVNU T1JFKQorCQl7CisJCQlFeGVjRXZhbFJQUk5hdlJlc3RvcmUoc3RhdGUsIG9wLCBlY29udGV4dCk7 CisJCQlvdXRlcnNsb3QgPSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlOworCisJCQlFRU9fTkVY VCgpOworCQl9CisKIAkJLyogZXZhbHVhdGUgYSBzdHJpY3QgYWdncmVnYXRlIGRlc2VyaWFsaXph dGlvbiBmdW5jdGlvbiAqLwogCQlFRU9fQ0FTRShFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUp CiAJCXsKQEAgLTU5MTgsMyArNTk0MCw5MSBAQCBFeGVjQWdnUGxhaW5UcmFuc0J5UmVmKEFnZ1N0 YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIH0KKworLyoKKyAqIEV2YWx1YXRlIFJQUiBQUkVWL05F WFQgbmF2aWdhdGlvbjogc3dhcCBzbG90IHRvIHRhcmdldCByb3cuCisgKgorICogU2F2ZXMgdGhl IGN1cnJlbnQgb3V0ZXJ0dXBsZSBpbnRvIHdpbnN0YXRlIGZvciBsYXRlciByZXN0b3JlLCBjb21w dXRlcworICogdGhlIHRhcmdldCByb3cgcG9zaXRpb24sIGZldGNoZXMgdGhlIGNvcnJlc3BvbmRp bmcgc2xvdCBmcm9tIHRoZQorICogdHVwbGVzdG9yZSwgYW5kIHJlcGxhY2VzIGVjb250ZXh0LT5l Y3h0X291dGVydHVwbGUgd2l0aCBpdC4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBib3RoIGZyb20g dGhlIGludGVycHJldGVyIGlubGluZSBoYW5kbGVyIGFuZCBmcm9tCisgKiBKSVQtY29tcGlsZWQg ZXhwcmVzc2lvbnMgdmlhIGJ1aWxkX0V2YWxYRnVuYy4KKyAqLwordm9pZAorRXhlY0V2YWxSUFJO YXZTZXQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IG9wLT5kLnJwcl9uYXYud2lu c3RhdGU7CisJaW50NjQJCW9mZnNldDsKKwlpbnQ2NAkJdGFyZ2V0X3BvczsKKwlUdXBsZVRhYmxl U2xvdCAqdGFyZ2V0X3Nsb3Q7CisKKwkvKiBTYXZlIGN1cnJlbnQgc2xvdCBmb3IgbGF0ZXIgcmVz dG9yZSAqLworCXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0dXBsZSA9IGVjb250ZXh0LT5lY3h0 X291dGVydHVwbGU7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgdW5zaWduZWQgb2Zmc2V0LiAg Rm9yIDItYXJnIFBSRVYvTkVYVCB0aGUgb2Zmc2V0CisJICogZXhwcmVzc2lvbiBoYXMgYWxyZWFk eSBiZWVuIGV2YWx1YXRlZCBpbnRvIG9mZnNldF92YWx1ZS4gIE5VTEwgb3IKKwkgKiBuZWdhdGl2 ZSBvZmZzZXRzIGFyZSBlcnJvcnMgcGVyIHRoZSBTUUwgc3RhbmRhcmQgKElTTy9JRUMgOTA3NS0y LAorCSAqIFN1YmNsYXVzZSA1LjYuMikuCisJICovCisJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0 X3ZhbHVlICE9IE5VTEwpCisJeworCQlpZiAoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1Rf QUxMT1dFRCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbnVs bCIpKSk7CisKKwkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCgqb3AtPmQucnByX25hdi5vZmZzZXRf dmFsdWUpOworCisJCWlmIChvZmZzZXQgPCAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIlBS RVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSkpOworCX0KKwllbHNlCisJCW9m ZnNldCA9IDE7CisKKwkvKgorCSAqIENhbGN1bGF0ZSB0YXJnZXQgcG9zaXRpb24gYmFzZWQgb24g bmF2aWdhdGlvbiBkaXJlY3Rpb24uICBPbiBvdmVyZmxvdywKKwkgKiB1c2UgLTEgc28gdGhhdCBF eGVjUlBSTmF2R2V0U2xvdCB0cmVhdHMgaXQgYXMgb3V0IG9mIHJhbmdlLgorCSAqLworCXN3aXRj aCAob3AtPmQucnByX25hdi5raW5kKQorCXsKKwkJY2FzZSBSUFJfTkFWX1BSRVY6CisJCQlpZiAo cGdfc3ViX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LCAmdGFyZ2V0 X3BvcykpCisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJYnJlYWs7CisJCWNhc2UgUlBSX05BVl9O RVhUOgorCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9m ZnNldCwgJnRhcmdldF9wb3MpKQorCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCWJyZWFrOworCX0K KworCS8qIEZldGNoIHRhcmdldCByb3cgc2xvdCAocmV0dXJucyBuYXZfbnVsbF9zbG90IGlmIG91 dCBvZiByYW5nZSkgKi8KKwl0YXJnZXRfc2xvdCA9IEV4ZWNSUFJOYXZHZXRTbG90KHdpbnN0YXRl LCB0YXJnZXRfcG9zKTsKKworCS8qCisJICogVXBkYXRlIGVjb250ZXh0IHRvIHBvaW50IHRvIHRo ZSB0YXJnZXQgc2xvdC4gIEFsc28gZGVjb21wcmVzcyB0aGUgbmV3CisJICogc2xvdCdzIGF0dHJp YnV0ZXMgc2luY2UgRkVUQ0hTT01FIGFscmVhZHkgcmFuIGZvciB0aGUgb3JpZ2luYWwgc2xvdC4K KwkgKiBUaGUgY2FsbGVyIChpbnRlcnByZXRlciBvciBKSVQpIGlzIHJlc3BvbnNpYmxlIGZvciB1 cGRhdGluZyBhbnkgbG9jYWwKKwkgKiBzbG90IGNhY2hlIChlLmcuIG91dGVyc2xvdCkgZnJvbSBl Y29udGV4dCBhZnRlciB3ZSByZXR1cm4uCisJICovCisJc2xvdF9nZXRhbGxhdHRycyh0YXJnZXRf c2xvdCk7CisJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHRhcmdldF9zbG90OworfQorCisv KgorICogRXZhbHVhdGUgUlBSIFBSRVYvTkVYVCBuYXZpZ2F0aW9uOiByZXN0b3JlIHNsb3QgdG8g b3JpZ2luYWwgcm93LgorICoKKyAqIFJlc3RvcmVzIGVjb250ZXh0LT5lY3h0X291dGVydHVwbGUg ZnJvbSB0aGUgc2F2ZWQgc2xvdCBpbiB3aW5zdGF0ZS4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIHVwZGF0aW5nIGFueSBsb2NhbCBzbG90IGNhY2hlLgorICovCit2b2lkCitFeGVj RXZhbFJQUk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJ CQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRl ID0gb3AtPmQucnByX25hdi53aW5zdGF0ZTsKKworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUg PSB3aW5zdGF0ZS0+bmF2X3NhdmVkX291dGVydHVwbGU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl V2luZG93QWdnLmMKaW5kZXggYWVkN2NiZWY5OWEuLjBlNGVmZmVhNWMyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1 bS5oIgotI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5k ZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCkBAIC0xNzcsMTQgKzE3Niw2IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd1N0 YXRlUGVyQWdnRGF0YQogCWJvb2wJCXJlc3RhcnQ7CQkvKiBuZWVkIHRvIHJlc3RhcnQgdGhpcyBh Z2cgaW4gdGhpcyBjeWNsZT8gKi8KIH0gV2luZG93U3RhdGVQZXJBZ2dEYXRhOwogCi0vKgotICog U3RydWN0dXJlIHVzZWQgYnkgY2hlY2tfcnByX25hdmlnYXRpb24oKSBhbmQgcnByX25hdmlnYXRp b25fd2Fsa2VyKCkuCi0gKi8KLXR5cGVkZWYgc3RydWN0IE5hdmlnYXRpb25JbmZvCi17Ci0JYm9v bAkJaXNfcHJldjsJCS8qIHRydWUgaWYgUFJFViAqLwotCWludAkJCW51bV92YXJzOwkJLyogbnVt YmVyIG9mIHZhciBub2RlcyAqLwotfSBOYXZpZ2F0aW9uSW5mbzsKIAogc3RhdGljIHZvaWQgaW5p dGlhbGl6ZV93aW5kb3dhZ2dyZWdhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAogCQkJCQkJ CQkJICAgV2luZG93U3RhdGVQZXJGdW5jIHBlcmZ1bmNzdGF0ZSwKQEAgLTI0Myw5ICsyMzQsNiBA QCBzdGF0aWMgdWludDggZ2V0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJ CQkJCSAgaW50NjQgcG9zLCBpbnQgYXJnbm8pOwogc3RhdGljIHZvaWQgcHV0X25vdG51bGxfaW5m byhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSBpbnQ2NCBwb3MsIGludCBhcmdubywgYm9v bCBpc251bGwpOwotc3RhdGljIHZvaWQgYXR0bm9fbWFwKE5vZGUgKm5vZGUpOwotc3RhdGljIGJv b2wgYXR0bm9fbWFwX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKLQogc3RhdGlj IGJvb2wgcnByX2lzX2RlZmluZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKIHN0YXRpYyBp bnQJcm93X2lzX2luX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9z KTsKIApAQCAtMjU2LDkgKzI0NCw2IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3JlZHVjZWRfZnJh bWVfbWFwKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zLAogCQkJCQkJCQkJICAg aW50IHZhbCk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qg d2lub2JqLCBpbnQ2NCBwb3MpOwogCi1zdGF0aWMgdm9pZCBjaGVja19ycHJfbmF2aWdhdGlvbihO b2RlICpub2RlLCBib29sIGlzX3ByZXYpOwotc3RhdGljIGJvb2wgcnByX25hdmlnYXRpb25fd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwotCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9u cyAtIE5GQSByb3cgZXZhbHVhdGlvbiAqLwogc3RhdGljIGJvb2wgbmZhX2V2YWx1YXRlX3JvdyhX aW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpOwogCkBAIC0x MzAyLDYgKzEyODcsMjUgQEAgcHJlcGFyZV90dXBsZXN0b3JlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSkKIAkJfQogCX0KIAorCS8qIENyZWF0ZSByZWFkL21hcmsgcG9pbnRlcnMgZm9yIFJQUiBu YXZpZ2F0aW9uIGlmIG5lZWRlZCAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaikKKwl7CisJ CS8qCisJCSAqIEFsbG9jYXRlIGEgbWFyayBwb2ludGVyIHBpbm5lZCBhdCBwb3NpdGlvbiAwIHNv IHRoYXQgdGhlIHR1cGxlc3RvcmUKKwkJICogbmV2ZXIgdHJ1bmNhdGVzIHJvd3MgdGhhdCBhIFBS RVYoZXhwciwgTikgbWlnaHQgbmVlZC4KKwkJICoKKwkJICogWFhYIFRoaXMgcmV0YWlucyB0aGUg ZW50aXJlIHBhcnRpdGlvbiBpbiB0aGUgdHVwbGVzdG9yZS4gIElmIHRoZQorCQkgKiBERUZJTkUg Y2xhdXNlIG9ubHkgdXNlcyBQUkVWL05FWFQgd2l0aCBzbWFsbCBjb25zdGFudCBvZmZzZXRzLCB3 ZQorCQkgKiBjb3VsZCBhZHZhbmNlIHRoZSBtYXJrIHRvIChjdXJyZW50cG9zIC0gbWF4X29mZnNl dCkgaW5zdGVhZC4KKwkJICovCisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcHRyID0KKwkJ CXR1cGxlc3RvcmVfYWxsb2NfcmVhZF9wb2ludGVyKHdpbnN0YXRlLT5idWZmZXIsIDApOworCQl3 aW5zdGF0ZS0+bmF2X3dpbm9iai0+cmVhZHB0ciA9CisJCQl0dXBsZXN0b3JlX2FsbG9jX3JlYWRf cG9pbnRlcih3aW5zdGF0ZS0+YnVmZmVyLAorCQkJCQkJCQkJCSAgRVhFQ19GTEFHX0JBQ0tXQVJE KTsKKwkJd2luc3RhdGUtPm5hdl93aW5vYmotPm1hcmtwb3MgPSAwOworCX0KKwogCS8qCiAJICog SWYgd2UgYXJlIGluIFJBTkdFIG9yIEdST1VQUyBtb2RlLCB0aGVuIGRldGVybWluaW5nIGZyYW1l IGJvdW5kYXJpZXMKIAkgKiByZXF1aXJlcyBwaHlzaWNhbCBhY2Nlc3MgdG8gdGhlIGZyYW1lIGVu ZHBvaW50IHJvd3MsIGV4Y2VwdCBpbiBjZXJ0YWluCkBAIC0xNDEyLDYgKzE0MTYsMTMgQEAgYmVn aW5fcGFydGl0aW9uKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkJd2luc3RhdGUtPmFnZ3Jl Z2F0ZWR1cHRvID0gMDsKIAl9CiAKKwkvKiByZXNldCBtYXJrIGFuZCBzZWVrIHBvc2l0aW9ucyBm b3IgUlBSIG5hdmlnYXRpb24gKi8KKwlpZiAod2luc3RhdGUtPm5hdl93aW5vYmopCisJeworCQl3 aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcyA9IC0xOworCQl3aW5zdGF0ZS0+bmF2X3dpbm9i ai0+c2Vla3BvcyA9IC0xOworCX0KKwogCS8qIHJlc2V0IG1hcmsgYW5kIHNlZWsgcG9zaXRpb25z IGZvciBlYWNoIHJlYWwgd2luZG93IGZ1bmN0aW9uICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1mdW5jczsgaSsrKQogCXsKQEAgLTI3NTcsMTUgKzI3NjgsMTggQEAgRXhlY0luaXRXaW5kb3dB Z2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl3aW5zdGF0 ZS0+dGVtcF9zbG90XzIgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2Ms CiAJCQkJCQkJCQkJCQkgICAmVFRTT3BzTWluaW1hbFR1cGxlKTsKIAotCXdpbnN0YXRlLT5wcmV2 X3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2MsCi0JCQkJCQkJ CQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7CisJaWYgKG5vZGUtPnJwUGF0dGVybiAhPSBOVUxM KQorCXsKKwkJd2luc3RhdGUtPm5hdl9zbG90ID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3Rh dGUsIHNjYW5EZXNjLAorCQkJCQkJCQkJCQkJCSZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3aW5z dGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CiAKLQl3aW5zdGF0ZS0+bmV4dF9zbG90ID0gRXhlY0lu aXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAotCQkJCQkJCQkJCQkJICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCA9IEV4ZWNJbml0RXh0cmFU dXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKKwkJCQkJCQkJCQkJCQkJICZUVFNPcHNNaW5pbWFs VHVwbGUpOworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCA9IEV4ZWNTdG9yZUFsbE51bGxUdXBs ZSh3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCk7CiAKLQl3aW5zdGF0ZS0+bnVsbF9zbG90ID0gRXhl Y0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAotCQkJCQkJCQkJCQkJICZUVFNP cHNNaW5pbWFsVHVwbGUpOwotCXdpbnN0YXRlLT5udWxsX3Nsb3QgPSBFeGVjU3RvcmVBbGxOdWxs VHVwbGUod2luc3RhdGUtPm51bGxfc2xvdCk7CisJCXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0 dXBsZSA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBjcmVhdGUgZnJhbWUgaGVhZCBhbmQgdGFpbCBz bG90cyBvbmx5IGlmIG5lZWRlZCAobXVzdCBjcmVhdGUgc2xvdHMgaW4KQEAgLTI5MzUsNiArMjk0 OSwyMyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQl3aW5zdGF0ZS0+YWdnX3dpbm9iaiA9IGFnZ193aW5vYmo7CiAJfQog CisJLyoKKwkgKiBTZXQgdXAgV2luZG93T2JqZWN0IGZvciBSUFIgbmF2aWdhdGlvbiBvcGNvZGVz LiAgVGhpcyBpcyBzZXBhcmF0ZSBmcm9tCisJICogYWdnX3dpbm9iaiBiZWNhdXNlIGl0IG5lZWRz IGl0cyBvd24gcmVhZCBwb2ludGVyIHRvIGF2b2lkIGludGVyZmVyaW5nCisJICogd2l0aCBhZ2dy ZWdhdGUgcHJvY2Vzc2luZy4KKwkgKi8KKwlpZiAobm9kZS0+cnBQYXR0ZXJuICE9IE5VTEwpCisJ eworCQlXaW5kb3dPYmplY3QgbmF2X3dpbm9iaiA9IG1ha2VOb2RlKFdpbmRvd09iamVjdERhdGEp OworCisJCW5hdl93aW5vYmotPndpbnN0YXRlID0gd2luc3RhdGU7CisJCW5hdl93aW5vYmotPmFy Z3N0YXRlcyA9IE5JTDsKKwkJbmF2X3dpbm9iai0+bG9jYWxtZW0gPSBOVUxMOworCQluYXZfd2lu b2JqLT5tYXJrcHRyID0gLTE7CisJCW5hdl93aW5vYmotPnJlYWRwdHIgPSAtMTsKKwkJd2luc3Rh dGUtPm5hdl93aW5vYmogPSBuYXZfd2lub2JqOworCX0KKwogCS8qIFNldCB0aGUgc3RhdHVzIHRv IHJ1bm5pbmcgKi8KIAl3aW5zdGF0ZS0+c3RhdHVzID0gV0lORE9XQUdHX1JVTjsKIApAQCAtMjk3 NSw3ICszMDA2LDkgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAobm9kZS0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkKIAl7 CiAJCS8qCi0JCSAqIFR3ZWFrIGFyZyB2YXIgb2YgUFJFVi9ORVhUIHNvIHRoYXQgaXQgcmVmZXJz IHRvIHNjYW4vaW5uZXIgc2xvdC4KKwkJICogQ29tcGlsZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Np b25zLiAgUFJFVi9ORVhUIG5hdmlnYXRpb24gaXMgaGFuZGxlZAorCQkgKiBieSBFRU9QX1JQUl9O QVZfU0VUL1JFU1RPUkUgb3Bjb2RlcyBlbWl0dGVkIGR1cmluZyBFeGVjSW5pdEV4cHIsIHNvCisJ CSAqIG5vIHZhcm5vIHJld3JpdGluZyBpcyBuZWVkZWQgaGVyZS4KIAkJICovCiAJCWZvcmVhY2go bCwgbm9kZS0+ZGVmaW5lQ2xhdXNlKQogCQl7CkBAIC0yOTkyLDcgKzMwMjUsNiBAQCBFeGVjSW5p dFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CQkJd2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9CiAJCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ ZGVmaW5lVmFyaWFibGVMaXN0LAogCQkJCQkJbWFrZVN0cmluZyhwc3RyZHVwKG5hbWUpKSk7Ci0J CQlhdHRub19tYXAoKE5vZGUgKikgZXhwcik7CiAJCQlleHBzID0gRXhlY0luaXRFeHByKGV4cHIs IChQbGFuU3RhdGUgKikgd2luc3RhdGUpOwogCQkJd2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3Qg PQogCQkJCWxhcHBlbmQod2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3QsIGV4cHMpOwpAQCAtMzAy NywxMDcgKzMwNTksMzggQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIH0KIAogLyoKLSAqIFJld3JpdGUgdmFybm8gb2YgVmFy IG5vZGVzIHRoYXQgYXJlIHRoZSBhcmd1bWVudCBvZiBQUkVWL05FVCBzbyB0aGF0IHRoZXkKLSAq IHNlZSBzY2FuIHR1cGxlIChQUkVWKSBvciBpbm5lciB0dXBsZSAoTkVYVCkuICBBbHNvIHdlIGNo ZWNrIHRoZSBhcmd1bWVudHMKLSAqIG9mIFBSRVYvTkVYVCBpbmNsdWRlIGF0IGxlYXN0IDEgY29s dW1uIHJlZmVyZW5jZS4gVGhpcyBpcyByZXF1aXJlZCBieSB0aGUKLSAqIFNRTCBzdGFuZGFyZC4K KyAqIEV4ZWNSUFJOYXZHZXRTbG90CisgKgorICogRmV0Y2ggdHVwbGUgYXQgZ2l2ZW4gcG9zaXRp b24gZm9yIFJQUiBuYXZpZ2F0aW9uIG9wY29kZXMuCisgKiBSZXR1cm5zIG5hdl9zbG90IHdpdGgg dGhlIHR1cGxlIGxvYWRlZCwgb3IgbmF2X251bGxfc2xvdCBpZiBvdXQgb2YgcmFuZ2UuCiAgKi8K LXN0YXRpYyB2b2lkCi1hdHRub19tYXAoTm9kZSAqbm9kZSkKK1R1cGxlVGFibGVTbG90ICoKK0V4 ZWNSUFJOYXZHZXRTbG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKQogewot CSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGF0dG5vX21hcF93YWxrZXIsIE5V TEwpOwotfQorCVdpbmRvd09iamVjdCB3aW5vYmogPSB3aW5zdGF0ZS0+bmF2X3dpbm9iajsKKwlU dXBsZVRhYmxlU2xvdCAqc2xvdCA9IHdpbnN0YXRlLT5uYXZfc2xvdDsKIAotc3RhdGljIGJvb2wK LWF0dG5vX21hcF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKLXsKLQlGdW5jRXhw ciAgICpmdW5jOwotCWludAkJCW5hcmdzOwotCWJvb2wJCWlzX3ByZXY7CisJaWYgKHBvcyA8IDAp CisJCXJldHVybiB3aW5zdGF0ZS0+bmF2X251bGxfc2xvdDsKIAotCWlmIChub2RlID09IE5VTEwp Ci0JCXJldHVybiBmYWxzZTsKKwkvKgorCSAqIElmIG5hdl9zbG90IGFscmVhZHkgaG9sZHMgdGhp cyBwb3NpdGlvbiwgcmV0dXJuIGl0IHdpdGhvdXQgcmUtZmV0Y2hpbmcuCisJICogVGhpcyBpcyBj cml0aWNhbCB3aGVuIG11bHRpcGxlIFBSRVYvTkVYVCBjYWxscyBpbiB0aGUgc2FtZSBleHByZXNz aW9uCisJICogbmF2aWdhdGUgdG8gdGhlIHNhbWUgcm93LCBiZWNhdXNlIHJlLWZldGNoaW5nIHdv dWxkIGZyZWUgdGhlIHNsb3QncworCSAqIHR1cGxlIG1lbW9yeSBhbmQgaW52YWxpZGF0ZSBhbnkg cGFzcy1ieS1yZWYgRGF0dW0gcG9pbnRlcnMgZnJvbSBlYXJsaWVyCisJICogbmF2aWdhdGlvbiBy ZXN1bHRzLgorCSAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID09IHBvcykKKwkJcmV0 dXJuIHNsb3Q7CiAKLQlpZiAoSXNBKG5vZGUsIEZ1bmNFeHByKSkKKwlpZiAoIXdpbmRvd19nZXR0 dXBsZXNsb3Qod2lub2JqLCBwb3MsIHNsb3QpKQogCXsKLQkJZnVuYyA9IChGdW5jRXhwciAqKSBu b2RlOwotCi0JCWlmIChmdW5jLT5mdW5jaWQgPT0gRl9QUkVWIHx8IGZ1bmMtPmZ1bmNpZCA9PSBG X05FWFQpCi0JCXsKLQkJCS8qCi0JCQkgKiBUaGUgU1FMIHN0YW5kYXJkIGFsbG93cyB0byBoYXZl IHR3byBtb3JlIGFyZ3VtZW50cyBmb3JtIG9mCi0JCQkgKiBQUkVWL05FWFQuICBCdXQgY3VycmVu dGx5IHdlIGFsbG93IG9ubHkgMSBhcmd1bWVudCBmb3JtLgotCQkJICovCi0JCQluYXJncyA9IGxp c3RfbGVuZ3RoKGZ1bmMtPmFyZ3MpOwotCQkJaWYgKGxpc3RfbGVuZ3RoKGZ1bmMtPmFyZ3MpICE9 IDEpCi0JCQkJZWxvZyhFUlJPUiwgIlBSRVYvTkVYVCBtdXN0IGhhdmUgMSBhcmd1bWVudCBidXQg ZnVuY3Rpb24gJWQgaGFzICVkIGFyZ3MiLAotCQkJCQkgZnVuYy0+ZnVuY2lkLCBuYXJncyk7Ci0K LQkJCS8qCi0JCQkgKiBDaGVjayBleHByIG9mIFBSRVYvTkVYVCBhcnVndW1lbnRzIGFuZCByZXBs YWNlIHZhcm5vLgotCQkJICovCi0JCQlpc19wcmV2ID0gKGZ1bmMtPmZ1bmNpZCA9PSBGX1BSRVYp ID8gdHJ1ZSA6IGZhbHNlOwotCQkJY2hlY2tfcnByX25hdmlnYXRpb24obm9kZSwgaXNfcHJldik7 Ci0JCX0KKwkJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOworCQlyZXR1cm4gd2luc3RhdGUt Pm5hdl9udWxsX3Nsb3Q7CiAJfQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUs IGF0dG5vX21hcF93YWxrZXIsIE5VTEwpOwotfQogCi0vKgotICogUmV3cml0ZSB2YXJubyBvZiBW YXIgb2YgUlBSIG5hdmlnYXRpb24gb3BlcmF0aW9ucyAoUFJFVi9ORVhUKS4KLSAqIElmIGlzX3By ZXYgaXMgdHJ1ZSwgd2UgdGFrZSBjYXJlIFBSRVYsIG90aGVyd2lzZSBORVhULgotICovCi1zdGF0 aWMgdm9pZAotY2hlY2tfcnByX25hdmlnYXRpb24oTm9kZSAqbm9kZSwgYm9vbCBpc19wcmV2KQot ewotCU5hdmlnYXRpb25JbmZvIGNvbnRleHQ7Ci0KLQljb250ZXh0LmlzX3ByZXYgPSBpc19wcmV2 OwotCWNvbnRleHQubnVtX3ZhcnMgPSAwOwotCSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy KG5vZGUsIHJwcl9uYXZpZ2F0aW9uX3dhbGtlciwgJmNvbnRleHQpOwotCWlmIChjb250ZXh0Lm51 bV92YXJzIDwgMSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb3BlcmF0aW9uJ3MgYXJndW1lbnQgbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBj b2x1bW4gcmVmZXJlbmNlIikpOwotfQotCi1zdGF0aWMgYm9vbAotcnByX25hdmlnYXRpb25fd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCi17Ci0JTmF2aWdhdGlvbkluZm8gKm5hdiA9 IChOYXZpZ2F0aW9uSW5mbyAqKSBjb250ZXh0OwotCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0 dXJuIGZhbHNlOwotCi0Jc3dpdGNoIChub2RlVGFnKG5vZGUpKQotCXsKLQkJY2FzZSBUX1ZhcjoK LQkJCXsKLQkJCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7Ci0KLQkJCQluYXYtPm51bV92 YXJzKys7Ci0KLQkJCQlpZiAobmF2LT5pc19wcmV2KQotCQkJCXsKLQkJCQkJLyoKLQkJCQkJICog UmV3cml0ZSB2YXJubyBmcm9tIE9VVEVSX1ZBUiB0byByZWd1bGFyIHZhciBubyBzbyB0aGF0Ci0J CQkJCSAqIHRoZSB2YXIgcmVmZXJlbmNlcyBzY2FuIHR1cGxlLgotCQkJCQkgKi8KLQkJCQkJdmFy LT52YXJubyA9IHZhci0+dmFybm9zeW47Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQkJdmFyLT52YXJu byA9IElOTkVSX1ZBUjsKLQkJCX0KLQkJCWJyZWFrOwotCQljYXNlIFRfQ29uc3Q6Ci0JCWNhc2Ug VF9GdW5jRXhwcjoKLQkJY2FzZSBUX09wRXhwcjoKLQkJCWJyZWFrOwotCi0JCWRlZmF1bHQ6Ci0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3Bl cmF0aW9uJ3MgYXJndW1lbnQgaW5jbHVkZXMgdW5zdXBwb3J0ZWQgZXhwcmVzc2lvbiIpKTsKLQl9 Ci0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgcnByX25hdmlnYXRpb25fd2Fs a2VyLCBjb250ZXh0KTsKKwl3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gcG9zOworCXJldHVybiBz bG90OwogfQogCiAKQEAgLTMxODgsOCArMzE1MSw4IEBAIEV4ZWNSZVNjYW5XaW5kb3dBZ2coV2lu ZG93QWdnU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+YWdnX3Jvd19zbG90KTsK IAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMSk7CiAJRXhlY0NsZWFyVHVwbGUobm9k ZS0+dGVtcF9zbG90XzIpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnByZXZfc2xvdCk7Ci0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+bmV4dF9zbG90KTsKKwlpZiAobm9kZS0+bmF2X3Nsb3QpCisJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPm5hdl9zbG90KTsKIAlpZiAobm9kZS0+ZnJhbWVoZWFkX3Nsb3Qp CiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmZyYW1laGVhZF9zbG90KTsKIAlpZiAobm9kZS0+ZnJh bWV0YWlsX3Nsb3QpCkBAIC00Mjc4LDYgKzQyNDEsMTAgQEAgcmVnaXN0ZXJfcmVzdWx0OgogICog UmV0dXJucyB0cnVlIGlmIHRoZSByb3cgZXhpc3RzLCBmYWxzZSBpZiBvdXQgb2YgcGFydGl0aW9u LgogICogSWYgcm93IGV4aXN0cywgZmlsbHMgdmFyTWF0Y2hlZCBhcnJheS4KICAqIHZhck1hdGNo ZWRbaV0gPSB0cnVlIGlmIHZhcmlhYmxlIGkgbWF0Y2hlZCBhdCBjdXJyZW50IHJvdy4KKyAqCisg KiBVc2VzIDEtc2xvdCBtb2RlbDogb25seSBlY3h0X291dGVydHVwbGUgaXMgc2V0IHRvIHRoZSBj dXJyZW50IHJvdy4KKyAqIFBSRVYvTkVYVCBuYXZpZ2F0aW9uIGlzIGhhbmRsZWQgYnkgRUVPUF9S UFJfTkFWX1NFVC9SRVNUT1JFIG9wY29kZXMKKyAqIGR1cmluZyBleHByZXNzaW9uIGV2YWx1YXRp b24sIHdoaWNoIHRlbXBvcmFyaWx5IHN3YXAgdGhlIHNsb3QuCiAgKi8KIHN0YXRpYyBib29sCiBu ZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAqdmFy TWF0Y2hlZCkKQEAgLTQyODgsMzcgKzQyNTUsMjUgQEAgbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dP YmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpCiAJTGlzdENlbGwgICAq bGM7CiAJaW50CQkJdmFySWR4ID0gMDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlpbnQ2NAkJ c2F2ZWRfcG9zOwogCi0JLyoKLQkgKiBTZXQgdXAgc2xvdHMgZm9yIGN1cnJlbnQsIHByZXZpb3Vz LCBhbmQgbmV4dCByb3dzLiBXZSBkb24ndCBjYWxsCi0JICogZ2V0X3Nsb3RzKCkgaGVyZSB0byBh dm9pZCByZWN1cnNpb24gdGhyb3VnaCByb3dfaXNfaW5fZnJhbWUgLT4KLQkgKiB1cGRhdGVfcmVk dWNlZF9mcmFtZSAtPiBFeGVjUlBSUHJvY2Vzc1Jvdy4KLQkgKi8KLQotCS8qIEN1cnJlbnQgcm93 IC0+IGVjeHRfb3V0ZXJ0dXBsZSAqLworCS8qIEZldGNoIGN1cnJlbnQgcm93IGludG8gdGVtcF9z bG90XzEgKi8KIAlzbG90ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOwogCWlmICghd2luZG93X2dl dHR1cGxlc2xvdCh3aW5vYmosIHBvcywgc2xvdCkpCiAJCXJldHVybiBmYWxzZTsJCQkvKiBObyBy b3cgZXhpc3RzICovCisKKwkvKiBTZXQgdXAgMS1zbG90IGNvbnRleHQ6IG9ubHkgZWN4dF9vdXRl cnR1cGxlICovCiAJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHNsb3Q7CiAKLQkvKiBQcmV2 aW91cyByb3cgLT4gZWN4dF9zY2FudHVwbGUgKGZvciBQUkVWKSAqLwotCWlmIChwb3MgPiAwKQot CXsKLQkJc2xvdCA9IHdpbnN0YXRlLT5wcmV2X3Nsb3Q7Ci0JCWlmICghd2luZG93X2dldHR1cGxl c2xvdCh3aW5vYmosIHBvcyAtIDEsIHNsb3QpKQotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxl ID0gd2luc3RhdGUtPm51bGxfc2xvdDsKLQkJZWxzZQotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlID0gc2xvdDsKLQl9Ci0JZWxzZQotCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSB3aW5z dGF0ZS0+bnVsbF9zbG90OworCS8qCisJICogU2F2ZSBhbmQgc2V0IGN1cnJlbnRwb3Mgc28gdGhh dCBFRU9QX1JQUl9OQVZfU0VUIG9wY29kZXMgY2FuIGNhbGN1bGF0ZQorCSAqIHRhcmdldCBwb3Np dGlvbnMgKGN1cnJlbnRwb3MgKy8tIG9mZnNldCkuCisJICovCisJc2F2ZWRfcG9zID0gd2luc3Rh dGUtPmN1cnJlbnRwb3M7CisJd2luc3RhdGUtPmN1cnJlbnRwb3MgPSBwb3M7CiAKLQkvKiBOZXh0 IHJvdyAtPiBlY3h0X2lubmVydHVwbGUgKGZvciBORVhUKSAqLwotCXNsb3QgPSB3aW5zdGF0ZS0+ bmV4dF9zbG90OwotCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIHBvcyArIDEsIHNs b3QpKQotCQllY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlID0gd2luc3RhdGUtPm51bGxfc2xvdDsK LQllbHNlCi0JCWVjb250ZXh0LT5lY3h0X2lubmVydHVwbGUgPSBzbG90OworCS8qIEludmFsaWRh dGUgbmF2X3Nsb3QgY2FjaGUgc28gUFJFVi9ORVhUIHJlLWZldGNoIGZvciBuZXcgcm93ICovCisJ d2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOwogCiAJZm9yZWFjaChsYywgd2luc3RhdGUtPmRl ZmluZUNsYXVzZUxpc3QpCiAJewpAQCAtNDMzNiw2ICs0MjkxLDggQEAgbmZhX2V2YWx1YXRlX3Jv dyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpCiAJCQli cmVhazsKIAl9CiAKKwl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IHNhdmVkX3BvczsKKwogCXJldHVy biB0cnVlOwkJCQkvKiBSb3cgZXhpc3RzICovCiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMKaW5kZXggNjUwZjFkNDJhOTMuLmQxNThlMzdlN2I1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYwpAQCAtMjk2LDYgKzI5Niw0MCBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHBy U3RhdGUgKnN0YXRlKQogCQkJCQkJCQkgICBGSUVMRE5PX0VYUFJDT05URVhUX0FHR05VTExTLAog CQkJCQkJCQkgICAidi5lY29udGV4dC5hZ2dudWxscyIpOwogCisJLyoKKwkgKiBSUFIgbmF2aWdh dGlvbiBvcGNvZGVzIChQUkVWL05FWFQpIHN3YXAgZWN4dF9vdXRlcnR1cGxlIHRvIGEgZGlmZmVy ZW50CisJICogcm93IG1pZC1leHByZXNzaW9uLiAgVGhlIEpJVCBjb2RlIGxvYWRzIHZfb3V0ZXJ2 YWx1ZXMgYW5kIHZfb3V0ZXJudWxscworCSAqIG9uY2UgaW4gdGhlIGVudHJ5IGJsb2NrIGFuZCBy ZXVzZXMgdGhlbSBmb3IgYWxsIEVFT1BfT1VURVJfVkFSIHN0ZXBzLgorCSAqIEFmdGVyIGEgc2xv dCBzd2FwLCB0aGVzZSBwb2ludGVycyBiZWNvbWUgc3RhbGUgYmVjYXVzZSB0aGUgbmV3IHNsb3Qg aGFzCisJICogaXRzIG93biB0dHNfdmFsdWVzL3R0c19pc251bGwgYXJyYXlzLiAgRmFsbCBiYWNr IHRvIHRoZSBpbnRlcnByZXRlciBmb3IKKwkgKiB0aGVzZSBleHByZXNzaW9ucy4KKwkgKgorCSAq IFhYWCBUbyBKSVQtY29tcGlsZSB0aGVzZSBleHByZXNzaW9ucyBwcm9wZXJseSwgdGhlIE5BVl9T RVQgYW5kCisJICogTkFWX1JFU1RPUkUgaGFuZGxlcnMgd291bGQgbmVlZCB0byByZWxvYWQgdGhl IHR0c192YWx1ZXMgYW5kIHR0c19pc251bGwKKwkgKiBwb2ludGVycyBmcm9tIHRoZSBuZXcgc2xv dC4gIEhvd2V2ZXIsIExMVk0gdXNlcyBTU0EgKFN0YXRpYyBTaW5nbGUKKwkgKiBBc3NpZ25tZW50 KSBmb3JtIHdoZXJlIGVhY2ggdmFsdWUgaXMgZGVmaW5lZCBleGFjdGx5IG9uY2UuICBXaGVuCisJ ICogZGlmZmVyZW50IGJhc2ljIGJsb2NrcyBwcm9kdWNlIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRo ZSBzYW1lIHBvaW50ZXIsCisJICogTExWTSByZXF1aXJlcyBQSEkgbm9kZXMgYXQgdGhlIG1lcmdl IHBvaW50IHRvIHNlbGVjdCB0aGUgY29ycmVjdCBvbmUuCisJICogV2l0aG91dCB0aGF0IHBsdW1i aW5nLCBPVVRFUl9WQVIgc3RlcHMgYWZ0ZXIgYSBzbG90IHN3YXAgd291bGQgcmVhZAorCSAqIGZy b20gdGhlIHdyb25nIHBvaW50ZXIuCisJICovCisJaWYgKHBhcmVudCAmJiBJc0EocGFyZW50LCBX aW5kb3dBZ2dTdGF0ZSkgJiYKKwkJKChXaW5kb3dBZ2cgKikgcGFyZW50LT5wbGFuKS0+cnBQYXR0 ZXJuICE9IE5VTEwpCisJeworCQlmb3IgKGludCBvcG5vID0gMDsgb3BubyA8IHN0YXRlLT5zdGVw c19sZW47IG9wbm8rKykKKwkJeworCQkJRXhwckV2YWxPcAlvcGNvZGUgPSBFeGVjRXZhbFN0ZXBP cChzdGF0ZSwgJnN0YXRlLT5zdGVwc1tvcG5vXSk7CisKKwkJCWlmIChvcGNvZGUgPT0gRUVPUF9S UFJfTkFWX1NFVCB8fAorCQkJCW9wY29kZSA9PSBFRU9QX1JQUl9OQVZfUkVTVE9SRSkKKwkJCXsK KwkJCQlMTFZNRGVsZXRlRnVuY3Rpb24oZXZhbF9mbik7CisJCQkJTExWTURpc3Bvc2VCdWlsZGVy KGIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCX0KKwogCS8qIGFsbG9jYXRlIGJs b2NrcyBmb3IgZWFjaCBvcCB1cGZyb250LCBzbyB3ZSBjYW4gZG8ganVtcHMgZWFzaWx5ICovCiAJ b3BibG9ja3MgPSBwYWxsb2NfYXJyYXkoTExWTUJhc2ljQmxvY2tSZWYsIHN0YXRlLT5zdGVwc19s ZW4pOwogCWZvciAoaW50IG9wbm8gPSAwOyBvcG5vIDwgc3RhdGUtPnN0ZXBzX2xlbjsgb3Bubysr KQpAQCAtMjQzMiw2ICsyNDY2LDEyIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3Rh dGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsK IAorCQkJY2FzZSBFRU9QX1JQUl9OQVZfU0VUOgorCQkJY2FzZSBFRU9QX1JQUl9OQVZfUkVTVE9S RToKKwkJCQkvKiB1bnJlYWNoYWJsZTogZmlsdGVyZWQgb3V0IGJ5IHRoZSBwcmUtc2NhbiBhYm92 ZSAqLworCQkJCUFzc2VydChmYWxzZSk7CisJCQkJcmV0dXJuIGZhbHNlOworCiAJCQljYXNlIEVF T1BfQUdHX1NUUklDVF9ERVNFUklBTElaRToKIAkJCWNhc2UgRUVPUF9BR0dfREVTRVJJQUxJWkU6 CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5j IGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IGM4YTFmODQxMjkz Li5lNzhiMzFkNzc1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90 eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTY4 LDYgKzE2OCw4IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVuY3Rpb25zW10gPQogCUV4ZWNFdmFs U2NhbGFyQXJyYXlPcCwKIAlFeGVjRXZhbEhhc2hlZFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxT dWJQbGFuLAorCUV4ZWNFdmFsUlBSTmF2U2V0LAorCUV4ZWNFdmFsUlBSTmF2UmVzdG9yZSwKIAlF eGVjRXZhbFN5c1ZhciwKIAlFeGVjRXZhbFdob2xlUm93VmFyLAogCUV4ZWNFdmFsWG1sRXhwciwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggMWFkZGE3YzVkODQuLmQyZjE5NTg0MDcwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYwpAQCAtNjksNiArNjksOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHBy KQogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKIAkJCXR5cGUgPSAoKGNvbnN0IE1lcmdlU3Vw cG9ydEZ1bmMgKikgZXhwciktPm1zZnR5cGU7CiAJCQlicmVhazsKKwkJY2FzZSBUX1JQUk5hdkV4 cHI6CisJCQl0eXBlID0gKChjb25zdCBSUFJOYXZFeHByICopIGV4cHIpLT5yZXN1bHR0eXBlOwor CQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQl0eXBlID0gKChjb25zdCBT dWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZnJlc3R5cGU7CiAJCQlicmVhazsKQEAgLTg1Myw2 ICs4NTYsOSBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9NZXJn ZVN1cHBvcnRGdW5jOgogCQkJY29sbCA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHBy KS0+bXNmY29sbGlkOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJY29sbCA9 ICgoY29uc3QgUlBSTmF2RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQljb2xsID0gKChjb25zdCBTdWJzY3JpcHRpbmdS ZWYgKikgZXhwciktPnJlZmNvbGxpZDsKIAkJCWJyZWFrOwpAQCAtMTE1NCw2ICsxMTYwLDkgQEAg ZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0aW9uKQogCQljYXNlIFRfTWVy Z2VTdXBwb3J0RnVuYzoKIAkJCSgoTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bXNmY29sbGlk ID0gY29sbGF0aW9uOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJKChSUFJO YXZFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJ Y2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5y ZWZjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTE0MjYsNiArMTQzNSw5IEBAIGV4 cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoK IAkJCWxvYyA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bG9jYXRpb247CiAJ CQlicmVhazsKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQlsb2MgPSAoKGNvbnN0IFJQUk5hdkV4 cHIgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdS ZWY6CiAJCQkvKiBqdXN0IHVzZSBjb250YWluZXIgYXJndW1lbnQncyBsb2NhdGlvbiAqLwogCQkJ bG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgoY29uc3QgU3Vic2NyaXB0aW5nUmVmICopIGV4 cHIpLT5yZWZleHByKTsKQEAgLTIxODcsNiArMjE5OSwxNiBAQCBleHByZXNzaW9uX3RyZWVfd2Fs a2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsK KwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJUlBSTmF2RXhwciAqZXhwciA9IChSUFJO YXZFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhleHByLT5hcmcpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoZXhwci0+b2Zmc2V0X2FyZyAmJiBXQUxLKGV4cHItPm9mZnNldF9hcmcp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0 aW5nUmVmOgogCQkJewogCQkJCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGlu Z1JlZiAqKSBub2RlOwpAQCAtMzExNiw2ICszMTM4LDE3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRh dG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0K IAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJCQlSUFJOYXZFeHByICpu YXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCVJQUk5hdkV4cHIgKm5ld25vZGU7CisKKwkJ CQlGTEFUQ09QWShuZXdub2RlLCBuYXYsIFJQUk5hdkV4cHIpOworCQkJCU1VVEFURShuZXdub2Rl LT5hcmcsIG5hdi0+YXJnLCBFeHByICopOworCQkJCU1VVEFURShuZXdub2RlLT5vZmZzZXRfYXJn LCBuYXYtPm9mZnNldF9hcmcsIEV4cHIgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7 CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCXsKIAkJCQlT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jCmluZGV4IDIzYjAyZmIzYmMwLi5lMTRmZjRkYzQ5NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jCkBAIC03NjAsNyArNzYwLDggQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJLyogbmV4dCgp IGFuZCBwcmV2KCkgYXJlIG9ubHkgYWxsb3dlZCBpbiBhIFdJTkRPVyBERUZJTkUgY2xhdXNlICov CiAJaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFMICYmCiAJCXBzdGF0ZS0+cF9leHBy X2tpbmQgIT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUgJiYKLQkJKGZ1bmNpZCA9PSBGX1BSRVYgfHwg ZnVuY2lkID09IEZfTkVYVCkpCisJCShmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVu Y2lkID09IEZfTkVYVF9BTllFTEVNRU5UIHx8CisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1F TlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCkpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJtc2co IiVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlIiwKQEAgLTc2OCw3ICs3Njks MzIgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFt ZSwgTGlzdCAqZmFyZ3MsCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u KSkpOwogCiAJLyogYnVpbGQgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBzdHJ1Y3R1cmUgKi8KLQlp ZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJ TF9QUk9DRURVUkUpCisJaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFMICYmCisJCShm dW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5U IHx8CisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9O RVhUX0FOWUVMRU1FTlRfSU5UOCkpCisJeworCQkvKgorCQkgKiBQUkVWKCkgYW5kIE5FWFQoKSBh cmUgY29tcGlsZWQgaW50byBFRU9QX1JQUl9OQVZfU0VUIC8KKwkJICogRUVPUF9SUFJfTkFWX1JF U1RPUkUgb3Bjb2RlcyBpbnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwuCisJCSAqIFJl cHJlc2VudCB0aGVtIGFzIFJQUk5hdkV4cHIgbm9kZXMgc28gdGhhdCBsYXRlciBzdGFnZXMgY2Fu CisJCSAqIGlkZW50aWZ5IHRoZW0gd2l0aG91dCByZWx5aW5nIG9uIGZ1bmNpZCBjb21wYXJpc29u cy4KKwkJICovCisJCWJvb2wJCWlzX25leHQgPSAoZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5U IHx8CisJCQkJCQkJICAgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpOworCQlib29s CQloYXNfb2Zmc2V0ID0gKGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVF9JTlQ4IHx8CisJCQkJ CQkJCSAgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpOworCQlSUFJOYXZFeHByICpu YXZleHByID0gbWFrZU5vZGUoUlBSTmF2RXhwcik7CisKKwkJbmF2ZXhwci0+a2luZCA9IGlzX25l eHQgPyBSUFJfTkFWX05FWFQgOiBSUFJfTkFWX1BSRVY7CisJCW5hdmV4cHItPmFyZyA9IChFeHBy ICopIGxpbml0aWFsKGZhcmdzKTsKKwkJbmF2ZXhwci0+b2Zmc2V0X2FyZyA9IGhhc19vZmZzZXQg PyAoRXhwciAqKSBsc2Vjb25kKGZhcmdzKSA6IE5VTEw7CisJCW5hdmV4cHItPnJlc3VsdHR5cGUg PSByZXR0eXBlOworCQkvKiByZXN1bHRjb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0 ZS5jICovCisJCW5hdmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwkJcmV0dmFsID0gKE5v ZGUgKikgbmF2ZXhwcjsKKwl9CisJZWxzZSBpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JN QUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9QUk9DRURVUkUpCiAJewogCQlGdW5jRXhwciAg ICpmdW5jZXhwciA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmlu ZGV4IDU1MjgzYWI0YmJlLi4xMzU1OTg5ZTY2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAt MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgi CkBAIC00MSw2ICs0Miw4IEBAIHN0YXRpYyB2b2lkIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgICBM aXN0ICpycERlZnMsIExpc3QgKip2YXJOYW1lcyk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVm aW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywKIAkJCQkJCQkJ ICAgV2luZG93RGVmICp3aW5kZWYsIExpc3QgKip0YXJnZXRsaXN0KTsKK3N0YXRpYyB2b2lkIGNo ZWNrX3Jwcl9uYXZfZXhwcihSUFJOYXZFeHByICpuYXYsIFBhcnNlU3RhdGUgKnBzdGF0ZSk7Citz dGF0aWMgYm9vbCBjaGVja19ycHJfbmF2X25lc3Rpbmdfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpOwogCiAvKgogICogdHJhbnNmb3JtUlBSCkBAIC00MDAsNiArNDAzLDEwIEBAIHRy YW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2Ms IFdpbmRvd0RlZiAqd2luZGVmLAogCWZvcmVhY2hfcHRyKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5l Q2xhdXNlKQogCQl0ZS0+ZXhwciA9IChFeHByICopIGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwg KE5vZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKIAorCS8qIGNoZWNrIGZvciBuZXN0ZWQgUFJF Vi9ORVhUIGFuZCBtaXNzaW5nIGNvbHVtbiByZWZlcmVuY2VzICovCisJZm9yZWFjaF9wdHIoVGFy Z2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJCSh2b2lkKSBjaGVja19ycHJfbmF2X25lc3Rp bmdfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCBwc3RhdGUpOworCiAJLyogbWFyayBjb2x1bW4g b3JpZ2lucyAqLwogCW1hcmtUYXJnZXRMaXN0T3JpZ2lucyhwc3RhdGUsIGRlZmluZUNsYXVzZSk7 CiAKQEAgLTQwOCwzICs0MTUsODMgQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAKIAlyZXR1cm4g ZGVmaW5lQ2xhdXNlOwogfQorCisvKgorICogY2hlY2tfcnByX25hdl9leHByCisgKgkJVmFsaWRh dGUgYSBzaW5nbGUgUlBSTmF2RXhwciBub2RlIGJ5IHdhbGtpbmcgaXRzIGFyZyBhbmQgb2Zmc2V0 X2FyZworICoJCXN1YnRyZWVzIGluIGEgc2luZ2xlIHBhc3MgZWFjaC4gIENoZWNrcyBmb3IgbmVz dGVkIFBSRVYvTkVYVCwgbWlzc2luZworICoJCWNvbHVtbiByZWZlcmVuY2VzLCBhbmQgbm9uLWNv bnN0YW50IG9mZnNldCBleHByZXNzaW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlib29s CQloYXNfbmF2OwkJLyogUlBSTmF2RXhwciBmb3VuZCAobmVzdGluZykgKi8KKwlib29sCQloYXNf Y29sdW1uX3JlZjsgLyogVmFyIGZvdW5kICovCit9CQkJTmF2Q2hlY2tSZXN1bHQ7CisKK3N0YXRp YyBib29sCituYXZfY2hlY2tfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJ TmF2Q2hlY2tSZXN1bHQgKnJlc3VsdCA9IChOYXZDaGVja1Jlc3VsdCAqKSBjb250ZXh0OworCisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChJc0Eobm9kZSwgUlBSTmF2 RXhwcikpCisJCXJlc3VsdC0+aGFzX25hdiA9IHRydWU7CisJaWYgKElzQShub2RlLCBWYXIpKQor CQlyZXN1bHQtPmhhc19jb2x1bW5fcmVmID0gdHJ1ZTsKKworCXJldHVybiBleHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKG5vZGUsIG5hdl9jaGVja193YWxrZXIsIGNvbnRleHQpOworfQorCitzdGF0aWMg dm9pZAorY2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4cHIgKm5hdiwgUGFyc2VTdGF0ZSAqcHN0 YXRlKQoreworCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsKKworCS8qIENoZWNrIGFyZyBzdWJ0cmVl OiBuZXN0aW5nICsgY29sdW1uIHJlZmVyZW5jZSBpbiBvbmUgd2FsayAqLworCW1lbXNldCgmcmVz dWx0LCAwLCBzaXplb2YocmVzdWx0KSk7CisJKHZvaWQpIG5hdl9jaGVja193YWxrZXIoKE5vZGUg KikgbmF2LT5hcmcsICZyZXN1bHQpOworCisJaWYgKHJlc3VsdC5oYXNfbmF2KQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQiKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwlpZiAoIXJlc3VsdC5oYXNf Y29sdW1uX3JlZikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJIGVycm1zZygiYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlv biBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlIiks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisKKwkv KiBDaGVjayBvZmZzZXRfYXJnOiBjb2x1bW4gcmVmICsgdm9sYXRpbGUgaW4gb25lIHdhbGsgKi8K KwlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJeworCQltZW1zZXQoJnJlc3VsdCwgMCwg c2l6ZW9mKHJlc3VsdCkpOworCQkodm9pZCkgbmF2X2NoZWNrX3dhbGtlcigoTm9kZSAqKSBuYXYt Pm9mZnNldF9hcmcsICZyZXN1bHQpOworCisJCWlmIChyZXN1bHQuaGFzX2NvbHVtbl9yZWYgfHwK KwkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZykp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10 aW1lIGNvbnN0YW50IiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBuYXYtPmxv Y2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIK KyAqCQlXYWxrIHRoZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb24gdHJlZSBhbmQgdmFsaWRhdGUg ZWFjaCBSUFJOYXZFeHByLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfcnByX25hdl9uZXN0aW5n X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKwlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQorCXsKKwkJY2hl Y2tfcnByX25hdl9leHByKChSUFJOYXZFeHByICopIG5vZGUsIChQYXJzZVN0YXRlICopIGNvbnRl eHQpOworCQkvKiBkb24ndCByZWN1cnNlIGludG8gYXJnOyBuZXN0aW5nIGFscmVhZHkgY2hlY2tl ZCBhYm92ZSAqLworCQlyZXR1cm4gZmFsc2U7CisJfQorCXJldHVybiBleHByZXNzaW9uX3RyZWVf d2Fsa2VyKG5vZGUsIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIsIGNvbnRleHQpOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDI1YmM3ZGQ3Nzc5Li43MmY0ZjI2MzUzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTAxMDYsNiArMTAxMDYsMjIgQEAgZ2V0 X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQlnZXRf ZnVuY19leHByKChGdW5jRXhwciAqKSBub2RlLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJUlBSTmF2RXhwciAqbmF2 ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAorCQkJCQkJCQkJICAgbmF2LT5raW5kID09IFJQUl9OQVZfUFJFViA/ICJQUkVWKCIgOiAiTkVY VCgiKTsKKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+YXJnLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworCQkJCWlmIChuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisJCQkJfQor CQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJ CWNhc2UgVF9OYW1lZEFyZ0V4cHI6CiAJCQl7CiAJCQkJTmFtZWRBcmdFeHByICpuYSA9IChOYW1l ZEFyZ0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5k b3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKaW5kZXggNzRl ZjEwOWY3MmUuLjA5MTI2MGQyY2NlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv d2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYwpA QCAtNzI2LDIyICs3MjYsNjIgQEAgd2luZG93X250aF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQog CiAvKgogICogcHJldgotICogRHVtbXkgZnVuY3Rpb24gdG8gaW52b2tlIFJQUidzIG5hdmlnYXRp b24gb3BlcmF0b3IgIlBSRVYiLgotICogVGhpcyBpcyAqbm90KiBhIHdpbmRvdyBmdW5jdGlvbi4K KyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIFBSRVYgbmF2aWdhdGlvbiBvcGVyYXRv ci4KKyAqCisgKiBUaGUgcGFyc2VyIHRyYW5zZm9ybXMgcHJldigpIGNhbGxzIGluc2lkZSBERUZJ TkUgaW50byBSUFJOYXZFeHByIG5vZGVzLAorICogc28gdGhpcyBmdW5jdGlvbiBpcyBuZXZlciBy ZWFjaGVkIGR1cmluZyBub3JtYWwgUlBSIGV4ZWN1dGlvbi4gIEl0IGV4aXN0cworICogb25seSBz byB0aGF0IHRoZSBwYXJzZXIgY2FuIHJlc29sdmUgdGhlIGZ1bmN0aW9uIG5hbWUgZnJvbSBwZ19w cm9jLgorICogQ2FsbHMgb3V0c2lkZSBERUZJTkUgYXJlIHJlamVjdGVkIGJ5IHBhcnNlX2Z1bmMu YyAoRVhQUl9LSU5EX1JQUl9ERUZJTkUKKyAqIGNoZWNrKS4gIFRoZSBlcnJvciBiZWxvdyBpcyBh IGRlZmVuc2l2ZSBtZWFzdXJlIGluIGNhc2UgdGhhdCBjaGVjayBpcworICogYnlwYXNzZWQgKGUu Zy4sIGRpcmVjdCBDLWxldmVsIGZ1bmN0aW9uIGludm9jYXRpb24pLgogICovCiBEYXR1bQogd2lu ZG93X3ByZXYoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlQR19SRVRVUk5fREFUVU0oUEdfR0VUQVJH X0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicHJldigpIGNhbiBvbmx5IGJlIHVzZWQgaW4g YSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVk ICovCiB9CiAKIC8qCiAgKiBuZXh0Ci0gKiBEdW1teSBmdW5jdGlvbiB0byBpbnZva2UgUlBSJ3Mg bmF2aWdhdGlvbiBvcGVyYXRpb24gIk5FWFQiLgotICogVGhpcyBpcyAqbm90KiBhIHdpbmRvdyBm dW5jdGlvbi4KKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIE5FWFQgbmF2aWdhdGlv biBvcGVyYXRvci4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgogICovCiBEYXR1 bQogd2luZG93X25leHQoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlQR19SRVRVUk5fREFUVU0oUEdf R0VUQVJHX0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygibmV4dCgpIGNhbiBvbmx5IGJlIHVz ZWQgaW4gYSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCBy ZWFjaGVkICovCit9CisKKy8qCisgKiBwcmV2KHZhbHVlLCBvZmZzZXQpCisgKiBDYXRhbG9nIHBs YWNlaG9sZGVyIGZvciBSUFIncyBQUkVWIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0aCBvZmZzZXQu CisgKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19w cmV2X29mZnNldChQR19GVU5DVElPTl9BUkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJwcmV2KCkg Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UiKSkpOworCVBHX1JFVFVSTl9OVUxM KCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIG5leHQodmFsdWUsIG9mZnNldCkK KyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRv ciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgorICovCitE YXR1bQord2luZG93X25leHRfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBl cnJtc2coIm5leHQoKSBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZSIpKSk7CisJ UEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggNTU3NDlkM2U1MTcuLjM0ZTRiMzc1YTYyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTEwOTc1LDkgKzEwOTc1LDE1IEBACiB7IG9pZCA9PiAnODEyNicsIGRlc2NyID0+ ICdwcmV2aW91cyB2YWx1ZScsCiAgIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAogICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxl bWVudCcsIHByb3NyYyA9PiAnd2luZG93X3ByZXYnIH0sCit7IG9pZCA9PiAnODEyOCcsIGRlc2Ny ID0+ICdwcmV2aW91cyB2YWx1ZSBhdCBvZmZzZXQnLAorICBwcm9uYW1lID0+ICdwcmV2JywgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2FueWVs ZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3JjID0+ICd3 aW5kb3dfcHJldl9vZmZzZXQnIH0sCiB7IG9pZCA9PiAnODEyNycsIGRlc2NyID0+ICduZXh0IHZh bHVlJywKICAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlw ZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywgcHJvc3Jj ID0+ICd3aW5kb3dfbmV4dCcgfSwKK3sgb2lkID0+ICc4MTI5JywgZGVzY3IgPT4gJ25leHQgdmFs dWUgYXQgb2Zmc2V0JywKKyAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJn dHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9PiAnd2luZG93X25leHRfb2Zmc2V0 JyB9LAogCiAjIGZ1bmN0aW9ucyBmb3IgcmFuZ2UgdHlwZXMKIHsgb2lkID0+ICczODMyJywgZGVz Y3IgPT4gJ0kvTycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBhYTliMzYxZmEzMS4uZmFj MzdjOTY4OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjc0LDYgKzI3NCwxMCBAQCB0 eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfTUVSR0VfU1VQUE9SVF9GVU5DLAogCUVFT1Bf U1VCUExBTiwKIAorCS8qIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gKFJQUiBQUkVWL05FWFQpICov CisJRUVPUF9SUFJfTkFWX1NFVCwKKwlFRU9QX1JQUl9OQVZfUkVTVE9SRSwKKwogCS8qIGFnZ3Jl Z2F0aW9uIHJlbGF0ZWQgbm9kZXMgKi8KIAlFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJ RUVPUF9BR0dfREVTRVJJQUxJWkUsCkBAIC02OTEsNiArNjk1LDE2IEBAIHR5cGVkZWYgc3RydWN0 IEV4cHJFdmFsU3RlcAogCQkJU3ViUGxhblN0YXRlICpzc3RhdGU7CiAJCX0JCQlzdWJwbGFuOwog CisJCS8qIGZvciBFRU9QX1JQUl9OQVZfU0VUIC8gRUVPUF9SUFJfTkFWX1JFU1RPUkUgKi8KKwkJ c3RydWN0CisJCXsKKwkJCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwkJCVJQUk5hdktpbmQJ a2luZDsJLyogUFJFViBvciBORVhUICovCisJCQlEYXR1bQkgICAqb2Zmc2V0X3ZhbHVlOwkvKiAy LWFyZzogcnVudGltZSBvZmZzZXQgdmFsdWUsIG9yCisJCQkJCQkJCQkJICogTlVMTCAqLworCQkJ Ym9vbAkgICAqb2Zmc2V0X2lzbnVsbDsJLyogMi1hcmc6IHJ1bnRpbWUgb2Zmc2V0IG51bGwgZmxh ZyAqLworCQl9CQkJcnByX25hdjsKKwogCQkvKiBmb3IgRUVPUF9BR0dfKkRFU0VSSUFMSVpFICov CiAJCXN0cnVjdAogCQl7CkBAIC04OTgsNiArOTEyLDEwIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFs TWVyZ2VTdXBwb3J0RnVuYyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJ CQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBs YW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQlFeHByQ29udGV4 dCAqZWNvbnRleHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxSUFJOYXZTZXQoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCk7 CitleHRlcm4gdm9pZCBFeGVjRXZhbFJQUk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKKwkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJu IHZvaWQgRXhlY0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2 YWxTeXNWYXIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuaAppbmRleCBhZGE0YTFjNDU4Yy4uZjZmNjY0NTEzMWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmgKQEAgLTIwLDQgKzIwLDcgQEAgZXh0ZXJuIFdp bmRvd0FnZ1N0YXRlICpFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWYKIGV4dGVybiB2b2lkIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3Rh dGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0 ZSAqbm9kZSk7CiAKKy8qIFJQUiBuYXZpZ2F0aW9uIHN1cHBvcnQgZm9yIGV4cHJlc3Npb24gZXZh bHVhdGlvbiBvcGNvZGVzICovCitleHRlcm4gVHVwbGVUYWJsZVNsb3QgKkV4ZWNSUFJOYXZHZXRT bG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKTsKKwogI2VuZGlmCQkJCQkJ CS8qIE5PREVXSU5ET1dBR0dfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzMzAyOGMzZjEw Yi4uMzBlZTc2OWU0NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0yNjg5LDEwICsyNjg5LDEy IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRlCiAJVHVwbGVUYWJsZVNsb3QgKnRlbXBf c2xvdF8xOwogCVR1cGxlVGFibGVTbG90ICp0ZW1wX3Nsb3RfMjsKIAotCS8qIHRlbXBvcmFyeSBz bG90cyBmb3IgUlBSICovCi0JVHVwbGVUYWJsZVNsb3QgKnByZXZfc2xvdDsJLyogUFJFViByb3cg bmF2aWdhdGlvbiBvcGVyYXRvciAqLwotCVR1cGxlVGFibGVTbG90ICpuZXh0X3Nsb3Q7CS8qIE5F WFQgcm93IG5hdmlnYXRpb24gb3BlcmF0b3IgKi8KLQlUdXBsZVRhYmxlU2xvdCAqbnVsbF9zbG90 OwkvKiBhbGwgTlVMTCBzbG90ICovCisJLyogUlBSIG5hdmlnYXRpb24gKi8KKwlzdHJ1Y3QgV2lu ZG93T2JqZWN0RGF0YSAqbmF2X3dpbm9iajsJLyogd2lub2JqIGZvciBSUFIgbmF2IGZldGNoICov CisJaW50NjQJCW5hdl9zbG90X3BvczsJLyogcG9zaXRpb24gY2FjaGVkIGluIG5hdl9zbG90LCBv ciAtMSAqLworCVR1cGxlVGFibGVTbG90ICpuYXZfc2xvdDsJLyogc2xvdCBmb3IgUFJFVi9ORVhU IHRhcmdldCByb3cgKi8KKwlUdXBsZVRhYmxlU2xvdCAqbmF2X3NhdmVkX291dGVydHVwbGU7CS8q IHNhdmVkIHNsb3QgZHVyaW5nIG5hdiBzd2FwICovCisJVHVwbGVUYWJsZVNsb3QgKm5hdl9udWxs X3Nsb3Q7CS8qIGFsbCBOVUxMIHNsb3QgKi8KIAogCS8qCiAJICogRWFjaCBieXRlIGNvcnJlc3Bv bmRzIHRvIGEgcm93IHBvc2l0aW9uZWQgYXQgYWJzb2x1dGUgaXRzIHBvcyBpbgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAppbmRleCBmNWI2YjQ1NjY0YS4uOTQ3MjNhM2I5MDkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCkBAIC02NDgsNiArNjQ4LDM3IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0Z1bmNSdW5Db25k aXRpb24KIAlFeHByCSAgICphcmc7CiB9IFdpbmRvd0Z1bmNSdW5Db25kaXRpb247CiAKKy8qCisg KiBSUFJOYXZFeHByCisgKgorICogUmVwcmVzZW50cyBhIFBSRVYoKSBvciBORVhUKCkgbmF2aWdh dGlvbiBjYWxsIGluIGFuIFJQUiBERUZJTkUgY2xhdXNlLgorICogQXQgZXhwcmVzc2lvbiBjb21w aWxlIHRpbWUgdGhpcyBpcyB0cmFuc2xhdGVkIGludG8gRUVPUF9SUFJfTkFWX1NFVCAvCisgKiBF RU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIHJhdGhlciB0aGFuIGEgbm9ybWFsIGZ1bmN0aW9u IGNhbGwuCisgKgorICoga2luZDogICAgICAgUlBSX05BVl9QUkVWIG9yIFJQUl9OQVZfTkVYVAor ICogYXJnOiAgICAgICAgdGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgYWdhaW5zdCB0aGUgdGFy Z2V0IHJvdworICogb2Zmc2V0X2FyZzogb3B0aW9uYWwgZXhwbGljaXQgb2Zmc2V0IGV4cHJlc3Np b24gKDItYXJnIGZvcm0pOyBOVUxMIGZvcgorICogICAgICAgICAgICAgdGhlIDEtYXJnIGZvcm0g d2hpY2ggdXNlcyBhbiBpbXBsaWNpdCBvZmZzZXQgb2YgMQorICovCit0eXBlZGVmIGVudW0gUlBS TmF2S2luZAoreworCVJQUl9OQVZfUFJFViwKKwlSUFJfTkFWX05FWFQsCit9IFJQUk5hdktpbmQ7 CisKK3R5cGVkZWYgc3RydWN0IFJQUk5hdkV4cHIKK3sKKwlFeHByCQl4cHI7CisJUlBSTmF2S2lu ZAlraW5kOwkJCS8qIFBSRVYgb3IgTkVYVCAqLworCUV4cHIJICAgKmFyZzsJCQkvKiBhcmd1bWVu dCBleHByZXNzaW9uICovCisJRXhwcgkgICAqb2Zmc2V0X2FyZzsJCS8qIG9mZnNldCBleHByZXNz aW9uLCBvciBOVUxMIGZvciAxLWFyZyBmb3JtICovCisJT2lkCQkJcmVzdWx0dHlwZTsJCS8qIHJl c3VsdCB0eXBlIChzYW1lIGFzIGFyZydzIHR5cGUpICovCisJLyogT0lEIG9mIGNvbGxhdGlvbiBv ZiByZXN1bHQgKi8KKwlPaWQJCQlyZXN1bHRjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOworCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCisJUGFy c2VMb2MJbG9jYXRpb247Cit9IFJQUk5hdkV4cHI7CisKIC8qCiAgKiBNZXJnZVN1cHBvcnRGdW5j CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IDU0YTY4NTdiZGI4Li5iMDA1Yzdl MDdhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMTAxOCw2ICsxMDE4LDU1NSBA QCBXSU5ET1cgdyBBUyAoCiAgIDUgfCAgICAgMC4xIHwgICAgIDAKICg1IHJvd3MpCiAKKy0tCist LSBFcnJvciBjYXNlczogUFJFVi9ORVhUIHVzYWdlIHJlc3RyaWN0aW9ucworLS0KKy0tIFBSRVYg b3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsKK0VS Uk9SOiAgcHJldiBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBT RUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5FWFQg b3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKK0VS Uk9SOiAgbmV4dCBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBT RUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5lc3Rl ZCBQUkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEg QVMgcHJpY2UgPiBQUkVWKFBSRVYocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBj YW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJF VihwcmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5lc3RlZCBO RVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5u b3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoTkVYVChw cmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBSRVYgbmVzdGVk IGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBORVhUKFBSRVYocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQg TkVYVCBjYW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5F WFQoUFJFVihwcmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBS RVYgbmVzdGVkIGluc2lkZSBleHByZXNzaW9uIGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJP TSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElB TAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlICog UFJFVihwcmljZSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQK K0xJTkUgNzogICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2Up KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBUcmlwbGUgbmVzdGluZzog ZXJyb3IgcmVwb3J0ZWQgYXQgb3V0ZXJtb3N0IFBSRVYKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNl KSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQKK0xJTkUgNzog ICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKFBSRVYocHJpY2UpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm8gY29sdW1uIHJlZmVyZW5jZSBpbiBQUkVW L05FWFQgYXJndW1lbnQKKy0tIFBSRVYoMSk6IGNvbnN0YW50IG9ubHksIG5vIGNvbHVtbiByZWZl cmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBB UyBQUkVWKDEpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNl CitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gTkVYVCgxICsgMik6IGNvbnN0YW50IGV4cHJlc3Npb24sIG5vIGNvbHVtbiBy ZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJu IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJl ZmVyZW5jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgTkVYVCgxICsgMikgPiAwCisgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSAyLWFyZyBmb3JtOiBQUkVWKDEsIDEpOiBjb25zdGFudCBl eHByZXNzaW9uIGFzIGZpcnN0IGFyZworU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChB KQorICAgIERFRklORSBBIEFTIFBSRVYoMSwgMSkgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBv ZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qg b25lIGNvbHVtbiByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoMSwgMSkg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBj b2x1bW4gcmVmZXJlbmNlIGFzIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKKyk7CitFUlJPUjog IFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitMSU5FIDc6ICAg ICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCisgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiB2b2xhdGlsZSBmdW5jdGlvbiBhcyBvZmZz ZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlLCByYW5kb20oKTo6aW50KSA+IDAKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZz ZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlLCByYW5kb20oKTo6aW50KSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHN1YnF1ZXJ5IGFzIG9mZnNldAorU0VMRUNUIHByaWNl IEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElO SVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIChTRUxF Q1QgMSkpID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZJTkUgZXhw cmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgKFNFTEVDVCAxKSkg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBGaXJzdCBhcmc6 IHN1YnF1ZXJ5IChjYXVnaHQgYnkgREVGSU5FLWxldmVsIHN1YnF1ZXJ5IHJlc3RyaWN0aW9uKQor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYo cHJpY2UgKyAoU0VMRUNUIDEpKSA+IDAKKyk7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkg aW4gREVGSU5FIGV4cHJlc3Npb24KK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2Ug KyAoU0VMRUNUIDEpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBGaXJzdCBhcmc6IHZvbGF0aWxlIGZ1bmN0aW9uIGlzIGFsbG93ZWQgKGV2YWx1YXRlZCBv biB0YXJnZXQgcm93KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCop IE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21w YW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihw cmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBw cmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAg ICAgMTMwIHwgICAgIDkKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAy MyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAx MzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEt MjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTMwMCB8ICAgICA5 CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwg ICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLQorLS0gMi1hcmcgUFJFVi9O RVhUOiBmdW5jdGlvbmFsIHRlc3RzCistLQorLS0gUFJFVihwcmljZSwgMik6IG1hdGNoIHJvd3Mg d2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBiYWNrCistLSBzdG9jazogMTAwLCA5 MCwgODAsIDk1LCAxMTAKKy0tIFBhdHRlcm4gKEEgQispOiBBPWFueSwgQiB3aGVyZSBwcmljZSA+ IFBSRVYocHJpY2UsIDIpCistLSBBdCBwb3MgMiAoODApOiBBIG1hdGNoZXMuIHBvcyAzICg5NSk6 IDk1ID4gUFJFVig5NSwyKT05MCBUUlVFLgorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcyA0ICgxMTApOiAxMTAgPiBQUkVWKDExMCwyKT04MCBUUlVFLiBNYXRjaCEKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHBy aWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21w YW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAg ICAxNTAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIz IHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8 ICAgICAzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEz MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0y MDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIwMDAgfCAgICAgICAxNTAwIHwgICAgIDIK KyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAg ICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEyMDAgfCAgICAgMworIGNvbXBh bnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIE5FWFQocHJpY2UsIDIpOiBt YXRjaCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3MgYWhlYWQKKy0tIHBv cyAwICgxMDApOiBORVhUKDEwMCwyKT04MCwgMTAwPjgwIFRSVUUuIHBvcyAxICg5MCk6IE5FWFQo OTAsMik9OTUsIDkwPjk1IEZBTFNFLiBNYXRjaCBlbmRzLgorU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlLCAyKQorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAg ICAyMDAgfCAgICAgICAgMjAwIHwgICAgIDEKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0y MDIzIHwgICAxNDAgfCAgICAgICAgIDE0MCB8ICAgICAgICAxNTAgfCAgICAgMgorIGNvbXBhbnkx IHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAg IDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0x MC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAg MjAwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwg ICAgICAgIDE0MDAgfCAgICAgICAxNTAwIHwgICAgIDIKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSBFeHBy ZXNzaW9ucyBpbnNpZGUgUFJFVi9ORVhUIGFyZzogZXhwciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0 IHJvdworLS0gUFJFVihwcmljZSAtIDUwLCAxKTogZmV0Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAx IHJvdyBiYWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZF UiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkg T1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBS RVYocHJpY2UgLSA1MCwgMSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBm aXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwg MDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAgIDIwMCB8 ICAgICAxCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAg ICAxNDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0y MDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwIHwgICAgIDQK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAg ICA1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w Mi0yMDIzIHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAgIDIwMDAgfCAgICAgMQorIGNvbXBh bnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgMTUw MCB8ICAgICAgIDE1MDAgfCAgICAgMQorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMg fCAgMTEwMCB8ICAgICAgICAxMTAwIHwgICAgICAgMTMwMCB8ICAgICAyCisgY29tcGFueTIgfCAw Ny0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAxMzAwIHwgICAg ICAgMTMwMCB8ICAgICAxCisoMjAgcm93cykKKworLS0gTkVYVChwcmljZSAqIDIsIDEpOiBmZXRj aGVzIChwcmljZSAqIDIpIGZyb20gMSByb3cgYWhlYWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHByaWNlIDwgTkVYVChwcmljZSAqIDIsIDEpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwg ICAgICAgIDEyMCB8ICAgICA5CisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAg MTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0 LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDE0MDAgfCAg ICAgNAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAy MyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTIwMCB8ICAgICA0Cisg Y29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIExh cmdlIG9mZnNldDogUFJFVih2YWwsIDk5OSkgb24gMTAwMC1yb3cgc2VyaWVzIG1hdGNoZXMgb25s eSBsYXN0IHJvdworLS0gTkVYVCh2YWwsIDk5OSkgbWF0Y2hlcyBvbmx5IGZpcnN0IHJvdworU0VM RUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBPVkVSIHcsIGxhc3RfdmFsdWUodmFsKSBPVkVSIHcs IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2YWws IDk5OSkgPSAxCispCitPUkRFUiBCWSB2YWwgREVTQyBMSU1JVCAzOworIHZhbCAgfCBmaXJzdF92 YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tCisgMTAwMCB8ICAgICAgICAxMDAwIHwgICAgICAgMTAwMCB8ICAgICAxCisg IDk5OSB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgIDk5OCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMyByb3dzKQorCitTRUxFQ1QgdmFsLCBmaXJzdF92 YWx1ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHZhbCkKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKHZhbCwgOTk5KSA9IDEwMDAKKykK K0xJTUlUIDM7CisgdmFsIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgICAxIHwgICAgICAgICAgIDEg fCAgICAgICAgICAxIHwgICAgIDEKKyAgIDIgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorICAgMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMyByb3dzKQor CistLSBQUkVWKHByaWNlLCAwKTogb2Zmc2V0IDAgbWVhbnMgY3VycmVudCByb3csIGFsd2F5cyBl cXVhbCB0byBwcmljZQorLS0gQSsgbWF0Y2hlcyBlbnRpcmUgcGFydGl0aW9uIGFzIG9uZSBncm91 cDsgY291bnQgPSBwYXJ0aXRpb24gc2l6ZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwK KyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgUFJFVihwcmljZSwgMCkgPSBwcmljZQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAg fCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisg Y29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMzAg fCAgICAxMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAx NDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxMzAwIHwgICAgMTAKKyBjb21w YW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIz IHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSAyLWFyZyBQUkVWL05F WFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9j azsKK0VSUk9SOiAgcHJldiBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElO RSAxOiBTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4K K1NFTEVDVCBuZXh0KHByaWNlLCAyKSBGUk9NIHN0b2NrOworRVJST1I6ICBuZXh0IGNhbiBvbmx5 IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlCitMSU5FIDE6IFNFTEVDVCBuZXh0KHByaWNlLCAy KSBGUk9NIHN0b2NrOworICAgICAgICAgICAgICAgXgorLS0gMi1hcmcgUFJFVi9ORVhUOiBuZWdh dGl2ZSBvZmZzZXQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBS RVYocHJpY2UsIC0xKSBJUyBOT1QgTlVMTAorKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBt dXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0gMi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodHlw ZWQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkg T1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNl LCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVMTAorKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBt dXN0IG5vdCBiZSBudWxsCistLSAyLWFyZyBQUkVWL05FWFQ6IE5VTEwgb2Zmc2V0ICh1bnR5cGVk KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIg dworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9S REVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwg TlVMTCkgSVMgTk9UIE5VTEwKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3Qg YmUgbnVsbAorLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIG5lZ2F0aXZlIGFuZCBO VUxMCitQUkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0 ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhF Q1VURSB0ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBtdXN0 IG5vdCBiZSBuZWdhdGl2ZQorRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworRVJST1I6 ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0RFQUxMT0NBVEUgdGVzdF9wcmV2 X29mZnNldDsKKy0tIDItYXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSB3aXRoIGV4cHJlc3Np b24gKDAgKyAkMSkKK1BSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRl CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAwICsg JDEpCispOworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VSUk9SOiAgUFJFVi9ORVhU IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5V TEwpOworRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0RFQUxMT0NB VEUgdGVzdF9wcmV2X29mZnNldDsKKy0tIDItYXJnOiB0d28gUFJFViB3aXRoIGRpZmZlcmVudCBv ZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQjogcHJpY2UgZXhjZWVkcyBib3RoIDEt YmFjayBhbmQgMi1iYWNrIHZhbHVlcworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAg ICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcs IGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAor ICAgICAgICBCIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlID4gUFJFVihwcmlj ZSwgMikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8 IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAy MyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwIHwgICAgIDIKKyBjb21wYW55MSB8 IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIw MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMt MjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAg ICAgICAxMTAwIHwgICAgICAgMTMwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwg IDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisoMjAgcm93cykKKworLS0gMi1hcmc6IFBSRVYgYW5kIE5FWFQgd2l0aCBleHBsaWNpdCBv ZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQTogcHJpY2UgZXhjZWVkcyAxLWJhY2sg YW5kIGlzIGJlbG93IDEtYWhlYWQgKGFzY2VuZGluZyBpbnRlcmlvciBwb2ludCkKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlIDwgTkVYVChwcmljZSwgMSkK Kyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3Rf dmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIw MjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAg MTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTEwIHwgICAgIDEKKyBjb21wYW55MSB8IDA3LTA4 LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8 ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAx MTAwIHwgICAgICAgMTEwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAy MyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCiso MjAgcm93cykKKwogLS0KIC0tIFNLSVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFy eQogLS0KQEAgLTE0NzksNyArMjAyOCw3IEBAIGNvdW50KCopIE9WRVIgdwogKDE0IHJvd3MpCiAK IC0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4gZm9yY2VzIFdpbmRvd0FnZyByZXNjYW4gd2l0 aCBSUFIKLS0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5kb3dBZ2cgY2xlYXJpbmcgcHJldl9zbG90L25l eHRfc2xvdAorLS0gVGVzdHMgRXhlY1JlU2NhbldpbmRvd0FnZyBjbGVhcmluZyBuYXZfc2xvdAog U0VMRUNUIGcueCwgc3ViLioKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGcoeCksCiBMQVRF UkFMICgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKaW5kZXggYmQz NDU5MDYxMzMuLjBkMmI3NTUwZWE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9leHBsYWluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9l eHBsYWluLm91dApAQCAtMzY0Niw5ICszNjQ2LDg5IEBAIFdJTkRPVyB3IEFTICgKICAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29w cz0xKQogKDggcm93cykKIAotLS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucworLS0gVXNpbmcgMS1h cmcgUFJFViAoaW1wbGljaXQgb2Zmc2V0IDEpCiBDUkVBVEUgVklFVyBycHJfZXY4MyBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMg diA+IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjgzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk58REVGSU5FfFBSRVZ8TkVYVCc7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIrKSAKKyAgIERFRklORQor ICAgYiBBUyAodiA+IFBSRVYodikpICk7CisoMyByb3dzKQorCistLSBVc2luZyAxLWFyZyBORVhU IChpbXBsaWNpdCBvZmZzZXQgMSkKK0NSRUFURSBWSUVXIHJwcl9ldjg0IEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2IDwgTkVY VCh2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS TnxERUZJTkV8UFJFVnxORVhUJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFT ICh2IDwgTkVYVCh2KSkgKTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIDItYXJnIFBSRVYgKGV4cGxp Y2l0IG9mZnNldCkKK0NSRUFURSBWSUVXIHJwcl9ldjg1IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2ID4gUFJFVih2LCAyKQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2ODUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJ TkV8UFJFVnxORVhUJzsKKyAgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKykg CisgICBERUZJTkUKKyAgIGIgQVMgKHYgPiBQUkVWKHYsICgyKTo6YmlnaW50KSkgKTsKKygzIHJv d3MpCisKKy0tIFVzaW5nIDItYXJnIE5FWFQgKGV4cGxpY2l0IG9mZnNldCkKK0NSRUFURSBWSUVX IHJwcl9ldjg2IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJV RSwKKyAgICAgICAgQiBBUyB2IDwgTkVYVCh2LCAyKQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODYnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhUJzsKKyAgICAgICAg ICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKykgCisgICBERUZJTkUKKyAgIGIgQVMgKHYg PCBORVhUKHYsICgyKTo6YmlnaW50KSkgKTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIE5VTEwgY29t cGFyaXNvbnMKK0NSRUFURSBWSUVXIHJwcl9ldjg3IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CiBGUk9NICgKICAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2 IEVORCBBUyB2CiAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKQEAgLTM2NTksNyAr MzczOSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAgIERFRklORSBB IEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxMCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODcnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiKSAKQEAgLTM2OTUsNyArMzc3NSw3IEBAIFdJ TkRPVyB3IEFTICgKIC0tIExhcmdlIFNjYWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tIDUwMCByb3dzIC0gdmVyaWZ5IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5Ci1DUkVB VEUgVklFVyBycHJfZXY4NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9X IHcgQVMgKApAQCAtMzcwNCw3ICszNzg0LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEErIEIgQykKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMg QVMgdiAlIDEwID0gOAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldjg4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgICBsaW5lICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKGErIGIgYykgCkBAIC0zNzM0LDcgKzM4MTQsNyBAQCBXSU5ET1cgdyBBUyAoCiAo OSByb3dzKQogCiAtLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCi1DUkVBVEUgVklFVyBycHJf ZXY4NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODkgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt Mzc0Myw3ICszODIzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQikKICAgICBE RUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4NScpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODknKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAKIC0tLS0t LS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSBiKSAKQEAgLTM3NzMsNyArMzg1Myw3IEBAIFdJ TkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEhpZ2ggc2tpcCBjb3VudCBzY2VuYXJpbwotQ1JF QVRFIFZJRVcgcnByX2V2ODYgQVMKK0NSRUFURSBWSUVXIHJwcl9ldjkwIEFTCiBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKIFdJTkRP VyB3IEFTICgKQEAgLTM3ODcsNyArMzg2Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgRCBB UyB2ICUgMTAwID0gNCwKICAgICAgICAgRSBBUyB2ICUgMTAwID0gNQogKTsKLVNFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODYnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjkwJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgIGxpbmUgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGEgYiBjIGQgZSkgCkBA IC0zODMxLDE3ICszOTExLDE3IEBAIFdJTkRPVyB3IEFTICgKIC0tIFRlc3Qgd2l0aCByb3dfbnVt YmVyKCkgYXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KIC0tCiAtLSBXaXRob3V0IFJQUjogcm93X251 bWJlcigpIGZyYW1lIGlzIG9wdGltaXplZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcKLUNS RUFURSBWSUVXIHJwcl9ldjg3IEFTCitDUkVBVEUgVklFVyBycHJfZXY5MSBBUwogU0VMRUNUIHJv d19udW1iZXIoKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCiBX SU5ET1cgdyBBUyAoCiAgICAgT1JERVIgQlkgdgogICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogKTsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBycHJfZXY4NzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJf ZXY5MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIFN1YnF1ZXJ5IFNjYW4gb24gcnByX2V2ODcKKyBTdWJxdWVy eSBTY2FuIG9uIHJwcl9ldjkxCiAgICAtPiAgV2luZG93QWdnCiAgICAgICAgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIHMudiBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcpCiAgICAgICAgICAtPiAg U29ydApAQCAtMzg1MCw3ICszOTMwLDcgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHJwcl9ldjg3OwogKDYgcm93cykKIAogLS0gV2l0aCBSUFI6IGZyYW1lIG11c3QgcmVtYWlu IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotQ1JFQVRF IFZJRVcgcnByX2V2ODggQVMKK0NSRUFURSBWSUVXIHJwcl9ldjkyIEFTCiBTRUxFQ1Qgcm93X251 bWJlcigpIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKIFdJTkRP VyB3IEFTICgKQEAgLTM4NjEsMTAgKzM5NDEsMTAgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklO RQogICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCiApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIHJwcl9ldjg4OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldjkyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gU3VicXVlcnkgU2NhbiBvbiBycHJfZXY4OAorIFN1YnF1ZXJ5IFNjYW4g b24gcnByX2V2OTIKICAgIC0+ICBXaW5kb3dBZ2cKICAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKICAgICAgICAgIFBhdHRlcm46IGEgYisKQEAgLTM4NzcsNyArMzk1Nyw3IEBAIEVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXY4ODsKIC0tIFBsYW5uZXIgb3B0aW1pemF0 aW9uOiBub24tUlBSIGFuZCBSUFIgd2luZG93cyB0aGF0IHNoYXJlIHRoZSBzYW1lIGJhc2UgZnJh bWUKIC0tIGFmdGVyIGZyYW1lIG9wdGltaXphdGlvbiBhcmUga2VwdCBhcyBzZXBhcmF0ZSBXaW5k b3dBZ2cgbm9kZXMuCiAtLQotQ1JFQVRFIFZJRVcgcnByX2V2ODkgQVMKK0NSRUFURSBWSUVXIHJw cl9ldjkzIEFTCiBTRUxFQ1QKICAgICByb3dfbnVtYmVyKCkgT1ZFUiB3X25vcm1hbCBBUyBybl9u b3JtYWwsCiAgICAgcm93X251bWJlcigpIE9WRVIgd19ycHIgQVMgcm5fcnByCkBAIC0zODkwLDEw ICszOTcwLDEwIEBAIFdJTkRPVwogICAgICAgICBQQVRURVJOIChBKykKICAgICAgICAgREVGSU5F IEEgQVMgdiA+IDEKICAgICApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldjg5OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjkzOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSBTdWJxdWVyeSBTY2FuIG9uIHJwcl9ldjg5CisgU3VicXVlcnkgU2NhbiBvbiBy cHJfZXY5MwogICAgLT4gIFdpbmRvd0FnZwogICAgICAgICAgV2luZG93OiB3X3JwciBBUyAoT1JE RVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKICAgICAgICAgIFBhdHRlcm46IGErIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggOTk2MTM1NjM0 ZmQuLjQ5ZGFjOTMyZDk2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKQEAgLTQ0MCw2ICs0NDAsMzI2IEBA IFdJTkRPVyB3IEFTICgKICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgKiAwLjk5CiApOwogCistLQor LS0gRXJyb3IgY2FzZXM6IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKKy0tCisKKy0tIFBS RVYgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsK KworLS0gTkVYVCBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBuZXh0KHByaWNlKSBGUk9N IHN0b2NrOworCistLSBOZXN0ZWQgUFJFVgorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKHByaWNlKSkKKyk7CisKKy0t IE5lc3RlZCBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorKTsKKworLS0gUFJFViBuZXN0ZWQg aW5zaWRlIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJ TkUgQSBBUyBwcmljZSA+IE5FWFQoUFJFVihwcmljZSkpCispOworCistLSBQUkVWIG5lc3RlZCBp bnNpZGUgZXhwcmVzc2lvbiBpbnNpZGUgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRU RVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2Up KQorKTsKKworLS0gVHJpcGxlIG5lc3Rpbmc6IGVycm9yIHJlcG9ydGVkIGF0IG91dGVybW9zdCBQ UkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQorKTsKKworLS0gTm8gY29sdW1uIHJlZmVy ZW5jZSBpbiBQUkVWL05FWFQgYXJndW1lbnQKKy0tIFBSRVYoMSk6IGNvbnN0YW50IG9ubHksIG5v IGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorKTsKKworLS0gTkVYVCgxICsgMik6IGNvbnN0YW50 IGV4cHJlc3Npb24sIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7CisKKy0tIDIt YXJnIGZvcm06IFBSRVYoMSwgMSk6IGNvbnN0YW50IGV4cHJlc3Npb24gYXMgZmlyc3QgYXJnCitT RUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVigx LCAxKSA+IDAKKyk7CisKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IGNvbHVtbiByZWZlcmVuY2Ug YXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5F IEEgQVMgUFJFVihwcmljZSwgcHJpY2UpID4gMAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNl dDogdm9sYXRpbGUgZnVuY3Rpb24gYXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFuZG9tKCk6OmludCkgPiAw CispOworCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBzdWJxdWVyeSBhcyBvZmZzZXQKK1NFTEVD VCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNl LCAoU0VMRUNUIDEpKSA+IDAKKyk7CisKKy0tIEZpcnN0IGFyZzogc3VicXVlcnkgKGNhdWdodCBi eSBERUZJTkUtbGV2ZWwgc3VicXVlcnkgcmVzdHJpY3Rpb24pCitTRUxFQ1QgcHJpY2UgRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSArIChTRUxFQ1QgMSkp ID4gMAorKTsKKworLS0gRmlyc3QgYXJnOiB2b2xhdGlsZSBmdW5jdGlvbiBpcyBhbGxvd2VkIChl dmFsdWF0ZWQgb24gdGFyZ2V0IHJvdykKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisg ICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIFBSRVYocHJpY2UgKyByYW5kb20oKSAqIDApID49IDAKKyk7CisKKy0tCistLSAyLWFyZyBQ UkVWL05FWFQ6IGZ1bmN0aW9uYWwgdGVzdHMKKy0tCisKKy0tIFBSRVYocHJpY2UsIDIpOiBtYXRj aCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3MgYmFjaworLS0gc3RvY2s6 IDEwMCwgOTAsIDgwLCA5NSwgMTEwCistLSBQYXR0ZXJuIChBIEIrKTogQT1hbnksIEIgd2hlcmUg cHJpY2UgPiBQUkVWKHByaWNlLCAyKQorLS0gQXQgcG9zIDIgKDgwKTogQSBtYXRjaGVzLiBwb3Mg MyAoOTUpOiA5NSA+IFBSRVYoOTUsMik9OTAgVFJVRS4KKy0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3MgNCAoMTEwKTogMTEwID4gUFJFVigxMTAsMik9ODAgVFJVRS4gTWF0Y2ghCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRh dGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAg ICAgIEIgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorKTsKKworLS0gTkVYVChwcmljZSwgMik6 IG1hdGNoIHJvd3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBhaGVhZAorLS0g cG9zIDAgKDEwMCk6IE5FWFQoMTAwLDIpPTgwLCAxMDA+ODAgVFJVRS4gcG9zIDEgKDkwKTogTkVY VCg5MCwyKT05NSwgOTA+OTUgRkFMU0UuIE1hdGNoIGVuZHMuCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUo cHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UsIDIpCispOworCistLSBFeHByZXNz aW9ucyBpbnNpZGUgUFJFVi9ORVhUIGFyZzogZXhwciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0IHJv dworLS0gUFJFVihwcmljZSAtIDUwLCAxKTogZmV0Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAxIHJv dyBiYWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3 CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JE RVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYo cHJpY2UgLSA1MCwgMSkKKyk7CisKKy0tIE5FWFQocHJpY2UgKiAyLCAxKTogZmV0Y2hlcyAocHJp Y2UgKiAyKSBmcm9tIDEgcm93IGFoZWFkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAor ICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIg dywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBwcmljZSA8IE5FWFQocHJpY2UgKiAyLCAxKQorKTsKKworLS0gTGFyZ2Ugb2Zmc2V0OiBQ UkVWKHZhbCwgOTk5KSBvbiAxMDAwLXJvdyBzZXJpZXMgbWF0Y2hlcyBvbmx5IGxhc3Qgcm93Cist LSBORVhUKHZhbCwgOTk5KSBtYXRjaGVzIG9ubHkgZmlyc3Qgcm93CitTRUxFQ1QgdmFsLCBmaXJz dF92YWx1ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwpIE9WRVIgdywgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHZhbCkKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHZhbCwgOTk5KSA9IDEKKykK K09SREVSIEJZIHZhbCBERVNDIExJTUlUIDM7CisKK1NFTEVDVCB2YWwsIGZpcnN0X3ZhbHVlKHZh bCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQodmFsLCA5OTkpID0gMTAwMAorKQorTElNSVQg MzsKKworLS0gUFJFVihwcmljZSwgMCk6IG9mZnNldCAwIG1lYW5zIGN1cnJlbnQgcm93LCBhbHdh eXMgZXF1YWwgdG8gcHJpY2UKKy0tIEErIG1hdGNoZXMgZW50aXJlIHBhcnRpdGlvbiBhcyBvbmUg Z3JvdXA7IGNvdW50ID0gcGFydGl0aW9uIHNpemUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIFBSRVYocHJpY2UsIDApID0gcHJpY2UKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVY VCBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0b2Nr OworU0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7CisKKy0tIDItYXJnIFBSRVYvTkVY VDogbmVnYXRpdmUgb2Zmc2V0CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBQUkVWKHByaWNlLCAtMSkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVY VDogTlVMTCBvZmZzZXQgKHR5cGVkKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgUFJFVihwcmljZSwgTlVMTDo6aW50OCkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDIt YXJnIFBSRVYvTkVYVDogTlVMTCBvZmZzZXQgKHVudHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMKSBJUyBOT1QgTlVMTAorKTsK KworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIG5lZ2F0aXZlIGFuZCBOVUxMCitQ UkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFT ICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhFQ1VURSB0 ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0RF QUxMT0NBVEUgdGVzdF9wcmV2X29mZnNldDsKKworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZh cmlhYmxlIHdpdGggZXhwcmVzc2lvbiAoMCArICQxKQorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0 KGludDgpIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmlj ZSA+IFBSRVYocHJpY2UsIDAgKyAkMSkKKyk7CitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoLTEp OworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworREVBTExPQ0FURSB0ZXN0X3ByZXZf b2Zmc2V0OworCistLSAyLWFyZzogdHdvIFBSRVYgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBz YW1lIERFRklORSBjbGF1c2UKKy0tIEI6IHByaWNlIGV4Y2VlZHMgYm90aCAxLWJhY2sgYW5kIDIt YmFjayB2YWx1ZXMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyBwcmljZSA+IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOwor CistLSAyLWFyZzogUFJFViBhbmQgTkVYVCB3aXRoIGV4cGxpY2l0IG9mZnNldHMgaW4gc2FtZSBE RUZJTkUgY2xhdXNlCistLSBBOiBwcmljZSBleGNlZWRzIDEtYmFjayBhbmQgaXMgYmVsb3cgMS1h aGVhZCAoYXNjZW5kaW5nIGludGVyaW9yIHBvaW50KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQ UkVWKHByaWNlLCAxKSBBTkQgcHJpY2UgPCBORVhUKHByaWNlLCAxKQorKTsKKwogLS0KIC0tIFNL SVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFyeQogLS0KQEAgLTY3MSw3ICs5OTEs NyBAQCBjb3VudCgqKSBPVkVSIHcKICk7CiAKIC0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4g Zm9yY2VzIFdpbmRvd0FnZyByZXNjYW4gd2l0aCBSUFIKLS0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5k b3dBZ2cgY2xlYXJpbmcgcHJldl9zbG90L25leHRfc2xvdAorLS0gVGVzdHMgRXhlY1JlU2Nhbldp bmRvd0FnZyBjbGVhcmluZyBuYXZfc2xvdAogU0VMRUNUIGcueCwgc3ViLioKIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIpIGcoeCksCiBMQVRFUkFMICgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBs YWluLnNxbAppbmRleCA5M2UwNmIwY2JkZi4uYzJjYmUyZWRkNTkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfZXhwbGFpbi5zcWwKQEAgLTIwODgsOSArMjA4OCw2NSBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgICAgIEQgQVMgdiA8IFBSRVYodikKICk7Jyk7CiAKLS0tIFVzaW5nIE5VTEwgY29tcGFyaXNv bnMKKy0tIFVzaW5nIDEtYXJnIFBSRVYgKGltcGxpY2l0IG9mZnNldCAxKQogQ1JFQVRFIFZJRVcg cnByX2V2ODMgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVF LAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVWfE5FWFQnOworCistLSBVc2luZyAx LWFyZyBORVhUIChpbXBsaWNpdCBvZmZzZXQgMSkKK0NSRUFURSBWSUVXIHJwcl9ldjg0IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyB2IDwgTkVYVCh2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhUJzsKKworLS0gVXNpbmcgMi1hcmcgUFJFViAoZXhw bGljaXQgb2Zmc2V0KQorQ1JFQVRFIFZJRVcgcnByX2V2ODUgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYsIDIp CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXY4NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERF RklORXxQUkVWfE5FWFQnOworCistLSBVc2luZyAyLWFyZyBORVhUIChleHBsaWNpdCBvZmZzZXQp CitDUkVBVEUgVklFVyBycHJfZXY4NiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAg ICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodiwgMikKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg2 JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBSRVZ8TkVY VCc7CisKKy0tIFVzaW5nIE5VTEwgY29tcGFyaXNvbnMKK0NSRUFURSBWSUVXIHJwcl9ldjg3IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NICgKICAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYg JSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2CiAgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIHYKQEAgLTIxMDEsNyArMjE1Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRU RVJOIChBKyBCKQogICAgIERFRklORSBBIEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxM CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2ODcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIg dwpAQCAtMjEyMSw3ICsyMTc3LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0tIDUwMCBy b3dzIC0gdmVyaWZ5IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5Ci1DUkVBVEUgVklFVyBycHJf ZXY4NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt MjEzMCw3ICsyMTg2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIgQykKICAg ICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0g OAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldjg4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKQEAgLTIxNDMsNyArMjE5OSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIEhpZ2gg bWF0Y2ggY291bnQgc2NlbmFyaW8KLUNSRUFURSBWSUVXIHJwcl9ldjg1IEFTCitDUkVBVEUgVklF VyBycHJfZXY4OSBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMTUyLDcgKzIyMDgsNyBAQCBX SU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSBCKQogICAgIERFRklORSBBIEFTIHYgJSAyID0g MSwgQiBBUyB2ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg1JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4OScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMTY1LDcgKzIyMjEsNyBAQCBXSU5ET1cgdyBBUyAoCiAp OycpOwogCiAtLSBIaWdoIHNraXAgY291bnQgc2NlbmFyaW8KLUNSRUFURSBWSUVXIHJwcl9ldjg2 IEFTCitDUkVBVEUgVklFVyBycHJfZXY5MCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMTc5 LDcgKzIyMzUsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEQgQVMgdiAlIDEwMCA9IDQsCiAg ICAgICAgIEUgQVMgdiAlIDEwMCA9IDUKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg2JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY5MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMjA3LDcgKzIyNjMsNyBAQCBXSU5ET1cgdyBB UyAoCiAtLQogCiAtLSBXaXRob3V0IFJQUjogcm93X251bWJlcigpIGZyYW1lIGlzIG9wdGltaXpl ZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcKLUNSRUFURSBWSUVXIHJwcl9ldjg3IEFTCitD UkVBVEUgVklFVyBycHJfZXY5MSBBUwogU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIHcKIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMjE1LDEw ICsyMjcxLDEwIEBAIFdJTkRPVyB3IEFTICgKICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICk7CiAKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBycHJfZXY4NzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJf ZXY5MTsKIAogLS0gV2l0aCBSUFI6IGZyYW1lIG11c3QgcmVtYWluIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMK K0NSRUFURSBWSUVXIHJwcl9ldjkyIEFTCiBTRUxFQ1Qgcm93X251bWJlcigpIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTIyMzAs MTMgKzIyODYsMTMgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCiAp OwogCi1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2ODg7CitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2OTI7CiAKIC0tCiAtLSBQbGFubmVyIG9w dGltaXphdGlvbjogbm9uLVJQUiBhbmQgUlBSIHdpbmRvd3MgdGhhdCBzaGFyZSB0aGUgc2FtZSBi YXNlIGZyYW1lCiAtLSBhZnRlciBmcmFtZSBvcHRpbWl6YXRpb24gYXJlIGtlcHQgYXMgc2VwYXJh dGUgV2luZG93QWdnIG5vZGVzLgogLS0KLUNSRUFURSBWSUVXIHJwcl9ldjg5IEFTCitDUkVBVEUg VklFVyBycHJfZXY5MyBBUwogU0VMRUNUCiAgICAgcm93X251bWJlcigpIE9WRVIgd19ub3JtYWwg QVMgcm5fbm9ybWFsLAogICAgIHJvd19udW1iZXIoKSBPVkVSIHdfcnByIEFTIHJuX3JwcgpAQCAt MjI1MCw3ICsyMzA2LDcgQEAgV0lORE9XCiAgICAgICAgIERFRklORSBBIEFTIHYgPiAxCiAgICAg KTsKIAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjg5OworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjkzOwogCiAtLQogLS0gUGxhbm5lciBv cHRpbWl6YXRpb246IGZpbmRfd2luZG93X3J1bl9jb25kaXRpb25zIG11c3Qgbm90IHB1c2ggZG93 bgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA3MWVhOTI1ZDc3YS4uMjQ4NTZjZjg0Nzgg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNzk5LDcgKzE3OTksNiBAQCBOYW1lZExX TG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1cGxlc3RvcmVTY2FuCiBOYW1lZFR1cGxlc3RvcmVT Y2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KLU5hdmlnYXRpb25JbmZvCiBOZXN0TG9vcAogTmVzdExv b3BQYXJhbQogTmVzdExvb3BTdGF0ZQpAQCAtMjQ3Niw2ICsyNDc1LDggQEAgUXVlcnlTb3VyY2UK IFF1ZXVlQmFja2VuZFN0YXR1cwogUXVldWVQb3NpdGlvbgogUXVpdFNpZ25hbFJlYXNvbgorUlBS TmF2RXhwcgorUlBSTmF2S2luZAogUkJUTm9kZQogUkJUT3JkZXJDb250cm9sCiBSQlRyZWUKLS0g CjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000e57c52064e721c75 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0008-JIT-support-for-PREV-NEXT.txt" Content-Disposition: attachment; filename="nocfbot-0008-JIT-support-for-PREV-NEXT.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mngxmxdy7 RnJvbSBhYjM1NmM0ZjA4MTQxN2VmNjk1MTdlNmVmODQ0OWRiMTQzZWYyOWUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTA6NTQ6MzAgKzA5MDAKU3ViamVjdDogW1BBVENIIDgvOF0gQWRk IEpJVCBjb21waWxhdGlvbiBzdXBwb3J0IGZvciBSUFIgUFJFVi9ORVhUIG5hdmlnYXRpb24KCi0t LQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgfCA3MiArKysrKysrKysrKysr KysrKysrKystLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0ICAgfCAz MSArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICB8IDI3 ICsrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAxOSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IGQxNThlMzdlN2I1 Li40OTAxYjJhN2ZmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTEyNyw2 ICsxMjcsOSBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCUxMVk1WYWx1 ZVJlZiB2X2FnZ3ZhbHVlczsKIAlMTFZNVmFsdWVSZWYgdl9hZ2dudWxsczsKIAorCS8qIFJQUiBu YXZpZ2F0aW9uOiB3aGVuIHRydWUsIEVFT1BfT1VURVJfVkFSIHJlbG9hZHMgZnJvbSBlY29udGV4 dCAqLworCWJvb2wJCWhhc19ycHJfbmF2OworCiAJaW5zdHJfdGltZQlzdGFydHRpbWU7CiAJaW5z dHJfdGltZQlkZWZvcm1fc3RhcnR0aW1lOwogCWluc3RyX3RpbWUJZW5kdGltZTsKQEAgLTMwMCwx OSArMzAzLDE2IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJICogUlBS IG5hdmlnYXRpb24gb3Bjb2RlcyAoUFJFVi9ORVhUKSBzd2FwIGVjeHRfb3V0ZXJ0dXBsZSB0byBh IGRpZmZlcmVudAogCSAqIHJvdyBtaWQtZXhwcmVzc2lvbi4gIFRoZSBKSVQgY29kZSBsb2FkcyB2 X291dGVydmFsdWVzIGFuZCB2X291dGVybnVsbHMKIAkgKiBvbmNlIGluIHRoZSBlbnRyeSBibG9j ayBhbmQgcmV1c2VzIHRoZW0gZm9yIGFsbCBFRU9QX09VVEVSX1ZBUiBzdGVwcy4KLQkgKiBBZnRl ciBhIHNsb3Qgc3dhcCwgdGhlc2UgcG9pbnRlcnMgYmVjb21lIHN0YWxlIGJlY2F1c2UgdGhlIG5l dyBzbG90IGhhcwotCSAqIGl0cyBvd24gdHRzX3ZhbHVlcy90dHNfaXNudWxsIGFycmF5cy4gIEZh bGwgYmFjayB0byB0aGUgaW50ZXJwcmV0ZXIgZm9yCi0JICogdGhlc2UgZXhwcmVzc2lvbnMuCisJ ICogQWZ0ZXIgYSBzbG90IHN3YXAsIHRoZXNlIGNhY2hlZCBwb2ludGVycyBiZWNvbWUgc3RhbGUg YmVjYXVzZSB0aGUgbmV3CisJICogc2xvdCBoYXMgaXRzIG93biB0dHNfdmFsdWVzL3R0c19pc251 bGwgYXJyYXlzLgogCSAqCi0JICogWFhYIFRvIEpJVC1jb21waWxlIHRoZXNlIGV4cHJlc3Npb25z IHByb3Blcmx5LCB0aGUgTkFWX1NFVCBhbmQKLQkgKiBOQVZfUkVTVE9SRSBoYW5kbGVycyB3b3Vs ZCBuZWVkIHRvIHJlbG9hZCB0aGUgdHRzX3ZhbHVlcyBhbmQgdHRzX2lzbnVsbAotCSAqIHBvaW50 ZXJzIGZyb20gdGhlIG5ldyBzbG90LiAgSG93ZXZlciwgTExWTSB1c2VzIFNTQSAoU3RhdGljIFNp bmdsZQotCSAqIEFzc2lnbm1lbnQpIGZvcm0gd2hlcmUgZWFjaCB2YWx1ZSBpcyBkZWZpbmVkIGV4 YWN0bHkgb25jZS4gIFdoZW4KLQkgKiBkaWZmZXJlbnQgYmFzaWMgYmxvY2tzIHByb2R1Y2UgZGlm ZmVyZW50IHZhbHVlcyBmb3IgdGhlIHNhbWUgcG9pbnRlciwKLQkgKiBMTFZNIHJlcXVpcmVzIFBI SSBub2RlcyBhdCB0aGUgbWVyZ2UgcG9pbnQgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IG9uZS4KLQkg KiBXaXRob3V0IHRoYXQgcGx1bWJpbmcsIE9VVEVSX1ZBUiBzdGVwcyBhZnRlciBhIHNsb3Qgc3dh cCB3b3VsZCByZWFkCi0JICogZnJvbSB0aGUgd3JvbmcgcG9pbnRlci4KKwkgKiBXaGVuIFJQUiBu YXZpZ2F0aW9uIG9wY29kZXMgYXJlIHByZXNlbnQsIEVFT1BfT1VURVJfVkFSIHJlbG9hZHMgdGhl CisJICogc2xvdCBwb2ludGVyIGZyb20gZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSBvbiBldmVy eSBhY2Nlc3MgaW5zdGVhZCBvZgorCSAqIHVzaW5nIHRoZSBjYWNoZWQgZW50cnktYmxvY2sgdmFs dWVzLiAgVGhpcyBhdm9pZHMgdGhlIFNTQS9QSEkKKwkgKiBjb21wbGV4aXR5IHdoaWxlIGtlZXBp bmcgdGhlIHJlc3Qgb2YgdGhlIGV4cHJlc3Npb24gSklULWNvbXBpbGVkLgorCSAqIEV4cHJlc3Np b25zIHdpdGhvdXQgUlBSIG5hdmlnYXRpb24gdXNlIHRoZSBjYWNoZWQgdmFsdWVzIGFzIGJlZm9y ZS4KIAkgKi8KKwloYXNfcnByX25hdiA9IGZhbHNlOwogCWlmIChwYXJlbnQgJiYgSXNBKHBhcmVu dCwgV2luZG93QWdnU3RhdGUpICYmCiAJCSgoV2luZG93QWdnICopIHBhcmVudC0+cGxhbiktPnJw UGF0dGVybiAhPSBOVUxMKQogCXsKQEAgLTMyMyw5ICszMjMsOCBAQCBsbHZtX2NvbXBpbGVfZXhw cihFeHByU3RhdGUgKnN0YXRlKQogCQkJaWYgKG9wY29kZSA9PSBFRU9QX1JQUl9OQVZfU0VUIHx8 CiAJCQkJb3Bjb2RlID09IEVFT1BfUlBSX05BVl9SRVNUT1JFKQogCQkJewotCQkJCUxMVk1EZWxl dGVGdW5jdGlvbihldmFsX2ZuKTsKLQkJCQlMTFZNRGlzcG9zZUJ1aWxkZXIoYik7Ci0JCQkJcmV0 dXJuIGZhbHNlOworCQkJCWhhc19ycHJfbmF2ID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCX0KIAkJ fQogCX0KQEAgLTQ5Miw4ICs0OTEsMzcgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpz dGF0ZSkKIAkJCQkJfQogCQkJCQllbHNlIGlmIChvcGNvZGUgPT0gRUVPUF9PVVRFUl9WQVIpCiAJ CQkJCXsKLQkJCQkJCXZfdmFsdWVzID0gdl9vdXRlcnZhbHVlczsKLQkJCQkJCXZfbnVsbHMgPSB2 X291dGVybnVsbHM7CisJCQkJCQlpZiAoaGFzX3Jwcl9uYXYpCisJCQkJCQl7CisJCQkJCQkJLyoK KwkJCQkJCQkgKiBSUFIgbmF2aWdhdGlvbiBzd2FwcyBlY3h0X291dGVydHVwbGUKKwkJCQkJCQkg KiBtaWQtZXhwcmVzc2lvbi4gIFJlbG9hZCBzbG90IHBvaW50ZXIgZnJvbQorCQkJCQkJCSAqIGVj b250ZXh0IG9uIGV2ZXJ5IGFjY2VzcyBzbyB3ZSByZWFkIGZyb20gdGhlCisJCQkJCQkJICogY3Vy cmVudCAocG9zc2libHkgc3dhcHBlZCkgc2xvdC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlMTFZNVmFs dWVSZWYgdl90bXBzbG90OworCisJCQkJCQkJdl90bXBzbG90ID0gbF9sb2FkX3N0cnVjdF9nZXAo YiwKKwkJCQkJCQkJCQkJCQkJICBTdHJ1Y3RFeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJCQkJICB2 X2Vjb250ZXh0LAorCQkJCQkJCQkJCQkJCQkgIEZJRUxETk9fRVhQUkNPTlRFWFRfT1VURVJUVVBM RSwKKwkJCQkJCQkJCQkJCQkJICAidl9vdXRlcnNsb3RfcmVsb2FkIik7CisJCQkJCQkJdl92YWx1 ZXMgPSBsX2xvYWRfc3RydWN0X2dlcChiLAorCQkJCQkJCQkJCQkJCQkgU3RydWN0VHVwbGVUYWJs ZVNsb3QsCisJCQkJCQkJCQkJCQkJCSB2X3RtcHNsb3QsCisJCQkJCQkJCQkJCQkJCSBGSUVMRE5P X1RVUExFVEFCTEVTTE9UX1ZBTFVFUywKKwkJCQkJCQkJCQkJCQkJICJ2X291dGVydmFsdWVzX3Jl bG9hZCIpOworCQkJCQkJCXZfbnVsbHMgPSBsX2xvYWRfc3RydWN0X2dlcChiLAorCQkJCQkJCQkJ CQkJCQlTdHJ1Y3RUdXBsZVRhYmxlU2xvdCwKKwkJCQkJCQkJCQkJCQkJdl90bXBzbG90LAorCQkJ CQkJCQkJCQkJCQlGSUVMRE5PX1RVUExFVEFCTEVTTE9UX0lTTlVMTCwKKwkJCQkJCQkJCQkJCQkJ InZfb3V0ZXJudWxsc19yZWxvYWQiKTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJCQkJCXsKKwkJ CQkJCQl2X3ZhbHVlcyA9IHZfb3V0ZXJ2YWx1ZXM7CisJCQkJCQkJdl9udWxscyA9IHZfb3V0ZXJu dWxsczsKKwkJCQkJCX0KIAkJCQkJfQogCQkJCQllbHNlIGlmIChvcGNvZGUgPT0gRUVPUF9TQ0FO X1ZBUikKIAkJCQkJewpAQCAtMjQ2NywxMCArMjQ5NSwxNiBAQCBsbHZtX2NvbXBpbGVfZXhwcihF eHByU3RhdGUgKnN0YXRlKQogCQkJCWJyZWFrOwogCiAJCQljYXNlIEVFT1BfUlBSX05BVl9TRVQ6 CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsUlBSTmF2U2V0IiwKKwkJCQkJ CQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tz W29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9SUFJfTkFWX1JFU1RPUkU6 Ci0JCQkJLyogdW5yZWFjaGFibGU6IGZpbHRlcmVkIG91dCBieSB0aGUgcHJlLXNjYW4gYWJvdmUg Ki8KLQkJCQlBc3NlcnQoZmFsc2UpOwotCQkJCXJldHVybiBmYWxzZTsKKwkJCQlidWlsZF9FdmFs WEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxSUFJOYXZSZXN0b3JlIiwKKwkJCQkJCQkJdl9zdGF0ZSwg b3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7 CisJCQkJYnJlYWs7CiAKIAkJCWNhc2UgRUVPUF9BR0dfU1RSSUNUX0RFU0VSSUFMSVpFOgogCQkJ Y2FzZSBFRU9QX0FHR19ERVNFUklBTElaRToKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dAppbmRl eCBiMDA1YzdlMDdhMS4uNTQxZTZiZjhmOTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQK QEAgLTIxNTMsNiArMjE1MywzNyBAQCBTRUxFQ1QgbWF0Y2hfZmlyc3QsIG1hdGNoX2xhc3QsIG1h dGNoX2xlbiBGUk9NIHJlc3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOwogICAgICAgICAgICAwIHwg ICAgICA5OTk5OCB8ICAgICA5OTk5OQogKDEgcm93KQogCistLSBKSVQgUFJFVi9ORVhUIG5hdmln YXRpb24gdGVzdDogMTAwSyByb3dzIHdpdGggUFJFViBpbiBERUZJTkUuCistLSBFeGVyY2lzZXMg RUVPUF9SUFJfTkFWX1NFVC9SRVNUT1JFIEpJVCBjb2RlIHBhdGhzIChoYXNfcnByX25hdiByZWxv YWQpCistLSBhdCBzY2FsZS4gVi1zaGFwZTogcHJpY2UgcmlzZXMgdGhlbiBmYWxscywgcmVwZWF0 ZWQgYWNyb3NzIHBhcnRpdGlvbi4KK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitXSVRIIGRhdGEg QVMgKAorIFNFTEVDVCBpLCBhYnMoNTAwMDAgLSBpKSBBUyBwcmljZQorIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMDAwMCkgaQorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIGksIHByaWNlLAor ICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1 ZShwcmljZSkgT1ZFUiB3IEFTIG1hdGNoX2ZpcnN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMg KAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoRE9X TisgVVArKQorICBERUZJTkUKKyAgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgIFVQ IEFTIHByaWNlID4gUFJFVihwcmljZSkKKyApCispCitTRUxFQ1QgY291bnQoKikgQVMgbWF0Y2hl ZF9yb3dzLCBtYXgobWF0Y2hfbGVuKSBBUyBsb25nZXN0X21hdGNoCitGUk9NIHJlc3VsdCBXSEVS RSBtYXRjaF9sZW4gPiAwOworIG1hdGNoZWRfcm93cyB8IGxvbmdlc3RfbWF0Y2ggCistLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIDEgfCAgICAgICAgIDk5OTk5Ciso MSByb3cpCisKK1JFU0VUIGppdF9hYm92ZV9jb3N0OwogLS0KIC0tIFN1YnF1ZXJ5IHdyYXBwaW5n OiBSUFIgd2luZG93IGluc2lkZSBvdXRlciBhZ2dyZWdhdGUuCiAtLSBUZXN0cyB0aGF0IFdpbmRv d0FnZyBpcyBub3QgcmVtb3ZlZCBieSByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKaW5kZXggNDlkYWM5MzJkOTYuLmNjOGRhYWU0ODFlIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwci5zcWwKQEAgLTEwODQsNiArMTA4NCwzMyBAQCByZXN1bHQgQVMgKAogLS0gU2hvdWxkIG1h dGNoOiBBICgzMzMzMyByb3dzKSArIEIgKDMzMzMzIHJvd3MpICsgQyAoMzMzMzMgcm93cykgPSA5 OTk5OSByb3dzCiBTRUxFQ1QgbWF0Y2hfZmlyc3QsIG1hdGNoX2xhc3QsIG1hdGNoX2xlbiBGUk9N IHJlc3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOwogCistLSBKSVQgUFJFVi9ORVhUIG5hdmlnYXRp b24gdGVzdDogMTAwSyByb3dzIHdpdGggUFJFViBpbiBERUZJTkUuCistLSBFeGVyY2lzZXMgRUVP UF9SUFJfTkFWX1NFVC9SRVNUT1JFIEpJVCBjb2RlIHBhdGhzIChoYXNfcnByX25hdiByZWxvYWQp CistLSBhdCBzY2FsZS4gVi1zaGFwZTogcHJpY2UgcmlzZXMgdGhlbiBmYWxscywgcmVwZWF0ZWQg YWNyb3NzIHBhcnRpdGlvbi4KK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitXSVRIIGRhdGEgQVMg KAorIFNFTEVDVCBpLCBhYnMoNTAwMDAgLSBpKSBBUyBwcmljZQorIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDAwMCkgaQorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIGksIHByaWNlLAorICAg ICAgICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3IEFTIG1hdGNoX2ZpcnN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMgKAor ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoRE9XTisg VVArKQorICBERUZJTkUKKyAgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgIFVQIEFT IHByaWNlID4gUFJFVihwcmljZSkKKyApCispCitTRUxFQ1QgY291bnQoKikgQVMgbWF0Y2hlZF9y b3dzLCBtYXgobWF0Y2hfbGVuKSBBUyBsb25nZXN0X21hdGNoCitGUk9NIHJlc3VsdCBXSEVSRSBt YXRjaF9sZW4gPiAwOworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CisKIC0tCiAtLSBTdWJxdWVyeSB3 cmFwcGluZzogUlBSIHdpbmRvdyBpbnNpZGUgb3V0ZXIgYWdncmVnYXRlLgogLS0gVGVzdHMgdGhh dCBXaW5kb3dBZ2cgaXMgbm90IHJlbW92ZWQgYnkgcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRw dXRzKCkKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000e57c52064e721c75--