Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoxJs-00De9S-AM for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Aug 2025 04:54:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uoxJr-00Drc9-P7 for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Aug 2025 04:54:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoxJr-00Drc1-6K for pgsql-hackers@lists.postgresql.org; Thu, 21 Aug 2025 04:54:36 +0000 Received: from mail-pj1-x1044.google.com ([2607:f8b0:4864:20::1044]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uoxJo-0012C6-1A for pgsql-hackers@postgresql.org; Thu, 21 Aug 2025 04:54:35 +0000 Received: by mail-pj1-x1044.google.com with SMTP id 98e67ed59e1d1-323267bcee7so791832a91.1 for ; Wed, 20 Aug 2025 21:54:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755752070; x=1756356870; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Q9Fq7KpMoOFIMyxUukCFdgsR2oae+7EmM9CMQ6AtEuo=; b=Xx3OvohNEejCM1fHdd+nJjknu8IWRgkHiDxoDB4KQf4Y5JwAJiQQvL8373n9xLsbOK AN1kWur26871RcVJJ4Yg9/OtNyL90NE6BC30wGxsH41vfnuSZ+Tl9ZVAJb8QN2krFWVD +tua/ktc4QSGxUWw6UXF5k0flGC+iGOj6PAX8TjY0bo+PUkbwFkrITMtCHIIRJjcB/hw pzTd5UBdt0sTNo1yvUnk6lOr1JztEOV9XkQmrbES5Kiwqy2zRvxKgPctMc+mdPULVfKY ePzMGDlzOcw1LNyEXgXbZCdsFy6Y5Vofi83U3LitthAJ5zzo2AnjM3+aTKrVSxLwXPzZ TaIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755752070; x=1756356870; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Q9Fq7KpMoOFIMyxUukCFdgsR2oae+7EmM9CMQ6AtEuo=; b=DrrtJAt443BIt3bFuOVV15bEPSs7vtOw6ekb4F7e4ZTWLeGd8ImEHKo0xf+pOM/lk3 yDJgDYN5Z/BJY30ycrPhaP39gD7iiGjlS8MMQMCpUpK2RT75nP1fZYtAu/Y8jrfO4KiN WJVKJDBEjxSmbHJaWVhlQk9y5edlSAl5kUVbUh8n3ej67Hn/hM1pOPfsimOu6rM/L3fM CyydVfjZYcRkQC5fUvYaaQh033hGcZZASbcq9t6v+7Z3Lm/okUlaTxCVZRsyTonHyHHc jdnJyKynuElmjEO6VV1whHKnTBcKrD9ezOfQXLtI+IaPlttO+NC0xLAD2uTG1wUOh9GQ HDhg== X-Forwarded-Encrypted: i=1; AJvYcCW20Di0aa7/gB+SdoWCGG6yukpTKE+xclcN/ssa0rBtTDSfXh2V/BS6DggfmG+EcZdmEwuOsnj6IAX6E8Ga@postgresql.org X-Gm-Message-State: AOJu0Yx8zBPWLs63gCTQgWks7RaeHVy30dssX5lF/5+HMpy2z3Ylq5gj 0V1OpiaX2XwoEbnqsKfJ9StKru9JXdAJNM4fA9F3fstjrfLGUgucR9R8yaLlxsLpnEt8GAsid/s nj01ic/mCktn/ZzyYTwrR7Y37A+hjYUA= X-Gm-Gg: ASbGnctKuqhuCIOL+crtI9KJb7BVI191DNFgy95d3qnnKlMigBoD+erNZWUNwjJq9eF yFmKryGdsZuF6LLQw0TLzdTHcl99SO63rwcKsGaQg/5n/C/BZgIQ8y5z9MNvBbO7dUicmTCuGsc cfkDJIfUsIy1IyZoNPOqkaJ5JPFSkOSkeKXHwU4aH1+LdeASDW2tvHzgeKo99ASAU+fupjX2s29 o1VX86a X-Google-Smtp-Source: AGHT+IFcaLMJaZPikiKZ3sH55t12xebw5nfZmO9T5OjoZ2HA3h0zO69C//9OkXn+vYsdBv3aO2BV0Nu7rRnWgyJByqg= X-Received: by 2002:a17:90b:384f:b0:321:c02f:3fac with SMTP id 98e67ed59e1d1-324ed1d6384mr1688724a91.35.1755752069774; Wed, 20 Aug 2025 21:54:29 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: From: Alexandra Wang Date: Wed, 20 Aug 2025 21:53:53 -0700 X-Gm-Features: Ac12FXzlQ6M1gxrJ6z1tXHgTrGvrci4CHuoHiqsJWxwnp3ayTeoDK94w7ykKMfk Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: jian he Cc: Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" Content-Type: multipart/mixed; boundary="0000000000006eee59063cd8e278" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006eee59063cd8e278 Content-Type: multipart/alternative; boundary="0000000000006eee56063cd8e276" --0000000000006eee56063cd8e276 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jian, Thanks for reviewing! I=E2=80=99ve attached v13, which addresses your feedback. See my individual replies below, and let me know if you have any questions! On Thu, Jul 10, 2025 at 1:54=E2=80=AFAM jian he wrote: > in v12-0001 and v12-0002. > in transformIndirection > if (!newresult) > { > /* > * generic subscripting failed; falling back to function call > or > * field selection for a composite type. > */ > Node *n; > /* try to find function for field selection */ > newresult =3D ParseFuncOrColumn(pstate, > list_make1(n), > list_make1(result), > last_srf, > NULL, > false, > location); > } > the above comments mentioning "function call" is wrong? > you passed NULL for (FuncCall *fn) in ParseFuncOrColumn. > and ParseFuncOrColumn comments says > ```If fn is null, we're dealing with column syntax not function syntax.`` > You are right. Fixed. On Thu, Jul 10, 2025 at 1:54=E2=80=AFAM jian he wrote: > I think coerce_jsonpath_subscript can be further simplified. > we already have message like: > errhint("jsonb subscript must be coercible to either integer or text."), > no need to pass the third argument a constant (INT4OID). > also > ``Oid targetType =3D UNKNOWNOID;`` > set it as InvalidOid would be better. > attached is a minor refactoring of coerce_jsonpath_subscript > based on (v12-0001 to v12-0004). > Thanks for the patch! I squashed it with v13-0004 and renamed the function to coerce_jsonpath_subscript_to_int4_or_text() for clarity. On Thu, Jul 10, 2025 at 1:54=E2=80=AFAM jian he wrote: > after applied v12-0001 to v12-0006 > + /* emit warning conditionally to minimize duplicate warnings */ > + if (list_length(*indirection) > 0) > + ereport(WARNING, > + errcode(ERRCODE_WARNING), > + errmsg("mixed usage of jsonb simplified accessor syntax and jsonb > subscripting."), > + errhint("use dot-notation for member access, or use non-null integer > constants subscripting for array access."), > + parser_errposition(pstate, warning_location)); > > src7=3D# select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb).d['1'::int8= ]; > WARNING: mixed usage of jsonb simplified accessor syntax and jsonb > subscripting. > LINE 1: ...t ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb).d['1'::int8]..= . > ^ > HINT: use dot-notation for member access, or use non-null integer > constants subscripting for array access. > ERROR: subscript type bigint is not supported > LINE 1: ...t ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb).d['1'::int8]..= . > ^ > HINT: jsonb subscript must be coercible to either integer or text. > > The above example looks very bad. location printed twice, hint message > is different. > two messages level (ERROR, WARNING). > > also "or use non-null integer constants subscripting for array > access." seems wrong? > as you can see the below hint message saying it could be text or integer. > > select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['1'::int8]; > ERROR: subscript type bigint is not supported > LINE 1: ...ect ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)['1'::int8]..= . > ^ > HINT: jsonb subscript must be coercible to either integer or text. > > also select ('{"a": 1, "b": "c", "d": [1, 2, 3]}'::jsonb)[NULL::int4]; > return NULL, so "use non-null integer constants" is wrong. > I see your confusion about the WARNING/ERROR messages. My intent was to encourage users to use consistent syntax flavors rather than mixing the SQL standard JSON simplified accessor with the pre-standard PostgreSQL jsonb subscripting. In the meantime, I want to support mixed syntax flavors as much as possible. However, your feedback makes it clear that users don=E2=80=99t need that level of details. So, in v13 I= =E2=80=99ve removed the WARNING message and instead added a comment explaining how we support mixed syntaxes. Here's the relevant diff between v12 and v13, hope it helps: --- a/src/backend/utils/adt/jsonbsubs.c +++ b/src/backend/utils/adt/jsonbsubs.c @@ -247,7 +247,6 @@ jsonb_subscript_make_jsonpath(ParseState *pstate, List **indirection, Subscripti ListCell *lc; Datum jsp; int pathlen =3D 0; - int warning_location =3D -1; sbsref->refupperindexpr =3D NIL; sbsref->reflowerindexpr =3D NIL; @@ -311,10 +310,27 @@ jsonb_subscript_make_jsonpath(ParseState *pstate, List **indirection, Subscripti if (jpi_from =3D=3D NULL) { /* - * postpone emitting the warning until the end of this - * function + * Break out of the loop if the subscript is not a + * non-null integer constant, so that we can fall back to + * jsonb subscripting logic. + * + * This is needed to handle cases with mixed usage of SQL + * standard json simplified accessor syntax and PostgreSQL + * jsonb subscripting syntax, e.g: + * + * select (jb).a['b'].c from jsonb_table; + * + * where dot-notation (.a and .c) is the SQL standard json + * simplified accessor syntax, and the ['b'] subscript is + * the PostgreSQL jsonb subscripting syntax, because 'b' + * is not a non-null constant integer and cannot be used + * for json array access. + * + * In this case, we cannot create a JsonPath item, so we + * break out of the loop and let + * jsonb_subscript_transform() handle this indirection as + * a PostgreSQL jsonb subscript. */ - warning_location =3D exprLocation(ai->uidx); pfree(jpi->value.array.elems); pfree(jpi); break; @@ -360,14 +376,6 @@ jsonb_subscript_make_jsonpath(ParseState *pstate, List **indirection, Subscripti *indirection =3D list_delete_first_n(*indirection, pathlen); - /* emit warning conditionally to minimize duplicate warnings */ - if (list_length(*indirection) > 0) - ereport(WARNING, - errcode(ERRCODE_WARNING), - errmsg("mixed usage of jsonb simplified accessor syntax and jsonb subscripting."), - errhint("use dot-notation for member access, or use non-null integer constants subscripting for array access."), - parser_errposition(pstate, warning_location)); - jsp =3D jsonPathFromParseResult(&jpres, 0, NULL); On Thu, Jul 10, 2025 at 6:34=E2=80=AFAM jian he wrote: > typedef struct FieldAccessorExpr > { > Expr xpr; > char *fieldname; /* name of the JSONB object field > accessed via > * dot notation */ > Oid faecollid pg_node_attr(query_jumble_ignore); > int location; > } FieldAccessorExpr; > > first field as NodeTag should be just fine? > I am not sure the field "location" is needed now, if it is needed, it > should be > type as ParseLoc. > we should add it to src/tools/pgindent/typedefs.list Good catch! I changed the first field from Expr to NodeTag, removed the location field, and added the Node to typedefs.list. On Thu, Jul 10, 2025 at 10:54=E2=80=AFPM jian he wrote: > On Thu, Jul 10, 2025 at 9:34=E2=80=AFPM jian he > wrote: > > > > ------------------------------------------ > > in jsonb_subscript_make_jsonpath we have > > foreach(lc, *indirection) > > { > > if (IsA(accessor, String)) > > .... > > else if (IsA(accessor, A_Indices)) > > else > > /* > > * Unsupported node type for creating jsonpath. Instead of > > * throwing an ERROR, break here so that we create a > jsonpath from > > * as many indirection elements as we can and let > > * transformIndirection() fallback to alternative logic to > handle > > * the remaining indirection elements. > > */ > > break; > > } > > the above ELSE branch comments look suspicious to me. > I kept the "else" branch, but added an Assert with updated comments. Here's the relevant diff between v12 and v13: In jsonb_subscript_make_jsonpath(): else { - * Unsupported node type for creating jsonpath. Instead of - * throwing an ERROR, break here so that we create a jsonpath from - * as many indirection elements as we can and let - * transformIndirection() fallback to alternative logic to handle - * the remaining indirection elements. + * Unexpected node type in indirection list. This should not + * happen with current grammar, but we handle it defensively by + * breaking out of the loop rather than crashing. In case of + * future grammar changes that might introduce new node types, + * this allows us to create a jsonpath from as many indirection + * elements as we can and let transformIndirection() fallback to + * alternative logic to handle the remaining indirection elements. + Assert(false); /* not reachable */ break; } Hope the updated comment clarifies why I kept it. On Thu, Jul 10, 2025 at 10:54=E2=80=AFPM jian he wrote: > > > transformIndirection->transformContainerSubscripts->jsonb_subscript_trans= form->jsonb_subscript_make_jsonpath > > As you can see, transformIndirection have a long distance from > > jsonb_subscript_make_jsonpath, > > let transformIndirection handle remaining indirection elements seems no= t > good. > In 0001's commit message, we are given the following promise: Author: Nikita Glukhov Date: Tue Jul 8 22:18:07 2025 -0700 Allow transformation of only a sublist of subscripts This is a preparation step for allowing subscripting containers to transform only a prefix of an indirection list and modify the list in-place by removing the processed elements. Currently, all elements are consumed, and the list is set to NIL after transformation. In the following commit, subscripting containers will gain the flexibility to stop transformation when encountering an unsupported indirection and return the remaining indirections to the caller. With this contract provided by the subscripting interface to the container's transform function, I don't feel terribly inappropriate to let jsonb's transform function: jsonb_subscript_transform(), to transform indirections as much as it can, and leave the rest to transformIndirection(). 0002 is a good example that shows why the else branch is useful: it adds support for String as a subscript node of jsonb, while String is still unsupported in other in-core container subscripting. For example, array_subscript_transform() has: if (!IsA(lfirst(idx), A_Indices)) break; The else branch in jsonb_subscript_make_jsonpath() just follows that same convention. > context v12-0001 to v12-0006. > this ELSE branch comments is wrong, because > + if (jsonb_check_jsonpath_needed(*indirection)) > + { > + jsonb_subscript_make_jsonpath(pstate, indirection, sbsref); > + if (sbsref->refjsonbpath) > + return; > + } > in jsonb_check_jsonpath_needed we already use Assert to confirm that > list "indirection" > is either String or A_Indices Node. > The Assert I added in v13, as well as the one you mentioned in jsonb_check_jsonpath_needed(), are both only applicable in development build and won=E2=80=99t help in production. So I=E2=80=99d prefer to break = here and let the callee handle any unexpected Node with an ERROR. Let me know if this explanation makes sense. If not, and if you think the current logic is overly complicated, we can discuss further. On Thu, Jul 10, 2025 at 10:54=E2=80=AFPM jian he wrote: > in transformContainerSubscripts we have > sbsroutines->transform(sbsref, indirection, pstate, > isSlice, isAssignment); > /* > * Error out, if datatype failed to consume any indirection elements. > */ > if (list_length(*indirection) =3D=3D indirection_length) > { > Node *ind =3D linitial(*indirection); > if (noError) > return NULL; > if (IsA(ind, String)) > ereport(ERROR, > (errcode(ERRCODE_DATATYPE_MISMATCH), > errmsg("type %s does not support dot notation", > format_type_be(containerType)), > parser_errposition(pstate, > exprLocation(containerBase)))); > else if (IsA(ind, A_Indices)) > ereport(ERROR, > (errcode(ERRCODE_DATATYPE_MISMATCH), > errmsg("type %s does not support array subscripting"= , > format_type_be(containerType)), > parser_errposition(pstate, > exprLocation(containerBase)))); > else > elog(ERROR, "invalid indirection operation: %d", nodeTag(ind)= ); > } > sbsroutines->transform currently will call > array_subscript_transform, hstore_subscript_transform, > jsonb_subscript_transform > > in jsonb_subscript_transform callee we unconditionally do: > *indirection =3D list_delete_first_n(*indirection, pathlen); > *indirection =3D list_delete_first_n(*indirection, > list_length(upperIndexpr)); > in array_subscript_transform, we do > *indirection =3D list_delete_first_n(*indirection, ndim); > > That means, if sbsroutines->transform not error out and indirection is > not NIL (which is unlikely) > then sbsroutines->transform will consume some induction elements. > instead of the above verbose ereport(ERROR, error handling, we can use > Assert > Assert(indirection_length > list_length(*indirection)); > > for the above comments, i did a refactoring based on v12 (0001 to 0006). Thanks for the patch! I didn=E2=80=99t apply it for the same reason I mentioned in the previous quote reply. In the case of an unexpected Node type, I prefer raising an explicit ERROR rather than using an Assert() that crashes in a dev build but silently continues in production. One possible way to hit these ERRORs is by creating a custom data type that supports subscripting, but only for a subset of Node types that transformIndirection() allows. Best, Alex --0000000000006eee56063cd8e276 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Jian,

Thanks for re= viewing! I=E2=80=99ve attached v13, which addresses your
feedback.

See my individual replies below, and let me know if= you have any
questions!

On Thu, Jul 10, = 2025 at 1:54=E2=80=AFAM jian he <jian.universality@gmail.com> wrote:
in v12-0001 and v12-0002.
in transformIndirection
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!newresult)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* generic subscripting fail= ed; falling back to function call or
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* field selection for a com= posite type.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Node=C2=A0 =C2=A0 =C2=A0 =C2=A0*n= ;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* try to find function for field= selection */
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 newresult =3D ParseFuncOrColumn(p= state,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 l= ist_make1(n),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 l= ist_make1(result),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 l= ast_srf,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 N= ULL,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 f= alse,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 l= ocation);
}
the above comments mentioning "function call" is wrong?
you passed NULL for (FuncCall *fn) in ParseFuncOrColumn.
and ParseFuncOrColumn comments says
```If fn is null, we're dealing with column syntax not function syntax.= ``
=C2=A0
You are right. Fixed.
= =C2=A0
On Thu, Jul 10, 2025 at 1:54=E2=80=AFAM jian he <jian.universality@gmail.com>= ; wrote:
I think coerce_jsonpath_subscript can be further simplified.
we already have message like:
errhint("jsonb subscript must be coercible to either integer or text.&= quot;),
no need to pass the third argument a constant (INT4OID).
also
``Oid=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 targetType =3D UNKNOWNOID;``=
set it as InvalidOid would be better.
attached is a minor refactoring of coerce_jsonpath_subscript
based on (v12-0001 to v12-0004).

Thanks= for the patch! I squashed it with v13-0004 and renamed the
function to = coerce_jsonpath_subscript_to_int4_or_text() for clarity.
=C2= =A0
On Thu, Jul 10, 2025 at 1:54=E2=80=AFAM jian he <jian.universality@gmail.com>= wrote:
after applied v12-0001 to v12-0006
+ /* emit warning conditionally to minimize duplicate warnings */
+ if (list_length(*indirection) > 0)
+ ereport(WARNING,
+ errcode(ERRCODE_WARNING),
+ errmsg("mixed usage of jsonb simplified accessor syntax and jsonb subscripting."),
+ errhint("use dot-notation for member access, or use non-null integer=
constants subscripting for array access."),
+ parser_errposition(pstate, warning_location));

src7=3D# select ('{"a": 1, "b": "c", &quo= t;d": [1, 2, 3]}'::jsonb).d['1'::int8];
WARNING:=C2=A0 mixed usage of jsonb simplified accessor syntax and jsonb subscripting.
LINE 1: ...t ('{"a": 1, "b": "c", "d= ": [1, 2, 3]}'::jsonb).d['1'::int8]...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^
HINT:=C2=A0 use dot-notation for member access, or use non-null integer
constants subscripting for array access.
ERROR:=C2=A0 subscript type bigint is not supported
LINE 1: ...t ('{"a": 1, "b": "c", "d= ": [1, 2, 3]}'::jsonb).d['1'::int8]...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^
HINT:=C2=A0 jsonb subscript must be coercible to either integer or text.
The above example looks very bad. location printed twice, hint message
is different.
two messages level (ERROR, WARNING).

also "or use non-null integer constants subscripting for array
access." seems wrong?
as you can see the below hint message saying it could be text or integer.
select ('{"a": 1, "b": "c", "d"= : [1, 2, 3]}'::jsonb)['1'::int8];
ERROR:=C2=A0 subscript type bigint is not supported
LINE 1: ...ect ('{"a": 1, "b": "c", "= ;d": [1, 2, 3]}'::jsonb)['1'::int8]...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^
HINT:=C2=A0 jsonb subscript must be coercible to either integer or text.
also select ('{"a": 1, "b": "c", "d&= quot;: [1, 2, 3]}'::jsonb)[NULL::int4];
return NULL,=C2=A0 so "use non-null integer constants" is wrong.<= br>

I see your confusion about the WARNING/= ERROR messages. My intent was
to encourage users to use consistent synta= x flavors rather than mixing
the SQL standard JSON simplified accessor w= ith the pre-standard
PostgreSQL jsonb subscripting. In the meantime, I w= ant to support
mixed syntax flavors as much as possible. However, your f= eedback makes
it clear that users don=E2=80=99t need that level of detai= ls. So, in v13 I=E2=80=99ve
removed the WARNING message and instead adde= d a comment explaining how
we support mixed syntaxes.

=
Here's the relevant diff between v12 and v13, hope it helps:=

--- a/src/backend/utils/adt/jsonbsubs.c
+++ b/= src/backend/utils/adt/jsonbsubs.c
@@ -247,7 +247,6 @@ jsonb_subscript_ma= ke_jsonpath(ParseState *pstate, List **indirection, Subscripti
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 ListCell =C2=A0 *lc;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Da= tum =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 jsp;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = int =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 p= athlen =3D 0;
- =C2=A0 =C2=A0 =C2=A0 int =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 warning_location =3D -1;

=C2= =A0 =C2=A0 =C2=A0 =C2=A0 sbsref->refupperindexpr =3D NIL;
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 sbsref->reflowerindexpr =3D NIL;
@@ -311,10 +310,27= @@ jsonb_subscript_make_jsonpath(ParseState *pstate, List **indirection, S= ubscripti
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (jpi_from =3D=3D NULL)=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* postpone emitting the warning until= the end of this
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0* function
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0* Break out of the loop if the subscript is not a
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* non-nul= l integer constant, so that we can fall back to
+ =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* jsonb subscripting logic.+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*
+= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* This is= needed to handle cases with mixed usage of SQL
+ =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* standard json simplified acc= essor syntax and PostgreSQL
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0* jsonb subscripting syntax, e.g:
+ =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*
+ =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* select (jb).a['b&= #39;].c from jsonb_table;
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0*
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0* where dot-notation (.a and .c) is the SQL standar= d json
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0* simplified accessor syntax, and the ['b'] subscript is
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* the Pos= tgreSQL jsonb subscripting syntax, because 'b'
+ =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* is not a non-null con= stant integer and cannot be used
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* for json array access.
+ =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*
+ =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* In this case, we cann= ot create a JsonPath item, so we
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* break out of the loop and let
+ =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* jsonb_subscrip= t_transform() handle this indirection as
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* a PostgreSQL jsonb subscript.
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/=
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 warning_loc= ation =3D exprLocation(ai->uidx);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pfree(jpi->value.array.elems);
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pfree(jpi);
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;@@ -360,14 +376,6 @@ jsonb_subscript_make_jsonpath(ParseState *pstate, Li= st **indirection, Subscripti

=C2=A0 =C2=A0 =C2=A0 =C2=A0 *indirectio= n =3D list_delete_first_n(*indirection, pathlen);

- =C2=A0 =C2=A0 = =C2=A0 /* emit warning conditionally to minimize duplicate warnings */
-= =C2=A0 =C2=A0 =C2=A0 if (list_length(*indirection) > 0)
- =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(WARNING,
- =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 errcode(ERRCODE_WARNING),
- =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 errmsg("mixed usage of jsonb simplified accessor syntax and jso= nb subscripting."),
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 errhint("u= se dot-notation for member access, or use non-null integer constants subscr= ipting for array access."),
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 parse= r_errposition(pstate, warning_location));
-
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 jsp =3D jsonPathFromParseResult(&jpres, 0, NULL);

On Thu, Jul 10, 2025 at 6:34=E2=80= =AFAM jian he <jian.unive= rsality@gmail.com> wrote:
typedef struct FieldAccessorExpr
{
=C2=A0 =C2=A0 Expr=C2= =A0 =C2=A0 =C2=A0 =C2=A0 xpr;
=C2=A0 =C2=A0 char=C2=A0 =C2=A0 =C2=A0 =C2= =A0*fieldname;=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* name of the JSONB object field= accessed via
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* dot notatio= n */
=C2=A0 =C2=A0 Oid=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 faecolli= d pg_node_attr(query_jumble_ignore);
=C2=A0 =C2=A0 int=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 location;
}=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 FieldAccessorExpr;

first field as NodeTag should be just fine= ?
I am not sure the field "location" is needed now, if it is n= eeded, it should be
type as ParseLoc.
we should add it to src/tools/p= gindent/typedefs.list

Good catch! I changed= the first field from Expr to NodeTag, removed
the location field, and a= dded the Node to typedefs.list.

On Thu, Jul= 10, 2025 at 10:54=E2=80=AFPM jian he <jian.universality@gmail.com> wrote:
On Thu, Jul 10, 2025 at 9:34=E2=80= =AFPM jian he <jian.universality@gmail.com> wrote:
>
> --------= ----------------------------------
> in jsonb_subscript_make_jsonpath= we have
>=C2=A0 =C2=A0 =C2=A0foreach(lc, *indirection)
> {
= >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (IsA(accessor, String))
>=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0....
>=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0else if (IsA(accessor, A_Indices))
>=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0else
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0/*
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * Unsuppor= ted node type for creating jsonpath. Instead of
>=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 * throwing an ERROR, break here so that we cre= ate a jsonpath from
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= * as many indirection elements as we can and let
>=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * transformIndirection() fallback to altern= ative logic to handle
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 * the remaining indirection elements.
>=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 */
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0break;
> }
> the above ELSE branch comments lo= ok suspicious to me.

I kept the &q= uot;else" branch, but added an=C2=A0Assert with updated comments.

Here's the relevant diff between v12 and v13:

In jsonb_subscript_make_jsonpath():
else
{
- * Un= supported node type for creating jsonpath. Instead of
- * throwing an ER= ROR, break here so that we create a jsonpath from
- * as many indirectio= n elements as we can and let
- * transformIndirection() fallback to alte= rnative logic to handle
- * the remaining indirection elements.
+ * U= nexpected node type in indirection list. This should not
+ * happen with= current grammar, but we handle it defensively by
+ * breaking out of th= e loop rather than crashing. In case of
+ * future grammar changes that = might introduce new node types,
+ * this allows us to create a jsonpath = from as many indirection
+ * elements as we can and let transformIndirec= tion() fallback to
+ * alternative logic to handle the remaining indirec= tion elements.
+ Assert(false); /* not reachable */
break;
}
=

Hope the updated comment clarifies why I kept it.
= =C2=A0
On Thu, Jul 10, 2025 at 10:54=E2=80=AFPM jian he <jian.universality@gmail.com&g= t; wrote:
> trans= formIndirection->transformContainerSubscripts->jsonb_subscript_transf= orm->jsonb_subscript_make_jsonpath
> As you can see, transformIndi= rection have a long distance from
> jsonb_subscript_make_jsonpath,> let transformIndirection handle remaining indirection elements seems = not good.

In 0001's commit message,= we are given the following promise:

Author: Nikita Glu= khov <n.gluhov@postgrespro.ru= >
Date: =C2=A0 Tue Jul 8 22:18:07 2025 -0700

=C2=A0 =C2=A0= Allow transformation of only a sublist of subscripts

=C2=A0 =C2=A0 = This is a preparation step for allowing subscripting containers to
=C2= =A0 =C2=A0 transform only a prefix of an indirection list and modify the li= st
=C2=A0 =C2=A0 in-place by removing the processed elements. Currently,= all elements
=C2=A0 =C2=A0 are consumed, and the list is set to NIL aft= er transformation.

=C2=A0 =C2=A0 In the following commit, subscripti= ng containers will gain the
=C2=A0 =C2=A0 flexibility to stop transforma= tion when encountering an unsupported
=C2=A0 =C2=A0 indirection and= return the remaining indirections to the caller.=C2=A0

With this contract provided by the subscripting interface to the
c= ontainer's transform function, I don't feel terribly inappropriate = to
let jsonb's transform function: jsonb_subscript_transform(), totransform indirections as much as it can, and leave the rest to
transf= ormIndirection().

0002 is a good example that = shows why the else branch is useful: it
adds support for String as a sub= script node of jsonb, while String is
still unsupported in other in-core= container subscripting.

For example, array_subscr= ipt_transform() has:
if (!IsA(lfirst(idx), A_Indices))
=C2=A0 = =C2=A0 break;

The else branch in jsonb_subscript_make_js= onpath() just follows that
same convention.
=C2=A0
context v12-0001 to v12-000= 6.
this ELSE branch comments is wrong, because
+ if (jsonb_check_json= path_needed(*indirection))
+ {
+ jsonb_subscript_make_jsonpath(pstate= , indirection, sbsref);
+ if (sbsref->refjsonbpath)
+ return;
+= }
in jsonb_check_jsonpath_needed we already use Assert to confirm that<= br>list "indirection"
is either String or A_Indices Node.
<= /blockquote>

The Assert I added in v13, as well as the o= ne you mentioned in
jsonb_check_jsonpath_needed(), are both only applica= ble in development
build and won=E2=80=99t help in production. So I=E2= =80=99d prefer to break here and
let the callee handle any unexpected No= de with an ERROR.

Let me know if this explanation makes sense. If no= t, and if you think
the current logic is overly complicated, we can disc= uss further.
=C2=A0
On Thu, Jul 10, 2025 at 10:54=E2=80= =AFPM jian he <jian.unive= rsality@gmail.com> wrote:
in transformContainerSubscripts we have
sbsroutines->tra= nsform(sbsref, indirection, pstate,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0isSlice, isAs= signment);
=C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0* Error out, if datat= ype failed to consume any indirection elements.
=C2=A0 =C2=A0 =C2=A0*/=C2=A0 =C2=A0 if (list_length(*indirection) =3D=3D indirection_length)=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 Node=C2=A0 =C2=A0 =C2=A0 = =C2=A0*ind =3D linitial(*indirection);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (n= oError)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return NULL;
=C2=A0= =C2=A0 =C2=A0 =C2=A0 if (IsA(ind, String))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 ereport(ERROR,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 (errcode(ERRCODE_DATATYPE_MISMATCH),
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0errmsg= ("type %s does not support dot notation",
=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 format_type_be(containerType)),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0parser_errposition(pstate, exprLoc= ation(containerBase))));
=C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (IsA(ind, A= _Indices))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (errc= ode(ERRCODE_DATATYPE_MISMATCH),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0errmsg("type %s does not support= array subscripting",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 format_type_be(contain= erType)),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0parser_errposition(pstate, exprLocation(containerBase))));=C2=A0 =C2=A0 =C2=A0 =C2=A0 else
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 elog(ERROR, "invalid indirection operation: %d", nodeTag(ind)= );
=C2=A0 =C2=A0 }
sbsroutines->transform currently will call
a= rray_subscript_transform, hstore_subscript_transform, jsonb_subscript_trans= form

in jsonb_subscript_transform callee we unconditionally do:
= =C2=A0 =C2=A0 *indirection =3D list_delete_first_n(*indirection, pathlen);<= br>=C2=A0 =C2=A0*indirection =3D list_delete_first_n(*indirection, list_len= gth(upperIndexpr));
in array_subscript_transform, we do
*indirection = =3D list_delete_first_n(*indirection, ndim);

That means, if sbsrouti= nes->transform not error out and indirection is
not NIL (which is unl= ikely)
then sbsroutines->transform will consume some induction elemen= ts.
instead of the above verbose ereport(ERROR, error handling, we can u= se Assert
=C2=A0 =C2=A0 Assert(indirection_length > list_length(*indi= rection));

for the above comments, i did a refactoring based on v12 = (0001 to 0006).
=C2=A0
Thanks for th= e patch! I didn=E2=80=99t apply it for the same reason I
mentioned in th= e previous quote reply. In the case of an unexpected
Node type, I prefer= raising an explicit ERROR rather than using an
Assert() that crashes in= a dev build but silently continues in
production. One possible way to h= it these ERRORs is by creating a
custom data type that supports subscrip= ting, but only for a subset of
Node types that transformIndirection() al= lows.

Best,
Alex
=C2=A0
--0000000000006eee56063cd8e276-- --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v13-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiogh4 RnJvbSAzNDg2ZjU2MTk0ODhhZDFjZWQ5YWNmOTNlNzMzNzFiYzcyMmQ0NTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgNC83XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgoKQ28tYXV0aG9yZWQtYnk6IE5pa2l0YSBHbHVr aG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbGV4YW5kcmEgV2Fu ZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5z dGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEg PG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5p dmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJz LmMgfCAxMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NjUgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGEwZDM4YTBmZDgwLi5mOTQ0ZDE1NDRjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtMzIsNiArMzIsNjkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3Bh Y2UKIAlEYXR1bQkgICAqaW5kZXg7CQkJLyogU3Vic2NyaXB0IHZhbHVlcyBpbiBEYXR1bSBmb3Jt YXQgKi8KIH0gSnNvbmJTdWJXb3Jrc3BhY2U7CiAKK3N0YXRpYyBOb2RlICoKK2NvZXJjZV9qc29u cGF0aF9zdWJzY3JpcHRfdG9faW50NF9vcl90ZXh0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq c3ViRXhwcikKK3sKKwlPaWQJCQlzdWJFeHByVHlwZSA9IGV4cHJUeXBlKHN1YkV4cHIpOworCU9p ZAkJCXRhcmdldFR5cGUgPSBJbnZhbGlkT2lkOworCisJaWYgKHN1YkV4cHJUeXBlICE9IFVOS05P V05PSUQpCisJeworCQlPaWQJCQl0YXJnZXRzWzJdID0ge0lOVDRPSUQsIFRFWFRPSUR9OworCisJ CS8qCisJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQg Y2FzZXMgd2hlbiBhCisJCSAqIHN1YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRpcGxl IHRhcmdldCB0eXBlcyBtdXN0IGJlCisJCSAqIGF2b2lkZWQsIHNpbWlsYXIgdG8gb3ZlcmxvYWRl ZCBmdW5jdGlvbnMuIEl0IGNvdWxkIGJlIHBvc3NpYmx5CisJCSAqIGV4dGVuZCB3aXRoIGpzb25w YXRoIGluIHRoZSBmdXR1cmUuCisJCSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykK KwkJeworCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgxLCAmc3ViRXhwclR5cGUsICZ0YXJnZXRzW2ld LCBDT0VSQ0lPTl9JTVBMSUNJVCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBPbmUgdHlwZSBoYXMg YWxyZWFkeSBzdWNjZWVkZWQsIGl0IG1lYW5zIHRoZXJlIGFyZSB0d28KKwkJCQkgKiBjb2VyY2lv biB0YXJnZXRzIHBvc3NpYmxlLCBmYWlsdXJlLgorCQkJCSAqLworCQkJCWlmIChPaWRJc1ZhbGlk KHRhcmdldFR5cGUpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBlICVz IGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3JtYXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAorCQkJCQkJ CSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUg dHlwZSwgaW50ZWdlciBvciB0ZXh0LiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisKKwkJCQl0YXJnZXRUeXBlID0gdGFyZ2V0 c1tpXTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIE5vIHN1aXRhYmxlIHR5cGVzIHdlcmUgZm91 bmQsIGZhaWx1cmUuCisJCSAqLworCQlpZiAoIU9pZElzVmFsaWQodGFyZ2V0VHlwZSkpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwK KwkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1h dF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCisJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQg bXVzdCBiZSBjb2VyY2libGUgdG8gZWl0aGVyIGludGVnZXIgb3IgdGV4dC4iKSwKKwkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKwl9CisJ ZWxzZQorCQl0YXJnZXRUeXBlID0gVEVYVE9JRDsKKworCS8qCisJICogV2Uga25vd24gZnJvbSBj YW5fY29lcmNlX3R5cGUgdGhhdCBjb2VyY2lvbiB3aWxsIHN1Y2NlZWQsIHNvCisJICogY29lcmNl X3R5cGUgY291bGQgYmUgdXNlZC4gTm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwg d2hpY2ggaXMKKwkgKiByZXF1aXJlZCB0byBoYW5kbGUgc3Vic2NyaXB0cyBvZiBkaWZmZXJlbnQg dHlwZXMsIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZAorCSAqIGZ1bmN0aW9ucy4KKwkgKi8KKwlzdWJF eHByID0gY29lcmNlX3R5cGUocHN0YXRlLAorCQkJCQkJICBzdWJFeHByLCBzdWJFeHByVHlwZSwK KwkJCQkJCSAgdGFyZ2V0VHlwZSwgLTEsCisJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAorCQkJ CQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCSAgLTEpOworCisJcmV0dXJuIHN1YkV4 cHI7Cit9CiAKIC8qCiAgKiBGaW5pc2ggcGFyc2UgYW5hbHlzaXMgb2YgYSBTdWJzY3JpcHRpbmdS ZWYgZXhwcmVzc2lvbiBmb3IgYSBqc29uYi4KQEAgLTUxLDcgKzExNCw3IEBAIGpzb25iX3N1YnNj cmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAKIAkvKgogCSAqIFRyYW5z Zm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJzY3Jp cHRpbmcKLQkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUgdXBw ZXIgaW5kZXguCisJICogZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sgb25seSBhdCB0aGUg dXBwZXIgaW5kZXguCiAJICovCiAJZm9yZWFjaChpZHgsICppbmRpcmVjdGlvbikKIAl7CkBAIC03 NSw3MSArMTM4LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYg KnNic3JlZiwKIAogCQlpZiAoYWktPnVpZHgpCiAJCXsKLQkJCU9pZAkJCXN1YkV4cHJUeXBlID0g SW52YWxpZE9pZCwKLQkJCQkJCXRhcmdldFR5cGUgPSBVTktOT1dOT0lEOwotCiAJCQlzdWJFeHBy ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsK LQkJCXN1YkV4cHJUeXBlID0gZXhwclR5cGUoc3ViRXhwcik7Ci0KLQkJCWlmIChzdWJFeHByVHlw ZSAhPSBVTktOT1dOT0lEKQotCQkJewotCQkJCU9pZAkJCXRhcmdldHNbMl0gPSB7SU5UNE9JRCwg VEVYVE9JRH07Ci0KLQkJCQkvKgotCQkJCSAqIEpzb25iIGNhbiBoYW5kbGUgbXVsdGlwbGUgc3Vi c2NyaXB0IHR5cGVzLCBidXQgY2FzZXMgd2hlbiBhCi0JCQkJICogc3Vic2NyaXB0IGNvdWxkIGJl IGNvZXJjZWQgdG8gbXVsdGlwbGUgdGFyZ2V0IHR5cGVzIG11c3QgYmUKLQkJCQkgKiBhdm9pZGVk LCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZQotCQkJCSAqIHBv c3NpYmx5IGV4dGVuZCB3aXRoIGpzb25wYXRoIGluIHRoZSBmdXR1cmUuCi0JCQkJICovCi0JCQkJ Zm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCi0JCQkJewotCQkJCQlpZiAoY2FuX2NvZXJjZV90 eXBlKDEsICZzdWJFeHByVHlwZSwgJnRhcmdldHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKLQkJ CQkJewotCQkJCQkJLyoKLQkJCQkJCSAqIE9uZSB0eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwg aXQgbWVhbnMgdGhlcmUgYXJlCi0JCQkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJs ZSwgZmFpbHVyZS4KLQkJCQkJCSAqLwotCQkJCQkJaWYgKHRhcmdldFR5cGUgIT0gVU5LTk9XTk9J RCkKLQkJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCi0JCQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkJCSBl cnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlw ZSwgaW50ZWdlciBvciB0ZXh0LiIpLAotCQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQotCQkJCQkJdGFyZ2V0VHlwZSA9IHRhcmdl dHNbaV07Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIE5vIHN1aXRhYmxlIHR5cGVz IHdlcmUgZm91bmQsIGZhaWx1cmUuCi0JCQkJICovCi0JCQkJaWYgKHRhcmdldFR5cGUgPT0gVU5L Tk9XTk9JRCkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBu b3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkgZXJy aGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGVpdGhlciBpbnRlZ2Vy IG9yIHRleHQuIiksCi0JCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2Nh dGlvbihzdWJFeHByKSkpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCQl0YXJnZXRUeXBlID0gVEVYVE9J RDsKLQotCQkJLyoKLQkJCSAqIFdlIGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQgY29l cmNpb24gd2lsbCBzdWNjZWVkLCBzbwotCQkJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNlZC4g Tm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwKLQkJCSAqIHdoaWNoIGlzIHJlcXVp cmVkIHRvIGhhbmRsZSBzdWJzY3JpcHRzIG9mIGRpZmZlcmVudCB0eXBlcywKLQkJCSAqIHNpbWls YXIgdG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCi0JCQkgKi8KLQkJCXN1YkV4cHIgPSBjb2VyY2Vf dHlwZShwc3RhdGUsCi0JCQkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCi0JCQkJCQkJCSAg dGFyZ2V0VHlwZSwgLTEsCi0JCQkJCQkJCSAgQ09FUkNJT05fSU1QTElDSVQsCi0JCQkJCQkJCSAg Q09FUkNFX0lNUExJQ0lUX0NBU1QsCi0JCQkJCQkJCSAgLTEpOwotCQkJaWYgKHN1YkV4cHIgPT0g TlVMTCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgbXVzdCBoYXZlIHRl eHQgdHlwZSIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlv bihzdWJFeHByKSkpKTsKKwkJCXN1YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vic2NyaXB0X3Rv X2ludDRfb3JfdGV4dChwc3RhdGUsIHN1YkV4cHIpOwogCQl9CiAJCWVsc2UKIAkJewotLSAKMi4z OS41IChBcHBsZSBHaXQtMTU0KQoK --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Disposition: attachment; filename="v13-0007-Implement-jsonb-wildcard-member-accessor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiogc1 RnJvbSA5NTk0ZmM3NDJhNDY4YjlkNmQzZjg4NDkxZjU1ZjgyYjNjODMwN2Q1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEzIDcvN10gSW1wbGVtZW50IGpzb25iIHdpbGRjYXJkIG1lbWJlciBhY2Nlc3NvcgoKVGhpcyBj b21taXQgYWRkcyBzdXBwb3J0IGZvciB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzIGluIGpzb25iLCBh cwpzcGVjaWZpZWQgYnkgdGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXggaW4gU1FM OjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdtYWls LmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5vc3NA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5j b20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmlld2Vk LWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGV0 ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClJldmlld2VkLWJ5OiBKZWx0ZSBG ZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEt TmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgMzQgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgICAgICAgICAgICAgfCAgNjcgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJz dWJzLmMgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgg ICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29u LmMgICAgICAgICAgfCAgMTggKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3RkZXJyICAgICB8ICAyMyArLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRvdXQgICAgIHwgICAyICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgICAgICB8ICAgNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgICAg ICAgICAgIHwgMjIyICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmIuc3FsICAgICAgICAgICAgICAgIHwgIDQyICsrKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDQwNSBp bnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQx YmQ1NzVkOWJkLi41ZjMwMzhhMWMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI5MSw2ICsy OTEsOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQkJICovCiAJCQl0eXBlID0gVEVY VE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCXR5cGUgPSBVTktOT1dOT0lEOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUg dHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsKIAkJCXR5cGUgPSBJbnZhbGlkT2lkOwkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC0xMTU2LDYgKzExNTksOSBAQCBleHByU2V0Q29s bGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJCWNhc2UgVF9GaWVsZEFjY2Vzc29y RXhwcjoKIAkJCSgoRmllbGRBY2Nlc3NvckV4cHIgKikgZXhwciktPmZhZWNvbGxpZCA9IGNvbGxh dGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfU3RhcjoKKwkJCUFzc2VydCghT2lkSXNWYWxpZChj b2xsYXRpb24pKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJKChT dWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFr OwpAQCAtMjE0MCw2ICsyMTQ2LDcgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCWNhc2UgVF9DVEVTZWFyY2hDbGF1c2U6CiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRG dW5jOgogCQljYXNlIFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCWNhc2UgVF9TdGFyOgogCQkJLyog cHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNzaW9uIHN1Ym5vZGVzICovCiAJCQli cmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAgLTMwMjAsNiArMzAyNyw3IEBAIGV4 cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX0NURVNlYXJj aENsYXVzZToKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCWNhc2UgVF9GaWVsZEFjY2Vz c29yRXhwcjoKKwkJY2FzZSBUX1N0YXI6CiAJCQlyZXR1cm4gY29weU9iamVjdChub2RlKTsKIAkJ Y2FzZSBUX1dpdGhDaGVja09wdGlvbjoKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGRiNDMwMzRiOWRi Li43MDNjNzQxNmIwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xODk3OSw2ICsxODk3OSw3IEBAIGNoZWNr X2Z1bmNfbmFtZShMaXN0ICpuYW1lcywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiBzdGF0aWMg TGlzdCAqCiBjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCiB7CisjaWYgMAogCUxpc3RDZWxsICAgKmw7CiAKIAlmb3JlYWNoKGwsIGlu ZGlyZWN0aW9uKQpAQCAtMTg5ODksNiArMTg5OTAsNyBAQCBjaGVja19pbmRpcmVjdGlvbihMaXN0 ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJcGFyc2VyX3l5ZXJy b3IoImltcHJvcGVyIHVzZSBvZiBcIipcIiIpOwogCQl9CiAJfQorI2VuZGlmCiAJcmV0dXJuIGlu ZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBkYzFjN2U5Yjc1Yy4u N2Q1YzU2Y2FhNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNzQsNyArNzQsNiBAQCBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCSAgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJCQkJ CSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBz dGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2Fz dCAqdGMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2Jq ZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMTU4LDcgKzE1Nyw3IEBAIHRy YW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCWJy ZWFrOwogCiAJCWNhc2UgVF9BX0luZGlyZWN0aW9uOgotCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5k aXJlY3Rpb24ocHN0YXRlLCAoQV9JbmRpcmVjdGlvbiAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybUluZGlyZWN0aW9uKHBzdGF0ZSwgKEFfSW5kaXJlY3Rpb24gKikgZXhwciwgTlVMTCk7 CiAJCQlicmVhazsKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CkBAIC00MzIsOCArNDMxLDkgQEAg dW5rbm93bl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpyZWxyZWYsIGNvbnN0 IGNoYXIgKmF0dG5hbWUsCiAJfQogfQogCi1zdGF0aWMgTm9kZSAqCi10cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKK05vZGUgKgordHJh bnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQs CisJCQkJCSBib29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKIHsKIAlOb2RlCSAgICpsYXN0 X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAlOb2RlCSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1F eHByUmVjdXJzZShwc3RhdGUsIGluZC0+YXJnKTsKQEAgLTQ1NCwxMiArNDU0LDcgQEAgdHJhbnNm b3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJ CWlmIChJc0EobiwgQV9JbmRpY2VzKSkKIAkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlw dHMsIG4pOwogCQllbHNlIGlmIChJc0EobiwgQV9TdGFyKSkKLQkJewotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkg ZXJybXNnKCJyb3cgZXhwYW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUiKSwK LQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwotCQl9CisJCQlz dWJzY3JpcHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKIAkJZWxzZQogCQl7CiAJCQlBc3Nl cnQoSXNBKG4sIFN0cmluZykpOwpAQCAtNDkxLDcgKzQ4NiwyMSBAQCB0cmFuc2Zvcm1JbmRpcmVj dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAogCQkJbiA9IGxp bml0aWFsKHN1YnNjcmlwdHMpOwogCi0JCQlpZiAoIUlzQShuLCBTdHJpbmcpKQorCQkJaWYgKElz QShuLCBBX1N0YXIpKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIGlmIHRyYWlsaW5nIHN0YXIgZXhw YW5zaW9uIGlzIGFsbG93ZWQgKi8KKwkJCQlpZiAodHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gJiYg bGlzdF9sZW5ndGgoc3Vic2NyaXB0cykgPT0gMSkKKwkJCQl7CisJCQkJCSp0cmFpbGluZ19zdGFy X2V4cGFuc2lvbiA9IHRydWU7CisJCQkJCXJldHVybiByZXN1bHQ7CisJCQkJfQorCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coInJvdyBleHBhbnNpb24gdmlhIFwiKlwiIGlzIG5vdCBzdXBwb3J0 ZWQgaGVyZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkp OworCQkJfQorCQkJZWxzZSBpZiAoIUlzQShuLCBTdHJpbmcpKQogCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKIAkJCQkJCSBlcnJt c2coImNhbm5vdCBzdWJzY3JpcHQgdHlwZSAlcyBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQg c3Vic2NyaXB0aW5nIiwKQEAgLTUxNyw2ICs1MjYsOSBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJcmVzdWx0ID0gbmV3cmVz dWx0OwogCX0KIAorCWlmICh0cmFpbGluZ19zdGFyX2V4cGFuc2lvbikKKwkJKnRyYWlsaW5nX3N0 YXJfZXhwYW5zaW9uID0gZmFsc2U7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKaW5kZXggM2VmNTg5N2YyZWIuLjE0MWZjMWRmZWIxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiBzdGF0aWMgTGlzdCAq RXhwYW5kQ29sdW1uUmVmU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZiwK IAkJCQkJCQkJIGJvb2wgbWFrZV90YXJnZXRfZW50cnkpOwogc3RhdGljIExpc3QgKkV4cGFuZEFs bFRhYmxlcyhQYXJzZVN0YXRlICpwc3RhdGUsIGludCBsb2NhdGlvbik7Ci1zdGF0aWMgTGlzdCAq RXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAq aW5kLAorc3RhdGljIE5vZGUgKkV4cGFuZEluZGlyZWN0aW9uU3RhcihQYXJzZVN0YXRlICpwc3Rh dGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKIAkJCQkJCQkJICAgYm9vbCBtYWtlX3RhcmdldF9lbnRy eSwgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiBzdGF0aWMgTGlzdCAqRXhwYW5kU2luZ2xlVGFi bGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJ CQkgICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24sCkBAIC0xMzQsNiArMTM0LDcgQEAg dHJhbnNmb3JtVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3Qs CiAJZm9yZWFjaChvX3RhcmdldCwgdGFyZ2V0bGlzdCkKIAl7CiAJCVJlc1RhcmdldCAgKnJlcyA9 IChSZXNUYXJnZXQgKikgbGZpcnN0KG9fdGFyZ2V0KTsKKwkJTm9kZQkgICAqdHJhbnNmb3JtZWQg PSBOVUxMOwogCiAJCS8qCiAJCSAqIENoZWNrIGZvciAic29tZXRoaW5nLioiLiAgRGVwZW5kaW5n IG9uIHRoZSBjb21wbGV4aXR5IG9mIHRoZQpAQCAtMTYyLDEzICsxNjMsMTkgQEAgdHJhbnNmb3Jt VGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnRhcmdldGxpc3QsCiAKIAkJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJCXsKLQkJCQkJLyog SXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCi0JCQkJCXBf dGFyZ2V0ID0gbGlzdF9jb25jYXQocF90YXJnZXQsCi0JCQkJCQkJCQkJICAgRXhwYW5kSW5kaXJl Y3Rpb25TdGFyKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkJCQkgaW5kLAotCQkJCQkJCQkJCQkJCQkJ CSB0cnVlLAotCQkJCQkJCQkJCQkJCQkJCSBleHByS2luZCkpOwotCQkJCQljb250aW51ZTsKKwkJ CQkJTm9kZQkgICAqY29sdW1ucyA9IEV4cGFuZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsCisJCQkJ CQkJCQkJCQkJCQkJaW5kLAorCQkJCQkJCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJCQkJCQkJ ZXhwcktpbmQpOworCisJCQkJCWlmIChJc0EoY29sdW1ucywgTGlzdCkpCisJCQkJCXsKKwkJCQkJ CS8qIEl0IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLworCQkJ CQkJcF90YXJnZXQgPSBsaXN0X2NvbmNhdChwX3RhcmdldCwgKExpc3QgKikgY29sdW1ucyk7CisJ CQkJCQljb250aW51ZTsKKwkJCQkJfQorCisJCQkJCXRyYW5zZm9ybWVkID0gKE5vZGUgKikgY29s dW1uczsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTE4MCw3ICsxODcsNyBAQCB0cmFuc2Zvcm1UYXJn ZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAkJcF90YXJnZXQg PSBsYXBwZW5kKHBfdGFyZ2V0LAogCQkJCQkJICAgdHJhbnNmb3JtVGFyZ2V0RW50cnkocHN0YXRl LAogCQkJCQkJCQkJCQkJcmVzLT52YWwsCi0JCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ dHJhbnNmb3JtZWQsCiAJCQkJCQkJCQkJCQlleHByS2luZCwKIAkJCQkJCQkJCQkJCXJlcy0+bmFt ZSwKIAkJCQkJCQkJCQkJCWZhbHNlKSk7CkBAIC0yNTEsMTAgKzI1OCwxNSBAQCB0cmFuc2Zvcm1F eHByZXNzaW9uTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCiAJCQlp ZiAoSXNBKGxsYXN0KGluZC0+aW5kaXJlY3Rpb24pLCBBX1N0YXIpKQogCQkJewotCQkJCS8qIEl0 IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBsZSBpdGVtcyAqLwotCQkJCXJlc3Vs dCA9IGxpc3RfY29uY2F0KHJlc3VsdCwKLQkJCQkJCQkJCSBFeHBhbmRJbmRpcmVjdGlvblN0YXIo cHN0YXRlLCBpbmQsCi0JCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCBleHByS2luZCkpOworCQkJCU5v ZGUJICAgKmNvbHMgPSBFeHBhbmRJbmRpcmVjdGlvblN0YXIocHN0YXRlLCBpbmQsCisJCQkJCQkJ CQkJCQkJCSBmYWxzZSwgZXhwcktpbmQpOworCisJCQkJaWYgKCFjb2xzIHx8IElzQShjb2xzLCBM aXN0KSkKKwkJCQkJLyogSXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0 ZW1zICovCisJCQkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgKExpc3QgKikgY29scyk7 CisJCQkJZWxzZQorCQkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgY29scyk7CisKIAkJCQlj b250aW51ZTsKIAkJCX0KIAkJfQpAQCAtMTM0NSwyMiArMTM1NywzMCBAQCBFeHBhbmRBbGxUYWJs ZXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgbG9jYXRpb24pCiAgKiBGb3Igcm9idXN0bmVzcywg d2UgdXNlIGEgc2VwYXJhdGUgIm1ha2VfdGFyZ2V0X2VudHJ5IiBmbGFnIHRvIGNvbnRyb2wKICAq IHRoaXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBleHByS2luZC4KICAqLwotc3RhdGljIExpc3Qg Kgorc3RhdGljIE5vZGUgKgogRXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAogCQkJCQkgIGJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBh cnNlRXhwcktpbmQgZXhwcktpbmQpCiB7CiAJTm9kZQkgICAqZXhwcjsKKwlQYXJzZUV4cHJLaW5k IHN2X2V4cHJfa2luZDsKKwlib29sCQl0cmFpbGluZ19zdGFyX2V4cGFuc2lvbiA9IGZhbHNlOwor CisJLyogU2F2ZSBhbmQgcmVzdG9yZSBpZGVudGl0eSBvZiBleHByZXNzaW9uIHR5cGUgd2UncmUg cGFyc2luZyAqLworCUFzc2VydChleHByS2luZCAhPSBFWFBSX0tJTkRfTk9ORSk7CisJc3ZfZXhw cl9raW5kID0gcHN0YXRlLT5wX2V4cHJfa2luZDsKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gZXhw cktpbmQ7CiAKIAkvKiBTdHJpcCBvZmYgdGhlICcqJyB0byBjcmVhdGUgYSByZWZlcmVuY2UgdG8g dGhlIHJvd3R5cGUgb2JqZWN0ICovCi0JaW5kID0gY29weU9iamVjdChpbmQpOwotCWluZC0+aW5k aXJlY3Rpb24gPSBsaXN0X3RydW5jYXRlKGluZC0+aW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkgbGlz dF9sZW5ndGgoaW5kLT5pbmRpcmVjdGlvbikgLSAxKTsKKwlleHByID0gdHJhbnNmb3JtSW5kaXJl Y3Rpb24ocHN0YXRlLCBpbmQsICZ0cmFpbGluZ19zdGFyX2V4cGFuc2lvbik7CisKKwlwc3RhdGUt PnBfZXhwcl9raW5kID0gc3ZfZXhwcl9raW5kOwogCi0JLyogQW5kIHRyYW5zZm9ybSB0aGF0ICov Ci0JZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBpbmQsIGV4cHJLaW5kKTsK KwkvKiAnKicgd2FzIGNvbnN1bWVkIGJ5IGdlbmVyaWMgdHlwZSBzdWJzY3JpcHRpbmcgKi8KKwlp ZiAoIXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uKQorCQlyZXR1cm4gZXhwcjsKIAogCS8qIEV4cGFu ZCB0aGUgcm93dHlwZSBleHByZXNzaW9uIGludG8gaW5kaXZpZHVhbCBmaWVsZHMgKi8KLQlyZXR1 cm4gRXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0ZSwgZXhwciwgbWFrZV90YXJnZXRfZW50cnkpOwor CXJldHVybiAoTm9kZSAqKSBFeHBhbmRSb3dSZWZlcmVuY2UocHN0YXRlLCBleHByLCBtYWtlX3Rh cmdldF9lbnRyeSk7CiB9CiAKIC8qCkBAIC0xNzg1LDEzICsxODA1LDE4IEBAIEZpZ3VyZUNvbG5h bWVJbnRlcm5hbChOb2RlICpub2RlLCBjaGFyICoqbmFtZSkKIAkJCQljaGFyCSAgICpmbmFtZSA9 IE5VTEw7CiAJCQkJTGlzdENlbGwgICAqbDsKIAotCQkJCS8qIGZpbmQgbGFzdCBmaWVsZCBuYW1l LCBpZiBhbnksIGlnbm9yaW5nICIqIiBhbmQgc3Vic2NyaXB0cyAqLworCQkJCS8qCisJCQkJICog ZmluZCBsYXN0IGZpZWxkIG5hbWUsIGlmIGFueSwgaWdub3Jpbmcgc3Vic2NyaXB0cywgYW5kIHVz ZQorCQkJCSAqICc/Y29sdW1uPycgd2hlbiB0aGVyZSdzIGEgdHJhaWxpbmcgJyonLgorCQkJCSAq LwogCQkJCWZvcmVhY2gobCwgaW5kLT5pbmRpcmVjdGlvbikKIAkJCQl7CiAJCQkJCU5vZGUJICAg KmkgPSBsZmlyc3QobCk7CiAKIAkJCQkJaWYgKElzQShpLCBTdHJpbmcpKQogCQkJCQkJZm5hbWUg PSBzdHJWYWwoaSk7CisJCQkJCWVsc2UgaWYgKElzQShpLCBBX1N0YXIpKQorCQkJCQkJZm5hbWUg PSAiP2NvbHVtbj8iOwogCQkJCX0KIAkJCQlpZiAoZm5hbWUpCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jCmluZGV4IDQ1OGNhNjlkNjQ1Li4wYjAwNTMwZDg2OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwpAQCAtMTI0LDcgKzEyNCw3IEBAIGpzb25iX2NoZWNrX2pzb25wYXRo X25lZWRlZChMaXN0ICppbmRpcmVjdGlvbikKIAl7CiAJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZp cnN0KGxjKTsKIAotCQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQlpZiAoSXNBKGFjY2Vz c29yLCBTdHJpbmcpIHx8IElzQShhY2Nlc3NvciwgQV9TdGFyKSkKIAkJCXJldHVybiB0cnVlOwog CQllbHNlCiAJCXsKQEAgLTM0MCw2ICszNDAsMTYgQEAganNvbmJfc3Vic2NyaXB0X21ha2VfanNv bnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICoqaW5kaXJlY3Rpb24sIFN1YnNjcmlwdGkK IAkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gTlVMTDsKIAkJCX0KIAkJfQorCQll bHNlIGlmIChJc0EoYWNjZXNzb3IsIEFfU3RhcikpCisJCXsKKwkJCVN0YXIgKnN0YXJfbm9kZTsK KwkJCWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlBbnlLZXkpOworCisJCQlzdGFyX25vZGUg PSBtYWtlTm9kZShTdGFyKTsKKwkJCXN0YXJfbm9kZS0+dHlwZSA9IFRfU3RhcjsKKworCQkJc2Jz cmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBz dGFyX25vZGUpOworCQl9CiAJCWVsc2UKIAkJewogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwppbmRleCBiYWEzYWU5N2Q1Ny4uYWNlMGVmZjUyZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKQEAgLTEzMDEwLDcgKzEzMDEwLDExIEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3Jp cHRpbmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJTm9kZSAq dXBwZXIgPSAoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOwogCi0JCWlmICh1cHBlciAmJiBJ c0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKKwkJaWYgKHVwcGVyICYmIElzQSh1cHBlciwg U3RhcikpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLioiKTsKKwkJfQor CQllbHNlIGlmICh1cHBlciAmJiBJc0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKIAkJewog CQkJRmllbGRBY2Nlc3NvckV4cHIgKmZhZSA9IChGaWVsZEFjY2Vzc29yRXhwciAqKSB1cHBlcjsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA3ZTg5NjIxYmQ2NS4uN2U0MTg4MzBmMjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oCkBAIC0yNDE5LDQgKzI0MTksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRmll bGRBY2Nlc3NvckV4cHIKIAlPaWQJCQlmYWVjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogfQkJCUZpZWxkQWNjZXNzb3JFeHByOwogCisvKgorICogU3RhciAtIHJlcHJl c2VudHMgYSB3aWxkY2FyZCBtZW1iZXIgYWNjZXNzb3IgKGUuZy4sICIuKiIpIHVzZWQgaW4gSlNP TkIgc2ltcGxpZmllZCBhY2Nlc3Nvci4KKyAqCisgKiBUaGlzIG5vZGUgc2VydmVzIGFzIGEgc3lu dGFjdGljIHBsYWNlaG9sZGVyIGluIHRoZSBleHByZXNzaW9uIHRyZWUgYW5kIGRvZXMgbm90IGdl dCBldmFsdWF0ZWQsIGhlbmNlIGl0CisgKiBoYXMgbm8gYXNzb2NpYXRlZCB0eXBlIG9yIGNvbGxh dGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhcgoreworCU5vZGVUYWcJCXR5cGU7Cit9CQkJ U3RhcjsKKworCiAjZW5kaWYJCQkJCQkJLyogUFJJTU5PREVTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oCmluZGV4IGVmYmFmZjhlNzEwLi5jOWY2YTc3MjRjMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oCkBAIC0yMiw0ICsyMiw3IEBAIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1FeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHByS2luCiAKIGV4dGVy biBjb25zdCBjaGFyICpQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKTsK IAorZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9JbmRpcmVjdGlvbiAqaW5kLAorCQkJCQkJCQkgIGJvb2wgKnRyYWlsaW5nX3N0YXJfZXhwYW5z aW9uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX0VYUFJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uYwppbmRleCA5MzViNDdhM2I5YS4u NTg1ZDliMTQ0NDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9z cWwtc3FsanNvbi5jCkBAIC01MTUsOSArNTE1LDkgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBz cWxwcmludCgpO30KIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAx NDUgInNxbGpzb24ucGdjIgogCi0JLy8gZXJyb3IKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIs IGpzb24pOwogCi0JeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3Jt YWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwi OiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgWyAn YicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwg TlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6 IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9 XX1dfScgOjoganNvbmIgKSAuICogLiB4ICkiLCBFQ1BHdF9FT0lULCAKIAlFQ1BHdF9jaGFyLChq c29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCiAJRUNQR3RfTk9f SU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CiAjbGluZSAxNDggInNx bGpzb24ucGdjIgpAQCAtNTI3LDcgKzUyNyw3IEBAIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CiAKIAlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCi0JeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBdICkiLCBFQ1BHdF9F T0lULCAKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwg InNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7 XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBd IFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAogCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQs KGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKIAlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwg LCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCkBAIC01 MzcsMTIgKzUzNywyMiBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQogCiAJ cHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKIAotICB7IEVDUEdkaXNjb25uZWN0KF9f TElORV9fLCAiQ1VSUkVOVCIpOworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBF Q1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6 IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6MX1dfV19JyA6OiBq c29uYiApIC4gYiBbIDogXSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxv bmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRP UiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOwogI2xpbmUgMTU0ICJzcWxqc29uLnBn YyIKIAogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KICNsaW5lIDE1NCAic3Fs anNvbi5wZ2MiCiAKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisgIHsgRUNQ R2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7CisjbGluZSAxNTcgInNxbGpzb24ucGdj IgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTU3ICJzcWxq c29uLnBnYyIKKwogCiAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRlcnIKaW5kZXggZjNmODk5YzZkODcuLjRi OTA4ODU0NWQ2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQv c3FsLXNxbGpzb24uc3RkZXJyCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5zdGRlcnIKQEAgLTM0NywyMiArMzQ3LDE5IEBAIFNRTCBlcnJvcjogc2No ZW1hICJqc29uYiIgZG9lcyBub3QgZXhpc3Qgb24gbGluZSAxMjEKIFtOT19QSURdOiBzcWxjYTog Y29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQ1 OiB1c2luZyBQUWV4ZWMKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1b Tk9fUElEXTogZWNwZ19jaGVja19QUXJlc3VsdCBvbiBsaW5lIDE0NTogYmFkIHJlc3BvbnNlIC0g RVJST1I6ICByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlCi1MSU5F IDE6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4Ijog MX0sIHsieC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgXgorW05PX1BJRF06IGVjcGdfcHJv Y2Vzc19vdXRwdXQgb24gbGluZSAxNDU6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZp ZWxkcwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKLVtOT19QSURdOiBy YWlzaW5nIHNxbHN0YXRlIDBBMDAwIChzcWxjb2RlIC00MDApOiByb3cgZXhwYW5zaW9uIHZpYSAi KiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1Ci1bTk9fUElEXTogc3FsY2E6IGNv ZGU6IC00MDAsIHN0YXRlOiAwQTAwMAotU1FMIGVycm9yOiByb3cgZXhwYW5zaW9uIHZpYSAiKiIg aXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1Ci1bTk9fUElEXTogZWNwZ19leGVjdXRl IG9uIGxpbmUgMTQ4OiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIiOiAxLCAiYyI6 IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSBb ICdiJyBdIFsgMCA6IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25uZWN0aW9uIGVjcGcx X3JlZ3Jlc3Npb24KK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTQ1OiBSRVNVTFQ6 IFt7ImIiOiAxLCAiYyI6IDJ9LCBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjogMX1dfV1dIG9m ZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAw MDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6IHF1ZXJ5OiBzZWxlY3QganNv biAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIs IHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gKiAuIHggKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBv biBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwg c3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTQ4OiB1c2luZyBQ UWV4ZWMKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTog ZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDE0ODogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3 aXRoIDEgZmllbGRzCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05P X1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxNDg6IFJFU1VMVDogW3sieCI6IDF9LCB7Ingi OiBbMTIsIHsieSI6IDF9XX1dIG9mZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IGVjcGdf Z2V0X2RhdGEgb24gbGluZSAxNDg6IFJFU1VMVDogWzEsIFsxMiwgeyJ5IjogMX1dXSBvZmZzZXQ6 IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1b Tk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTUxOiBxdWVyeTogc2VsZWN0IGpzb24gKCAo ICd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGlu ZSAxNTE6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJi IjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0g WyAwIDogXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNTE6IHVzaW5nIFBRZXhlYwogW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKQEAgLTM3MCw1ICszNjcsMTMgQEAgU1FMIGVycm9yOiByb3cg ZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIG9uIGxpbmUgMTQ1CiBbTk9f UElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdfZ2V0X2Rh dGEgb24gbGluZSAxNTE6IFJFU1VMVDogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1d IG9mZnNldDogLTE7IGFycmF5OiBubwogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTog MDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNTQ6IHF1ZXJ5OiBzZWxlY3Qg anNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBb MTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiApIC4gYiBbIDogXSApOyB3aXRoIDAgcGFyYW1ldGVy KHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2Rl OiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNTQ6IHVz aW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTU0OiBjb3JyZWN0bHkgZ290IDEgdHVw bGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw CitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE1NDogUkVTVUxUOiBbeyJ4IjogMX0s IHsieCI6IFsxMiwgeyJ5IjogMX1dfV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06IGVjcGdfZmluaXNoOiBjb25u ZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24gY2xvc2VkCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVj dGVkL3NxbC1zcWxqc29uLnN0ZG91dCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3Rl ZC9zcWwtc3FsanNvbi5zdGRvdXQKaW5kZXggZDAxYTg0NTdmMDEuLjE0NWRjOTVkNDMwIDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk b3V0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRvdXQKQEAgLTM2LDUgKzM2LDcgQEAgRm91bmQganNvbj17IngiOiAxfQogRm91bmQganNvbj1b MSwgWzEyLCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPXsieCI6IDF9CiBGb3VuZCBqc29uPVsxMiwg eyJ5IjogMX1dCitGb3VuZCBqc29uPVt7ImIiOiAxLCAiYyI6IDJ9LCBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjogMX1dfV1dCitGb3VuZCBqc29uPVsxLCBbMTIsIHsieSI6IDF9XV0KIEZvdW5k IGpzb249W3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6IDF9XX1dCiBGb3VuZCBqc29uPVt7Ingi OiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv c3FsanNvbi5wZ2MKaW5kZXggOTQyM2QyNWZkMGIuLjJhZjUwYjVkYTRiIDEwMDY0NAotLS0gYS9z cmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MKQEAgLTE0Myw3ICsxNDMsMTAgQEAgRVhFQyBT UUwgRU5EIERFQ0xBUkUgU0VDVElPTjsKIAlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24p OwogCiAJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6 IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS4qKSBJTlRPIDpqc29u OwotCS8vIGVycm9yCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMg U1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0s IHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuKi54KSBJTlRPIDpqc29uOworCXByaW50 ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKIAlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3si YSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1d fV19Jzo6anNvbmIpWydiJ11bMDpdKSBJTlRPIDpqc29uOwogCXByaW50ZigiRm91bmQganNvbj0l c1xuIiwganNvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CmluZGV4IGY0YTIwNjk0 MTAyLi5iOTllOWNmNTE5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q c29uYi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKQEAgLTYw NTIsOCArNjA1MiwxNzUgQEAgU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OwogIHsieSI6ICJZWVkiLCAieiI6ICJaWloifQogKDEgcm93KQogCi1TRUxF Q1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gZmFpbHMKLUVSUk9S OiAgdHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCisvKiB3aWxkIGNhcmQgbWVtYmVyIGFjY2Vz cyAqLworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAg ICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiLCAiZiIsIHsieSI6ICJ5eXki LCAieiI6ICJ6enoifV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6 ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9 fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCiso MSByb3cpCisKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0Owor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJk IiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIi OiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVD VCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwg IngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7 InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKworU0VMRUNUIChqYikuKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb WzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIs ICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6Ijog IlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAi dCIKK0xJTkUgMTogU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgICAgICAgICAgICAgICAgXgorU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7ImIiOiAi YyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1d LCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbImMiLCAiZCIsICJmIiwgeyJ5IjogInl5 eSIsICJ6IjogInp6eiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLiouYiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIChqYiku YS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyB4IAorLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmEuKi55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICB5 ICAgCistLS0tLS0tCisgInl5eSIKKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0t LS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZ WSIsICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZ IiwgInoiOiAiWlpaIn1dCisoMSByb3cpCisKK1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoKGpi KS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQor KDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg W3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS4qLnguKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBbInl5eSIsICJ6enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKK1NFTEVDVCAo amIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgeSAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAiWVlZIl0KKygxIHJvdykKKworU0VMRUNUIChq YikuKi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICB6ICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0KKyBbInp6eiIsICJaWloiXQorKDEgcm93KQorCitTRUxFQ1QgKGpi KS4qLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgIHkgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgIllZWSJdCisoMSByb3cpCisKK1NFTEVDVCAoamIp LiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgID9jb2x1bW4/ ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgInp6 eiIsICJZWVkiLCAiWlpaIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi4qLiouKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Cisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuKi4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0t LS0tLS0tCisgWyJ5eXkiLCAienp6Il0KKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qWzpdLiog RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0t LS0tLS0tLS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLipbKl0u KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCitFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIqIgorTElORSAxOiBTRUxFQ1QgKGpiKS5hLipbKl0u KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIChqYikuYS4qKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIG5v dCBzdXBwb3J0ZWQKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIioqIgorTElORSAx OiBTRUxFQ1QgKGpiKS5hLioqLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgICAgICBeCiAtLSBleHBsYWlucyBzaG91bGQgd29yawogRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbiB0OwogICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIApA QCAtNjA4MSw2ICs2MjQ4LDQ1IEBAIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKICAyCiAoMSByb3cpCiAKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hLioKKygyIHJvd3MpCisKK1NFTEVDVCAoamIp LmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICA/Y29s dW1uPyAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFsiYyIsICJkIiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCiso MSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6 XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24K KyAgIE91dHB1dDogKGpiKS5hLipbOl0uKgorKDIgcm93cykKKworU0VMRUNUIChqYikuYS4qWzE6 XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgCisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYiku YS4qWzE6Ml0uKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb24KKyAgIE91dHB1dDogKGpiKS5hLipbOjJdLiouYgorKDIgcm93cykKKworU0VMRUNU IChqYikuYS4qWzE6Ml0uKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgYiAKKy0t LQorIAorKDEgcm93KQorCiAtLSB2aWV3cyBzaG91bGQgd29yawogQ1JFQVRFIFZJRVcgdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKIFxzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQpAQCAtNjEw OSw2ICs2MzE1LDE3IEBAIFNFTEVDVCAqIGZyb20gdjM7CiAgInl5eSIKICgxIHJvdykKIAorQ1JF QVRFIFZJRVcgdjQgQVMgU0VMRUNUIChqYikuYS4qWzpdLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB2NAorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjQgQVMKKyBT RUxFQ1QgKGpiKS5hLipbOl0uKiBBUyAiP2NvbHVtbj8iCisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHY0OworICAgID9jb2x1bW4/ICAgIAorLS0tLS0tLS0t LS0tLS0tLQorIFsieXl5IiwgInp6eiJdCisoMSByb3cpCisKIC0tIG1peGVkIHN5bnRheAogRFJP UCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK QEAgLTYzNDQsNCArNjU2MSw1IEBAIE5PVElDRTogIFsyXQogLS0gY2xlYW4gdXAKIERST1AgVklF VyB2MjsKIERST1AgVklFVyB2MzsKK0RST1AgVklFVyB2NDsKIERST1AgVEFCTEUgdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggYjhlY2VmZGEwNGQuLjQ0 MGVhMWM2NTQ5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNjI5LDEzICsxNjI5LDQ5IEBA IFNFTEVDVCAoamIpLmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVD VCAoamIpLmFbOjJdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAoamIp LmFbOl0uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICgoamIpLmIpWzpd LnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwotU0VMRUNUIChqYikuYS4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGZhaWxzCisKKy8qIHdpbGQgY2FyZCBtZW1iZXIg YWNjZXNzICovCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUICh0LmpiKS4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NF TEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku YS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKi54IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLioueSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVD VCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpi KS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpiKS4qKVs6 XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLioueCBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgKGpiKS4qLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVD VCAoamIpLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4q LiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYy4q IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLiouKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzpdLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKlsqXS4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCAoamIpLmEuKioueCBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBub3Qgc3VwcG9ydGVkCiAKIC0tIGV4cGxhaW5zIHNo b3VsZCB3b3JrCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CiBTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBTRUxFQ1QgKGpiKS5h WzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOl0uKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzE6XS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOjJd LiouYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qWzE6Ml0u Ki5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiAKIC0tIHZpZXdzIHNob3VsZCB3b3Jr CiBDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5h WzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpAQCAtMTY0Niw2ICsxNjgyLDkg QEAgU0VMRUNUICogZnJvbSB2MjsKIENSRUFURSBWSUVXIHYzIEFTIFNFTEVDVCAoamIpLmFbOjNd LngueVstMTpdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBcc3YgdjMKIFNFTEVDVCAq IGZyb20gdjM7CitDUkVBVEUgVklFVyB2NCBBUyBTRUxFQ1QgKGpiKS5hLipbOl0uKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHY0CitTRUxFQ1QgKiBmcm9tIHY0OwogCiAtLSBt aXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKQEAgLTE3 NDcsNCArMTc4Niw1IEBAICQkIExBTkdVQUdFIHBscGdzcWw7CiAtLSBjbGVhbiB1cAogRFJPUCBW SUVXIHYyOwogRFJPUCBWSUVXIHYzOworRFJPUCBWSUVXIHY0OwogRFJPUCBUQUJMRSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjM5LjUg KEFwcGxlIEdpdC0xNTQpCgo= --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Disposition: attachment; filename="v13-0006-Implement-Jsonb-subscripting-with-slicing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksioge2 RnJvbSA3NTQ3MWI1MTNlODNlNjJjMjgwNDg4MWE1ZDgyMGZjYjgyZjVlYWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgNi83XSBJbXBsZW1lbnQgSnNvbmIgc3Vic2NyaXB0aW5nIHdpdGggc2xpY2luZwoK UHJldmlvdXNseSwgc2xpY2luZyB3YXMgbm90IHN1cHBvcnRlZCBmb3IganNvbmIgc3Vic2NyaXB0 aW5nLiBUaGlzIGNvbW1pdAppbXBsZW1lbnRzIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcgYXMg cGFydCBvZiB0aGUgSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yCnN5bnRheCBzcGVjaWZpZWQgaW4g U1FMOjIwMjMuCgpDby1hdXRob3JlZC1ieTogTmlraXRhIEdsdWtob3YgPGdsdWtob3Yubi5hQGdt YWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IEFsZXhhbmRyYSBXYW5nIDxhbGV4YW5kcmEud2FuZy5v c3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFu ZS5uZXQ+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogTWFyayBEaWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2Vk Yi5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBWaWsgRmVhcmluZyA8dmlrQHBvc3RncmVzZnJpZW5kcy5vcmc+ClJldmll d2VkLWJ5OiBOaWtpdGEgTWFsYWtob3YgPGh1a3V0b2NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog UGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClRlc3RlZC1ieTogTWFyayBE aWxnZXIgPG1hcmsuZGlsZ2VyQGVudGVycHJpc2VkYi5jb20+ClRlc3RlZC1ieTogSmlhbiBIZSA8 amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYyAgICAgICAgICAgICB8ICAzMyArKystCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLmMgICAgICAgICAgfCAgMTYgKy0KIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQv c3FsLXNxbGpzb24uc3RkZXJyICAgICB8ICAyNiArKy0tCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uLnN0ZG91dCAgICAgfCAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYyAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pzb25iLm91dCAgICAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICAgICAgICAgICAgfCAgNTMgKysrKysrLQogNyBmaWxl cyBjaGFuZ2VkLCAyNDMgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCmluZGV4IDU4MDgzODNkYjI2Li40NThjYTY5ZDY0NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTkyLDkgKzE5MiwxMCBAQCBtYWtlX2pzb25wYXRoX2l0 ZW1faW50KGludDMyIHZhbCwgTGlzdCAqKmV4cHJzKQogICogLSBwc3RhdGU6IHBhcnNlIHN0YXRl IGNvbnRleHQKICAqIC0gZXhwcjogaW5wdXQgZXhwcmVzc2lvbiBub2RlCiAgKiAtIGV4cHJzOiBs aXN0IG9mIGV4cHJlc3Npb24gbm9kZXMgKHVwZGF0ZWQgaW4gcGxhY2UpCisgKiAtIG5vX2Vycm9y OiByZXR1cm5zIE5VTEwgd2hlbiB0aGUgZGF0YSB0eXBlIGRvZXNuJ3QgbWF0Y2guIE90aGVyd2lz ZSwgZW1pdHMgYW4gRVJST1IuCiAgKi8KIHN0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCi1tYWtl X2pzb25wYXRoX2l0ZW1fZXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIExpc3Qg KipleHBycykKK21ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwciwgTGlzdCAqKmV4cHJzLCBib29sIG5vX2Vycm9yKQogewogCUNvbnN0CSAgICpjbnN0 OwogCkBAIC0yMDcsNyArMjA4LDE0IEBAIG1ha2VfanNvbnBhdGhfaXRlbV9leHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgTGlzdCAqKmV4cHJzKQogCQkJcmV0dXJuIG1ha2VfanNv bnBhdGhfaXRlbV9pbnQoRGF0dW1HZXRJbnQzMihjbnN0LT5jb25zdHZhbHVlKSwgZXhwcnMpOwog CX0KIAotCXJldHVybiBOVUxMOworCWlmIChub19lcnJvcikKKwkJcmV0dXJuIE5VTEw7CisJZWxz ZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJZXJybXNnKCJvbmx5IG5vbi1udWxsIGludGVnZXIgY29uc3RhbnRzIGFyZSBzdXBw b3J0ZWQgZm9yIGpzb25iIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3Vic2NyaXB0aW5nIiksCisJCQkJ ZXJyaGludCgidXNlIGludCBkYXRhIHR5cGUgZm9yIHN1YnNjcmlwdGluZyB3aXRoIHNsaWNpbmcu IiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7 CiB9CiAKIC8qCkBAIC0yNzcsMTkgKzI4NSwyOCBAQCBqc29uYl9zdWJzY3JpcHRfbWFrZV9qc29u cGF0aChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKippbmRpcmVjdGlvbiwgU3Vic2NyaXB0aQog CiAJCQlpZiAoYWktPmlzX3NsaWNlKQogCQkJewotCQkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlk eCA/IGFpLT51aWR4IDogYWktPmxpZHg7CisJCQkJd2hpbGUgKGxpc3RfbGVuZ3RoKHNic3JlZi0+ cmVmbG93ZXJpbmRleHByKSA8IGxpc3RfbGVuZ3RoKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKSkK KwkJCQkJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBsYXBwZW5kKHNic3JlZi0+cmVmbG93ZXJp bmRleHByLCBOVUxMKTsKKworCQkJCWlmIChhaS0+bGlkeCkKKwkJCQkJanBpLT52YWx1ZS5hcnJh eS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+bGlk eCwgJnNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBmYWxzZSk7CisJCQkJZWxzZQorCQkJCQlqcGkt PnZhbHVlLmFycmF5LmVsZW1zWzBdLmZyb20gPSBtYWtlX2pzb25wYXRoX2l0ZW1faW50KDAsICZz YnNyZWYtPnJlZmxvd2VyaW5kZXhwcik7CiAKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMiKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKSk7CisJCQkJaWYgKGFpLT51aWR4KQor CQkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLnRvID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4 cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBmYWxzZSk7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2Vf anNvbnBhdGhfaXRlbShqcGlMYXN0KTsKKwkJCQkJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSBs YXBwZW5kKHNic3JlZi0+cmVmdXBwZXJpbmRleHByLCBOVUxMKTsKKwkJCQl9CiAJCQl9CiAJCQll bHNlCiAJCQl7CiAJCQkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaV9mcm9tID0gTlVMTDsKIAogCQkJ CUFzc2VydChhaS0+dWlkeCAmJiAhYWktPmxpZHgpOwotCQkJCWpwaV9mcm9tID0gbWFrZV9qc29u cGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+dWlkeCwgJnNic3JlZi0+cmVmdXBwZXJpbmRleHBy KTsKKwkJCQlqcGlfZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9leHByKHBzdGF0ZSwgYWktPnVp ZHgsICZzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgdHJ1ZSk7CiAJCQkJaWYgKGpwaV9mcm9tID09 IE5VTEwpCiAJCQkJewogCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb24uYwppbmRleCBlNmE3ZWNlNmRhYi4uOTM1YjQ3YTNiOWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCisr KyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5jCkBAIC01 MDUsNyArNTA1LDcgQEAgaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KIGlmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CiAjbGluZSAxNDIgInNxbGpzb24ucGdjIgog Ci0JLy8gZXJyb3IKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJeyBFQ1BH ZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAo ICggJ3tcImFcIjoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wi eFwiOiBbMTIsIHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiAqICkiLCBFQ1BHdF9FT0lULCAK IAlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFy KSwgCkBAIC01MjUsMTQgKzUyNSwyNCBAQCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQogaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KICNsaW5lIDE0OCAic3Fs anNvbi5wZ2MiCiAKLQkvLyBlcnJvcgorCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7 CiAKLSAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKwl7IEVDUEdkbyhf X0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAn e1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6 IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyA6IF0gKSIsIEVDUEd0X0VPSVQs IAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNo YXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JU KTsKICNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3Fs cHJpbnQoKTt9CiAjbGluZSAxNTEgInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29u PSVzXG4iLCBqc29uKTsKKworICB7IEVDUEdkaXNjb25uZWN0KF9fTElORV9fLCAiQ1VSUkVOVCIp OworI2xpbmUgMTU0ICJzcWxqc29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxw cmludCgpO30KKyNsaW5lIDE1NCAic3FsanNvbi5wZ2MiCisKIAogICByZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5z dGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3Rk ZXJyCmluZGV4IDE5ZjhjNThhZjA2Li5mM2Y4OTljNmQ4NyAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgorKysgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyCkBAIC0zMzksMTMg KzMzOSwxMCBAQCBTUUwgZXJyb3I6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxp bmUgMTIxCiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogdXNpbmcgUFFleGVjCiBbTk9fUElEXTogc3FsY2E6 IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24g bGluZSAxNDI6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLiwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjog anNvbmIgKSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBlY3Bn X3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQyOiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGgg MSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0MjogUkVTVUxUOiBbMTIsIHsieSI6IDF9XSBvZmZz ZXQ6IC0xOyBhcnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAw Ci1bTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIg c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCi1bTk9fUElEXTog c3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKIFtOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29u YiApIC4gKiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVz c2lvbgogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKIFtOT19QSURdOiBl Y3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYwpAQCAtMzYxLDEyICszNTgsMTcg QEAgU1FMIGVycm9yOiByb3cgZXhwYW5zaW9uIHZpYSAiKiIgaXMgbm90IHN1cHBvcnRlZCBoZXJl IG9uIGxpbmUgMTQ1CiBbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAogW05P X1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0ODogdXNpbmcgUFFleGVjCiBbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAotW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1 bHQgb24gbGluZSAxNDg6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRv ZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IC4uLngiOiAxfSwgeyJ4IjogWzEyLCB7Inki OjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCA6IF0gKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURd OiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTQ4OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVz IHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitb Tk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDE0ODogUkVTVUxUOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjogMX1dfV0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5l IDE1MTogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgOiBd ICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhl Y3V0ZSBvbiBsaW5lIDE1MTogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxNTE6 IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTUx OiBSRVNVTFQ6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOiAxfV19XSBvZmZzZXQ6IC0xOyBh cnJheTogbm8KIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCi1bTk9fUElE XTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNvbmIgc3Vic2NyaXB0 IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQ4Ci1bTk9fUElEXTogc3FsY2E6IGNv ZGU6IC00MDAsIHN0YXRlOiA0MjgwNAotU1FMIGVycm9yOiBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDgKIFtOT19QSURdOiBlY3BnX2ZpbmlzaDogY29u bmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAogW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbi5zdGRvdXQgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0 ZWQvc3FsLXNxbGpzb24uc3Rkb3V0CmluZGV4IDQ0MmQzNjkzMWYxLi5kMDFhODQ1N2YwMSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0 ZG91dAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3Rkb3V0CkBAIC0zNSwzICszNSw2IEBAIEZvdW5kIGpzb249bnVsbAogRm91bmQganNvbj17Ingi OiAxfQogRm91bmQganNvbj1bMSwgWzEyLCB7InkiOiAxfV1dCiBGb3VuZCBqc29uPXsieCI6IDF9 CitGb3VuZCBqc29uPVsxMiwgeyJ5IjogMX1dCitGb3VuZCBqc29uPVt7IngiOiAxfSwgeyJ4Ijog WzEyLCB7InkiOiAxfV19XQorRm91bmQganNvbj1beyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5Ijog MX1dfV0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5w Z2MgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IDU3YTli ZmY0MjRkLi45NDIzZDI1ZmQwYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L3NxbC9zcWxqc29uLnBnYworKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b24ucGdjCkBAIC0xNDAsMTMgKzE0MCwxNiBAQCBFWEVDIFNRTCBFTkQgREVDTEFSRSBTRUNUSU9O OwogCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CiAKIAlFWEVDIFNRTCBTRUxFQ1Qg SlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIs IHsieSI6MX1dfV19Jzo6anNvbmIpLmJbMV0ueFswOl0pIElOVE8gOmpzb247Ci0JLy8gZXJyb3IK KwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAJRVhFQyBTUUwgU0VMRUNUIEpT T04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7 InkiOjF9XX1dfSc6Ompzb25iKS4qKSBJTlRPIDpqc29uOwogCS8vIGVycm9yCiAKIAlFWEVDIFNR TCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7 IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpWydiJ11bMDpdKSBJTlRPIDpqc29uOwotCS8v IGVycm9yCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNF TEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6 IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYikuYls6XSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZv dW5kIGpzb249JXNcbiIsIGpzb24pOwogCiAgIEVYRUMgU1FMIERJU0NPTk5FQ1Q7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggZDc4MWYxNTE4ZWIuLmY0YTIwNjk0MTAyIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTI0NywyMyArNTI0NywzNCBAQCBz ZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6 ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYgogKDEgcm93KQogCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVsnYSc6J2InXTsgLS0gZmFpbHMKLUVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90 IHN1cHBvcnQgc2xpY2VzCitFUlJPUjogIG9ubHkgbm9uLW51bGwgaW50ZWdlciBjb25zdGFudHMg YXJlIHN1cHBvcnRlZCBmb3IganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzdWJzY3JpcHRpbmcK IExJTkUgMTogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0hJTlQ6ICB1c2UgaW50IGRhdGEgdHlwZSBmb3Igc3Vic2NyaXB0aW5nIHdp dGggc2xpY2luZy4KIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6Ml07Ci1FUlJP UjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElORSAxOiBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOjJdOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICBqc29uYiAgICAKKy0tLS0tLS0tLS0tLS0KKyBb IjIiLCBudWxsXQorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6 Ml07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElO RSAxOiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgIGpzb25iICAgICAgCistLS0tLS0t LS0tLS0tLS0tCisgWzEsICIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMTpdOwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3Vw cG9ydCBzbGljZXMKLUxJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMTpd OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAganNvbmIg ICAgCistLS0tLS0tLS0tLS0tCisgWyIyIiwgbnVsbF0KKygxIHJvdykKKwogc2VsZWN0ICgnWzEs ICIyIiwgbnVsbF0nOjpqc29uYilbOl07Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5v dCBzdXBwb3J0IHNsaWNlcworICAgICBqc29uYiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsx LCAiMiIsIG51bGxdCisoMSByb3cpCisKIGNyZWF0ZSBURU1QIFRBQkxFIHRlc3RfanNvbmJfc3Vi c2NyaXB0ICgKICAgICAgICBpZCBpbnQsCiAgICAgICAgdGVzdF9qc29uIGpzb25iCkBAIC02MDA1 LDggKzYwMTYsNDIgQEAgU0VMRUNUIChqYikuYS5iLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKICAKICgxIHJvdykKIAotU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBu b3Qgc3VwcG9ydCBzbGljZXMKK1NFTEVDVCAoKGpiKS5iKVs6XS54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgIHggICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsieSI6ICJZWVkiLCAieiI6ICJaWloifQorKDEgcm93KQorCitTRUxF Q1QgKGpiKS5hWzI6M10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICBiICAg ICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmFb MjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgYiAgICAgIAorLS0tLS0t LS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hWzoyXS5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykKKwor U0VMRUNUIChqYikuYVs6XS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgIGIg ICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworU0VMRUNUICgoamIp LmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgeCAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ5IjogIllZWSIsICJ6 IjogIlpaWiJ9CisoMSByb3cpCisKIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOyAtLSBmYWlscwogRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUK IC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC02MDQyLDYgKzYwODcsMjggQEAgQ1JFQVRFIFZJ RVcgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMgU0VMRUNUIChqYikuYVszXS54LnkgRlJP TSB0ZXN0X2pzb25iX2QKIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uX3YxIEFTCiAgU0VMRUNUIChqYikuYVszXS54LnkgQVMgeQogICAgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorQ1JFQVRFIFZJRVcgdjIgQVMgU0VMRUNUIChqYikuYVsz Ol0ueC55WzotMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB2MgorQ1JFQVRF IE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjIgQVMKKyBTRUxFQ1QgKGpiKS5hWzM6XS54LnlbMDon LTEnOjppbnRlZ2VyXSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxF Q1QgKiBmcm9tIHYyOworIHkgCistLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFZJRVcgdjMgQVMg U0VMRUNUIChqYikuYVs6M10ueC55Wy0xOl0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1xzdiB2MworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjMgQVMKKyBTRUxFQ1QgKGpi KS5hWzA6M10ueC55WyctMSc6OmludGVnZXI6XSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uCitTRUxFQ1QgKiBmcm9tIHYzOworICAgeSAgIAorLS0tLS0tLQorICJ5eXkiCiso MSByb3cpCisKIC0tIG1peGVkIHN5bnRheAogRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uX3YxOwogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKQEAgLTYyMjYsNSArNjI5Myw1NSBAQCBTRUxF Q1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOwogKDEgcm93KQogCiBEUk9QIFZJ RVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworLS0ganNvbmIgYXJyYXkgYWNj ZXNzIGluIHBscGdzcWwKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25iIDo9ICdb MSwyLDMsNCw1LDYsN10nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAgICBXSElMRSBhIElTIE5P VCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAgUkFJU0UgTk9USUNFICcl JywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IGFbMjpdOworICAgICAgICAgICAgRU5EIExPT1A7 CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3FsOworTk9USUNFOiAgWzEsIDIsIDMsIDQsIDUs IDYsIDddCitOT1RJQ0U6ICBbMywgNCwgNSwgNiwgN10KK05PVElDRTogIFs1LCA2LCA3XQorTk9U SUNFOiAgNworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERFQ0xB UkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2XSwg WzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAgICAg ICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAgICAg UkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExB TkdVQUdFIHBscGdzcWw7CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZd LCBbMl0sICJiQ2kiXSwgImFhZiI6IFstNiwgLThdfQorRVJST1I6ICBtaXNzaW5nIEZST00tY2xh dXNlIGVudHJ5IGZvciB0YWJsZSAiYSIKK0xJTkUgMTogYSA6PSBDT0FMRVNDRShhLiJOVSIsIGFb Ml0pCisgICAgICAgICAgICAgICAgICAgICAgXgorUVVFUlk6ICBhIDo9IENPQUxFU0NFKGEuIk5V IiwgYVsyXSkKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBs aW5lIDggYXQgYXNzaWdubWVudAorRE8gJCQKKyAgICBERUNMQVJFCisgICAgICAgIGEganNvbmIg Oj0gJ3siIjogNiwgIk5VIjogW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJdLCAiYWFmIjog Wy02LCAtOF19Jzo6anNvbmI7CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVM TAorICAgICAgICAgICAgTE9PUAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7 CisgICAgICAgICAgICAgICAgYSA6PSBDT0FMRVNDRSgoYSkuIk5VIiwgYVsyXSk7IC0tIHN1Y2Nl ZWRzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitOT1RJQ0U6ICB7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwg ImFhZiI6IFstNiwgLThdfQorTk9USUNFOiAgW3siIjogW1szXV19LCBbNl0sIFsyXSwgImJDaSJd CitOT1RJQ0U6ICBbMl0KIC0tIGNsZWFuIHVwCitEUk9QIFZJRVcgdjI7CitEUk9QIFZJRVcgdjM7 CiBEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3Fs CmluZGV4IGEwZmFkOTBhOWQ1Li5iOGVjZWZkYTA0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApA QCAtMTYyMyw3ICsxNjIzLDEyIEBAIFNFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOwogU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKIFNFTEVDVCAoamIpLmIueC56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBT RUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUICgo amIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAtLSBmYWlscworU0VM RUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNU IChqYikuYVsyOjNdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOjJd LmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbOl0uYiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIGZhaWxzCiAKIC0tIGV4cGxhaW5zIHNob3VsZCB3b3JrCkBAIC0xNjM1 LDYgKzE2NDAsMTIgQEAgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOwogLS0gdmlld3Mgc2hvdWxkIHdvcmsKIENSRUFURSBWSUVXIHRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CiBcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBWSUVXIHYyIEFT IFNFTEVDVCAoamIpLmFbMzpdLngueVs6LTFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 Citcc3YgdjIKK1NFTEVDVCAqIGZyb20gdjI7CitDUkVBVEUgVklFVyB2MyBBUyBTRUxFQ1QgKGpi KS5hWzozXS54LnlbLTE6XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHYzCitT RUxFQ1QgKiBmcm9tIHYzOwogCiAtLSBtaXhlZCBzeW50YXgKIERST1AgVklFVyB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKQEAgLTE2OTUsNSArMTcwNiw0NSBAQCBTRUxFQ1QgKGpiKVsnYidd Wyd4J10ueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICogZnJvbSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKIERST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb25fdjE7CiAKKy0tIGpzb25iIGFycmF5IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAor ICAgIERFQ0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAnWzEsMiwzLDQsNSw2LDddJzo6anNvbmI7 CisgICAgQkVHSU4KKyAgICAgICAgV0hJTEUgYSBJUyBOT1QgTlVMTAorICAgICAgICAgICAgTE9P UAorICAgICAgICAgICAgICAgIFJBSVNFIE5PVElDRSAnJScsIGE7CisgICAgICAgICAgICAgICAg YSA6PSBhWzI6XTsKKyAgICAgICAgICAgIEVORCBMT09QOworICAgIEVORAorJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworLS0ganNvbmIgZG90IGFjY2VzcyBpbiBwbHBnc3FsCitETyAkJAorICAgIERF Q0xBUkUKKyAgICAgICAgYSBqc29uYiA6PSAneyIiOiA2LCAiTlUiOiBbeyIiOiBbWzNdXX0sIFs2 XSwgWzJdLCAiYkNpIl0sICJhYWYiOiBbLTYsIC04XX0nOjpqc29uYjsKKyAgICBCRUdJTgorICAg ICAgICBXSElMRSBhIElTIE5PVCBOVUxMCisgICAgICAgICAgICBMT09QCisgICAgICAgICAgICAg ICAgUkFJU0UgTk9USUNFICclJywgYTsKKyAgICAgICAgICAgICAgICBhIDo9IENPQUxFU0NFKGEu Ik5VIiwgYVsyXSk7IC0tIGZhaWxzCisgICAgICAgICAgICBFTkQgTE9PUDsKKyAgICBFTkQKKyQk IExBTkdVQUdFIHBscGdzcWw7CisKK0RPICQkCisgICAgREVDTEFSRQorICAgICAgICBhIGpzb25i IDo9ICd7IiI6IDYsICJOVSI6IFt7IiI6IFtbM11dfSwgWzZdLCBbMl0sICJiQ2kiXSwgImFhZiI6 IFstNiwgLThdfSc6Ompzb25iOworICAgIEJFR0lOCisgICAgICAgIFdISUxFIGEgSVMgTk9UIE5V TEwKKyAgICAgICAgICAgIExPT1AKKyAgICAgICAgICAgICAgICBSQUlTRSBOT1RJQ0UgJyUnLCBh OworICAgICAgICAgICAgICAgIGEgOj0gQ09BTEVTQ0UoKGEpLiJOVSIsIGFbMl0pOyAtLSBzdWNj ZWVkcworICAgICAgICAgICAgRU5EIExPT1A7CisgICAgRU5ECiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCiAtLSBjbGVhbiB1cAorRFJPUCBWSUVXIHYyOworRFJPUCBWSUVXIHYzOwogRFJPUCBUQUJM RSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Disposition: attachment; filename="v13-0001-Allow-transformation-of-only-a-sublist-of-subscr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiog20 RnJvbSAxNDBmZDhiYjNkMzhlNjg1ZTUyYTZjMmZhNjk3YjNhOTEwMzA2MWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEzIDEvN10gQWxsb3cgdHJhbnNmb3JtYXRpb24gb2Ygb25seSBhIHN1Ymxpc3Qgb2Ygc3Vic2Ny aXB0cwoKVGhpcyBpcyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGFsbG93aW5nIHN1YnNjcmlwdGlu ZyBjb250YWluZXJzIHRvCnRyYW5zZm9ybSBvbmx5IGEgcHJlZml4IG9mIGFuIGluZGlyZWN0aW9u IGxpc3QgYW5kIG1vZGlmeSB0aGUgbGlzdAppbi1wbGFjZSBieSByZW1vdmluZyB0aGUgcHJvY2Vz c2VkIGVsZW1lbnRzLiBDdXJyZW50bHksIGFsbCBlbGVtZW50cwphcmUgY29uc3VtZWQsIGFuZCB0 aGUgbGlzdCBpcyBzZXQgdG8gTklMIGFmdGVyIHRyYW5zZm9ybWF0aW9uLgoKSW4gdGhlIGZvbGxv d2luZyBjb21taXQsIHN1YnNjcmlwdGluZyBjb250YWluZXJzIHdpbGwgZ2FpbiB0aGUKZmxleGli aWxpdHkgdG8gc3RvcCB0cmFuc2Zvcm1hdGlvbiB3aGVuIGVuY291bnRlcmluZyBhbiB1bnN1cHBv cnRlZAppbmRpcmVjdGlvbiBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIHRv IHRoZSBjYWxsZXIuCgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53YW5n Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNs YW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5N0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5j b20+Ci0tLQogY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyAgICAgIHwgMTAgKysrKysrLS0t LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgIHwgIDkgKysrKy0tLS0tCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vi cy5jIHwgIDYgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgfCAgNiAr KysrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oICB8ICA3ICsrKysrKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQs IDI4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv aHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCmluZGV4 IDNkMDNmNjZmYTBkLi4xYjI5NTQzYWI2NyAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmUvaHN0 b3JlX3N1YnMuYworKysgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCkBAIC00MCw3ICs0 MCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBoc3RvcmVfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJ ICAgTGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJICAgYm9vbCBpc1NsaWNlLAogCQkJCQkJICAgYm9vbCBpc0Fzc2lnbm1lbnQpCkBAIC00OSwx NSArNDksMTUgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsCiAJTm9kZQkgICAqc3ViZXhwcjsKIAogCS8qIFdlIHN1cHBvcnQgb25seSBzaW5nbGUt c3Vic2NyaXB0LCBub24tc2xpY2UgY2FzZXMgKi8KLQlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0 aChpbmRpcmVjdGlvbikgIT0gMSkKKwlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0aCgqaW5kaXJl Y3Rpb24pICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImhzdG9yZSBhbGxvd3Mgb25seSBvbmUg c3Vic2NyaXB0IiksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0JCQkJCQkJCQll eHByTG9jYXRpb24oKE5vZGUgKikgaW5kaXJlY3Rpb24pKSkpOworCQkJCQkJCQkJZXhwckxvY2F0 aW9uKChOb2RlICopICppbmRpcmVjdGlvbikpKSk7CiAKIAkvKiBUcmFuc2Zvcm0gdGhlIHN1YnNj cmlwdCBleHByZXNzaW9uIHRvIHR5cGUgdGV4dCAqLwotCWFpID0gbGluaXRpYWxfbm9kZShBX0lu ZGljZXMsIGluZGlyZWN0aW9uKTsKKwlhaSA9IGxpbml0aWFsX25vZGUoQV9JbmRpY2VzLCAqaW5k aXJlY3Rpb24pOwogCUFzc2VydChhaS0+dWlkeCAhPSBOVUxMICYmIGFpLT5saWR4ID09IE5VTEwg JiYgIWFpLT5pc19zbGljZSk7CiAKIAlzdWJleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFp LT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKQEAgLTgxLDYgKzgxLDggQEAgaHN0b3JlX3N1 YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJLyogRGV0ZXJtaW5l IHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIHRl eHQgKi8KIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBURVhUT0lEOwogCXNic3JlZi0+cmVmdHlwbW9k ID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwppbmRleCBkNjYyNzY4MDFjNi4uZTE1NjVlMTFkMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwpAQCAtNDY2LDE0ICs0NjYsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQlBc3NlcnQoSXNBKG4sIFN0cmluZykp OwogCiAJCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMgZmllbGQgc2VsZWN0aW9u ICovCi0JCQlpZiAoc3Vic2NyaXB0cykKKwkJCXdoaWxlIChzdWJzY3JpcHRzKQogCQkJCXJlc3Vs dCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAogCQkJCQkJ CQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwK IAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkJCSAg IHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJ CQkJCSAgIGZhbHNlKTsKLQkJCXN1YnNjcmlwdHMgPSBOSUw7CiAKIAkJCW5ld3Jlc3VsdCA9IFBh cnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCkBAIC00 ODgsMTIgKzQ4NywxMiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUs IEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJfQogCX0KIAkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNj cmlwdHMsIGlmIGFueSAqLwotCWlmIChzdWJzY3JpcHRzKQorCXdoaWxlIChzdWJzY3JpcHRzKQog CQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwK IAkJCQkJCQkJCQkJCQkgICByZXN1bHQsCiAJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0 KSwKIAkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAg c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJCQkg ICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKaW5kZXgg MjAzYjdhMzIxNzguLmYwNWJhYTUwYTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMKQEAgLTI0 NCw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFzZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5l clR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkgTGlzdCAqaW5k aXJlY3Rpb24sCisJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkgYm9vbCBpc0Fz c2lnbm1lbnQpCiB7CiAJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWY7CkBAIC0yODAsNyArMjgwLDcg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICog ZWxlbWVudC4gIElmIGFueSBvZiB0aGUgaXRlbXMgYXJlIHNsaWNlIHNwZWNpZmllcnMgKGxvd2Vy OnVwcGVyKSwgdGhlbgogCSAqIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBtZWFucyBhIGNvbnRh aW5lciBzbGljZSBvcGVyYXRpb24uCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQor CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4 IDRhYmEwZDlkNGQ1Li40Njc1YTUyMzA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpA QCAtOTM2LDcgKzkzNiw3IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgIGJhc2Vub2RlLAogCQkJCQkJCQkJCSAgY29udGFpbmVy VHlwZSwKIAkJCQkJCQkJCQkgIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkJCQkgIHN1YnNjcmlw dHMsCisJCQkJCQkJCQkJICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkgIHRydWUpOwogCiAJdHlw ZU5lZWRlZCA9IHNic3JlZi0+cmVmcmVzdHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpp bmRleCAyOTQwZmI4ZThkNy4uMjM0YzJjMjc4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJz LmMKQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlTdWJXb3Jrc3BhY2UKICAq Lwogc3RhdGljIHZvaWQKIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBMaXN0ICoqaW5k aXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9vbCBpc1Ns aWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTcxLDcgKzcxLDcgQEAgYXJyYXlf c3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKiBpbmRpcmVj dGlvbiBpdGVtcyB0byBzbGljZXMgYnkgdHJlYXRpbmcgdGhlIHNpbmdsZSBzdWJzY3JpcHQgYXMg dGhlCiAJICogdXBwZXIgYm91bmQgYW5kIHN1cHBseWluZyBhbiBhc3N1bWVkIGxvd2VyIGJvdW5k IG9mIDEuCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2goaWR4LCAq aW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNl cywgaWR4KTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKQEAgLTE1Miw2ICsxNTIsOCBAQCBhcnJheV9z dWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJCQkJbGlzdF9s ZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQgbm90IGNoZWNrIGxv d2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CisKIAkvKgog CSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRp b24uICBJdCdzIHRoZSBzYW1lCiAJICogYXMgdGhlIGFycmF5IHR5cGUgaWYgd2UncmUgc2xpY2lu ZywgZWxzZSBpdCdzIHRoZSBlbGVtZW50IHR5cGUuICBJbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vi cy5jCmluZGV4IGRlNjRkNDk4NTEyLi44YWQ2YWExYWQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u YnN1YnMuYwpAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1YldvcmtzcGFj ZQogICovCiBzdGF0aWMgdm9pZAoganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRp bmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkgIExpc3Qg KippbmRpcmVjdGlvbiwKIAkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBib29s IGlzU2xpY2UsCiAJCQkJCQkgIGJvb2wgaXNBc3NpZ25tZW50KQpAQCAtNTMsNyArNTMsNyBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqIFRy YW5zZm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBKc29uYiBzdWJz Y3JpcHRpbmcKIAkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5IGFuZCB0aGUg dXBwZXIgaW5kZXguCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2go aWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFf SW5kaWNlcywgaWR4KTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKQEAgLTE1OSw2ICsxNTksOCBAQCBq c29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCS8qIERl dGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFs d2F5cyBqc29uYiAqLwogCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwogCXNic3JlZi0+ cmVmdHlwbW9kID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3N1YnNjcmlwdGluZy5oCmluZGV4IDIzNGU4YWQ4MDEyLi41ZDU3NmFmMzQ2ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmgKQEAgLTcxLDYgKzcxLDExIEBAIHN0cnVjdCBTdWJzY3JpcHRFeGVj U3RlcHM7CiAgKiBkb2VzIG5vdCBjYXJlIHRvIHN1cHBvcnQgc2xpY2luZywgaXQgY2FuIGp1c3Qg dGhyb3cgYW4gZXJyb3IgaWYgaXNTbGljZS4pCiAgKiBTZWUgYXJyYXlfc3Vic2NyaXB0X3RyYW5z Zm9ybSgpIGZvciBzYW1wbGUgY29kZS4KICAqCisgKiBUaGUgdHJhbnNmb3JtIG1ldGhvZCByZWNl aXZlcyBhIHBvaW50ZXIgdG8gYSBsaXN0IG9mIHJhdyBpbmRpcmVjdGlvbnMuCisgKiBUaGlzIGFs bG93cyB0aGUgbWV0aG9kIHRvIHBhcnNlIGEgc3VibGlzdCBvZiB0aGUgaW5kaXJlY3Rpb25zICh0 eXBpY2FsbHkKKyAqIHRoZSBwcmVmaXgpIGFuZCBtb2RpZnkgdGhlIG9yaWdpbmFsIGxpc3QgaW4g cGxhY2UsIGVuYWJsaW5nIHRoZSBjYWxsZXIgdG8KKyAqIGVpdGhlciBwcm9jZXNzIHRoZSByZW1h aW5pbmcgaW5kaXJlY3Rpb25zIGRpZmZlcmVudGx5IG9yIHJhaXNlIGFuIGVycm9yLgorICoKICAq IFRoZSB0cmFuc2Zvcm0gbWV0aG9kIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGlkZW50aWZ5aW5n IHRoZSByZXN1bHQgdHlwZQogICogb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb24uICBBdCBj YWxsLCByZWZjb250YWluZXJ0eXBlIGFuZCByZWZ0eXBtb2QKICAqIGRlc2NyaWJlIHRoZSBjb250 YWluZXIgdHlwZSAodGhpcyB3aWxsIGJlIGEgYmFzZSB0eXBlIG5vdCBhIGRvbWFpbiksIGFuZApA QCAtOTMsNyArOTgsNyBAQCBzdHJ1Y3QgU3Vic2NyaXB0RXhlY1N0ZXBzOwogICogYXNzaWdubWVu dCBtdXN0IHJldHVybi4KICAqLwogdHlwZWRlZiB2b2lkICgqU3Vic2NyaXB0VHJhbnNmb3JtKSAo U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCi0JCQkJCQkJCQlMaXN0ICppbmRpcmVjdGlvbiwKKwkJ CQkJCQkJCUxpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkJCXN0cnVjdCBQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQlib29sIGlzU2xpY2UsCiAJCQkJCQkJCQlib29sIGlzQXNzaWdubWVu dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2QwN2M4NDU0Mi4uNThhNGI5ZGYxNTcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzYxLDcgKzM2MSw3IEBAIGV4dGVybiBTdWJz Y3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCQkJCSBOb2RlICpjb250YWluZXJCYXNlLAogCQkJCQkJCQkJCQkJCSBP aWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAot CQkJCQkJCQkJCQkJCSBMaXN0ICppbmRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJCQkgTGlzdCAqKmlu ZGlyZWN0aW9uLAogCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CiBleHRlcm4gQ29u c3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v13-0005-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiogg3 RnJvbSA3ZTkyNzhjODZkNjJlNzQ3YmNhODYyYjZiYzhhMTFlMzFmY2QzNmFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA4IEp1bCAyMDI1IDIyOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgNS83XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3Rh dGlvbiB0aGF0CmFsaWducyB3aXRoIHRoZSBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3BlY2lm aWVkIGluIFNRTDoyMDIzLgoKRXhhbXBsZXM6CgotLSBTZXR1cApjcmVhdGUgdGFibGUgdCh4IGlu dCwgeSBqc29uYik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb25iOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19 Jzo6anNvbmI7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbmI7CgotLSBFeGlzdGluZyBzeW50YXggaW4gUG9zdGdy ZVNRTCB0aGF0IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZy b20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4w IGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNR TCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20g dDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhh dCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICds YXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVM TCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAg SkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRo ZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9mIHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVj dCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHks ICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0n IFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9uIGRldGFpbHM6CgpFeHRlbmRzIHRoZSBleGlzdGlu ZyBjb250YWluZXIgc3Vic2NyaXB0aW5nIGludGVyZmFjZSB0byBzdXBwb3J0CmNvbnRhaW5lci1z cGVjaWZpYyBpbmZvcm1hdGlvbiwgc3BlY2lmaWNhbGx5IGEgSlNPTlBhdGggZXhwcmVzc2lvbiBm b3IKanNvbmIuCgpEdXJpbmcgcXVlcnkgdHJhbnNmb3JtYXRpb24sIGlmIGRvdC1ub3RhdGlvbiBp cyBwcmVzZW50LCBjb25zdHJ1Y3RzIGEKSlNPTlBhdGggZXhwcmVzc2lvbiByZXByZXNlbnRpbmcg dGhlIGFjY2VzcyBjaGFpbi4KCkR1cmluZyBleGVjdXRpb24sIGlmIGEgSlNPTlBhdGggZXhwcmVz c2lvbiBpcyBwcmVzZW50IGluCkpzb25iU3ViV29ya3NwYWNlLCBleGVjdXRlcyBpdCB2aWEgSnNv blBhdGhRdWVyeSgpLgoKRG9lcyBub3QgdHJhbnNmb3JtIGFjY2Vzc29ycyBkaXJlY3RseSBpbnRv IEpTT05fUVVFUlkgZHVyaW5nCnRyYW5zZm9ybWF0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5h bCBxdWVyeSBzdHJ1Y3R1cmUgZm9yIEVYUExBSU4KYW5kIENSRUFURSBWSUVXLgoKQ28tYXV0aG9y ZWQtYnk6IE5pa2l0YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+CkNvLWF1dGhvcmVk LWJ5OiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTog TWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IE1hcmsgRGlsZ2VyIDxtYXJrLmRpbGdlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTog SmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZl YXJpbmcgPHZpa0Bwb3N0Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogTmlraXRhIE1hbGFr aG92IDxodWt1dG9jQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBl dGVyQGVpc2VudHJhdXQub3JnPgpUZXN0ZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jl c0BqZWx0ZWYubmw+Ci0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0ICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgICAg ICAgICAgfCAgNzYgKystLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAg ICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyAgICAgICAg ICAgICB8IDM1MiArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICA0MyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDU0ICsrLQogLi4uL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3Fs anNvbi5jICAgICAgICAgIHwgMTEyICsrKystCiAuLi4vZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1z cWxqc29uLnN0ZGVyciAgICAgfCAxMDAgKysrKysKIC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3Fs LXNxbGpzb24uc3Rkb3V0ICAgICB8ICAgNyArCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3Fs L3NxbGpzb24ucGdjICAgICAgfCAgMzMgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bmIub3V0ICAgICAgICAgICB8IDQwMSArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iLnNxbCAgICAgICAgICAgICAgICB8IDExMSArKysrLQogc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDEzIGZpbGVzIGNoYW5n ZWQsIDEyMDYgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3FsX2ZlYXR1cmVzLnR4dAppbmRleCBlYmU4NTMzN2MyOC4uNDU3ZTk5MzMwNWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKQEAgLTU2OCw4ICs1NjgsOCBAQCBUODM4CUpTT05f VEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlOTwogVDgzOQlGb3JtYXR0ZWQgY2FzdCBvZiBk YXRldGltZXMgdG8vZnJvbSBjaGFyYWN0ZXIgc3RyaW5ncwkJCU5PCQogVDg0MAlIZXggaW50ZWdl ciBsaXRlcmFscyBpbiBTUUwvSlNPTiBwYXRoIGxhbmd1YWdlCQkJWUVTCQogVDg1MQlTUUwvSlNP Tjogb3B0aW9uYWwga2V5d29yZHMgZm9yIGRlZmF1bHQgc3ludGF4CQkJWUVTCQotVDg2MAlTUUwv SlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yOiBjb2x1bW4gcmVmZXJlbmNlIG9ubHkJCQlOTwkKLVQ4 NjEJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY2FzZS1zZW5zaXRpdmUgSlNPTiBtZW1i ZXIgYWNjZXNzb3IJCQlOTwkKK1Q4NjAJU1FML0pTT04gc2ltcGxpZmllZCBhY2Nlc3NvcjogY29s dW1uIHJlZmVyZW5jZSBvbmx5CQkJWUVTCQorVDg2MQlTUUwvSlNPTiBzaW1wbGlmaWVkIGFjY2Vz c29yOiBjYXNlLXNlbnNpdGl2ZSBKU09OIG1lbWJlciBhY2Nlc3NvcgkJCVlFUwkKIFQ4NjIJU1FM L0pTT04gc2ltcGxpZmllZCBhY2Nlc3Nvcjogd2lsZGNhcmQgbWVtYmVyIGFjY2Vzc29yCQkJTk8J CiBUODYzCVNRTC9KU09OIHNpbXBsaWZpZWQgYWNjZXNzb3I6IHNpbmdsZS1xdW90ZWQgc3RyaW5n IGxpdGVyYWwgYXMgbWVtYmVyIGFjY2Vzc29yCQkJTk8JCiBUODY0CVNRTC9KU09OIHNpbXBsaWZp ZWQgYWNjZXNzb3IJCQlOTwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGYxNTY5ODc5YjUy Li43NWU1N2NhMGM3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0zMzIwLDUwICszMzIw LDUyIEBAIEV4ZWNJbml0U3Vic2NyaXB0aW5nUmVmKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgU3Vi c2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkJCSAgIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsK IAl9CiAKLQkvKiBFdmFsdWF0ZSB1cHBlciBzdWJzY3JpcHRzICovCi0JaSA9IDA7Ci0JZm9yZWFj aChsYywgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCisJLyogRXZhbHVhdGUgdXBwZXIgc3Vic2Ny aXB0cywgdW5sZXNzIHJlZmpzb25icGF0aCBpcyB1c2VkIGZvciBleGVjdXRpb24gKi8KKwlpZiAo IXNic3JlZi0+cmVmanNvbmJwYXRoKQogCXsKLQkJRXhwcgkgICAqZSA9IChFeHByICopIGxmaXJz dChsYyk7Ci0KLQkJLyogV2hlbiBzbGljaW5nLCBpbmRpdmlkdWFsIHN1YnNjcmlwdCBib3VuZHMg Y2FuIGJlIG9taXR0ZWQgKi8KLQkJaWYgKCFlKQotCQl7Ci0JCQlzYnNyZWZzdGF0ZS0+dXBwZXJw cm92aWRlZFtpXSA9IGZhbHNlOwotCQkJc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldID0g dHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXNic3JlZnN0YXRlLT51cHBlcnByb3ZpZGVkW2ld ID0gdHJ1ZTsKLQkJCS8qIEVhY2ggc3Vic2NyaXB0IGlzIGV2YWx1YXRlZCBpbnRvIGFwcHJvcHJp YXRlIGFycmF5IGVudHJ5ICovCi0JCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCi0JCQkJCQkJ JnNic3JlZnN0YXRlLT51cHBlcmluZGV4W2ldLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJp bmRleG51bGxbaV0pOworCQlpID0gMDsKKwkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZ1cHBlcmlu ZGV4cHIpIHsKKwkJCUV4cHIgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVu IHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLwor CQkJaWYgKCFlKSB7CisJCQkJc2JzcmVmc3RhdGUtPnVwcGVycHJvdmlkZWRbaV0gPSBmYWxzZTsK KwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleG51bGxbaV0gPSB0cnVlOworCQkJfSBlbHNlIHsK KwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyogRWFjaCBz dWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJ CQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJp bmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSk7CisJCQl9 CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAotCS8qIEV2YWx1YXRlIGxvd2VyIHN1YnNjcmlw dHMgc2ltaWxhcmx5ICovCi0JaSA9IDA7Ci0JZm9yZWFjaChsYywgc2JzcmVmLT5yZWZsb3dlcmlu ZGV4cHIpCisJLyogRXZhbHVhdGUgbG93ZXIgc3Vic2NyaXB0cyBzaW1pbGFybHksIHVubGVzcyBy ZWZqc29uYnBhdGggaXMgdXNlZCBmb3IgZXhlY3V0aW9uICAqLworCWlmICghc2JzcmVmLT5yZWZq c29uYnBhdGgpCiAJewotCQlFeHByCSAgICplID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKLQotCQkv KiBXaGVuIHNsaWNpbmcsIGluZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRl ZCAqLwotCQlpZiAoIWUpCisJCWkgPSAwOworCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZmxvd2Vy aW5kZXhwcikKIAkJewotCQkJc2JzcmVmc3RhdGUtPmxvd2VycHJvdmlkZWRbaV0gPSBmYWxzZTsK LQkJCXNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSA9IHRydWU7Ci0JCX0KLQkJZWxzZQot CQl7Ci0JCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7Ci0JCQkvKiBFYWNo IHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwot CQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJp bmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsKKwkJCUV4 cHIJICAgKmUgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCisJCQkvKiBXaGVuIHNsaWNpbmcsIGlu ZGl2aWR1YWwgc3Vic2NyaXB0IGJvdW5kcyBjYW4gYmUgb21pdHRlZCAqLworCQkJaWYgKCFlKQor CQkJeworCQkJCXNic3JlZnN0YXRlLT5sb3dlcnByb3ZpZGVkW2ldID0gZmFsc2U7CisJCQkJc2Jz cmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlzYnNyZWZzdGF0ZS0+bG93ZXJwcm92aWRlZFtpXSA9IHRydWU7CisJCQkJLyogRWFjaCBz dWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KKwkJ CQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJp bmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVsbFtpXSk7CisJCQl9 CisJCQlpKys7CiAJCX0KLQkJaSsrOwogCX0KIAogCS8qIFNCU1JFRl9TVUJTQ1JJUFRTIGNoZWNr cyBhbmQgY29udmVydHMgYWxsIHRoZSBzdWJzY3JpcHRzIGF0IG9uY2UgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKaW5kZXggN2JjODIzNTA3ZjEuLmQxYmQ1NzVkOWJkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjg0LDYgKzI4NCwxMyBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNl IFRfUGxhY2VIb2xkZXJWYXI6CiAJCQl0eXBlID0gZXhwclR5cGUoKE5vZGUgKikgKChjb25zdCBQ bGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHByKTsKIAkJCWJyZWFrOworCQljYXNlIFRfRmll bGRBY2Nlc3NvckV4cHI6CisJCQkvKgorCQkJICogRmllbGRBY2Nlc3NvckV4cHIgaXMgbm90IGV2 YWx1YWJsZS4gVHJlYXQgaXQgYXMgVEVYVCBmb3IgY29sbGF0aW9uLAorCQkJICogZGVwYXJzaW5n LCBhbmQgc2ltaWxhciBwdXJwb3Nlcywgc2luY2UgaXQgcmVwcmVzZW50cyBhIEpTT04gZmllbGQg bmFtZS4KKwkJCSAqLworCQkJdHlwZSA9IFRFWFRPSUQ7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVU YWcoZXhwcikpOwogCQkJdHlwZSA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQg Ki8KQEAgLTExNDYsNiArMTE1Myw5IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhwciwgT2lk IGNvbGxhdGlvbikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQkoKE1lcmdlU3VwcG9y dEZ1bmMgKikgZXhwciktPm1zZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNl IFRfRmllbGRBY2Nlc3NvckV4cHI6CisJCQkoKEZpZWxkQWNjZXNzb3JFeHByICopIGV4cHIpLT5m YWVjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1Jl ZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5yZWZjb2xsaWQgPSBjb2xsYXRpb247 CiAJCQlicmVhazsKQEAgLTIxMjksNiArMjEzOSw3IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJf aW1wbChOb2RlICpub2RlLAogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgogCQljYXNlIFRfQ1RF U2VhcmNoQ2xhdXNlOgogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKKwkJY2FzZSBUX0ZpZWxk QWNjZXNzb3JFeHByOgogCQkJLyogcHJpbWl0aXZlIG5vZGUgdHlwZXMgd2l0aCBubyBleHByZXNz aW9uIHN1Ym5vZGVzICovCiAJCQlicmVhazsKIAkJY2FzZSBUX1dpdGhDaGVja09wdGlvbjoKQEAg LTMwMDgsNiArMzAxOSw3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9k ZSwKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBUX0NURVNlYXJjaENsYXVzZToK IAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CisJCWNhc2UgVF9GaWVsZEFjY2Vzc29yRXhwcjoK IAkJCXJldHVybiBjb3B5T2JqZWN0KG5vZGUpOwogCQljYXNlIFRfV2l0aENoZWNrT3B0aW9uOgog CQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IGY5NDRkMTU0NGNhLi41ODA4Mzgz ZGIyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMwIEBACiAj aW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCisj aW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgi CiAjaW5jbHVkZSAibm9kZXMvc3Vic2NyaXB0aW5nLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X2NvZXJjZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxz L2pzb25wYXRoLmgiCiAKIAotLyogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBq c29uYiBzdWJzY3JpcHRpbmcgZXhlY3V0aW9uICovCisvKgorICogU3Vic2NyaXB0aW5nUmVmU3Rh dGUud29ya3NwYWNlIGZvciBnZW5lcmljIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24uCisg KgorICogU3RvcmVzIHN0YXRlIGZvciBib3RoIGpzb25iIHNpbXBsZSBzdWJzY3JpcHRpbmcgYW5k IGRvdCBub3RhdGlvbiBhY2Nlc3MuCisgKiBEb3Qgbm90YXRpb24gYWRkaXRpb25hbGx5IHVzZXMg YGpzb25wYXRoYCBmb3IgSnNvblBhdGggZXZhbHVhdGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3Qg SnNvbmJTdWJXb3Jrc3BhY2UKIHsKIAlib29sCQlleHBlY3RBcnJheTsJLyoganNvbmIgcm9vdCBp cyBleHBlY3RlZCB0byBiZSBhbiBhcnJheSAqLwogCU9pZAkJICAgKmluZGV4T2lkOwkJLyogT0lE IG9mIGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJlIG9u bHkgaW50ZWdlciBvciB0ZXh0ICovCiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2 YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBKc29u UGF0aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1dGlvbiB2aWEKKwkJCQkJCQkJICogSnNvblBhdGhR dWVyeSgpICovCiB9IEpzb25iU3ViV29ya3NwYWNlOwogCiBzdGF0aWMgTm9kZSAqCkBAIC05Niw2 ICsxMDUsMjU1IEBAIGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHRfdG9faW50NF9vcl90ZXh0KFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqc3ViRXhwcikKIAlyZXR1cm4gc3ViRXhwcjsKIH0KIAor LyoKKyAqIER1cmluZyB0cmFuc2Zvcm1hdGlvbiwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gYnVpbGQg YSBKc29uUGF0aAorICogZm9yIEpzb25QYXRoUXVlcnkoKSBleGVjdXRpb24uCisgKgorICogSnNv blBhdGggaXMgbmVlZGVkIGlmIHRoZSBpbmRpcmVjdGlvbiBsaXN0IGluY2x1ZGVzOgorICogLSBT dHJpbmctYmFzZWQgYWNjZXNzIChkb3Qgbm90YXRpb24pCisgKiAtIFNsaWNlLWJhc2VkIHN1YnNj cmlwdGluZworICoKKyAqIE90aGVyd2lzZSwgc2ltcGxlIGpzb25iIHN1YnNjcmlwdGluZyBpcyBl bm91Z2guCisgKi8KK3N0YXRpYyBib29sCitqc29uYl9jaGVja19qc29ucGF0aF9uZWVkZWQoTGlz dCAqaW5kaXJlY3Rpb24pCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBpbmRp cmVjdGlvbikKKwl7CisJCU5vZGUJICAgKmFjY2Vzc29yID0gbGZpcnN0KGxjKTsKKworCQlpZiAo SXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2UKKwkJeworCQkJ QXNzZXJ0KElzQShhY2Nlc3NvciwgQV9JbmRpY2VzKSk7CisKKwkJCWlmIChjYXN0Tm9kZShBX0lu ZGljZXMsIGFjY2Vzc29yKS0+aXNfc2xpY2UpCisJCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBjb25zdHJ1 Y3RpbmcgSnNvblBhdGggZXhwcmVzc2lvbnMuCisgKgorICogVGhlIG1ha2VfanNvbnBhdGhfaXRl bV8qIGZ1bmN0aW9ucyBjcmVhdGUgdmFyaW91cyB0eXBlcyBvZiBKc29uUGF0aFBhcnNlSXRlbQor ICogbm9kZXMsIHdoaWNoIGFyZSB1c2VkIHRvIGJ1aWxkIEpzb25QYXRoIGV4cHJlc3Npb25zIGZv ciBqc29uYiBzaW1wbGlmaWVkCisgKiBhY2Nlc3Nvci4KKyAqLworCitzdGF0aWMgSnNvblBhdGhQ YXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtKEpzb25QYXRoSXRlbVR5cGUgdHlwZSkKK3sK KwlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXplb2YoKnYpKTsKKworCXYtPnR5cGUg PSB0eXBlOworCXYtPm5leHQgPSBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKKy8qCisgKiBCdWls ZCBhIEpzb25QYXRoUGFyc2VJdGVtIGZvciBhIGNvbnN0YW50IGludGVnZXIgdmFsdWUuCisgKgor ICogVGhpcyBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEganBpTnVtZXJpYyBpdGVtIGZvciB1c2UgaW4g SnNvblBhdGgsCisgKiBhbmQgYXBwZW5kcyBhIG1hdGNoaW5nIENvbnN0KElOVDQpIG5vZGUgdG8g dGhlIGdpdmVuIGV4cHJlc3Npb24gbGlzdAorICogZm9yIHVzZSBpbiBFWFBMQUlOLCB2aWV3cywg ZXRjLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAtIHZhbDogaW50ZWdlciBjb25zdGFudCB2YWx1 ZQorICogLSBleHByczogbGlzdCBvZiBleHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNl KQorICovCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2lu dChpbnQzMiB2YWwsIExpc3QgKipleHBycykKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAqanBpID0g bWFrZV9qc29ucGF0aF9pdGVtKGpwaU51bWVyaWMpOworCisJanBpLT52YWx1ZS5udW1lcmljID0K KwkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NF9udW1lcmljLCBJbnQz MkdldERhdHVtKHZhbCkpKTsKKworCSpleHBycyA9IGxhcHBlbmQoKmV4cHJzLCBtYWtlQ29uc3Qo SU5UNE9JRCwgLTEsIEludmFsaWRPaWQsIDQsCisJCQkJCQkJCQkgICBJbnQzMkdldERhdHVtKHZh bCksIGZhbHNlLCB0cnVlKSk7CisKKwlyZXR1cm4ganBpOworfQorCisvKgorICogQ29udmVydCBh IGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lvbiBpbnRvIGEgSnNvblBhdGhQYXJzZUl0ZW0uCisg KgorICogVGhlIGlucHV0IGV4cHJlc3Npb24gbXVzdCBiZSBhIG5vbi1udWxsIGNvbnN0YW50IG9m IHR5cGUgSU5UNC4gUmV0dXJucyBOVUxMIG90aGVyd2lzZS4KKyAqIFRoZSBmdW5jdGlvbiBleHRy YWN0cyB0aGUgdmFsdWUgYW5kIGRlbGVnYXRlcyBpdCB0byBtYWtlX2pzb25wYXRoX2l0ZW1faW50 KCkuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBwYXJzZSBzdGF0ZSBjb250ZXh0 CisgKiAtIGV4cHI6IGlucHV0IGV4cHJlc3Npb24gbm9kZQorICogLSBleHByczogbGlzdCBvZiBl eHByZXNzaW9uIG5vZGVzICh1cGRhdGVkIGluIHBsYWNlKQorICovCitzdGF0aWMgSnNvblBhdGhQ YXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAgKmNuc3Q7CisKKwlleHByID0g dHJhbnNmb3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9leHByX2tpbmQpOworCisJaWYg KElzQShleHByLCBDb25zdCkpCisJeworCQljbnN0ID0gKENvbnN0ICopIGV4cHI7CisJCWlmIChj bnN0LT5jb25zdHR5cGUgPT0gSU5UNE9JRCAmJiAhKGNuc3QtPmNvbnN0aXNudWxsKSkKKwkJCXJl dHVybiBtYWtlX2pzb25wYXRoX2l0ZW1faW50KERhdHVtR2V0SW50MzIoY25zdC0+Y29uc3R2YWx1 ZSksIGV4cHJzKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIENvbnN0cnVjdHMg YSBKc29uUGF0aCBleHByZXNzaW9uIGZyb20gYSBsaXN0IG9mIGluZGlyZWN0aW9ucy4KKyAqIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB3aGVuIGpzb25iIHN1YnNjcmlwdGluZyBpbnZvbHZlcyBkb3Qg bm90YXRpb24sCisgKiByZXF1aXJpbmcgSnNvblBhdGgtYmFzZWQgZXZhbHVhdGlvbi4KKyAqCisg KiBUaGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIGluZGlyZWN0aW9uIGxpc3QgaW4gcGxhY2UsIHJl bW92aW5nIHByb2Nlc3NlZAorICogZWxlbWVudHMgYXMgaXQgY29udmVydHMgdGhlbSBpbnRvIEpz b25QYXRoIGNvbXBvbmVudHMsIGFzIGZvbGxvd3M6CisgKiAtIFN0cmluZyBrZXlzIChkb3Qgbm90 YXRpb24pIC0+IGpwaUtleSBpdGVtcy4KKyAqIC0gQXJyYXkgaW5kaWNlcyAtPiBqcGlJbmRleEFy cmF5IGl0ZW1zLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGJ1aWxkaW5nIHRoZSBKc29uUGF0aCBl eHByZXNzaW9uLCB0aGlzIGZ1bmN0aW9uIHBvcHVsYXRlcworICogdGhlIGZvbGxvd2luZyBmaWVs ZHMgb2YgdGhlIGdpdmVuIFN1YnNjcmlwdGluZ1JlZjoKKyAqIC0gcmVmanNvbmJwYXRoOiB0aGUg Z2VuZXJhdGVkIEpzb25QYXRoCisgKiAtIHJlZnVwcGVyaW5kZXhwcjogdXBwZXIgaW5kZXggZXhw cmVzc2lvbnMgKG9iamVjdCBrZXlzIG9yIGFycmF5IGluZGV4ZXMpCisgKiAtIHJlZmxvd2VyaW5k ZXhwcjogbG93ZXIgaW5kZXggZXhwcmVzc2lvbnMsIHJlbWFpbnMgTklMIGFzIHNsaWNlcyBhcmUg bm90IHlldCBzdXBwb3J0ZWQuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0YXRlOiBQYXJz ZSBzdGF0ZSBjb250ZXh0LgorICogLSBpbmRpcmVjdGlvbjogTGlzdCBvZiBzdWJzY3JpcHRpbmcg ZXhwcmVzc2lvbnMgKG1vZGlmaWVkIGluLXBsYWNlKS4KKyAqIC0gc2JzcmVmOiBTdWJzY3JpcHRp bmdSZWYgbm9kZSB0byB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK2pzb25iX3N1YnNjcmlwdF9t YWtlX2pzb25wYXRoKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqKmluZGlyZWN0aW9uLCBTdWJz Y3JpcHRpbmdSZWYgKnNic3JlZikKK3sKKwlKc29uUGF0aFBhcnNlUmVzdWx0IGpwcmVzOworCUpz b25QYXRoUGFyc2VJdGVtICpwYXRoID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaVJvb3QpOworCUxp c3RDZWxsICAgKmxjOworCURhdHVtCQlqc3A7CisJaW50CQkJcGF0aGxlbiA9IDA7CisKKwlzYnNy ZWYtPnJlZnVwcGVyaW5kZXhwciA9IE5JTDsKKwlzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciA9IE5J TDsKKwlzYnNyZWYtPnJlZmpzb25icGF0aCA9IE5VTEw7CisKKwlqcHJlcy5leHByID0gcGF0aDsK KwlqcHJlcy5sYXggPSB0cnVlOworCisJZm9yZWFjaChsYywgKmluZGlyZWN0aW9uKQorCXsKKwkJ Tm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMpOworCQlKc29uUGF0aFBhcnNlSXRlbSAqanBp OworCisJCWlmIChJc0EoYWNjZXNzb3IsIFN0cmluZykpCisJCXsKKwkJCWNoYXIJICAgKmZpZWxk ID0gc3RyVmFsKGFjY2Vzc29yKTsKKwkJCUZpZWxkQWNjZXNzb3JFeHByICphY2Nlc3Nvcl9leHBy OworCisJCQlqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpS2V5KTsKKwkJCWpwaS0+dmFsdWUu c3RyaW5nLnZhbCA9IGZpZWxkOworCQkJanBpLT52YWx1ZS5zdHJpbmcubGVuID0gc3RybGVuKGZp ZWxkKTsKKworCQkJYWNjZXNzb3JfZXhwciA9IG1ha2VOb2RlKEZpZWxkQWNjZXNzb3JFeHByKTsK KwkJCWFjY2Vzc29yX2V4cHItPnR5cGUgPSBUX0ZpZWxkQWNjZXNzb3JFeHByOworCQkJYWNjZXNz b3JfZXhwci0+ZmllbGRuYW1lID0gZmllbGQ7CisKKwkJCXNic3JlZi0+cmVmdXBwZXJpbmRleHBy ID0gbGFwcGVuZChzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciwgYWNjZXNzb3JfZXhwcik7CisJCX0K KwkJZWxzZSBpZiAoSXNBKGFjY2Vzc29yLCBBX0luZGljZXMpKQorCQl7CisJCQlBX0luZGljZXMg ICphaSA9IGNhc3ROb2RlKEFfSW5kaWNlcywgYWNjZXNzb3IpOworCisJCQlqcGkgPSBtYWtlX2pz b25wYXRoX2l0ZW0oanBpSW5kZXhBcnJheSk7CisJCQlqcGktPnZhbHVlLmFycmF5Lm5lbGVtcyA9 IDE7CisJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zID0gcGFsbG9jKHNpemVvZihqcGktPnZhbHVl LmFycmF5LmVsZW1zWzBdKSk7CisKKwkJCWlmIChhaS0+aXNfc2xpY2UpCisJCQl7CisJCQkJTm9k ZQkgICAqZXhwciA9IGFpLT51aWR4ID8gYWktPnVpZHggOiBhaS0+bGlkeDsKKworCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyIpLAor CQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihleHByKSkpKTsK KwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlKc29uUGF0aFBhcnNlSXRlbSAqanBpX2Zyb20gPSBO VUxMOworCisJCQkJQXNzZXJ0KGFpLT51aWR4ICYmICFhaS0+bGlkeCk7CisJCQkJanBpX2Zyb20g PSBtYWtlX2pzb25wYXRoX2l0ZW1fZXhwcihwc3RhdGUsIGFpLT51aWR4LCAmc2JzcmVmLT5yZWZ1 cHBlcmluZGV4cHIpOworCQkJCWlmIChqcGlfZnJvbSA9PSBOVUxMKQorCQkJCXsKKwkJCQkJLyoK KwkJCQkJICogQnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHRoZSBzdWJzY3JpcHQgaXMgbm90IGEK KwkJCQkJICogbm9uLW51bGwgaW50ZWdlciBjb25zdGFudCwgc28gdGhhdCB3ZSBjYW4gZmFsbCBi YWNrIHRvCisJCQkJCSAqIGpzb25iIHN1YnNjcmlwdGluZyBsb2dpYy4KKwkJCQkJICoKKwkJCQkJ ICogVGhpcyBpcyBuZWVkZWQgdG8gaGFuZGxlIGNhc2VzIHdpdGggbWl4ZWQgdXNhZ2Ugb2YgU1FM CisJCQkJCSAqIHN0YW5kYXJkIGpzb24gc2ltcGxpZmllZCBhY2Nlc3NvciBzeW50YXggYW5kIFBv c3RncmVTUUwKKwkJCQkJICoganNvbmIgc3Vic2NyaXB0aW5nIHN5bnRheCwgZS5nOgorCQkJCQkg KgorCQkJCQkgKiBzZWxlY3QgKGpiKS5hWydiJ10uYyBmcm9tIGpzb25iX3RhYmxlOworCQkJCQkg KgorCQkJCQkgKiB3aGVyZSBkb3Qtbm90YXRpb24gKC5hIGFuZCAuYykgaXMgdGhlIFNRTCBzdGFu ZGFyZCBqc29uCisJCQkJCSAqIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4LCBhbmQgdGhlIFsn YiddIHN1YnNjcmlwdCBpcworCQkJCQkgKiB0aGUgUG9zdGdyZVNRTCBqc29uYiBzdWJzY3JpcHRp bmcgc3ludGF4LCBiZWNhdXNlICdiJworCQkJCQkgKiBpcyBub3QgYSBub24tbnVsbCBjb25zdGFu dCBpbnRlZ2VyIGFuZCBjYW5ub3QgYmUgdXNlZAorCQkJCQkgKiBmb3IganNvbiBhcnJheSBhY2Nl c3MuCisJCQkJCSAqCisJCQkJCSAqIEluIHRoaXMgY2FzZSwgd2UgY2Fubm90IGNyZWF0ZSBhIEpz b25QYXRoIGl0ZW0sIHNvIHdlCisJCQkJCSAqIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBhbmQgbGV0 CisJCQkJCSAqIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oKSBoYW5kbGUgdGhpcyBpbmRpcmVj dGlvbiBhcworCQkJCQkgKiBhIFBvc3RncmVTUUwganNvbmIgc3Vic2NyaXB0LgorCQkJCQkgKi8K KwkJCQkJcGZyZWUoanBpLT52YWx1ZS5hcnJheS5lbGVtcyk7CisJCQkJCXBmcmVlKGpwaSk7CisJ CQkJCWJyZWFrOworCQkJCX0KKworCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0uZnJvbSA9 IGpwaV9mcm9tOworCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0udG8gPSBOVUxMOworCQkJ fQorCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFVuZXhwZWN0ZWQgbm9kZSB0eXBlIGlu IGluZGlyZWN0aW9uIGxpc3QuIFRoaXMgc2hvdWxkIG5vdAorCQkJICogaGFwcGVuIHdpdGggY3Vy cmVudCBncmFtbWFyLCBidXQgd2UgaGFuZGxlIGl0IGRlZmVuc2l2ZWx5IGJ5CisJCQkgKiBicmVh a2luZyBvdXQgb2YgdGhlIGxvb3AgcmF0aGVyIHRoYW4gY3Jhc2hpbmcuIEluIGNhc2Ugb2YKKwkJ CSAqIGZ1dHVyZSBncmFtbWFyIGNoYW5nZXMgdGhhdCBtaWdodCBpbnRyb2R1Y2UgbmV3IG5vZGUg dHlwZXMsCisJCQkgKiB0aGlzIGFsbG93cyB1cyB0byBjcmVhdGUgYSBqc29ucGF0aCBmcm9tIGFz IG1hbnkgaW5kaXJlY3Rpb24KKwkJCSAqIGVsZW1lbnRzIGFzIHdlIGNhbiBhbmQgbGV0IHRyYW5z Zm9ybUluZGlyZWN0aW9uKCkgZmFsbGJhY2sgdG8KKwkJCSAqIGFsdGVybmF0aXZlIGxvZ2ljIHRv IGhhbmRsZSB0aGUgcmVtYWluaW5nIGluZGlyZWN0aW9uIGVsZW1lbnRzLgorCQkJICovCisJCQlB c3NlcnQoZmFsc2UpOwkJLyogbm90IHJlYWNoYWJsZSAqLworCQkJYnJlYWs7CisJCX0KKworCQkv KiBhcHBlbmQgcGF0aCBpdGVtICovCisJCXBhdGgtPm5leHQgPSBqcGk7CisJCXBhdGggPSBqcGk7 CisJCXBhdGhsZW4rKzsKKwl9CisKKwlpZiAocGF0aGxlbiA9PSAwKQorCQlyZXR1cm47CisKKwkq aW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwgcGF0aGxlbik7 CisKKwlqc3AgPSBqc29uUGF0aEZyb21QYXJzZVJlc3VsdCgmanByZXMsIDAsIE5VTEwpOworCisJ c2JzcmVmLT5yZWZqc29uYnBhdGggPSAoTm9kZSAqKSBtYWtlQ29uc3QoSlNPTlBBVEhPSUQsIC0x LCBJbnZhbGlkT2lkLCAtMSwganNwLCBmYWxzZSwgZmFsc2UpOworfQorCiAvKgogICogRmluaXNo IHBhcnNlIGFuYWx5c2lzIG9mIGEgU3Vic2NyaXB0aW5nUmVmIGV4cHJlc3Npb24gZm9yIGEganNv bmIuCiAgKgpAQCAtMTEyLDQ3ICszNzAsNDMgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBOSUw7CiAJ TGlzdENlbGwgICAqaWR4OwogCisJLyogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUg c3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIGpzb25iICovCisJc2JzcmVmLT5yZWZyZXN0 eXBlID0gSlNPTkJPSUQ7CisJc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKKworCWlmIChpc1NsaWNl IHx8IGpzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZCgqaW5kaXJlY3Rpb24pKQorCXsKKwkJanNv bmJfc3Vic2NyaXB0X21ha2VfanNvbnBhdGgocHN0YXRlLCBpbmRpcmVjdGlvbiwgc2JzcmVmKTsK KwkJaWYgKHNic3JlZi0+cmVmanNvbmJwYXRoKQorCQkJcmV0dXJuOworCX0KKwogCS8qCi0JICog VHJhbnNmb3JtIGFuZCBjb252ZXJ0IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMuIEpzb25iIHN1 YnNjcmlwdGluZwotCSAqIGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzLCBsb29rIG9ubHkgYXQgdGhl IHVwcGVyIGluZGV4LgorCSAqIFdlIHdvdWxkIG9ubHkgcmVhY2ggaGVyZSBpZiBqc29uIHNpbXBs aWZpZWQgYWNjZXNzb3IgaXMgbm90IG5lZWRlZCwgb3IKKwkgKiBpZiBqc29uYl9zdWJzY3JpcHRf bWFrZV9qc29ucGF0aCgpIGRpZG4ndCBjb25zdW1lIGFueSBpbmRpcmVjdGlvbgorCSAqIGVsZW1l bnQg4oCUIGVpdGhlciB3YXksIHRoZSBmaXJzdCBpbmRpcmVjdGlvbiBlbGVtZW50IGNvdWxkIG5v dCBiZQorCSAqIGNvbnZlcnRlZCBpbnRvIGEgSnNvblBhdGggY29tcG9uZW50LiBUaGlzIGhhcHBl bnMgd2hlbiBpdCdzIGEgbm9uLXNsaWNlCisJICogQV9JbmRpY2VzIHdpdGggYSBub24taW50ZWdl ciB1cHBlciBpbmRleC4gVGhlIGNvZGUgYmVsb3cgZmFsbHMgYmFjayB0bworCSAqIHRyYWRpdGlv bmFsIGpzb25iIHN1YnNjcmlwdGluZyBmb3Igc3VjaCBjYXNlcy4KIAkgKi8KIAlmb3JlYWNoKGlk eCwgKmluZGlyZWN0aW9uKQogCXsKKwkJTm9kZQkgICAqaSA9IGxmaXJzdChpZHgpOwogCQlBX0lu ZGljZXMgICphaTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKIAogCQlpZiAoIUlzQShsZmlyc3QoaWR4 KSwgQV9JbmRpY2VzKSkKIAkJCWJyZWFrOwogCi0JCWFpID0gbGZpcnN0X25vZGUoQV9JbmRpY2Vz LCBpZHgpOworCQlhaSA9IGNhc3ROb2RlKEFfSW5kaWNlcywgaSk7CiAKLQkJaWYgKGlzU2xpY2Up Ci0JCXsKLQkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlkeCA/IGFpLT51aWR4IDogYWktPmxpZHg7 CisJCWlmIChhaS0+aXNfc2xpY2UpCisJCQlicmVhazsKIAotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImpz b25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcyIpLAotCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSkpOwotCQl9CisJCUFzc2VydCgh YWktPmxpZHggJiYgYWktPnVpZHgpOwogCi0JCWlmIChhaS0+dWlkeCkKLQkJewotCQkJc3ViRXhw ciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7 Ci0JCQlzdWJFeHByID0gY29lcmNlX2pzb25wYXRoX3N1YnNjcmlwdF90b19pbnQ0X29yX3RleHQo cHN0YXRlLCBzdWJFeHByKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBTbGljZSB3 aXRoIG9taXR0ZWQgdXBwZXIgYm91bmQuIFNob3VsZCBub3QgaGFwcGVuIGFzIHdlIGFscmVhZHkK LQkJCSAqIGVycm9yZWQgb3V0IG9uIHNsaWNlIGVhcmxpZXIsIGJ1dCBoYW5kbGUgdGhpcyBqdXN0 IGluIGNhc2UuCi0JCQkgKi8KLQkJCUFzc2VydChpc1NsaWNlICYmIGFpLT5pc19zbGljZSk7Ci0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKLQkJCQkJIGVycm1zZygianNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2Vz IiksCi0JCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oYWktPnVp ZHgpKSkpOwotCQl9CisJCXN1YkV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgYWktPnVpZHgs IHBzdGF0ZS0+cF9leHByX2tpbmQpOworCQlzdWJFeHByID0gY29lcmNlX2pzb25wYXRoX3N1YnNj cmlwdF90b19pbnQ0X29yX3RleHQocHN0YXRlLCBzdWJFeHByKTsKIAogCQl1cHBlckluZGV4cHIg PSBsYXBwZW5kKHVwcGVySW5kZXhwciwgc3ViRXhwcik7CiAJfQpAQCAtMTYxLDEwICs0MTUsNiBA QCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCXNi c3JlZi0+cmVmdXBwZXJpbmRleHByID0gdXBwZXJJbmRleHByOwogCXNic3JlZi0+cmVmbG93ZXJp bmRleHByID0gTklMOwogCi0JLyogRGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vi c2NyaXB0aW5nIG9wZXJhdGlvbjsgYWx3YXlzIGpzb25iICovCi0Jc2JzcmVmLT5yZWZyZXN0eXBl ID0gSlNPTkJPSUQ7Ci0Jc2JzcmVmLT5yZWZ0eXBtb2QgPSAtMTsKLQogCS8qIFJlbW92ZSBwcm9j ZXNzZWQgZWxlbWVudHMgKi8KIAlpZiAodXBwZXJJbmRleHByKQogCQkqaW5kaXJlY3Rpb24gPSBs aXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwgbGlzdF9sZW5ndGgodXBwZXJJbmRleHBy KSk7CkBAIC0yMTksNyArNDY5LDcgQEAganNvbmJfc3Vic2NyaXB0X2NoZWNrX3N1YnNjcmlwdHMo RXhwclN0YXRlICpzdGF0ZSwKIAkJCSAqIEZvciBqc29uYiBmZXRjaCBhbmQgYXNzaWduIGZ1bmN0 aW9ucyB3ZSBuZWVkIHRvIHByb3ZpZGUgcGF0aCBpbgogCQkJICogdGV4dCBmb3JtYXQuIENvbnZl cnQgaWYgaXQncyBub3QgYWxyZWFkeSB0ZXh0LgogCQkJICovCi0JCQlpZiAod29ya3NwYWNlLT5p bmRleE9pZFtpXSA9PSBJTlQ0T0lEKQorCQkJaWYgKCF3b3Jrc3BhY2UtPmpzb25wYXRoICYmIHdv cmtzcGFjZS0+aW5kZXhPaWRbaV0gPT0gSU5UNE9JRCkKIAkJCXsKIAkJCQlEYXR1bQkJZGF0dW0g PSBzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleFtpXTsKIAkJCQljaGFyCSAgICpjcyA9IERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKGludDRvdXQsIGRhdHVtKSk7CkBAIC0yNDcsMTcg KzQ5NywzMiBAQCBqc29uYl9zdWJzY3JpcHRfZmV0Y2goRXhwclN0YXRlICpzdGF0ZSwKIHsKIAlT dWJzY3JpcHRpbmdSZWZTdGF0ZSAqc2JzcmVmc3RhdGUgPSBvcC0+ZC5zYnNyZWYuc3RhdGU7CiAJ SnNvbmJTdWJXb3Jrc3BhY2UgKndvcmtzcGFjZSA9IChKc29uYlN1YldvcmtzcGFjZSAqKSBzYnNy ZWZzdGF0ZS0+d29ya3NwYWNlOwotCUpzb25iCSAgICpqc29uYlNvdXJjZTsKIAogCS8qIFNob3Vs ZCBub3QgZ2V0IGhlcmUgaWYgc291cmNlIGpzb25iIChvciBhbnkgc3Vic2NyaXB0KSBpcyBudWxs ICovCiAJQXNzZXJ0KCEoKm9wLT5yZXNudWxsKSk7CiAKLQlqc29uYlNvdXJjZSA9IERhdHVtR2V0 SnNvbmJQKCpvcC0+cmVzdmFsdWUpOwotCSpvcC0+cmVzdmFsdWUgPSBqc29uYl9nZXRfZWxlbWVu dChqc29uYlNvdXJjZSwKLQkJCQkJCQkJCSAgd29ya3NwYWNlLT5pbmRleCwKLQkJCQkJCQkJCSAg c2JzcmVmc3RhdGUtPm51bXVwcGVyLAotCQkJCQkJCQkJICBvcC0+cmVzbnVsbCwKLQkJCQkJCQkJ CSAgZmFsc2UpOworCWlmICh3b3Jrc3BhY2UtPmpzb25wYXRoKQorCXsKKwkJYm9vbAkJZW1wdHkg PSBmYWxzZTsKKwkJYm9vbAkJZXJyb3IgPSBmYWxzZTsKKworCQkqb3AtPnJlc3ZhbHVlID0gSnNv blBhdGhRdWVyeSgqb3AtPnJlc3ZhbHVlLCB3b3Jrc3BhY2UtPmpzb25wYXRoLAorCQkJCQkJCQkJ ICBKU1dfQ09ORElUSU9OQUwsCisJCQkJCQkJCQkgICZlbXB0eSwgJmVycm9yLCBOVUxMLAorCQkJ CQkJCQkJICBOVUxMKTsKKworCQkqb3AtPnJlc251bGwgPSBlbXB0eSB8fCBlcnJvcjsKKwl9CisJ ZWxzZQorCXsKKwkJSnNvbmIJICAgKmpzb25iU291cmNlID0gRGF0dW1HZXRKc29uYlAoKm9wLT5y ZXN2YWx1ZSk7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IGpzb25iX2dldF9lbGVtZW50KGpzb25iU291 cmNlLAorCQkJCQkJCQkJCSAgd29ya3NwYWNlLT5pbmRleCwKKwkJCQkJCQkJCQkgIHNic3JlZnN0 YXRlLT5udW11cHBlciwKKwkJCQkJCQkJCQkgIG9wLT5yZXNudWxsLAorCQkJCQkJCQkJCSAgZmFs c2UpOworCX0KIH0KIAogLyoKQEAgLTM2NSw3ICs2MzAsNyBAQCBqc29uYl9leGVjX3NldHVwKGNv bnN0IFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogewogCUpzb25iU3ViV29ya3NwYWNlICp3b3Jr c3BhY2U7CiAJTGlzdENlbGwgICAqbGM7Ci0JaW50CQkJbnVwcGVyID0gc2JzcmVmLT5yZWZ1cHBl cmluZGV4cHItPmxlbmd0aDsKKwlpbnQJCQludXBwZXIgPSBsaXN0X2xlbmd0aChzYnNyZWYtPnJl ZnVwcGVyaW5kZXhwcik7CiAJY2hhcgkgICAqcHRyOwogCiAJLyogQWxsb2NhdGUgdHlwZS1zcGVj aWZpYyB3b3Jrc3BhY2Ugd2l0aCBzcGFjZSBmb3IgcGVyLXN1YnNjcmlwdCBkYXRhICovCkBAIC0z NzQsNiArNjM5LDkgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNi c3JlZiwKIAl3b3Jrc3BhY2UtPmV4cGVjdEFycmF5ID0gZmFsc2U7CiAJcHRyID0gKChjaGFyICop IHdvcmtzcGFjZSkgKyBNQVhBTElHTihzaXplb2YoSnNvbmJTdWJXb3Jrc3BhY2UpKTsKIAorCWlm IChzYnNyZWYtPnJlZmpzb25icGF0aCkKKwkJd29ya3NwYWNlLT5qc29ucGF0aCA9IERhdHVtR2V0 SnNvblBhdGhQKGNhc3ROb2RlKENvbnN0LCBzYnNyZWYtPnJlZmpzb25icGF0aCktPmNvbnN0dmFs dWUpOworCiAJLyoKIAkgKiBUaGlzIGNvZGluZyBhc3N1bWVzIHNpemVvZihEYXR1bSkgPj0gc2l6 ZW9mKE9pZCksIGVsc2Ugd2UgbWlnaHQKIAkgKiBtaXNhbGlnbiB0aGUgaW5kZXhPaWQgcG9pbnRl cgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDNkNmU2YmRiZmQyLi5iYWEzYWU5N2Q1 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtOTMyOSwxMCArOTMyOSwxMyBAQCBn ZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkg KiBQYXJlbnRoZXNpemUgdGhlIGFyZ3VtZW50IHVubGVzcyBpdCdzIGEgc2ltcGxlIFZhciBvciBh CiAJCQkJICogRmllbGRTZWxlY3QuICAoSW4gcGFydGljdWxhciwgaWYgaXQncyBhbm90aGVyCiAJ CQkJICogU3Vic2NyaXB0aW5nUmVmLCB3ZSAqbXVzdCogcGFyZW50aGVzaXplIHRvIGF2b2lkCi0J CQkJICogY29uZnVzaW9uLikKKwkJCQkgKiBjb25mdXNpb24uKSBBbHdheXMgYWRkIHBhcmVudGhl c2lzIGlmIEpTT04gc2ltcGxpZmllZAorCQkJCSAqIGFjY2Vzc29yIGlzIHVzZWQsIGZvciBub3cu CiAJCQkJICovCi0JCQkJbmVlZF9wYXJlbnMgPSAhSXNBKHNic3JlZi0+cmVmZXhwciwgVmFyKSAm JgotCQkJCQkhSXNBKHNic3JlZi0+cmVmZXhwciwgRmllbGRTZWxlY3QpOworCQkJCW5lZWRfcGFy ZW5zID0gKCFJc0Eoc2JzcmVmLT5yZWZleHByLCBWYXIpICYmCisJCQkJCSFJc0Eoc2JzcmVmLT5y ZWZleHByLCBGaWVsZFNlbGVjdCkpIHx8CisJCQkJCQlzYnNyZWYtPnJlZmpzb25icGF0aDsKKwog CQkJCWlmIChuZWVkX3BhcmVucykKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcp OwogCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgc2JzcmVmLT5yZWZleHByLCBjb250ZXh0LCBz aG93aW1wbGljaXQpOwpAQCAtMTMwMDUsMTcgKzEzMDA4LDM1IEBAIHByaW50U3Vic2NyaXB0cyhT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCWxvd2xp c3RfaXRlbSA9IGxpc3RfaGVhZChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwcik7CS8qIGNvdWxkIGJl IE5VTEwgKi8KIAlmb3JlYWNoKHVwbGlzdF9pdGVtLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikK IAl7Ci0JCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1snKTsKLQkJaWYgKGxvd2xpc3RfaXRl bSkKKwkJTm9kZSAqdXBwZXIgPSAoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOworCisJCWlm ICh1cHBlciAmJiBJc0EodXBwZXIsIEZpZWxkQWNjZXNzb3JFeHByKSkKIAkJeworCQkJRmllbGRB Y2Nlc3NvckV4cHIgKmZhZSA9IChGaWVsZEFjY2Vzc29yRXhwciAqKSB1cHBlcjsKKworCQkJLyog VXNlIGRvdC1ub3RhdGlvbiBmb3IgZmllbGQgYWNjZXNzICovCisJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihidWYsICcuJyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRl bnRpZmllcihmYWUtPmZpZWxkbmFtZSkpOworCisJCQkvKiBTa2lwIG1hdGNoaW5nIGxvdyBpbmRl eCDigJQgZmllbGQgYWNjZXNzIGRvZXNuJ3QgdXNlIHNsaWNlcyAqLworCQkJaWYgKGxvd2xpc3Rf aXRlbSkKKwkJCQlsb3dsaXN0X2l0ZW0gPSBsbmV4dChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciwg bG93bGlzdF9pdGVtKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIFVzZSBKU09OQiBhcnJheSBz dWJzY3JpcHRpbmcgKi8KKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1snKTsKKwkJCWlm IChsb3dsaXN0X2l0ZW0pCisJCQl7CisJCQkJLyogSWYgc3ViZXhwcmVzc2lvbiBpcyBOVUxMLCBn ZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAq KSBsZmlyc3QobG93bGlzdF9pdGVtKSwgY29udGV4dCwgZmFsc2UpOworCQkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGJ1ZiwgJzonKTsKKwkJCQlsb3dsaXN0X2l0ZW0gPSBsbmV4dChzYnNyZWYtPnJl Zmxvd2VyaW5kZXhwciwgbG93bGlzdF9pdGVtKTsKKwkJCX0KIAkJCS8qIElmIHN1YmV4cHJlc3Np b24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhwciBwcmludHMgbm90aGluZyAqLwotCQkJZ2V0X3J1bGVf ZXhwcigoTm9kZSAqKSBsZmlyc3QobG93bGlzdF9pdGVtKSwgY29udGV4dCwgZmFsc2UpOwotCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnOicpOwotCQkJbG93bGlzdF9pdGVtID0gbG5leHQo c2JzcmVmLT5yZWZsb3dlcmluZGV4cHIsIGxvd2xpc3RfaXRlbSk7CisJCQlnZXRfcnVsZV9leHBy KHVwcGVyLCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdd Jyk7CiAJCX0KLQkJLyogSWYgc3ViZXhwcmVzc2lvbiBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHBy aW50cyBub3RoaW5nICovCi0JCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KHVwbGlzdF9p dGVtKSwgY29udGV4dCwgZmFsc2UpOwotCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICddJyk7 CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDZkZmNhM2NiMzViLi43ZTg5NjIxYmQ2 NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTcwOCwxOCArNzA4LDMwIEBAIHR5cGVkZWYgc3Ry dWN0IFN1YnNjcmlwdGluZ1JlZgogCWludDMyCQlyZWZ0eXBtb2QgcGdfbm9kZV9hdHRyKHF1ZXJ5 X2p1bWJsZV9pZ25vcmUpOwogCS8qIGNvbGxhdGlvbiBvZiByZXN1bHQsIG9yIEludmFsaWRPaWQg aWYgbm9uZSAqLwogCU9pZAkJCXJlZmNvbGxpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7Ci0JLyogZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0byB1cHBlciBjb250YWluZXIg aW5kZXhlcyAqLworCisJLyoKKwkgKiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIHVwcGVy IGNvbnRhaW5lciBpbmRleGVzIG9yIGV4cHJlc3Npb25zCisJICogdGhhdCBhcmUgY29sbGVjdGVk IGJ1dCBub3QgZXZhbHVhdGVkIHdoZW4gcmVmanNvbmJwYXRoIGlzIHNldC4KKwkgKi8KIAlMaXN0 CSAgICpyZWZ1cHBlcmluZGV4cHI7CiAKIAkvKgotCSAqIGV4cHJlc3Npb25zIHRoYXQgZXZhbHVh dGUgdG8gbG93ZXIgY29udGFpbmVyIGluZGV4ZXMsIG9yIE5JTCBmb3Igc2luZ2xlCi0JICogY29u dGFpbmVyIGVsZW1lbnQuCisJICogZXhwcmVzc2lvbnMgdGhhdCBldmFsdWF0ZSB0byBsb3dlciBj b250YWluZXIgaW5kZXhlcywgb3IgTklMIGZvciBhCisJICogc2luZ2xlIGNvbnRhaW5lciBlbGVt ZW50LCBvciBleHByZXNzaW9ucyB0aGF0IGFyZSBjb2xsZWN0ZWQgYnV0IG5vdAorCSAqIGV2YWx1 YXRlZCB3aGVuIHJlZmpzb25icGF0aCBpcyBzZXQuCiAJICovCiAJTGlzdAkgICAqcmVmbG93ZXJp bmRleHByOwogCS8qIHRoZSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgY29udGFpbmVy IHZhbHVlICovCiAJRXhwcgkgICAqcmVmZXhwcjsKIAkvKiBleHByZXNzaW9uIGZvciB0aGUgc291 cmNlIHZhbHVlLCBvciBOVUxMIGlmIGZldGNoICovCiAJRXhwcgkgICAqcmVmYXNzZ25leHByOwor CisJLyoKKwkgKiBjb250YWluZXItc3BlY2lmaWMgZXh0cmEgaW5mb3JtYXRpb24sIGN1cnJlbnRs eSB1c2VkIG9ubHkgYnkganNvbmIuCisJICogc3RvcmVzIGEgSnNvblBhdGggZXhwcmVzc2lvbiB3 aGVuIGpzb25iIGRvdCBub3RhdGlvbiBpcyB1c2VkLiBOVUxMIGZvcgorCSAqIHNpbXBsZSBzdWJz Y3JpcHRpbmcuCisJICovCisJTm9kZQkgICAqcmVmanNvbmJwYXRoOwogfSBTdWJzY3JpcHRpbmdS ZWY7CiAKIC8qCkBAIC0yMzcxLDQgKzIzODMsNDAgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGlj dEV4cHIKIAlMaXN0CSAgICpleGNsUmVsVGxpc3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENMVURFRCBw c2V1ZG8gcmVsYXRpb24gKi8KIH0gT25Db25mbGljdEV4cHI7CiAKKy8qCisgKiBGaWVsZEFjY2Vz c29yRXhwciAtIHJlcHJlc2VudHMgYSBzaW5nbGUgb2JqZWN0IG1lbWJlciBhY2Nlc3MgdXNpbmcg ZG90LW5vdGF0aW9uCisgKgkJaW4gSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIHN5bnRheCAoZS5n LiwganNvbmJfY29sLmEpLgorICoKKyAqIFRoZXNlIG5vZGVzIGFwcGVhciBhcyBsaXN0IGVsZW1l bnRzIGluIFN1YnNjcmlwdGluZ1JlZi5yZWZ1cHBlcmluZGV4cHIgdG8KKyAqIGluZGljYXRlIEpT T04gb2JqZWN0IGtleSBhY2Nlc3MuIFRoZXkgYXJlIG5vdCBldmFsdWFibGUgZXhwcmVzc2lvbnMg YnkKKyAqIHRoZW1zZWx2ZXMgYnV0IHNlcnZlIGFzIHBsYWNlaG9sZGVycyB0byBwcmVzZXJ2ZSBz b3VyY2UtbGV2ZWwgc3ludGF4IGZvcgorICogcnVsZSByZXdyaXRpbmcgYW5kIGRlcGFyc2luZyAo ZS5nLiwgaW4gRVhQTEFJTiBhbmQgdmlldyBkZWZpbml0aW9ucykuCisgKiBFeGVjdXRpb24gaXMg aGFuZGxlZCBieSB0aGUgZW5jbG9zaW5nIFN1YnNjcmlwdGluZ1JlZi4KKyAqCisgKiBJZiBkb3Qt bm90YXRpb24gaXMgdXNlZCBpbiBhIFN1YnNjcmlwdGluZ1JlZiwgdGhlIEpTT04gcGF0aCBpcyBy ZXByZXNlbnRlZAorICogYXMgYSBmbGF0IGxpc3Qgb2YgRmllbGRBY2Nlc3NvckV4cHIgbm9kZXMg KGZvciBvYmplY3QgZmllbGQgYWNjZXNzKSwgQ29uc3QKKyAqIG5vZGVzIChmb3IgYXJyYXkgaW5k ZXhlcyksIGFuZCBOVUxMcyAoZm9yIG9taXR0ZWQgc2xpY2UgYm91bmRzKSwgcmF0aGVyIHRoYW4K KyAqIHRocm91Z2ggbmVzdGVkIGV4cHJlc3Npb24gdHJlZXMuCisgKgorICogTm90ZTogVGhlIGZs YXQgcmVwcmVzZW50YXRpb24gYXZvaWRzIG5lc3RlZCBGaWVsZEFjY2Vzc29yRXhwciBjaGFpbnMs CisgKiBzaW1wbGlmeWluZyBldmFsdWF0aW9uIGFuZCBlbmFibGluZyBzdGFuZGFyZC1jb21wbGlh bnQgYmVoYXZpb3Igc3VjaCBhcworICogY29uZGl0aW9uYWwgYXJyYXkgd3JhcHBpbmcuIFRoaXMg YXZvaWRzIHRoZSBuZWVkIGZvciBwb3NpdGlvbi1hd2FyZQorICogd3JhcHBpbmcvdW53cmFwcGlu ZyBsb2dpYyBkdXJpbmcgZXhlY3V0aW9uLgorICoKKyAqIEZvciBleGFtcGxlLCBpbiB0aGUgZXhw cmVzc2lvbjoKKyAqCQkoJ3siYSI6IFt7ImIiOiAxfV19Jzo6anNvbmIpLmFbMF0uYgorICogdGhl IFN1YnNjcmlwdGluZ1JlZiB3aWxsIGNvbnRhaW46CisgKgkJLSByZWZleHByOiB0aGUgYmFzZSBl eHByZXNzaW9uICh0aGUganNvbmIgdmFsdWUpCisgKgkJLSByZWZ1cHBlcmluZGV4cHI6IFtGaWVs ZEFjY2Vzc29yRXhwcigiYSIpLCBDb25zdCgwKSwKKyAqCQkJRmllbGRBY2Nlc3NvckV4cHIoImIi KV0KKyAqCQktIHJlZmxvd2VyaW5kZXhwcjogW05VTEwsIE5VTEwsIE5VTExdIChzbGljZSBsb3dl ciBib3VuZHMgbm90IHVzZWQgaGVyZSkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgRmllbGRBY2Nlc3Nv ckV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJICAgKmZpZWxkbmFtZTsJCS8qIG5hbWUg b2YgdGhlIEpTT05CIG9iamVjdCBmaWVsZCBhY2Nlc3NlZCB2aWEKKwkJCQkJCQkJICogZG90IG5v dGF0aW9uICovCisJT2lkCQkJZmFlY29sbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKK30JCQlGaWVsZEFjY2Vzc29yRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RF U19IICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3Fs LXNxbGpzb24uYyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNv bi5jCmluZGV4IDM5MjIxZjllYTVkLi5lNmE3ZWNlNmRhYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLmMKQEAgLTQxNywxMiArNDE3LDEyMiBA QCBpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQogCSAgZm9yIChpbnQgaSA9IDA7 IGkgPCBzaXplb2YoaXNfanNvbik7IGkrKykKIAkJICBwcmludGYoIkZvdW5kIGlzX2pzb25bJWRd OiAlc1xuIiwgaSwgaXNfanNvbltpXSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCi0gIHsgRUNQR2Rp c2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7CisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEs IE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwi OiAxLCBcImNcIjogMn19JyA6OiBqc29uYiApIC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVD UEd0X2NoYXIsKGpzb24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAK KwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKICNs aW5lIDExOCAic3FsanNvbi5wZ2MiCiAKIGlmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQo KTt9CiAjbGluZSAxMTggInNxbGpzb24ucGdjIgogCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4i LCBqc29uKTsKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9y bWFsLCAic2VsZWN0IGpzb24gKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpz b25iIC4gXCJhXCIgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24pLChsb25nKTEw MjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJQ0FUT1IsIE5V TEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyMSAic3FsanNvbi5wZ2MiCisK K2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjEgInNxbGpzb24u cGdjIgorCisJLy8gZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBF Q1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6 IDJ9fScgOjoganNvbmIgKSAuIGEgKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpzb24p LChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19JTkRJ Q0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDEyNCAic3FsanNv bi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMjQg InNxbGpzb24ucGdjIgorCisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCXsg RUNQR2RvKF9fTElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpz b24gKCAoICd7XCJhXCI6IHtcImJcIjogMSwgXCJjXCI6IDJ9fScgOjoganNvbmIgKSAuIGEgLiBi ICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEs KDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBM LCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMjcgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Eu c3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTI3ICJzcWxqc29uLnBnYyIKKworCXBy aW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwg MSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggY29hbGVzY2UgKCBqc29u ICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfX0nIDo6IGpzb25iICkgLiBjICkgLCAn bnVsbCcgKSApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNvbiksKGxvbmcpMTAyNCwo bG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lORElDQVRPUiwgTlVMTCAs IDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTMwICJzcWxqc29uLnBnYyIKKworaWYg KHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzMCAic3FsanNvbi5wZ2Mi CisKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJeyBFQ1BHZG8oX19MSU5F X18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFc Ijoge1wiYlwiOiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIs IHtcInlcIjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAKKwlF Q1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwg CisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7Cisj bGluZSAxMzMgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQorI2xpbmUgMTMzICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0lc1xu IiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25v cm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJi XCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIgKSAu IGIgLiB4ICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChs b25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwg MEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGluZSAxMzYgInNxbGpzb24ucGdjIgorCitpZiAo c3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMTM2ICJzcWxqc29uLnBnYyIK KworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVf XywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwi OiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwgXCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwg e1wieVwiOjF9XX1dfScgOjoganNvbmIgKSBbICdiJyBdIFsgMCBdICkiLCBFQ1BHdF9FT0lULCAK KwlFQ1BHdF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFy KSwgCisJRUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7 CisjbGluZSAxMzkgInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHBy aW50KCk7fQorI2xpbmUgMTM5ICJzcWxqc29uLnBnYyIKKworCXByaW50ZigiRm91bmQganNvbj0l c1xuIiwganNvbik7CisKKwl7IEVDUEdkbyhfX0xJTkVfXywgMCwgMSwgTlVMTCwgMCwgRUNQR3N0 X25vcm1hbCwgInNlbGVjdCBqc29uICggKCAne1wiYVwiOiB7XCJiXCI6IDEsIFwiY1wiOiAyfSwg XCJiXCI6IFt7XCJ4XCI6IDF9LCB7XCJ4XCI6IFsxMiwge1wieVwiOjF9XX1dfScgOjoganNvbmIg KSAuIGIgWyAxIF0gLiB4IFsgMCA6IF0gKSIsIEVDUEd0X0VPSVQsIAorCUVDUEd0X2NoYXIsKGpz b24pLChsb25nKTEwMjQsKGxvbmcpMSwoMTAyNCkqc2l6ZW9mKGNoYXIpLCAKKwlFQ1BHdF9OT19J TkRJQ0FUT1IsIE5VTEwgLCAwTCwgMEwsIDBMLCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDE0MiAic3Fs anNvbi5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAx NDIgInNxbGpzb24ucGdjIgorCisJLy8gZXJyb3IKKworCXsgRUNQR2RvKF9fTElORV9fLCAwLCAx LCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0IGpzb24gKCAoICd7XCJhXCI6IHtcImJc IjogMSwgXCJjXCI6IDJ9LCBcImJcIjogW3tcInhcIjogMX0sIHtcInhcIjogWzEyLCB7XCJ5XCI6 MX1dfV19JyA6OiBqc29uYiApIC4gKiApIiwgRUNQR3RfRU9JVCwgCisJRUNQR3RfY2hhciwoanNv biksKGxvbmcpMTAyNCwobG9uZykxLCgxMDI0KSpzaXplb2YoY2hhciksIAorCUVDUEd0X05PX0lO RElDQVRPUiwgTlVMTCAsIDBMLCAwTCwgMEwsIEVDUEd0X0VPUlQpOworI2xpbmUgMTQ1ICJzcWxq c29uLnBnYyIKKworaWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDE0 NSAic3FsanNvbi5wZ2MiCisKKwkvLyBlcnJvcgorCisJeyBFQ1BHZG8oX19MSU5FX18sIDAsIDEs IE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3QganNvbiAoICggJ3tcImFcIjoge1wiYlwi OiAxLCBcImNcIjogMn0sIFwiYlwiOiBbe1wieFwiOiAxfSwge1wieFwiOiBbMTIsIHtcInlcIjox fV19XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICkiLCBFQ1BHdF9FT0lULCAKKwlFQ1BH dF9jaGFyLChqc29uKSwobG9uZykxMDI0LChsb25nKTEsKDEwMjQpKnNpemVvZihjaGFyKSwgCisJ RUNQR3RfTk9fSU5ESUNBVE9SLCBOVUxMICwgMEwsIDBMLCAwTCwgRUNQR3RfRU9SVCk7CisjbGlu ZSAxNDggInNxbGpzb24ucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50KCk7 fQorI2xpbmUgMTQ4ICJzcWxqc29uLnBnYyIKKworCS8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29u bmVjdChfX0xJTkVfXywgIkNVUlJFTlQiKTsKKyNsaW5lIDE1MSAic3FsanNvbi5wZ2MiCisKK2lm IChzcWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxNTEgInNxbGpzb24ucGdj IgorCiAKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24uc3RkZXJyIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZGVycgppbmRleCBlNTVhOTVkZDcxMS4uMTlmOGM1OGFm MDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3Fs anNvbi5zdGRlcnIKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1z cWxqc29uLnN0ZGVycgpAQCAtMjY4LDUgKzI2OCwxMDUgQEAgU1FMIGVycm9yOiBjYW5ub3QgdXNl IHR5cGUganNvbmIgaW4gUkVUVVJOSU5HIGNsYXVzZSBvZiBKU09OX1NFUklBTElaRSgpIG9uIGxp bmUKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCiBbTk9fUElEXTogZWNw Z19nZXRfZGF0YSBvbiBsaW5lIDEwMjogUkVTVUxUOiBmIG9mZnNldDogLTE7IGFycmF5OiBubwog W05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4 ZWN1dGUgb24gbGluZSAxMTg6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEs ICJjIjogMn19JyA6OiBqc29uYiApIC4gImEiICk7IHdpdGggMCBwYXJhbWV0ZXIocykgb24gY29u bmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRl OiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDExODogdXNpbmcgUFFleGVj CitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdf cHJvY2Vzc19vdXRwdXQgb24gbGluZSAxMTg6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMgd2l0aCAx IGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTE4OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjogMn0gb2Zm c2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAw MAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyMTogcXVlcnk6IHNlbGVjdCBqc29u ICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApOyB3aXRoIDAgcGFy YW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAx MjE6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTIxOiBiYWQgcmVzcG9uc2Ug LSBFUlJPUjogIHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IHNlbGVjdCBq c29uICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn19JyA6OiBqc29uYiAuICJhIiApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElEXTog c3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3RhdGUg M0YwMDAgKHNxbGNvZGUgLTQwMCk6IHNjaGVtYSAianNvbmIiIGRvZXMgbm90IGV4aXN0IG9uIGxp bmUgMTIxCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiAzRjAwMAorU1FMIGVy cm9yOiBzY2hlbWEgImpzb25iIiBkb2VzIG5vdCBleGlzdCBvbiBsaW5lIDEyMQorW05PX1BJRF06 IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJhIjog eyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhICk7IHdpdGggMCBwYXJhbWV0ZXIocykg b24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAs IHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNDogdXNpbmcg UFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfcHJvY2Vzc19vdXRwdXQgb24gbGluZSAxMjQ6IGNvcnJlY3RseSBnb3QgMSB0dXBsZXMg d2l0aCAxIGZpZWxkcworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tO T19QSURdOiBlY3BnX2dldF9kYXRhIG9uIGxpbmUgMTI0OiBSRVNVTFQ6IHsiYiI6IDEsICJjIjog Mn0gb2Zmc2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRl OiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEyNzogcXVlcnk6IHNlbGVj dCBqc29uICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfX0nIDo6IGpzb25iICkgLiBhIC4gYiAp OyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1 dGUgb24gbGluZSAxMjc6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBz dGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nlc3Nfb3V0cHV0IG9uIGxpbmUgMTI3OiBj b3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVsZHMKK1tOT19QSURdOiBzcWxjYTogY29k ZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19nZXRfZGF0YSBvbiBsaW5lIDEyNzog UkVTVUxUOiAxIG9mZnNldDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAw LCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzA6IHF1ZXJ5 OiBzZWxlY3QganNvbiAoIGNvYWxlc2NlICgganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJjIjog Mn19JyA6OiBqc29uYiApIC4gYyApICwgJ251bGwnICkgKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBv biBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwg c3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMwOiB1c2luZyBQ UWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTog ZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEzMDogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3 aXRoIDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05P X1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMzA6IFJFU1VMVDogbnVsbCBvZmZzZXQ6IC0x OyBhcnJheTogbm8KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9f UElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMzOiBxdWVyeTogc2VsZWN0IGpzb24gKCAoICd7 ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9 XX1dfScgOjoganNvbmIgKSAuIGIgWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBjb25u ZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6 IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTMzOiB1c2luZyBQUWV4ZWMK K1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19w cm9jZXNzX291dHB1dCBvbiBsaW5lIDEzMzogY29ycmVjdGx5IGdvdCAxIHR1cGxlcyB3aXRoIDEg ZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMzM6IFJFU1VMVDogeyJ4IjogMX0gb2Zmc2V0OiAtMTsg YXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJ RF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDEzNjogcXVlcnk6IHNlbGVjdCBqc29uICggKCAneyJh IjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19 XX0nIDo6IGpzb25iICkgLiBiIC4geCApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rp b24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAw MDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzY6IHVzaW5nIFBRZXhlYworW05P X1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX3Byb2Nl c3Nfb3V0cHV0IG9uIGxpbmUgMTM2OiBjb3JyZWN0bHkgZ290IDEgdHVwbGVzIHdpdGggMSBmaWVs ZHMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNw Z19nZXRfZGF0YSBvbiBsaW5lIDEzNjogUkVTVUxUOiBbMSwgWzEyLCB7InkiOiAxfV1dIG9mZnNl dDogLTE7IGFycmF5OiBubworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAK K1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxMzk6IHF1ZXJ5OiBzZWxlY3QganNvbiAo ICggJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsi eSI6MX1dfV19JyA6OiBqc29uYiApIFsgJ2InIF0gWyAwIF0gKTsgd2l0aCAwIHBhcmFtZXRlcihz KSBvbiBjb25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTM5OiB1c2lu ZyBQUWV4ZWMKK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElE XTogZWNwZ19wcm9jZXNzX291dHB1dCBvbiBsaW5lIDEzOTogY29ycmVjdGx5IGdvdCAxIHR1cGxl cyB3aXRoIDEgZmllbGRzCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IGVjcGdfZ2V0X2RhdGEgb24gbGluZSAxMzk6IFJFU1VMVDogeyJ4IjogMX0gb2Zm c2V0OiAtMTsgYXJyYXk6IG5vCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAw MAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE0MjogcXVlcnk6IHNlbGVjdCBqc29u ICggKCAneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwg eyJ5IjoxfV19XX0nIDo6IGpzb25iICkgLiBiIFsgMSBdIC4geCBbIDAgOiBdICk7IHdpdGggMCBw YXJhbWV0ZXIocykgb24gY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uCitbTk9fUElEXTogc3Fs Y2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5l IDE0MjogdXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAw MAorW05PX1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxNDI6IGJhZCByZXNwb25z ZSAtIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5F IDE6IC4uLiwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfScgOjoganNvbmIgKSAuIGIgWyAxIF0gLiB4 IFsgMCA6IF0gKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAw MDAwCitbTk9fUElEXTogcmFpc2luZyBzcWxzdGF0ZSA0MjgwNCAoc3FsY29kZSAtNDAwKToganNv bmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIG9uIGxpbmUgMTQyCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjgwNAorU1FMIGVycm9yOiBqc29uYiBzdWJz Y3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMgb24gbGluZSAxNDIKK1tOT19QSURdOiBlY3Bn X2V4ZWN1dGUgb24gbGluZSAxNDU6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6 IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBq c29uYiApIC4gKiApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVn cmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURd OiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDU6IHVzaW5nIFBRZXhlYworW05PX1BJRF06IHNxbGNh OiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVzdWx0IG9u IGxpbmUgMTQ1OiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIHJvdyBleHBhbnNpb24gdmlhICIqIiBp cyBub3Qgc3VwcG9ydGVkIGhlcmUKK0xJTkUgMTogc2VsZWN0IGpzb24gKCAoICd7ImEiOiB7ImIi OiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4Li4uCisgICAgICAgICAgICAgICAgICAg ICAgICBeCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06 IHJhaXNpbmcgc3Fsc3RhdGUgMEEwMDAgKHNxbGNvZGUgLTQwMCk6IHJvdyBleHBhbnNpb24gdmlh ICIqIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBzcWxjYTog Y29kZTogLTQwMCwgc3RhdGU6IDBBMDAwCitTUUwgZXJyb3I6IHJvdyBleHBhbnNpb24gdmlhICIq IiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUgb24gbGluZSAxNDUKK1tOT19QSURdOiBlY3BnX2V4ZWN1 dGUgb24gbGluZSAxNDg6IHF1ZXJ5OiBzZWxlY3QganNvbiAoICggJ3siYSI6IHsiYiI6IDEsICJj IjogMn0sICJiIjogW3sieCI6IDF9LCB7IngiOiBbMTIsIHsieSI6MX1dfV19JyA6OiBqc29uYiAp IFsgJ2InIF0gWyAwIDogXSApOyB3aXRoIDAgcGFyYW1ldGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNw ZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tO T19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNDg6IHVzaW5nIFBRZXhlYworW05PX1BJRF06 IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2NoZWNrX1BRcmVz dWx0IG9uIGxpbmUgMTQ4OiBiYWQgcmVzcG9uc2UgLSBFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBk b2VzIG5vdCBzdXBwb3J0IHNsaWNlcworTElORSAxOiAuLi54IjogMX0sIHsieCI6IFsxMiwgeyJ5 IjoxfV19XX0nIDo6IGpzb25iICkgWyAnYicgXSBbIDAgOiBdICkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitbTk9fUElE XTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcgc3Fsc3Rh dGUgNDI4MDQgKHNxbGNvZGUgLTQwMCk6IGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0 IHNsaWNlcyBvbiBsaW5lIDE0OAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAtNDAwLCBzdGF0ZTog NDI4MDQKK1NRTCBlcnJvcjoganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2Vz IG9uIGxpbmUgMTQ4CiBbTk9fUElEXTogZWNwZ19maW5pc2g6IGNvbm5lY3Rpb24gZWNwZzFfcmVn cmVzc2lvbiBjbG9zZWQKIFtOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb24u c3Rkb3V0IGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0 ZG91dAppbmRleCA4M2Y4ZGYxM2U1YS4uNDQyZDM2OTMxZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbi5zdGRvdXQKKysrIGIvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uLnN0ZG91dApAQCAtMjgsMyAr MjgsMTAgQEAgRm91bmQgaXNfanNvbls0XTogZmFsc2UKIEZvdW5kIGlzX2pzb25bNV06IGZhbHNl CiBGb3VuZCBpc19qc29uWzZdOiB0cnVlCiBGb3VuZCBpc19qc29uWzddOiBmYWxzZQorRm91bmQg anNvbj17ImIiOiAxLCAiYyI6IDJ9CitGb3VuZCBqc29uPXsiYiI6IDEsICJjIjogMn0KK0ZvdW5k IGpzb249MQorRm91bmQganNvbj1udWxsCitGb3VuZCBqc29uPXsieCI6IDF9CitGb3VuZCBqc29u PVsxLCBbMTIsIHsieSI6IDF9XV0KK0ZvdW5kIGpzb249eyJ4IjogMX0KZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbi5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCmluZGV4IGRkY2JjYzNiM2NiLi41N2E5YmZmNDI0ZCAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uLnBnYworKysg Yi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb24ucGdjCkBAIC0xMTUsNiArMTE1 LDM5IEBAIEVYRUMgU1FMIEVORCBERUNMQVJFIFNFQ1RJT047CiAJICBmb3IgKGludCBpID0gMDsg aSA8IHNpemVvZihpc19qc29uKTsgaSsrKQogCQkgIHByaW50ZigiRm91bmQgaXNfanNvblslZF06 ICVzXG4iLCBpLCBpc19qc29uW2ldID8gInRydWUiIDogImZhbHNlIik7CiAKKwlFWEVDIFNRTCBT RUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIpLiJhIikgSU5UTyA6 anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VM RUNUIEpTT04oJ3siYSI6IHsiYiI6IDEsICJjIjogMn19Jzo6anNvbmIuImEiKSBJTlRPIDpqc29u OworCS8vIGVycm9yCisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJj IjogMn19Jzo6anNvbmIpLmEpIElOVE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4i LCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAy fX0nOjpqc29uYikuYS5iKSBJTlRPIDpqc29uOworCXByaW50ZigiRm91bmQganNvbj0lc1xuIiwg anNvbik7CisKKwlFWEVDIFNRTCBTRUxFQ1QgSlNPTihDT0FMRVNDRShKU09OKCgneyJhIjogeyJi IjogMSwgImMiOiAyfX0nOjpqc29uYikuYyksICdudWxsJykpIElOVE8gOmpzb247CisJcHJpbnRm KCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJh IjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19 XX0nOjpqc29uYikuYlswXSkgSU5UTyA6anNvbjsKKwlwcmludGYoIkZvdW5kIGpzb249JXNcbiIs IGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7ImEiOiB7ImIiOiAxLCAiYyI6IDJ9 LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9XX1dfSc6Ompzb25iKS5iLngpIElO VE8gOmpzb247CisJcHJpbnRmKCJGb3VuZCBqc29uPSVzXG4iLCBqc29uKTsKKworCUVYRUMgU1FM IFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIiOiBbeyJ4IjogMX0sIHsi eCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswXSkgSU5UTyA6anNvbjsKKwlwcmlu dGYoIkZvdW5kIGpzb249JXNcbiIsIGpzb24pOworCisJRVhFQyBTUUwgU0VMRUNUIEpTT04oKCd7 ImEiOiB7ImIiOiAxLCAiYyI6IDJ9LCAiYiI6IFt7IngiOiAxfSwgeyJ4IjogWzEyLCB7InkiOjF9 XX1dfSc6Ompzb25iKS5iWzFdLnhbMDpdKSBJTlRPIDpqc29uOworCS8vIGVycm9yCisKKwlFWEVD IFNRTCBTRUxFQ1QgSlNPTigoJ3siYSI6IHsiYiI6IDEsICJjIjogMn0sICJiIjogW3sieCI6IDF9 LCB7IngiOiBbMTIsIHsieSI6MX1dfV19Jzo6anNvbmIpLiopIElOVE8gOmpzb247CisJLy8gZXJy b3IKKworCUVYRUMgU1FMIFNFTEVDVCBKU09OKCgneyJhIjogeyJiIjogMSwgImMiOiAyfSwgImIi OiBbeyJ4IjogMX0sIHsieCI6IFsxMiwgeyJ5IjoxfV19XX0nOjpqc29uYilbJ2InXVswOl0pIElO VE8gOmpzb247CisJLy8gZXJyb3IKKwogICBFWEVDIFNRTCBESVNDT05ORUNUOwogCiAgIHJldHVy biAwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA1YTFlYjE4YWJhMi4uZDc4 MWYxNTE4ZWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC00OTg5LDYgKzQ5 ODksMTIgQEAgc2VsZWN0ICgnMTIzJzo6anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVj dCAoJzEyMyc6Ompzb25iKS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnMTIz Jzo6anNvbmIpWzBdOwogIGpzb25iIAogLS0tLS0tLQpAQCAtNTAwMSwxMiArNTAwNywyNCBAQCBz ZWxlY3QgKCcxMjMnOjpqc29uYilbTlVMTF07CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJzEyMyc6 Ompzb25iKS5OVUxMOworIG51bGwgCistLS0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJh IjogMX0nOjpqc29uYilbJ2EnXTsKICBqc29uYiAKIC0tLS0tLS0KICAxCiAoMSByb3cpCiAKK3Nl bGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpLmE7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwogc2Vs ZWN0ICgneyJhIjogMX0nOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDE5LDYg KzUwMzcsMTIgQEAgc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25vdF9leGlzdCddOwogIAog KDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKS4ibm90X2V4aXN0IjsKKyBub3Rf ZXhpc3QgCistLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVtOVUxMXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTUwMzEsNiArNTA1NSwxMiBAQCBzZWxl Y3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3Qg KCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01 MDQzLDYgKzUwNzMsMTIgQEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJzEnXTsK ICAiMiIKICgxIHJvdykKIAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOwor IDEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilb MS4wXTsKIEVSUk9SOiAgc3Vic2NyaXB0IHR5cGUgbnVtZXJpYyBpcyBub3Qgc3VwcG9ydGVkCiBM SU5FIDE6IHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzEuMF07CkBAIC01MDcyLDYg KzUxMDgsMTIgQEAgc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV1bJ2EnXTsKICAK ICgxIHJvdykKIAorc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMV0uYTsKKyBhIAor LS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBd OwogIGpzb25iIAogLS0tLS0tLQpAQCAtNTA4NCw1NiArNTEyNiwxMjcgQEAgc2VsZWN0ICgneyJh IjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOwogICJjIgogKDEg cm93KQogCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNv bmIpLmI7CisgIGIgIAorLS0tLS0KKyAiYyIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwg ImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOwogICAganNvbmIgICAKIC0t LS0tLS0tLS0tCiAgWzEsIDIsIDNdCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjog ImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZDsKKyAgICAgZCAgICAgCistLS0tLS0tLS0t LQorIFsxLCAyLCAzXQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQi OiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11bMV07CiAganNvbmIgCiAtLS0tLS0tCiAgMgogKDEg cm93KQogCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNv bmIpLmRbMV07CisgZCAKKy0tLQorIDIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogMSwgImIi OiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWydhJ107CiAganNvbmIgCiAtLS0t LS0tCiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAy LCAzXX0nOjpqc29uYikuZFsnYSddOworIGQgCistLS0KKyAKKygxIHJvdykKKworc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CisgYSAKKy0t LQorIAorKDEgcm93KQorCitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBb MSwgMiwgM119fSc6Ompzb25iKS5kWydhJ11bMF07CisgZCAKKy0tLQorIDEKKygxIHJvdykKKwor c2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogeyJhIjogWzEsIDIsIDNdfX0nOjpqc29u YikuZC5hWzBdOworIGEgCistLS0KKyAxCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEi OiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsn YTEnXTsKICAgICAganNvbmIgICAgIAogLS0tLS0tLS0tLS0tLS0tCiAgeyJhMiI6ICJhYWEifQog KDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJi YiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTE7CisgICAgICBhMSAgICAgICAKKy0tLS0tLS0t LS0tLS0tLQorIHsiYTIiOiAiYWFhIn0KKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJhMSI6 IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydh MSddWydhMiddOwogIGpzb25iIAogLS0tLS0tLQogICJhYWEiCiAoMSByb3cpCiAKK3NlbGVjdCAo J3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpq c29uYikuYS5hMS5hMjsKKyAgYTIgICAKKy0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCiBzZWxl Y3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9 Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ11bJ2EzJ107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAo MSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJi IiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMi5hMzsKKyBhMyAKKy0tLS0KKyAKKygxIHJv dykKKwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19 XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddOwogICAgICAgICAganNvbmIgICAg ICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgWyJhYWEiLCAiYmJiIiwgImNjYyJdCiAo MSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNj YyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5iMTsKKyAgICAgICAgICBiMSAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYWFhIiwgImJiYiIsICJjY2MiXQorKDEg cm93KQorCiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2Mi XX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ11bMl07CiAganNvbmIgCiAtLS0t LS0tCiAgImNjYyIKICgxIHJvdykKIAotLS0gc2xpY2VzIGFyZSBub3Qgc3VwcG9ydGVkCi1zZWxl Y3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsKK3NlbGVjdCAoJ3siYSI6IFsiYTEiLCB7 ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYikuYVsxXS5i MVsyXTsKKyAgYjEgICAKKy0tLS0tLS0KKyAiY2NjIgorKDEgcm93KQorCitzZWxlY3QgKCd7ImEi OiAxfSc6Ompzb25iKVsnYSc6J2InXTsgLS0gZmFpbHMKIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0 IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCiBMSU5FIDE6IHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNv bmIpWydhJzonYiddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpA QCAtNTgzMSwzICs1OTQ0LDI4NyBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50ODsKICAxMjM0NQogKDEgcm93 KQogCistLSBkb3Qgbm90YXRpb24KK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biBBUworU0VMRUNUICd7ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJm IiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBbMywgNCwgeyJiIjogImci LCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25iIGpiOworU0VMRUNUIChq YikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAi eCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLiJh IiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdv cmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwgMiwgeyJiIjogImMi fSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XQor KDEgcm93KQorCitTRUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsg LS0gc2luZ2xlIHF1b3RlIHNob3VsZCBub3Qgd29yaworRVJST1I6ICBzeW50YXggZXJyb3IgYXQg b3IgbmVhciAiJ2EnIgorTElORSAxOiBTRUxFQ1QgKGpiKS4nYScgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIChqYikuYiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgIGIgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6 ICJaWloifX1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyBjIAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuYiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMi LCAiZCJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworICBiICAKKy0tLS0tCisgImMiCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEu eC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICB5ICAgCistLS0tLS0tCisgInl5 eSIKKygxIHJvdykKKworU0VMRUNUIChqYikuYi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKKyAgIHogICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5h LmIuYyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGMgCistLS0KKyAKKygxIHJvdykK KworU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OyAt LSBmYWlscworRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMK K1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSBmYWlscwor RVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKKy0tIGV4cGxhaW5zIHNob3VsZCB3 b3JrCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQKKyAg IE91dHB1dDogKGpiKS5hCisoMiByb3dzKQorCitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXki LCAieiI6ICJ6enoifX1dCisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJf ZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYikuYVsxXQorKDIgcm93cykKKworU0VMRUNUIChq YikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGEgCistLS0KKyAyCisoMSBy b3cpCisKKy0tIHZpZXdzIHNob3VsZCB3b3JrCitDUkVBVEUgVklFVyB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbl92MSBBUyBTRUxFQ1QgKGpiKS5hWzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1IgUkVQTEFD RSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVDVCAoamIp LmFbM10ueC55IEFTIHkKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKy0tIG1peGVk IHN5bnRheAorRFJPUCBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoamJbJ2EnOjp0 ZXh0XSkuYgorKDIgcm93cykKKworU0VMRUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIHJldHVybnMgYW4gYXJyYXkgZHVlIHRvIGxheCBtb2RlCisgICAgIGIg ICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJvdykKKworQ1JFQVRFIFZJRVcg cHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpiKVsnYSddLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEgQVMKKyBTRUxFQ1QgKGpiWydhJzo6dGV4dF0pLmIgQVMgYgorICAgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MTsKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitE Uk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9u IHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiAoKGpiKS5hKVsnYic6 OnRleHRdCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMIGR1ZSB0byBzdHJpY3QgbW9kZSB3aXRoIHdhcm5p bmdzCisgYSAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmFbJ2InXSBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxCitDUkVBVEUgT1Ig UkVQTEFDRSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworIFNFTEVD VCAoKGpiKS5hKVsnYic6OnRleHRdIEFTIGEKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgYSAKKy0tLQor IAorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3Yx OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5iLnhbJ3onXSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRw dXQ6ICgoamIpLmIueClbJ3onOjp0ZXh0XQorKDIgcm93cykKKworU0VMRUNUIChqYikuYi54Wyd6 J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gd2FybmluZ3MKKyAgIHggICAKKy0t LS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBPUiBS RVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCisgU0VMRUNU ICgoamIpLmIueClbJ3onOjp0ZXh0XSBBUyB4CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworICAgeCAgIAor LS0tLS0tLQorICJaWloiCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp WydiJ10ueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rf bm90YXRpb24KKyAgIE91dHB1dDogKChqYlsnYic6OnRleHRdKS54KVsneic6OnRleHRdCisoMiBy b3dzKQorCitTRUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOyAgLS0gd2FybmluZ3MKKyAgIHggICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitD UkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAo amIpWydiJ10ueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3Rf anNvbmJfZG90X25vdGF0aW9uX3YxIEFTCisgU0VMRUNUICgoamJbJ2InOjp0ZXh0XSkueClbJ3on Ojp0ZXh0XSBBUyB4CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uCitTRUxFQ1QgKiBm cm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworICAgeCAgIAorLS0tLS0tLQorICJaWloi CisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmJbJ3gnXS56IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1 dDogKCgoamIpLmIpWyd4Jzo6dGV4dF0pLnoKKygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmJbJ3gn XS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTCB3aXRoIHdh cm5pbmdzCisgeiAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmJbJ3gnXS56IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFU RSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCisg U0VMRUNUICgoKGpiKS5iKVsneCc6OnRleHRdKS56IEFTIHoKKyAgIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24KK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7Cisg eiAKKy0tLQorIAorKDEgcm93KQorCitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uX3YxOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5iWyd4 J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0 aW9uCisgICBPdXRwdXQ6ICgoamIpLmIpWyd4Jzo6dGV4dF1bJ3onOjp0ZXh0XQorKDIgcm93cykK KworU0VMRUNUIChqYikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsg LS0gcmV0dXJucyBOVUxMIHdpdGggd2FybmluZ3MKKyBiIAorLS0tCisgCisoMSByb3cpCisKK0NS RUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChq YikuYlsneCddWyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbl92MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMKKyBTRUxFQ1QgKChqYikuYilbJ3gnOjp0ZXh0XVsneic6 OnRleHRdIEFTIGIKKyAgIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK1NFTEVDVCAqIGZy b20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisgYiAKKy0tLQorIAorKDEgcm93KQorCitE Uk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNj YW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisgICBPdXRwdXQ6IChqYlsnYic6 OnRleHRdWyd4Jzo6dGV4dF0pLnoKKygyIHJvd3MpCisKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTCB3aXRoIHdhcm5p bmdzCisgeiAKKy0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29u Yl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpWydiJ11bJ3gnXS56IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK0NSRUFU RSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCisg U0VMRUNUIChqYlsnYic6OnRleHRdWyd4Jzo6dGV4dF0pLnogQVMgegorICAgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbgorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MTsKKyB6IAorLS0tCisgCisoMSByb3cpCisKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9k b3Rfbm90YXRpb25fdjE7CistLSBjbGVhbiB1cAorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAppbmRleCA1N2MxMWFjZGRmZS4uYTBmYWQ5MGE5 ZDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTEzMDQsMzMgKzEzMDQsNTEgQEAgc2VsZWN0 IGpzb25iX2luc2VydCgneyJhIjogeyJiIjogInZhbHVlIn19JywgJ3thLCBifScsICcibmV3X3Zh bHVlIicsIHRydWUpOwogCiAtLSBqc29uYiBzdWJzY3JpcHQKIHNlbGVjdCAoJzEyMyc6Ompzb25i KVsnYSddOworc2VsZWN0ICgnMTIzJzo6anNvbmIpLmE7CiBzZWxlY3QgKCcxMjMnOjpqc29uYilb MF07CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbTlVMTF07CitzZWxlY3QgKCcxMjMnOjpqc29uYiku TlVMTDsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJ107CitzZWxlY3QgKCd7ImEiOiAx fSc6Ompzb25iKS5hOwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbMF07CiBzZWxlY3QgKCd7 ImEiOiAxfSc6Ompzb25iKVsnbm90X2V4aXN0J107CitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25i KS4ibm90X2V4aXN0IjsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpW05VTExdOwogc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpLmE7CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVswXTsKIHNlbGVj dCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWycxJ107CitzZWxlY3QgKCdbMSwgIjIiLCBudWxs XSc6Ompzb25iKS4iMSI7CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxLjBdOwog c2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMl07CiBzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKVszXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWy0yXTsK IHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWydhJ107CitzZWxlY3QgKCdbMSwg IjIiLCBudWxsXSc6Ompzb25iKVsxXS5hOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29u YilbMV1bMF07CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6 anNvbmIpWydiJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119 Jzo6anNvbmIpLmI7CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119 Jzo6anNvbmIpWydkJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwg M119Jzo6anNvbmIpLmQ7CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwg M119Jzo6anNvbmIpWydkJ11bMV07CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBb MSwgMiwgM119Jzo6anNvbmIpLmRbMV07CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQi OiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11bJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjog ImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsnYSddOworc2VsZWN0ICgneyJhIjogMSwg ImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CitzZWxlY3QgKCd7ImEiOiAx LCAiYiI6ICJjIiwgImQiOiB7ImEiOiBbMSwgMiwgM119fSc6Ompzb25iKS5kWydhJ11bMF07Citz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiB7ImEiOiBbMSwgMiwgM119fSc6Ompzb25i KS5kLmFbMF07CiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJi YiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ107CitzZWxlY3QgKCd7ImEiOiB7ImEx IjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTE7 CiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjog ImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ107CitzZWxlY3QgKCd7ImEiOiB7ImExIjog eyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTEuYTI7 CiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjog ImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ11bJ2EzJ107CitzZWxlY3QgKCd7ImEiOiB7 ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEu YTEuYTIuYTM7CiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJj Y2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ107CitzZWxlY3QgKCd7ImEi OiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNv bmIpLmFbMV0uYjE7CiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIs ICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ11bMl07CitzZWxlY3Qg KCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9 Jzo6anNvbmIpLmFbMV0uYjFbMl07CiAKLS0tIHNsaWNlcyBhcmUgbm90IHN1cHBvcnRlZAotc2Vs ZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107CitzZWxlY3QgKCd7ImEiOiAxfSc6Ompz b25iKVsnYSc6J2InXTsgLS0gZmFpbHMKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIp WzE6Ml07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07CiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOl07CkBAIC0xNTkwLDMgKzE2MDgsOTIgQEAgc2VsZWN0 ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6 anNvbmI6OmZsb2F0ODsKIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQyOwogc2VsZWN0ICcxMjM0NS4wMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDQ7CiBz ZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDUnOjpqc29uYjo6aW50ODsKKworLS0gZG90IG5vdGF0aW9uCitDUkVBVEUgVEFCTEUgdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gQVMKK1NFTEVDVCAneyJhIjogWzEsIDIsIHsiYiI6ICJjIn0sIHsi YiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sICJiIjog WzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XX0nOjpqc29u YiBqYjsKKworU0VMRUNUIChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuImEiIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIGRvdWJsZSBxdW90 ZSBzaG91bGQgd29yaworU0VMRUNUIChqYikuJ2EnIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247IC0tIHNpbmdsZSBxdW90ZSBzaG91bGQgbm90IHdvcmsKK1NFTEVDVCAoamIpLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmMgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuYVsyXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxF Q1QgKGpiKS5hLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku Yi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuYi5jIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKChqYikuYilbOl0ueCBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uIHQ7IC0tIGZhaWxzCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gZmFpbHMKKworLS0gZXhwbGFpbnMgc2hvdWxkIHdv cmsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0LmpiKS5hIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp LmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbMV0gRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKworLS0gdmlld3Mgc2hvdWxkIHdvcmsKK0NSRUFU RSBWSUVXIHRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjEKKworLS0gbWl4ZWQgc3ludGF4CitEUk9QIFZJRVcgdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYilbJ2EnXS5i IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKVsnYSddLmIgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBhbiBhcnJheSBkdWUgdG8gbGF4IG1v ZGUKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VM RUNUIChqYilbJ2EnXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFbJ2InXSBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYVsnYiddIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTCBkdWUgdG8gc3RyaWN0IG1vZGUgd2l0aCB3YXJu aW5ncworQ1JFQVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitT RUxFQ1QgKGpiKS5hWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYi54Wyd6J10gRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247IC0tIHdhcm5pbmdzCitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVDVCAoamIpLmIueFsneiddIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVD VCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRl c3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCAoamIpWydiJ10ueFsneiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitT RUxFQ1QgKGpiKVsnYiddLnhbJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOyAgLS0g d2FybmluZ3MKK0NSRUFURSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBB UworU0VMRUNUIChqYilbJ2InXS54Wyd6J10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1xzdiB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYlsneCdd LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmJbJ3gnXS56IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHJldHVybnMgTlVMTCB3aXRoIHdhcm5pbmdz CitDUkVBVEUgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjEgQVMKK1NFTEVD VCAoamIpLmJbJ3gnXS56IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Citcc3YgdGVzdF9q c29uYl9kb3Rfbm90YXRpb25fdjEKK1NFTEVDVCAqIGZyb20gdGVzdF9qc29uYl9kb3Rfbm90YXRp b25fdjE7CitEUk9QIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxOworCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmJbJ3gnXVsneiddIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5iWyd4J11bJ3onXSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOyAtLSByZXR1cm5zIE5VTEwgd2l0aCB3YXJuaW5ncworQ1JF QVRFIFZJRVcgcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uX3YxIEFTCitTRUxFQ1QgKGpi KS5iWyd4J11bJ3onXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworXHN2IHRlc3RfanNv bmJfZG90X25vdGF0aW9uX3YxCitTRUxFQ1QgKiBmcm9tIHRlc3RfanNvbmJfZG90X25vdGF0aW9u X3YxOworRFJPUCBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MTsKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKVsnYiddWyd4J10ueiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYilbJ2InXVsneCddLnogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsgLS0gcmV0dXJucyBOVUxMIHdpdGggd2FybmluZ3MKK0NSRUFU RSBWSUVXIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92MSBBUworU0VMRUNUIChqYilb J2InXVsneCddLnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1xzdiB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbl92MQorU0VMRUNUICogZnJvbSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbl92 MTsKK0RST1AgVklFVyBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb25fdjE7CisKKy0tIGNs ZWFuIHVwCitEUk9QIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZTRhOWVjNjVhYjQu LjZmY2E4ZWI3YjIzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtODA1LDYgKzgwNSw3 IEBAIEZkd1JvdXRpbmUKIEZldGNoRGlyZWN0aW9uCiBGZXRjaERpcmVjdGlvbktleXdvcmRzCiBG ZXRjaFN0bXQKK0ZpZWxkQWNjZXNzb3JFeHByCiBGaWVsZFNlbGVjdAogRmllbGRTdG9yZQogRmls ZQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v13-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiogk5 RnJvbSA4NzY2ZDY0YTQzZjBkODRjMDM5NTc4MWVkY2MyMTA3NTNhOTA4NTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEzIDMvN10gRXhwb3J0IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkKClRoaXMgaXMgYSBwcmVw YXJhdGlvbiBzdGVwIGZvciBhIGZ1dHVyZSBjb21taXQgdGhhdCB3aWxsIHJldXNlIHRoZQphZm9y ZW1lbnRpb25lZCBmdW5jdGlvbi4KCkF1dGhvcmVkLWJ5OiBOaWtpdGEgR2x1a2hvdiA8Z2x1a2hv di5uLmFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWxleGFuZHJhIFdhbmcgPGFsZXhhbmRyYS53 YW5nLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJhIDxtYXRoZXVzc3NpbHY5 N0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgfCAxOSArKysrKysr KysrKysrKystLS0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICB8ICA0ICsrKysK IDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aC5jCmluZGV4IDc2MmY3ZThhMDlkLi45NzZhZWU4NGNmMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoLmMKQEAgLTE2NiwxNSArMTY2LDEzIEBAIGpzb25wYXRoX3NlbmQo UEdfRlVOQ1RJT05fQVJHUykKICAqIENvbnZlcnRzIEMtc3RyaW5nIHRvIGEganNvbnBhdGggdmFs dWUuCiAgKgogICogVXNlcyBqc29ucGF0aCBwYXJzZXIgdG8gdHVybiBzdHJpbmcgaW50byBhbiBB U1QsIHRoZW4KLSAqIGZsYXR0ZW5Kc29uUGF0aFBhcnNlSXRlbSgpIGRvZXMgc2Vjb25kIHBhc3Mg dHVybmluZyBBU1QgaW50byBiaW5hcnkKKyAqIGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCkgZG9l cyBzZWNvbmQgcGFzcyB0dXJuaW5nIEFTVCBpbnRvIGJpbmFyeQogICogcmVwcmVzZW50YXRpb24g b2YganNvbnBhdGguCiAgKi8KIHN0YXRpYyBEYXR1bQoganNvblBhdGhGcm9tQ3N0cmluZyhjaGFy ICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUgKmVzY29udGV4dCkKIHsKIAlKc29uUGF0aFBhcnNl UmVzdWx0ICpqc29ucGF0aCA9IHBhcnNlanNvbnBhdGgoaW4sIGxlbiwgZXNjb250ZXh0KTsKLQlK c29uUGF0aCAgICpyZXM7Ci0JU3RyaW5nSW5mb0RhdGEgYnVmOwogCiAJaWYgKFNPRlRfRVJST1Jf T0NDVVJSRUQoZXNjb250ZXh0KSkKIAkJcmV0dXJuIChEYXR1bSkgMDsKQEAgLTE4NSw4ICsxODMs MjEgQEAganNvblBhdGhGcm9tQ3N0cmluZyhjaGFyICppbiwgaW50IGxlbiwgc3RydWN0IE5vZGUg KmVzY29udGV4dCkKIAkJCQkgZXJybXNnKCJpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSAl czogXCIlc1wiIiwgImpzb25wYXRoIiwKIAkJCQkJCWluKSkpOwogCisJcmV0dXJuIGpzb25QYXRo RnJvbVBhcnNlUmVzdWx0KGpzb25wYXRoLCA0ICogbGVuLCBlc2NvbnRleHQpOworfQorCisvKgor ICogQ29udmVydHMganNvbnBhdGggQWJzdHJhY3QgU3ludGF4IFRyZWUgKEFTVCkgaW50byBqc29u cGF0aCB2YWx1ZSBpbiBiaW5hcnkuCisgKi8KK0RhdHVtCitqc29uUGF0aEZyb21QYXJzZVJlc3Vs dChKc29uUGF0aFBhcnNlUmVzdWx0ICpqc29ucGF0aCwgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJ CQlzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KQoreworCUpzb25QYXRoICAgKnJlczsKKwlTdHJpbmdJ bmZvRGF0YSBidWY7CisKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKLQllbmxhcmdlU3RyaW5nSW5m bygmYnVmLCA0ICogbGVuIC8qIGVzdGltYXRpb24gKi8gKTsKKwllbmxhcmdlU3RyaW5nSW5mbygm YnVmLCBlc3RpbWF0ZWRfbGVuKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TcGFjZXMoJmJ1ZiwgSlNP TlBBVEhfSERSU1opOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAyM2E3NmQyMzNlOS4uZTA1OTQx NjIzZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMjgxLDYgKzI4MSwxMCBAQCBleHRlcm4gSnNv blBhdGhQYXJzZVJlc3VsdCAqcGFyc2Vqc29ucGF0aChjb25zdCBjaGFyICpzdHIsIGludCBsZW4s CiBleHRlcm4gYm9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIgeGZsYWdzLCBpbnQgKnJl c3VsdCwKIAkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQpOwogCitleHRlcm4gRGF0dW0g anNvblBhdGhGcm9tUGFyc2VSZXN1bHQoSnNvblBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGgsCisJ CQkJCQkJCQkgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJCQkJCQkgc3RydWN0IE5vZGUgKmVzY29u dGV4dCk7CisKIC8qCiAgKiBTdHJ1Y3QgZm9yIGRldGFpbHMgYWJvdXQgZXh0ZXJuYWwgdmFyaWFi bGVzIHBhc3NlZCBpbnRvIGpzb25wYXRoIGV4ZWN1dG9yCiAgKi8KLS0gCjIuMzkuNSAoQXBwbGUg R2l0LTE1NCkKCg== --0000000000006eee59063cd8e278 Content-Type: application/octet-stream; name="v13-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Disposition: attachment; filename="v13-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-No.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meksiogl6 RnJvbSA3MTFhMjg1NzlmZTE4NzE3N2NiZjQ3YTFmNzBlZGZjMDY0ODRjZDQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFR1ZSwgOCBKdWwgMjAyNSAyMjoxODowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djEzIDIvN10gQWxsb3cgR2VuZXJpYyBUeXBlIFN1YnNjcmlwdGluZyB0byBBY2NlcHQgRG90CiBO b3RhdGlvbiAoLikgYXMgSW5wdXQKClRoaXMgY2hhbmdlIGV4dGVuZHMgZ2VuZXJpYyB0eXBlIHN1 YnNjcmlwdGluZyB0byByZWNvZ25pemUgZG90Cm5vdGF0aW9uICguKSBpbiBhZGRpdGlvbiB0byBi cmFja2V0IG5vdGF0aW9uIChbXSkuIFdoaWxlIHRoaXMgZG9lcyBub3QKeWV0IHByb3ZpZGUgZnVs bCBzdXBwb3J0IGZvciBkb3Qgbm90YXRpb24sIGl0IGVuYWJsZXMgc3Vic2NyaXB0aW5nCmNvbnRh aW5lcnMgdG8gcHJvY2VzcyBpdCBpbiB0aGUgZnV0dXJlLgoKRm9yIG5vdywgY29udGFpbmVyLXNw ZWNpZmljIHRyYW5zZm9ybSBmdW5jdGlvbnMgb25seSBoYW5kbGUKc3Vic2NyaXB0aW5nIGluZGlj ZXMgYW5kIHN0b3AgcHJvY2Vzc2luZyB3aGVuIGVuY291bnRlcmluZyBkb3QKbm90YXRpb24uIEl0 IGlzIHVwIHRvIGluZGl2aWR1YWwgY29udGFpbmVycyB0byBkZWNpZGUgaG93IHRvIHRyYW5zZm9y bQpkb3Qgbm90YXRpb24gaW4gc3Vic2VxdWVudCB1cGRhdGVzLgoKQXV0aG9yZWQtYnk6IE5pa2l0 YSBHbHVraG92IDxnbHVraG92Lm4uYUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kcmEg V2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRh cmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4u dW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfbm9kZS5jICAgfCA0MSArKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fy cmF5c3Vicy5jIHwgMTMgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg fCAxMSArKysrKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAzICstCiA2 IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwppbmRleCBlMTU2NWUxMWQwOS4uZGMxYzdlOWI3NWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtNDQyLDggKzQ0Miw5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCUxpc3RDZWxsICAgKmk7 CiAKIAkvKgotCSAqIFdlIGhhdmUgdG8gc3BsaXQgYW55IGZpZWxkLXNlbGVjdGlvbiBvcGVyYXRp b25zIGFwYXJ0IGZyb20KLQkgKiBzdWJzY3JpcHRpbmcuICBBZGphY2VudCBBX0luZGljZXMgbm9k ZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCisJICogQ29tYmluZSBmaWVsZCBuYW1l cyBhbmQgc3Vic2NyaXB0cyBpbnRvIGEgc2luZ2xlIGluZGlyZWN0aW9uIGxpc3QsIGFzCisJICog c29tZSBzdWJzY3JpcHRpbmcgY29udGFpbmVycywgc3VjaCBhcyBqc29uYiwgc3VwcG9ydCBmaWVs ZCBhY2Nlc3MgdXNpbmcKKwkgKiBkb3Qgbm90YXRpb24uIEFkamFjZW50IEFfSW5kaWNlcyBub2Rl cyBoYXZlIHRvIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUKIAkgKiBtdWx0aWRpbWVuc2lvbmFsIHN1 YnNjcmlwdCBvcGVyYXRpb24uCiAJICovCiAJZm9yZWFjaChpLCBpbmQtPmluZGlyZWN0aW9uKQpA QCAtNDYxLDE5ICs0NjIsNDMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlOb2RlCSAgICpu ZXdyZXN1bHQ7Ci0KIAkJCUFzc2VydChJc0EobiwgU3RyaW5nKSk7CisJCQlzdWJzY3JpcHRzID0g bGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKKwkJfQorCX0KKworCXdoaWxlIChzdWJzY3JpcHRzKQor CXsKKwkJLyogdHJ5IHByb2Nlc3NpbmcgY29udGFpbmVyIHN1YnNjcmlwdHMgZmlyc3QgKi8KKwkJ Tm9kZQkgICAqbmV3cmVzdWx0ID0gKE5vZGUgKikKKwkJCXRyYW5zZm9ybUNvbnRhaW5lclN1YnNj cmlwdHMocHN0YXRlLAorCQkJCQkJCQkJCSByZXN1bHQsCisJCQkJCQkJCQkJIGV4cHJUeXBlKHJl c3VsdCksCisJCQkJCQkJCQkJIGV4cHJUeXBtb2QocmVzdWx0KSwKKwkJCQkJCQkJCQkgJnN1YnNj cmlwdHMsCisJCQkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkJCSB0cnVlKTsKKworCQlpZiAoIW5l d3Jlc3VsdCkKKwkJeworCQkJLyoKKwkJCSAqIGdlbmVyaWMgc3Vic2NyaXB0aW5nIGZhaWxlZDsg ZmFsbGluZyBiYWNrIHRvIGZpZWxkIHNlbGVjdGlvbgorCQkJICogZm9yIGEgY29tcG9zaXRlIHR5 cGUuCisJCQkgKi8KKwkJCU5vZGUJICAgKm47CisKKwkJCUFzc2VydChzdWJzY3JpcHRzKTsKIAot CQkJLyogcHJvY2VzcyBzdWJzY3JpcHRzIGJlZm9yZSB0aGlzIGZpZWxkIHNlbGVjdGlvbiAqLwot CQkJd2hpbGUgKHN1YnNjcmlwdHMpCi0JCQkJcmVzdWx0ID0gKE5vZGUgKikgdHJhbnNmb3JtQ29u dGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJ CQkJCQkJCQkJCQkgICBleHByVHlwZShyZXN1bHQpLAotCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5 cG1vZChyZXN1bHQpLAotCQkJCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJ CQkJCQkgICBmYWxzZSk7CisJCQluID0gbGluaXRpYWwoc3Vic2NyaXB0cyk7CisKKwkJCWlmICgh SXNBKG4sIFN0cmluZykpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0 eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAorCQkJCQkJ CQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShyZXN1bHQpKSksCisJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHJlc3VsdCkpKSk7CiAKKwkJCS8qIHRyeSB0byBm aW5kIGZ1bmN0aW9uIGZvciBmaWVsZCBzZWxlY3Rpb24gKi8KIAkJCW5ld3Jlc3VsdCA9IFBhcnNl RnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCiAJCQkJCQkJ CQkJICBsaXN0X21ha2UxKHJlc3VsdCksCkBAIC00ODEsMTkgKzUwNiwxNiBAQCB0cmFuc2Zvcm1J bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJCQkJ CQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCQkgIGxvY2F0aW9uKTsK LQkJCWlmIChuZXdyZXN1bHQgPT0gTlVMTCkKKworCQkJaWYgKCFuZXdyZXN1bHQpCiAJCQkJdW5r bm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1bHQsIHN0clZhbChuKSwgbG9jYXRpb24pOwotCQkJ cmVzdWx0ID0gbmV3cmVzdWx0OworCisJCQkvKiBjb25zdW1lIGZpZWxkIHNlbGVjdCAqLworCQkJ c3Vic2NyaXB0cyA9IGxpc3RfZGVsZXRlX2ZpcnN0KHN1YnNjcmlwdHMpOwogCQl9CisKKwkJcmVz dWx0ID0gbmV3cmVzdWx0OwogCX0KLQkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlm IGFueSAqLwotCXdoaWxlIChzdWJzY3JpcHRzKQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zv cm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0J CQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlw bW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJ ICAgZmFsc2UpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmlu ZGV4IGYwNWJhYTUwYTE1Li5jNDRhNWEwZWZmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBA IC0yMzgsNiArMjM4LDggQEAgdHJhbnNmb3JtQ29udGFpbmVyVHlwZShPaWQgKmNvbnRhaW5lclR5 cGUsIGludDMyICpjb250YWluZXJUeXBtb2QpCiAgKiBjb250YWluZXJUeXBNb2QJdHlwbW9kIGZv ciB0aGUgY29udGFpbmVyCiAgKiBpbmRpcmVjdGlvbgkJVW50cmFuc2Zvcm1lZCBsaXN0IG9mIHN1 YnNjcmlwdHMgKG11c3Qgbm90IGJlIE5JTCkKICAqIGlzQXNzaWdubWVudAkJVHJ1ZSBpZiB0aGlz IHdpbGwgYmVjb21lIGEgY29udGFpbmVyIGFzc2lnbm1lbnQuCisgKiBub0Vycm9yCQkJVHJ1ZSBm b3IgcmV0dXJuIE5VTEwgd2l0aCBubyBlcnJvciwgaWYgdGhlIGNvbnRhaW5lciB0eXBlCisgKiAJ CQkJCWlzIG5vdCBzdWJzY3JpcHRhYmxlLgogICovCiBTdWJzY3JpcHRpbmdSZWYgKgogdHJhbnNm b3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCkBAIC0yNDUsMTMgKzI0 NywxNSBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1v ZCwKIAkJCQkJCQkgTGlzdCAqKmluZGlyZWN0aW9uLAotCQkJCQkJCSBib29sIGlzQXNzaWdubWVu dCkKKwkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJIGJvb2wgbm9FcnJvcikKIHsK IAlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZjsKIAljb25zdCBTdWJzY3JpcHRSb3V0aW5lcyAqc2Jz cm91dGluZXM7CiAJT2lkCQkJZWxlbWVudFR5cGU7CiAJYm9vbAkJaXNTbGljZSA9IGZhbHNlOwog CUxpc3RDZWxsICAgKmlkeDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9sZW5ndGggPSBsaXN0X2xlbmd0 aCgqaW5kaXJlY3Rpb24pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBjb250YWlu ZXIgdHlwZSwgc21hc2hpbmcgYW55IGRvbWFpbi4gIEluIHRoZQpAQCAtMjY3LDExICsyNzEsMTYg QEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICov CiAJc2Jzcm91dGluZXMgPSBnZXRTdWJzY3JpcHRpbmdSb3V0aW5lcyhjb250YWluZXJUeXBlLCAm ZWxlbWVudFR5cGUpOwogCWlmICghc2Jzcm91dGluZXMpCisJeworCQlpZiAobm9FcnJvcikKKwkJ CXJldHVybiBOVUxMOworCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVz IGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAogCQkJCQkJZm9ybWF0 X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBleHByTG9jYXRpb24oY29udGFpbmVyQmFzZSkpKSk7CisJfQogCiAJLyoKIAkgKiBEZXRlY3Qg d2hldGhlciBhbnkgb2YgdGhlIGluZGlyZWN0aW9uIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJz LgpAQCAtMjgyLDkgKzI5MSw5IEBAIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlB X0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJTm9kZQkgICAq YWkgPSBsZmlyc3QoaWR4KTsKIAotCQlpZiAoYWktPmlzX3NsaWNlKQorCQlpZiAoSXNBKGFpLCBB X0luZGljZXMpICYmIGNhc3ROb2RlKEFfSW5kaWNlcywgYWkpLT5pc19zbGljZSkKIAkJewogCQkJ aXNTbGljZSA9IHRydWU7CiAJCQlicmVhazsKQEAgLTMxMiw2ICszMjEsMzIgQEAgdHJhbnNmb3Jt Q29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJc2Jzcm91dGluZXMtPnRy YW5zZm9ybShzYnNyZWYsIGluZGlyZWN0aW9uLCBwc3RhdGUsCiAJCQkJCQkgICBpc1NsaWNlLCBp c0Fzc2lnbm1lbnQpOwogCisJLyoKKwkgKiBFcnJvciBvdXQsIGlmIGRhdGF0eXBlIGZhaWxlZCB0 byBjb25zdW1lIGFueSBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkgKi8KKwlpZiAobGlzdF9sZW5n dGgoKmluZGlyZWN0aW9uKSA9PSBpbmRpcmVjdGlvbl9sZW5ndGgpCisJeworCQlOb2RlCSAgICpp bmQgPSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24pOworCisJCWlmIChub0Vycm9yKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJaWYgKElzQShpbmQsIFN0cmluZykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidHlw ZSAlcyBkb2VzIG5vdCBzdXBwb3J0IGRvdCBub3RhdGlvbiIsCisJCQkJCQkJZm9ybWF0X3R5cGVf YmUoY29udGFpbmVyVHlwZSkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhw ckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkpOworCQllbHNlIGlmIChJc0EoaW5kLCBBX0luZGlj ZXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9N SVNNQVRDSCksCisJCQkJCSBlcnJtc2coInR5cGUgJXMgZG9lcyBub3Qgc3VwcG9ydCBhcnJheSBz dWJzY3JpcHRpbmciLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKGNvbnRhaW5lclR5cGUpKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJCYXNl KSkpKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgaW5kaXJlY3Rpb24gb3BlcmF0 aW9uOiAlZCIsIG5vZGVUYWcoaW5kKSk7CisJfQorCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290IGEg dmFsaWQgdHlwZSAodGhpcyBkZWZlbmRzLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25lCiAJ ICogdXNpbmcgYXJyYXlfc3Vic2NyaXB0X2hhbmRsZXIgYXMgdHlwc3Vic2NyaXB0IHdpdGhvdXQg c2V0dGluZyB0eXBlbGVtKS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0Njc1YTUy MzA0NS4uM2VmNTg5N2YyZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkzNyw3 ICs5MzcsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCSAgY29udGFpbmVyVHlw TW9kLAogCQkJCQkJCQkJCSAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJICB0cnVlKTsKKwkJCQkJ CQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlTmVlZGVkID0gc2JzcmVm LT5yZWZyZXN0eXBlOwogCXR5cG1vZE5lZWRlZCA9IHNic3JlZi0+cmVmdHlwbW9kOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5c3Vicy5jCmluZGV4IDIzNGMyYzI3OGMxLi5kMDNkMzUxOWRmZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheXN1YnMuYwpAQCAtNjIsNiArNjIsNyBAQCBhcnJheV9zdWJzY3JpcHRf dHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5kZXhw ciA9IE5JTDsKIAlMaXN0CSAgICpsb3dlckluZGV4cHIgPSBOSUw7CiAJTGlzdENlbGwgICAqaWR4 OworCWludAkJCW5kaW07CiAKIAkvKgogCSAqIFRyYW5zZm9ybSB0aGUgc3Vic2NyaXB0IGV4cHJl c3Npb25zLCBhbmQgc2VwYXJhdGUgdXBwZXIgYW5kIGxvd2VyCkBAIC03Myw5ICs3NCwxNCBAQCBh cnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqLwog CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJQV9JbmRpY2VzICAqYWk7CiAJCU5vZGUJICAgKnN1 YmV4cHI7CiAKKwkJaWYgKCFJc0EobGZpcnN0KGlkeCksIEFfSW5kaWNlcykpCisJCQlicmVhazsK KworCQlhaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwogCQlpZiAoaXNTbGljZSkK IAkJewogCQkJaWYgKGFpLT5saWR4KQpAQCAtMTQ1LDE0ICsxNTEsMTUgQEAgYXJyYXlfc3Vic2Ny aXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZmxvd2Vy aW5kZXhwciA9IGxvd2VySW5kZXhwcjsKIAogCS8qIFZlcmlmeSBzdWJzY3JpcHQgbGlzdCBsZW5n dGhzIGFyZSB3aXRoaW4gaW1wbGVtZW50YXRpb24gbGltaXQgKi8KLQlpZiAobGlzdF9sZW5ndGgo dXBwZXJJbmRleHByKSA+IE1BWERJTSkKKwluZGltID0gbGlzdF9sZW5ndGgodXBwZXJJbmRleHBy KTsKKwlpZiAobmRpbSA+IE1BWERJTSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBh cnJheSBkaW1lbnNpb25zICglZCkgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglZCkiLAog CQkJCQkJbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQg bm90IGNoZWNrIGxvd2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKLQkqaW5kaXJlY3Rpb24gPSBO SUw7CisJKmluZGlyZWN0aW9uID0gbGlzdF9kZWxldGVfZmlyc3RfbigqaW5kaXJlY3Rpb24sIG5k aW0pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3Jp cHRpbmcgb3BlcmF0aW9uLiAgSXQncyB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5j CmluZGV4IDhhZDZhYTFhZDRmLi5hMGQzOGEwZmQ4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1 YnMuYwpAQCAtNTUsOSArNTUsMTQgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3Jp cHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsK LQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5k aWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJFeHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgp LCBBX0luZGljZXMpKQorCQkJYnJlYWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMs IGlkeCk7CisKIAkJaWYgKGlzU2xpY2UpCiAJCXsKIAkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlk eCA/IGFpLT51aWR4IDogYWktPmxpZHg7CkBAIC0xNjAsNyArMTY1LDkgQEAganNvbmJfc3Vic2Ny aXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnJlc3R5 cGUgPSBKU09OQk9JRDsKIAlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOwogCi0JKmluZGlyZWN0aW9u ID0gTklMOworCS8qIFJlbW92ZSBwcm9jZXNzZWQgZWxlbWVudHMgKi8KKwlpZiAodXBwZXJJbmRl eHByKQorCQkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwg bGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aAppbmRleCA1OGE0YjlkZjE1Ny4uNWNjM2NlNThjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aApAQCAtMzYyLDcgKzM2Miw4IEBAIGV4dGVybiBTdWJzY3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNv bnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJCSBPaWQg Y29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAogCQkJ CQkJCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3Np Z25tZW50KTsKKwkJCQkJCQkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJCQkJCQkJ IGJvb2wgbm9FcnJvcik7CiBleHRlcm4gQ29uc3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfTk9ERV9IICov Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000006eee59063cd8e278--