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 1tDYEo-001X1y-Gv for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Nov 2024 00:06:31 +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 1tDYEn-000lKM-0Y for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Nov 2024 00:06:29 +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 1tDYEm-000lKB-Em for pgsql-hackers@lists.postgresql.org; Wed, 20 Nov 2024 00:06:28 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tDYEg-002pek-Lm for pgsql-hackers@postgresql.org; Wed, 20 Nov 2024 00:06:27 +0000 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-a9a0ef5179dso245933866b.1 for ; Tue, 19 Nov 2024 16:06:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732061180; x=1732665980; darn=postgresql.org; h=cc:to:in-reply-to:content-language:subject:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=I/GOJRckX4D9FWR26HCFGxPjiFo32Y+iPd+H6ju3/Hs=; b=bBJxeByOJbNfxHGH/oBE5HQL1Ek3ykCNDa/BQuImGtGWlDke/BWS03dlB6Ru1ehwRK XhAVQnGd16Qx8bftkYyjsJTDmSAbWeX7sh0XQGyNaynqec8tSjd7r0iU6rdoGOHG5ifG Zw+fuK2mxY82kzFIoEqtUfQvOH2tlED33NVixHRGY/KJBoTBzpcLFFLDiq5jVQAfLfIh D5XEWFX0Y+j4SBIvmTHKkyyELtGb2csKK5KqtPYwszMjryB/ylQtpzQtjUPSkkrpNr4L EW9KFNjuHCP+X0ja3B9MVNB4gvCwD8/UqLP9I/XgwI44uuTKTsfkSsK2ve+oAfn+8ALM t6bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732061180; x=1732665980; h=cc:to:in-reply-to:content-language:subject:from:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=I/GOJRckX4D9FWR26HCFGxPjiFo32Y+iPd+H6ju3/Hs=; b=mrKVzHir03lQV6790VqT08NBlUxSNkjkqGfb0RVmjeSjPqYgdVhVyc7vFluxPThl5E pZ1BVHosOO6ria1d6YcZZQV2S6Qxhx9hPA8Sm6PYuxqJm3DcmwLDrQ/jFwfqLRJkOWtw qXOyKMlRKkyq77ijFt4AcegnYqZxLVHQLmyZPROybVifobqtrtMhRwgGMC1bt/vnb9aB QX33nxrJb6UWsEqlFDHJpRn8GRvtRzZwKex/MQScSdE37GGzBpVNTkA/p2jt8tgfmmfi +m76XGzsdmUSJOHEjs9Nh7DeQLh3rA9yyhH31GwCKP8r286GetIL+xUALKoyDOzw07qa zwpg== X-Gm-Message-State: AOJu0YyV4gF6B18mwdQ1YNvrr9SDCd4Z3wBu4Hs/Z5up9J9mnJJ+Hmee pG4t6x+ZMVsxpZFaO/v6OFBR7AhSO/e4JzcSnmp9BWHD4+DR4+fC X-Gm-Gg: ASbGncvkpchr4XbYJAcavhnLNedZ+1JcHCzl2o4xvV6kV/yMrVaJWfBVdTjFBiGqpSI 845quRuQcEU4hgAN15+N3e6JItCfWULZuSDjW6P/YSTHaiZMCQ5pD2cHCCnlFZ46hV6G/Z7b4gm VwIz0zKLtv3zOHT4RypP9587hlraRZ0K37uz4rlfk7cxbjN5IArxuA6PjBMaSu++fzYLjBQG8G0 qkOkbXvyRtEH5qIRCOlc+WMMx+6ncMD1BqYYuQ5tlJjzWqdtUpbln2Y X-Google-Smtp-Source: AGHT+IHMzrmLyf/OTs9jwTo6R4b1rpTJRStvf94ZPaQ+d2ClE7JvjCNTaiNyWJxMfkO4ZbwkqD5cLg== X-Received: by 2002:a17:907:703:b0:a9a:296:b501 with SMTP id a640c23a62f3a-aa4dd56a83bmr55377466b.26.1732061179500; Tue, 19 Nov 2024 16:06:19 -0800 (PST) Received: from [192.168.0.105] ([188.235.32.34]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa20df571a1sm703206366b.80.2024.11.19.16.06.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 19 Nov 2024 16:06:18 -0800 (PST) Content-Type: multipart/mixed; boundary="------------PzZBhU9E1AzbpH4GCSf6m0aM" Message-ID: Date: Wed, 20 Nov 2024 03:06:16 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Nikita Glukhov Subject: Re: SQL:2023 JSON simplified accessor support Content-Language: en-US In-Reply-To: To: Alexandra Wang , Peter Eisentraut Cc: PostgreSQL Hackers , Andrew Dunstan , "David E. Wheeler" , jian he List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: multipart/alternative; boundary="------------DFoGLVMqwGXzsDpVoudPX0nY" --------------DFoGLVMqwGXzsDpVoudPX0nY Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, hackers. I have implemented dot notation for jsonb using type subscripting back in April 2023, but failed post it because I left Postgres Professional company soon after and have not worked anywhere since, not even had any interest in programming. But yesterday I accidentally decided to look what is going on at commitfests and found this thread.  I immediately started to rebase code from PG16, fixed some bugs, and now I'm ready to present my version of the patches which is much more complex. Unfortunately, I probably won't be able to devote that much time to the patches as before. Description of the patches: 1. Allow transformation only of a sublist of subscripts This gives ability to custom subscripting code to consume only the supported prefix of the subscripts list.  Remaining subscripts are applied to the result of subscription which can be of different data type. Example of behavior change for hstore which always consumes only the first subscript and returns text:   =# select (hstore 'foo=>bar')['foo']['bar'];   -ERROR:  hstore allows only one subscript   +ERROR:  cannot subscript type text because it does not support subscripting 2. GUC compat_field_notation disables treating of field selection as a function application (non-standard PG feature) if the column data type supports subscripting. Example for function hstore_hash(hstore)   (after patch #4 applied):   =# set compat_field_notation = on;   =# select (hstore 'foo=>bar,hstore_hash=>123').hstore_hash; -- function    hstore_hash   ------------    -1718799972   =# select (hstore 'foo=>bar,hstore_hash=>123').foo;    foo   -----    bar   =# set compat_field_notation = off; -- default   =# select (hstore 'foo=>bar').hstore_hash; -- missing key    hstore_hash   -------------   =# select (hstore 'foo=>bar,hstore_hash=>123').hstore_hash;    hstore_hash   -------------    123 3. Enable processing of field accessors by generic subscripting code. Field accessors are represented as String nodes in refupperexprs for distinguishing from ordinary text subscripts which can be needed for correct EXPLAIN. Strings node seem to no longer be a valid expression nodes, so I had to add quite ugly handling for them in nodeFuncs etc during rebase to PG18. 4. Implement read-only dot notation for hstore (see example above). 5. Enable processing of .* by generic subscripting (similary to #3) 6. Export jsonPathFromParseResult(): simple refactoring for #7. 7. Implement read-only dot notation for jsonb using jsonpath. A list of subscripts is converted to jsonpath using JsonPathParseItem. Non-constant array accessors are replaced with jsonpath parameters. TODO: - wildcard array accessor [*] - item methods There is some inconsistency in subscripting in jsonpath, which supports only arrays with numeric indexes, and existing generic subscripting for jsonb, which also supports indexing of objects by string keys.   -- JSON_QUERY(jb, '$.a["b"]')   =# select (jsonb '{"a": {"b": 1}}').a['b'];    a   ---   NULL   -- JSON_QUERY(jb, '$.a')['b'] = generic subscripting after JSON_QUERY   =# select ((jsonb '{"a": {"b": 1}}').a)['b'];    a   ---    1 So, I think it would be good to enable subscripting of objects by strings in jsonpath. 8. Extract transformColumnRefInternal(): simple refactoring for #9 9. Enable non-parenthesized column references in dot notation. I think such patch needs a separate thread. This feature, required by the SQL standard, is implemented by calling transformColumnRefInternal() in a loop and passing different prefixes of the field chain.  But I'm not sure how correct this is, I simply tried to preserve compatibility with existing name resolution rules. For example, for A.B.C.D.E we will try the following variants of splitting to column reference and indirections:  (A.B.C.D).E = db A, schema B, table C, column D  (A.B.C).D.E = schema A, table B, column C  (A.B).C.D.E = table A, column B (A).B.C.D.E is not tried because by the SQL standard column reference in dot notation should be prefixed with table name. Although it would be very nice to write "jb.key" instead of "tab.jb.key". There is also an inconsistency in execution when the accessor chain is separated by parentheses. Example:   (jb).a [0]  =>  JSON_QUERY(jb, '$.a[0]')  ((jb).a)[0]  =>  JSON_QUERY(jb, '$.a') [0]   =# select (jsonb '[{"a": 1}, {"a": 2}]').a[0];      a   --------    [1, 2]    - jsonpath '$.a' returns two items: 1, 2    - jsonpath '[0]' returns the same items due to auto array wrapping    - items wrapped into array   =# select ((jsonb '[{"a": 1}, {"a": 2}]').a)[0];    a   ---    1    - JSON_QUERY(jb, '$.a') returns array [1, 2],    - generic subscript '[0]' extracts its first element The problem could be solved if we somehow allowed intermediate jsonpaths to return unwrapped items sequences (like SRF). Also I think it would be an interesting task to implement the assignment to JSON using dot notation, but it is unclear what to do here with .* and [*]. --------------DFoGLVMqwGXzsDpVoudPX0nY Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hi, hackers.

I have implemented dot notation for jsonb using type subscripting back
in April 2023, but failed post it because I left Postgres Professional
company soon after and have not worked anywhere since, not even had
any interest in programming.

But yesterday I accidentally decided to look what is going on at
commitfests and found this thread.  I immediately started to rebase
code from PG16, fixed some bugs, and now I'm ready to present my
version of the patches which is much more complex.

Unfortunately, I probably won't be able to devote that much time to
the patches as before.



Description of the patches:

1. Allow transformation only of a sublist of subscripts

This gives ability to custom subscripting code to consume only the
supported prefix of the subscripts list.  Remaining subscripts are
applied to the result of subscription which can be of different data
type.

Example of behavior change for hstore which always consumes only the
first subscript and returns text:

  =# select (hstore 'foo=>bar')['foo']['bar'];
  -ERROR:  hstore allows only one subscript
  +ERROR:  cannot subscript type text because it does not support subscripting


2. GUC compat_field_notation disables treating of field selection as a
function application (non-standard PG feature) if the column data type
supports subscripting.

Example for function hstore_hash(hstore)   (after patch #4 applied):

  =# set compat_field_notation = on;
  =# select (hstore 'foo=>bar,hstore_hash=>123').hstore_hash; -- function
   hstore_hash
  ------------
   -1718799972

  =# select (hstore 'foo=>bar,hstore_hash=>123').foo;
   foo
  -----
   bar

  =# set compat_field_notation = off; -- default
  =# select (hstore 'foo=>bar').hstore_hash; -- missing key
   hstore_hash
  -------------


  =# select (hstore 'foo=>bar,hstore_hash=>123').hstore_hash;
   hstore_hash
  -------------
   123


3. Enable processing of field accessors by generic subscripting code.

Field accessors are represented as String nodes in refupperexprs for
distinguishing from ordinary text subscripts which can be needed for
correct EXPLAIN.

Strings node seem to no longer be a valid expression nodes, so I
had to add quite ugly handling for them in nodeFuncs etc during rebase
to PG18.


4. Implement read-only dot notation for hstore (see example above).

5. Enable processing of .* by generic subscripting (similary to #3)

6. Export jsonPathFromParseResult(): simple refactoring for #7.

7. Implement read-only dot notation for jsonb using jsonpath.

A list of subscripts is converted to jsonpath using 
JsonPathParseItem.  Non-constant array accessors are replaced with
jsonpath parameters.


TODO: 
  - wildcard array accessor [*]
  - item methods


There is some inconsistency in subscripting in jsonpath, which
supports only arrays with numeric indexes, and existing generic
subscripting for jsonb, which also supports indexing of objects by
string keys.

  -- JSON_QUERY(jb, '$.a["b"]')
  =# select (jsonb '{"a": {"b": 1}}').a['b'];
   a
  ---
  NULL

  -- JSON_QUERY(jb, '$.a')['b'] = generic subscripting after JSON_QUERY
  =# select ((jsonb '{"a": {"b": 1}}').a)['b'];
   a
  ---
   1

So, I think it would be good to enable subscripting of objects by
strings in jsonpath.


8. Extract transformColumnRefInternal(): simple refactoring for #9

9. Enable non-parenthesized column references in dot notation.

I think such patch needs a separate thread.

This feature, required by the SQL standard, is implemented by calling
transformColumnRefInternal() in a loop and passing different prefixes
of the field chain.  But I'm not sure how correct this is, I simply
tried to preserve compatibility with existing name resolution rules.

For example, for A.B.C.D.E we will try the following variants of
splitting to column reference and indirections:

 (A.B.C.D).E = db A, schema B, table C, column D
 (A.B.C).D.E = schema A, table B, column C
 (A.B).C.D.E = table A, column B

(A).B.C.D.E is not tried because by the SQL standard column reference 
in dot notation should be prefixed with table name. Although it would 
be very nice to write "jb.key" instead of "tab.jb.key".





There is also an inconsistency in execution when the accessor chain is
separated by parentheses. 

Example:

  (jb).a [0]  =>  JSON_QUERY(jb, '$.a[0]')
 ((jb).a)[0]  =>  JSON_QUERY(jb, '$.a') [0]

  =# select (jsonb '[{"a": 1}, {"a": 2}]').a[0];
     a
  --------
   [1, 2]

   - jsonpath '$.a' returns two items: 1, 2
   - jsonpath '[0]' returns the same items due to auto array wrapping
   - items wrapped into array

  =# select ((jsonb '[{"a": 1}, {"a": 2}]').a)[0];
   a
  ---
   1

   - JSON_QUERY(jb, '$.a') returns array [1, 2],
   - generic subscript '[0]' extracts its first element


The problem could be solved if we somehow allowed intermediate
jsonpaths to return unwrapped items sequences (like SRF).



Also I think it would be an interesting task to implement the 
assignment to JSON using dot notation, but it is unclear what to do 
here with .* and [*].




    
--------------DFoGLVMqwGXzsDpVoudPX0nY-- --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0001-Allow-transformation-only-of-a-sublist-of-subscri.patch" Content-Disposition: attachment; filename*0="v6-0001-Allow-transformation-only-of-a-sublist-of-subscri.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkNGRmMWMxZGI2ZDY0NjUxYmIwZjczNTg1NjFjYTg0MjMxYTU1MDkwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IEZyaSwgMTQgT2N0IDIwMjIgMTU6MzU6MjIgKzAzMDAKU3ViamVj dDogW1BBVENIIHY2IDAxLzExXSBBbGxvdyB0cmFuc2Zvcm1hdGlvbiBvbmx5IG9mIGEgc3Vi bGlzdCBvZiBzdWJzY3JpcHRzCgotLS0KIGNvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9y ZS5vdXQgfCAgNCArKystCiBjb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jICAgICAgIHwg MTEgKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgfCAg OSArKysrLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMgICAgfCAgNCAr Ky0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgIHwgIDUgKysrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYyAgfCAgNSArKystLQogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jICB8ICA2ICsrKystLQogc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmggICB8ICAyICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oICAgIHwgIDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwg MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQv aHN0b3JlLm91dCBiL2NvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9yZS5vdXQKaW5kZXgg MTgzNmM5YWNmMzkuLjllMjQyMTc1MGZiIDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9l eHBlY3RlZC9oc3RvcmUub3V0CisrKyBiL2NvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9y ZS5vdXQKQEAgLTE2MDUsNyArMTYwNSw5IEBAIHNlbGVjdCBmMlsnZCddLCBmMlsneCddIGlz IG51bGwgYXMgeF9pc251bGwgZnJvbSB0ZXN0X2pzb25fYWdnOwogKDMgcm93cykKIAogc2Vs ZWN0IGYyWydkJ11bJ2UnXSBmcm9tIHRlc3RfanNvbl9hZ2c7ICAtLSBlcnJvcgotRVJST1I6 ICBoc3RvcmUgYWxsb3dzIG9ubHkgb25lIHN1YnNjcmlwdAorRVJST1I6ICBjYW5ub3Qgc3Vi c2NyaXB0IHR5cGUgdGV4dCBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0 aW5nCitMSU5FIDE6IHNlbGVjdCBmMlsnZCddWydlJ10gZnJvbSB0ZXN0X2pzb25fYWdnOwor ICAgICAgICAgICAgICAgXgogc2VsZWN0IGYyWydkJzonZSddIGZyb20gdGVzdF9qc29uX2Fn ZzsgIC0tIGVycm9yCiBFUlJPUjogIGhzdG9yZSBhbGxvd3Mgb25seSBvbmUgc3Vic2NyaXB0 CiB1cGRhdGUgdGVzdF9qc29uX2FnZyBzZXQgZjJbJ2QnXSA9IGYyWydlJ10sIGYyWyd4J10g PSAneHl6enknOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyBi L2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMKaW5kZXggMTQ0M2Q4NjM0YjIuLmVmZGQw ZjIyYWMxIDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCisrKyBi L2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMKQEAgLTQwLDcgKzQwLDcgQEAKICAqLwog c3RhdGljIHZvaWQKIGhzdG9yZV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1Jl ZiAqc2JzcmVmLAotCQkJCQkJICAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkgICBMaXN0 ICoqaW5kaXJlY3Rpb24sCiAJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkg ICBib29sIGlzU2xpY2UsCiAJCQkJCQkgICBib29sIGlzQXNzaWdubWVudCkKQEAgLTQ5LDE3 ICs0OSwyMCBAQCBoc3RvcmVfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYg KnNic3JlZiwKIAlOb2RlCSAgICpzdWJleHByOwogCiAJLyogV2Ugc3VwcG9ydCBvbmx5IHNp bmdsZS1zdWJzY3JpcHQsIG5vbi1zbGljZSBjYXNlcyAqLwotCWlmIChpc1NsaWNlIHx8IGxp c3RfbGVuZ3RoKGluZGlyZWN0aW9uKSAhPSAxKQorCWlmIChpc1NsaWNlIHx8IGxpc3RfbGVu Z3RoKCppbmRpcmVjdGlvbikgPCAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJoc3RvcmUg YWxsb3dzIG9ubHkgb25lIHN1YnNjcmlwdCIpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLAotCQkJCQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICopIGluZGlyZWN0aW9uKSkp KTsKKwkJCQkJCQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSAqaW5kaXJlY3Rpb24pKSkpOwog CiAJLyogVHJhbnNmb3JtIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiB0byB0eXBlIHRleHQg Ki8KLQlhaSA9IGxpbml0aWFsX25vZGUoQV9JbmRpY2VzLCBpbmRpcmVjdGlvbik7CisJYWkg PSBsaW5pdGlhbF9ub2RlKEFfSW5kaWNlcywgKmluZGlyZWN0aW9uKTsKIAlBc3NlcnQoYWkt PnVpZHggIT0gTlVMTCAmJiBhaS0+bGlkeCA9PSBOVUxMICYmICFhaS0+aXNfc2xpY2UpOwog CisJLyogaHN0b3JlIGFsbG93cyBvbmx5IG9uZSBzdWJzY3JpcHQgKi8KKwkqaW5kaXJlY3Rp b24gPSBsaXN0X2RlbGV0ZV9maXJzdCgqaW5kaXJlY3Rpb24pOworCiAJc3ViZXhwciA9IHRy YW5zZm9ybUV4cHIocHN0YXRlLCBhaS0+dWlkeCwgcHN0YXRlLT5wX2V4cHJfa2luZCk7CiAJ LyogSWYgaXQncyBub3QgdGV4dCBhbHJlYWR5LCB0cnkgdG8gY29lcmNlICovCiAJc3ViZXhw ciA9IGNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwppbmRleCBjMjgwNjI5N2FhNC4uN2Q1N2JkZTgxMzQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtNDY2LDE0ICs0NjYsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQlBc3NlcnQoSXNB KG4sIFN0cmluZykpOwogCiAJCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMg ZmllbGQgc2VsZWN0aW9uICovCi0JCQlpZiAoc3Vic2NyaXB0cykKKwkJCXdoaWxlIChzdWJz Y3JpcHRzKQogCQkJCXJlc3VsdCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNj cmlwdHMocHN0YXRlLAogCQkJCQkJCQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJ CQkJICAgZXhwclR5cGUocmVzdWx0KSwKIAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2Qo cmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkJCSAgIHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJCQkJ CQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKLQkJCXN1YnNj cmlwdHMgPSBOSUw7CiAKIAkJCW5ld3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0 ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEobiksCkBAIC00ODgsMTIgKzQ4NywxMiBAQCB0 cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24g KmluZCkKIAkJfQogCX0KIAkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFu eSAqLwotCWlmIChzdWJzY3JpcHRzKQorCXdoaWxlIChzdWJzY3JpcHRzKQogCQlyZXN1bHQg PSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKIAkJCQkJ CQkJCQkJCQkgICByZXN1bHQsCiAJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVzdWx0KSwK IAkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJICAg c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkJ CQkgICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2Rl LmMKaW5kZXggOTM2MWI1MjUyZDguLmEyNGFlNzgzYjVmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ub2RlLmMKQEAgLTI0NCw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3Jp cHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFzZSwK IAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5 cE1vZCwKLQkJCQkJCQkgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJIExpc3QgKippbmRp cmVjdGlvbiwKIAkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQpCiB7CiAJU3Vic2NyaXB0aW5n UmVmICpzYnNyZWY7CkBAIC0yODAsNyArMjgwLDcgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vi c2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogZWxlbWVudC4gIElmIGFueSBvZiB0 aGUgaXRlbXMgYXJlIHNsaWNlIHNwZWNpZmllcnMgKGxvd2VyOnVwcGVyKSwgdGhlbgogCSAq IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBtZWFucyBhIGNvbnRhaW5lciBzbGljZSBvcGVy YXRpb24uCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVhY2goaWR4 LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFf SW5kaWNlcywgaWR4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDc2 YmY4OGMzY2EyLi45YmVkNTQ1ZWIwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQu YwpAQCAtOTM2LDkgKzkzNiwxMiBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJICBiYXNlbm9kZSwKIAkJCQkJCQkJCQkg IGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBNb2QsCi0JCQkJCQkJ CQkJICBzdWJzY3JpcHRzLAorCQkJCQkJCQkJCSAgJnN1YnNjcmlwdHMsCiAJCQkJCQkJCQkJ ICB0cnVlKTsKIAorCWlmIChzdWJzY3JpcHRzKQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0 aW5nIGFzc2lnbm1lbnQgaXMgbm90IHN1cHBvcnRlZCIpOworCiAJdHlwZU5lZWRlZCA9IHNi c3JlZi0+cmVmcmVzdHlwZTsKIAl0eXBtb2ROZWVkZWQgPSBzYnNyZWYtPnJlZnR5cG1vZDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCmluZGV4IDZmNjhkZmE1YjIzLi5kNTkw ZmRiNjk1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpAQCAtNTMsNyArNTMs NyBAQCB0eXBlZGVmIHN0cnVjdCBBcnJheVN1YldvcmtzcGFjZQogICovCiBzdGF0aWMgdm9p ZAogYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwK LQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkgIExpc3QgKippbmRpcmVjdGlv biwKIAkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBib29sIGlzU2xpY2Us CiAJCQkJCQkgIGJvb2wgaXNBc3NpZ25tZW50KQpAQCAtNzAsNyArNzAsNyBAQCBhcnJheV9z dWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqIGluZGly ZWN0aW9uIGl0ZW1zIHRvIHNsaWNlcyBieSB0cmVhdGluZyB0aGUgc2luZ2xlIHN1YnNjcmlw dCBhcyB0aGUKIAkgKiB1cHBlciBib3VuZCBhbmQgc3VwcGx5aW5nIGFuIGFzc3VtZWQgbG93 ZXIgYm91bmQgb2YgMS4KIAkgKi8KLQlmb3JlYWNoKGlkeCwgaW5kaXJlY3Rpb24pCisJZm9y ZWFjaChpZHgsICppbmRpcmVjdGlvbikKIAl7CiAJCUFfSW5kaWNlcyAgKmFpID0gbGZpcnN0 X25vZGUoQV9JbmRpY2VzLCBpZHgpOwogCQlOb2RlCSAgICpzdWJleHByOwpAQCAtMTUxLDYg KzE1MSw3IEBAIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsCiAJCQkJCQlsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpLCBNQVhESU0pKSk7CiAJ LyogV2UgbmVlZCBub3QgY2hlY2sgbG93ZXJJbmRleHByIHNlcGFyYXRlbHkgKi8KIAorCQkq aW5kaXJlY3Rpb24gPSBOSUw7CiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBl IG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uLiAgSXQncyB0aGUgc2FtZQogCSAqIGFz IHRoZSBhcnJheSB0eXBlIGlmIHdlJ3JlIHNsaWNpbmcsIGVsc2UgaXQncyB0aGUgZWxlbWVu dCB0eXBlLiAgSW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1 YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwppbmRleCAyYjAzNzEz MWM5MS4uZDM3ZWUwMDRlMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKQEAg LTQxLDcgKzQxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UKICAqLwog c3RhdGljIHZvaWQKIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBMaXN0ICoq aW5kaXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9v bCBpc1NsaWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTUzLDcgKzUzLDcg QEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwK IAkgKiBUcmFuc2Zvcm0gYW5kIGNvbnZlcnQgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9ucy4g SnNvbmIgc3Vic2NyaXB0aW5nCiAJICogZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sg b25seSBhbmQgdGhlIHVwcGVyIGluZGV4LgogCSAqLwotCWZvcmVhY2goaWR4LCBpbmRpcmVj dGlvbikKKwlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKIAkJQV9JbmRpY2VzICAq YWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CiAJCU5vZGUJICAgKnN1YkV4cHI7 CkBAIC0xNTksNiArMTU5LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3Jp cHRpbmdSZWYgKnNic3JlZiwKIAkvKiBEZXRlcm1pbmUgdGhlIHJlc3VsdCB0eXBlIG9mIHRo ZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdheXMganNvbmIgKi8KIAlzYnNyZWYtPnJl ZnJlc3R5cGUgPSBKU09OQk9JRDsKIAlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOworCisJKmlu ZGlyZWN0aW9uID0gTklMOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvc3Vic2NyaXB0aW5nLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaApp bmRleCA1OTcyMDliYTQyZC4uMTFhOGVhOWMxZTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3N1YnNjcmlwdGluZy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlw dGluZy5oCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBTdWJzY3JpcHRFeGVjU3RlcHM7CiAg KiBhc3NpZ25tZW50IG11c3QgcmV0dXJuLgogICovCiB0eXBlZGVmIHZvaWQgKCpTdWJzY3Jp cHRUcmFuc2Zvcm0pIChTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCQkJCUxpc3Qg KmluZGlyZWN0aW9uLAorCQkJCQkJCQkJTGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJCQkJ c3RydWN0IFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCWJvb2wgaXNTbGljZSwKIAkJ CQkJCQkJCWJvb2wgaXNBc3NpZ25tZW50KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmlu ZGV4IDIzNzVlOTVjMTA3Li4xOTViZDRkY2NiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oCkBAIC0zNzAsNyArMzcwLDcgQEAgZXh0ZXJuIFN1YnNjcmlwdGluZ1JlZiAqdHJhbnNm b3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJ CQkJIE5vZGUgKmNvbnRhaW5lckJhc2UsCiAJCQkJCQkJCQkJCQkJIE9pZCBjb250YWluZXJU eXBlLAogCQkJCQkJCQkJCQkJCSBpbnQzMiBjb250YWluZXJUeXBNb2QsCi0JCQkJCQkJCQkJ CQkJIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rp b24sCiAJCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50KTsKIGV4dGVybiBDb25zdCAq bWFrZV9jb25zdChQYXJzZVN0YXRlICpwc3RhdGUsIEFfQ29uc3QgKmFjb25zdCk7CiAKLS0g CjIuMjUuMQoK --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0002-Add-GUC-compat_field_notation.patch" Content-Disposition: attachment; filename="v6-0002-Add-GUC-compat_field_notation.patch" Content-Transfer-Encoding: base64 RnJvbSA1MDUyNjBlYWU4MDg2YjZiYWJiZGVlOWI0ZWFmYzk1ZjcyOGJkMWNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjoxOTo1MSArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDIvMTFdIEFkZCBHVUMgY29tcGF0X2ZpZWxkX25vdGF0aW9uCgotLS0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgfCAxMSArKysrKysrKysrKwogc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDEz IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA3ZDU3YmRl ODEzNC4uMWM4YzQxNDk3OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDIs NiArNDIsNyBAQAogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogYm9vbAkJVHJhbnNmb3JtX251 bGxfZXF1YWxzID0gZmFsc2U7Citib29sCQljb21wYXRfZmllbGRfbm90YXRpb24gPSBmYWxz ZTsKIAogCiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpleHByKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK aW5kZXggOGE2N2YwMTIwMGMuLjA2Mjk0ZWRhMWY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYwpAQCAtMjA3Niw2ICsyMDc2LDE3IEBAIHN0cnVjdCBjb25maWdfYm9v bCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJ eworCQl7ImNvbXBhdF9maWVsZF9ub3RhdGlvbiIsIFBHQ19VU0VSU0VULCBDT01QQVRfT1BU SU9OU19QUkVWSU9VUywKKwkJCWdldHRleHRfbm9vcCgiR2l2ZSBhIHByZWZlcmVuY2UgdG8g ZnVuY3Rpb24gZmllbGQgbm90YXRpb24gb3ZlciBnZW5lcmljIHR5cGUgc3Vic2NyaXB0aW5n LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZjb21wYXRfZmllbGRf bm90YXRpb24sCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVu ZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBO VUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX2V4cHIuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgK aW5kZXggOWI0NmRmZDllY2MuLmYxZjQ3OWZhNTZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfZXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9l eHByLmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVy biBQR0RMTElNUE9SVCBib29sIFRyYW5zZm9ybV9udWxsX2VxdWFsczsKK2V4dGVybiBQR0RM TElNUE9SVCBib29sIGNvbXBhdF9maWVsZF9ub3RhdGlvbjsKIAogZXh0ZXJuIE5vZGUgKnRy YW5zZm9ybUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBQYXJzZUV4cHJL aW5kIGV4cHJLaW5kKTsKIAotLSAKMi4yNS4xCgo= --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0003-Pass-field-accessors-to-generic-subscripting.patch" Content-Disposition: attachment; filename*0="v6-0003-Pass-field-accessors-to-generic-subscripting.patch" Content-Transfer-Encoding: base64 RnJvbSA2Y2UzYjkyZDYxN2IxODNkNzU3N2RjNGI2MzBhNmVmOTkzYWZjM2NkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjoyMToyMCArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDMvMTFdIFBhc3MgZmllbGQgYWNjZXNzb3JzIHRvIGdlbmVyaWMgc3Vi c2NyaXB0aW5nCgotLS0KIGNvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMgICAgICAgfCA0 MyArKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgIHwg MjQgKysrKysrLS0KIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgfCA3MyAr KysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxh dGUuYyB8IDIyICsrKysrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAg fCA5NiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ub2RlLmMgICAgfCAzOSArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYyAgfCAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 c3Vicy5jICB8IDE0ICsrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMg IHwgMTEgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICB8IDI5ICsr KysrKy0tLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICB8ICAzICstCiAx MSBmaWxlcyBjaGFuZ2VkLCAyODIgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyBiL2NvbnRyaWIvaHN0 b3JlL2hzdG9yZV9zdWJzLmMKaW5kZXggZWZkZDBmMjJhYzEuLjMwNGNlZThjMDI0IDEwMDY0 NAotLS0gYS9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCisrKyBiL2NvbnRyaWIvaHN0 b3JlL2hzdG9yZV9zdWJzLmMKQEAgLTQ1LDcgKzQ1LDcgQEAgaHN0b3JlX3N1YnNjcmlwdF90 cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJCQkgICBib29sIGlzU2xp Y2UsCiAJCQkJCQkgICBib29sIGlzQXNzaWdubWVudCkKIHsKLQlBX0luZGljZXMgICphaTsK KwlOb2RlCSAgICppbmQgPSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24pOwogCU5vZGUJICAgKnN1 YmV4cHI7CiAKIAkvKiBXZSBzdXBwb3J0IG9ubHkgc2luZ2xlLXN1YnNjcmlwdCwgbm9uLXNs aWNlIGNhc2VzICovCkBAIC01NiwyNyArNTYsMzQgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFu c2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsCiAJCQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgKmluZGlyZWN0aW9u KSkpKTsKIAotCS8qIFRyYW5zZm9ybSB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gdG8gdHlw ZSB0ZXh0ICovCi0JYWkgPSBsaW5pdGlhbF9ub2RlKEFfSW5kaWNlcywgKmluZGlyZWN0aW9u KTsKLQlBc3NlcnQoYWktPnVpZHggIT0gTlVMTCAmJiBhaS0+bGlkeCA9PSBOVUxMICYmICFh aS0+aXNfc2xpY2UpOworCWlmIChJc0EoaW5kLCBBX0luZGljZXMpKQorCXsKKwkJQV9JbmRp Y2VzICAqYWkgPSBjYXN0Tm9kZShBX0luZGljZXMsIGluZCk7CisKKwkJLyogVHJhbnNmb3Jt IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiB0byB0eXBlIHRleHQgKi8KKwkJYWkgPSBsaW5p dGlhbF9ub2RlKEFfSW5kaWNlcywgKmluZGlyZWN0aW9uKTsKKwkJQXNzZXJ0KGFpLT51aWR4 ICE9IE5VTEwgJiYgYWktPmxpZHggPT0gTlVMTCAmJiAhYWktPmlzX3NsaWNlKTsKKworCQlz dWJleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhw cl9raW5kKTsKKwkJLyogSWYgaXQncyBub3QgdGV4dCBhbHJlYWR5LCB0cnkgdG8gY29lcmNl ICovCisJCXN1YmV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLAorCQkJCQkJ CQkJCXN1YmV4cHIsIGV4cHJUeXBlKHN1YmV4cHIpLAorCQkJCQkJCQkJCVRFWFRPSUQsIC0x LAorCQkJCQkJCQkJCUNPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkJQ09FUkNFX0lN UExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJLTEpOworCQlpZiAoc3ViZXhwciA9PSBOVUxMKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCisJCQkJCSBlcnJtc2coImhzdG9yZSBzdWJzY3JpcHQgbXVzdCBoYXZlIHR5cGUg dGV4dCIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9u KGFpLT51aWR4KSkpKTsKKwl9CisJZWxzZQorCQlyZXR1cm47CiAKIAkvKiBoc3RvcmUgYWxs b3dzIG9ubHkgb25lIHN1YnNjcmlwdCAqLwogCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRl X2ZpcnN0KCppbmRpcmVjdGlvbik7CiAKLQlzdWJleHByID0gdHJhbnNmb3JtRXhwcihwc3Rh dGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKLQkvKiBJZiBpdCdzIG5vdCB0 ZXh0IGFscmVhZHksIHRyeSB0byBjb2VyY2UgKi8KLQlzdWJleHByID0gY29lcmNlX3RvX3Rh cmdldF90eXBlKHBzdGF0ZSwKLQkJCQkJCQkJCXN1YmV4cHIsIGV4cHJUeXBlKHN1YmV4cHIp LAotCQkJCQkJCQkJVEVYVE9JRCwgLTEsCi0JCQkJCQkJCQlDT0VSQ0lPTl9BU1NJR05NRU5U LAotCQkJCQkJCQkJQ09FUkNFX0lNUExJQ0lUX0NBU1QsCi0JCQkJCQkJCQktMSk7Ci0JaWYg KHN1YmV4cHIgPT0gTlVMTCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkgZXJybXNnKCJoc3RvcmUgc3Vic2NyaXB0 IG11c3QgaGF2ZSB0eXBlIHRleHQiKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKGFpLT51aWR4KSkpKTsKLQogCS8qIC4uLiBhbmQgc3RvcmUgdGhl IHRyYW5zZm9ybWVkIHN1YnNjcmlwdCBpbnRvIHRoZSBTdWJzY3JpcHRSZWYgbm9kZSAqLwog CXNic3JlZi0+cmVmdXBwZXJpbmRleHByID0gbGlzdF9tYWtlMShzdWJleHByKTsKIAlzYnNy ZWYtPnJlZmxvd2VyaW5kZXhwciA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmlu ZGV4IDhmN2E1MzQwMDU5Li5hNjY1NmI3ZmFjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCkBAIC0zMTg5LDkgKzMxODksMTUgQEAgRXhlY0luaXRTdWJzY3JpcHRpbmdSZWYoRXhw ckV2YWxTdGVwICpzY3JhdGNoLCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkJewogCQkJ c2JzcmVmc3RhdGUtPnVwcGVycHJvdmlkZWRbaV0gPSB0cnVlOwogCQkJLyogRWFjaCBzdWJz Y3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50cnkgKi8KLQkJ CUV4ZWNJbml0RXhwclJlYyhlLCBzdGF0ZSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPnVwcGVy aW5kZXhbaV0sCi0JCQkJCQkJJnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSk7CisJ CQlpZiAoSXNBKGUsIFN0cmluZykpCisJCQl7CisJCQkJc2JzcmVmc3RhdGUtPnVwcGVyaW5k ZXhbaV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHN0clZhbChlKSk7CisJCQkJc2JzcmVmc3Rh dGUtPnVwcGVyaW5kZXhudWxsW2ldID0gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQkJRXhl Y0luaXRFeHByUmVjKGUsIHN0YXRlLAorCQkJCQkJCQkmc2JzcmVmc3RhdGUtPnVwcGVyaW5k ZXhbaV0sCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleG51bGxbaV0pOwogCQl9 CiAJCWkrKzsKIAl9CkBAIC0zMjEyLDkgKzMyMTgsMTUgQEAgRXhlY0luaXRTdWJzY3JpcHRp bmdSZWYoRXhwckV2YWxTdGVwICpzY3JhdGNoLCBTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwK IAkJewogCQkJc2JzcmVmc3RhdGUtPmxvd2VycHJvdmlkZWRbaV0gPSB0cnVlOwogCQkJLyog RWFjaCBzdWJzY3JpcHQgaXMgZXZhbHVhdGVkIGludG8gYXBwcm9wcmlhdGUgYXJyYXkgZW50 cnkgKi8KLQkJCUV4ZWNJbml0RXhwclJlYyhlLCBzdGF0ZSwKLQkJCQkJCQkmc2JzcmVmc3Rh dGUtPmxvd2VyaW5kZXhbaV0sCi0JCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4bnVs bFtpXSk7CisJCQlpZiAoSXNBKGUsIFN0cmluZykpCisJCQl7CisJCQkJc2JzcmVmc3RhdGUt Pmxvd2VyaW5kZXhbaV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHN0clZhbChlKSk7CisJCQkJ c2JzcmVmc3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldID0gZmFsc2U7CisJCQl9CisJCQllbHNl CisJCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAorCQkJCQkJCQkmc2JzcmVmc3RhdGUt Pmxvd2VyaW5kZXhbaV0sCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleG51bGxb aV0pOwogCQl9CiAJCWkrKzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9u b2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDMwNjA4 NDdiMTMzLi4yYmFmNzcwMmVlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTIxNzEs MTIgKzIxNzEsMjggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUs CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQl7CiAJCQkJU3Vic2NyaXB0aW5nUmVm ICpzYnNyZWYgPSAoU3Vic2NyaXB0aW5nUmVmICopIG5vZGU7CisJCQkJTGlzdENlbGwgICAq bGM7CisKKwkJCQkvKgorCQkJCSAqIFJlY3Vyc2UgZGlyZWN0bHkgZm9yIHVwcGVyL2xvd2Vy IGNvbnRhaW5lciBpbmRleCBsaXN0cywKKwkJCQkgKiBza2lwcGluZyBTdHJpbmcgc3Vic2Ny aXB0cyB1c2VkIGZvciBkb3Qgbm90YXRpb24uCisJCQkJICovCisJCQkJZm9yZWFjaChsYywg c2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCisJCQkJeworCQkJCQlOb2RlCSAgICpleHByID0g bGZpcnN0KGxjKTsKKworCQkJCQlpZiAoZXhwciAmJiAhSXNBKGV4cHIsIFN0cmluZykgJiYg V0FMSyhleHByKSkKKwkJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKworCQkJCWZvcmVhY2go bGMsIHNic3JlZi0+cmVmbG93ZXJpbmRleHByKQorCQkJCXsKKwkJCQkJTm9kZQkgICAqZXhw ciA9IGxmaXJzdChsYyk7CisKKwkJCQkJaWYgKGV4cHIgJiYgIUlzQShleHByLCBTdHJpbmcp ICYmIFdBTEsoZXhwcikpCisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CiAKLQkJCQkvKiBy ZWN1cnNlIGRpcmVjdGx5IGZvciB1cHBlci9sb3dlciBjb250YWluZXIgaW5kZXggbGlzdHMg Ki8KLQkJCQlpZiAoTElTVF9XQUxLKHNic3JlZi0+cmVmdXBwZXJpbmRleHByKSkKLQkJCQkJ cmV0dXJuIHRydWU7Ci0JCQkJaWYgKExJU1RfV0FMSyhzYnNyZWYtPnJlZmxvd2VyaW5kZXhw cikpCi0JCQkJCXJldHVybiB0cnVlOwogCQkJCS8qIHdhbGtlciBtdXN0IHNlZSB0aGUgcmVm ZXhwciBhbmQgcmVmYXNzZ25leHByLCBob3dldmVyICovCiAJCQkJaWYgKFdBTEsoc2JzcmVm LT5yZWZleHByKSkKIAkJCQkJcmV0dXJuIHRydWU7CkBAIC0zMDY5LDEyICszMDg1LDUxIEBA IGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCXsKIAkJCQlT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZTsKIAkJ CQlTdWJzY3JpcHRpbmdSZWYgKm5ld25vZGU7CisJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJ TGlzdAkgICAqZXhwcnMgPSBOSUw7CiAKIAkJCQlGTEFUQ09QWShuZXdub2RlLCBzYnNyZWYs IFN1YnNjcmlwdGluZ1JlZik7Ci0JCQkJTVVUQVRFKG5ld25vZGUtPnJlZnVwcGVyaW5kZXhw ciwgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIsCi0JCQkJCSAgIExpc3QgKik7Ci0JCQkJTVVU QVRFKG5ld25vZGUtPnJlZmxvd2VyaW5kZXhwciwgc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIs Ci0JCQkJCSAgIExpc3QgKik7CisKKwkJCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVy aW5kZXhwcikKKwkJCQl7CisJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMpOworCisJ CQkJCWlmIChleHByICYmIElzQShleHByLCBTdHJpbmcpKQorCQkJCQl7CisJCQkJCQlTdHJp bmcJICAgKnN0cjsKKworCQkJCQkJRkxBVENPUFkoc3RyLCBleHByLCBTdHJpbmcpOworCQkJ CQkJZXhwciA9IChOb2RlICopIHN0cjsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQlleHBy ID0gbXV0YXRvcihleHByLCBjb250ZXh0KTsKKworCQkJCQlleHBycyA9IGxhcHBlbmQoZXhw cnMsIGV4cHIpOworCQkJCX0KKworCQkJCW5ld25vZGUtPnJlZnVwcGVyaW5kZXhwciA9IGV4 cHJzOworCisJCQkJZXhwcnMgPSBOSUw7CisKKwkJCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJl Zmxvd2VyaW5kZXhwcikKKwkJCQl7CisJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMp OworCisJCQkJCWlmIChleHByICYmIElzQShleHByLCBTdHJpbmcpKQorCQkJCQl7CisJCQkJ CQlTdHJpbmcJICAgKnN0cjsKKworCQkJCQkJRkxBVENPUFkoc3RyLCBleHByLCBTdHJpbmcp OworCQkJCQkJZXhwciA9IChOb2RlICopIHN0cjsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJ CQlleHByID0gbXV0YXRvcihleHByLCBjb250ZXh0KTsKKworCQkJCQlleHBycyA9IGxhcHBl bmQoZXhwcnMsIGV4cHIpOworCQkJCX0KKworCQkJCW5ld25vZGUtPnJlZmxvd2VyaW5kZXhw ciA9IGV4cHJzOworCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJlZmV4cHIsIHNic3JlZi0+cmVm ZXhwciwKIAkJCQkJICAgRXhwciAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+cmVmYXNzZ25l eHByLCBzYnNyZWYtPnJlZmFzc2duZXhwciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jb2xsYXRlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0 ZS5jCmluZGV4IDQ0NTI5YmI0OWU2Li5iZTgzN2ZmZjM0OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY29sbGF0ZS5jCkBAIC02ODAsMTEgKzY4MCwyNSBAQCBhc3NpZ25fY29sbGF0aW9u c193YWxrZXIoTm9kZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4 dCkKIAkJCQkJCQkgKiBjb250cmlidXRlIGFueXRoaW5nLikKIAkJCQkJCQkgKi8KIAkJCQkJ CQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZTsK KwkJCQkJCQlMaXN0Q2VsbCAgKmxjOworCisJCQkJCQkJLyogc2tpcCBTdHJpbmcgc3Vic2Ny aXB0cyB1c2VkIGZvciBkb3Qgbm90YXRpb24gKi8KKwkJCQkJCQlmb3JlYWNoKGxjLCBzYnNy ZWYtPnJlZnVwcGVyaW5kZXhwcikKKwkJCQkJCQl7CisJCQkJCQkJCU5vZGUJICAgKmV4cHIg PSBsZmlyc3QobGMpOworCisJCQkJCQkJCWlmIChleHByICYmICFJc0EoZXhwciwgU3RyaW5n KSkKKwkJCQkJCQkJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMoY29udGV4dC0+cHN0YXRlLCBl eHByKTsKKwkJCQkJCQl9CisKKwkJCQkJCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZmxvd2Vy aW5kZXhwcikKKwkJCQkJCQl7CisJCQkJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMp OworCisJCQkJCQkJCWlmIChleHByICYmICFJc0EoZXhwciwgU3RyaW5nKSkKKwkJCQkJCQkJ CWFzc2lnbl9leHByX2NvbGxhdGlvbnMoY29udGV4dC0+cHN0YXRlLCBleHByKTsKKwkJCQkJ CQl9CiAKLQkJCQkJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKGNvbnRleHQtPnBzdGF0ZSwK LQkJCQkJCQkJCQkJCSAgIChOb2RlICopIHNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKLQkJ CQkJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKGNvbnRleHQtPnBzdGF0ZSwKLQkJCQkJCQkJ CQkJCSAgIChOb2RlICopIHNic3JlZi0+cmVmbG93ZXJpbmRleHByKTsKIAkJCQkJCQkodm9p ZCkgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2VyKChOb2RlICopIHNic3JlZi0+cmVmZXhwciwK IAkJCQkJCQkJCQkJCQkJCSZsb2Njb250ZXh0KTsKIAkJCQkJCQkodm9pZCkgYXNzaWduX2Nv bGxhdGlvbnNfd2Fsa2VyKChOb2RlICopIHNic3JlZi0+cmVmYXNzZ25leHByLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKaW5kZXggMWM4YzQxNDk3OTguLjczNWQ1Yzg4NzI5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTQ2MiwxOSArNDYyLDc4IEBAIHRyYW5zZm9y bUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQog CQl9CiAJCWVsc2UKIAkJewotCQkJTm9kZQkgICAqbmV3cmVzdWx0OwotCiAJCQlBc3NlcnQo SXNBKG4sIFN0cmluZykpOwogCi0JCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRo aXMgZmllbGQgc2VsZWN0aW9uICovCi0JCQl3aGlsZSAoc3Vic2NyaXB0cykKLQkJCQlyZXN1 bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKLQkJ CQkJCQkJCQkJCQkJCSAgIHJlc3VsdCwKLQkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBlKHJl c3VsdCksCi0JCQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJ CQkJCQkJCQkgICAmc3Vic2NyaXB0cywKLQkJCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJ CWlmIChjb21wYXRfZmllbGRfbm90YXRpb24pCisJCQl7CisJCQkJLyogdHJ5IHRvIHByb2Nl c3Mgc3Vic2NyaXB0cyBiZWZvcmUgdGhpcyBmaWVsZCBzZWxlY3Rpb24gKi8KKwkJCQlMaXN0 CSAgICpuZXdzdWJzY3JpcHRzID0gbGlzdF9jb3B5KHN1YnNjcmlwdHMpOworCQkJCU5vZGUJ ICAgKm5ld3Jlc3VsdCA9IHJlc3VsdDsKKworCQkJCXdoaWxlIChuZXdzdWJzY3JpcHRzKQor CQkJCQluZXdyZXN1bHQgPSAoTm9kZSAqKQorCQkJCQkJdHJhbnNmb3JtQ29udGFpbmVyU3Vi c2NyaXB0cyhwc3RhdGUsCisJCQkJCQkJCQkJCQkJIG5ld3Jlc3VsdCwKKwkJCQkJCQkJCQkJ CQkgZXhwclR5cGUobmV3cmVzdWx0KSwKKwkJCQkJCQkJCQkJCQkgZXhwclR5cG1vZChuZXdy ZXN1bHQpLAorCQkJCQkJCQkJCQkJCSAmbmV3c3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkg ZmFsc2UsCisJCQkJCQkJCQkJCQkJIGZhbHNlKTsKKworCQkJCW5ld3Jlc3VsdCA9IFBhcnNl RnVuY09yQ29sdW1uKHBzdGF0ZSwKKwkJCQkJCQkJCQkJICBsaXN0X21ha2UxKG4pLAorCQkJ CQkJCQkJCQkgIGxpc3RfbWFrZTEobmV3cmVzdWx0KSwKKwkJCQkJCQkJCQkJICBsYXN0X3Ny ZiwKKwkJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJ CQkgIGxvY2F0aW9uKTsKKwkJCQlpZiAobmV3cmVzdWx0ICE9IE5VTEwpCisJCQkJeworCQkJ CQlyZXN1bHQgPSBuZXdyZXN1bHQ7CisJCQkJCXN1YnNjcmlwdHMgPSBuZXdzdWJzY3JpcHRz OworCQkJCQljb250aW51ZTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIEZhaWxlZCB0byBj b25zdW1lIGZpZWxkIHNlbGVjdCwgYWRkIGl0IHRvIHRoZSBsaXN0CisJCQkJICogZm9yIHRy eWluZyBnZW5lcmljIHN1YnNjcmlwdGluZyBsYXRlci4KKwkJCQkgKi8KKwkJCX0KIAorCQkJ c3Vic2NyaXB0cyA9IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7CisJCX0KKwl9CisKKwkvKiBw cm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLworCXdoaWxlIChzdWJzY3Jp cHRzKQorCXsKKwkJTm9kZQkgICAqbmV3cmVzdWx0ID0gKE5vZGUgKikKKwkJCXRyYW5zZm9y bUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRlLAorCQkJCQkJCQkJCSByZXN1bHQsCisJCQkJ CQkJCQkJIGV4cHJUeXBlKHJlc3VsdCksCisJCQkJCQkJCQkJIGV4cHJUeXBtb2QocmVzdWx0 KSwKKwkJCQkJCQkJCQkgJnN1YnNjcmlwdHMsCisJCQkJCQkJCQkJIGZhbHNlLAorCQkJCQkJ CQkJCSAhY29tcGF0X2ZpZWxkX25vdGF0aW9uKTsKKworCQlpZiAoIW5ld3Jlc3VsdCkKKwkJ eworCQkJLyogZ2VuZXJpYyBzdWJzY3JpcHRpbmcgZmFpbGVkICovCisJCQlOb2RlCSAgICpu OworCisJCQlBc3NlcnQoIWNvbXBhdF9maWVsZF9ub3RhdGlvbik7CisJCQlBc3NlcnQoc3Vi c2NyaXB0cyk7CisKKwkJCW4gPSBsaW5pdGlhbChzdWJzY3JpcHRzKTsKKworCQkJaWYgKCFJ c0EobiwgU3RyaW5nKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImNhbm5vdCBzdWJzY3JpcHQg dHlwZSAlcyBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0aW5nIiwKKwkJ CQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKHJlc3VsdCkpKSwKKwkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHJlc3VsdCkpKSk7CisKKwkJCS8qIHRy eSB0byBmaW5kIGZ1bmN0aW9uIGZvciBmaWVsZCBzZWxlY3Rpb24gKi8KIAkJCW5ld3Jlc3Vs dCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEo biksCiAJCQkJCQkJCQkJICBsaXN0X21ha2UxKHJlc3VsdCksCkBAIC00ODIsMTkgKzU0MSwx NiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJl Y3Rpb24gKmluZCkKIAkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKIAkJ CQkJCQkJCQkgIGxvY2F0aW9uKTsKLQkJCWlmIChuZXdyZXN1bHQgPT0gTlVMTCkKKworCQkJ aWYgKCFuZXdyZXN1bHQpCiAJCQkJdW5rbm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1bHQs IHN0clZhbChuKSwgbG9jYXRpb24pOwotCQkJcmVzdWx0ID0gbmV3cmVzdWx0OworCisJCQkv KiBjb25zdW1lIGZpZWxkIHNlbGVjdCAqLworCQkJc3Vic2NyaXB0cyA9IGxpc3RfZGVsZXRl X2ZpcnN0KHN1YnNjcmlwdHMpOwogCQl9CisKKwkJcmVzdWx0ID0gbmV3cmVzdWx0OwogCX0K LQkvKiBwcm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLwotCXdoaWxlIChz dWJzY3JpcHRzKQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJz Y3JpcHRzKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJCQkJCQkJCQkJ ICAgZXhwclR5cGUocmVzdWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3Vs dCksCi0JCQkJCQkJCQkJCQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJICAgZmFs c2UpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9ub2RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmlu ZGV4IGEyNGFlNzgzYjVmLi4zZmUwZDQ1NGViNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9k ZS5jCkBAIC0yNDUsMTMgKzI0NSwxNSBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRz KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUsCiAJCQkJ CQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKIAkJCQkJCQkgTGlzdCAqKmluZGlyZWN0aW9u LAotCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCkKKwkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1l bnQsCisJCQkJCQkJIGJvb2wgbm9FcnJvcikKIHsKIAlTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZjsKIAljb25zdCBTdWJzY3JpcHRSb3V0aW5lcyAqc2Jzcm91dGluZXM7CiAJT2lkCQkJZWxl bWVudFR5cGU7CiAJYm9vbAkJaXNTbGljZSA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmlkeDsK KwlpbnQJCQlpbmRpcmVjdGlvbl9sZW5ndGggPSBsaXN0X2xlbmd0aCgqaW5kaXJlY3Rpb24p OwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBjb250YWluZXIgdHlwZSwgc21h c2hpbmcgYW55IGRvbWFpbi4gIEluIHRoZQpAQCAtMjY3LDExICsyNjksMTYgQEAgdHJhbnNm b3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICovCiAJc2Jz cm91dGluZXMgPSBnZXRTdWJzY3JpcHRpbmdSb3V0aW5lcyhjb250YWluZXJUeXBlLCAmZWxl bWVudFR5cGUpOwogCWlmICghc2Jzcm91dGluZXMpCisJeworCQlpZiAobm9FcnJvcikKKwkJ CXJldHVybiBOVUxMOworCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0 eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLAogCQkJ CQkJZm9ybWF0X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAogCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oY29udGFpbmVyQmFzZSkpKSk7CisJfQogCiAJ LyoKIAkgKiBEZXRlY3Qgd2hldGhlciBhbnkgb2YgdGhlIGluZGlyZWN0aW9uIGl0ZW1zIGFy ZSBzbGljZSBzcGVjaWZpZXJzLgpAQCAtMjgyLDkgKzI4OSw5IEBAIHRyYW5zZm9ybUNvbnRh aW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqLwogCWZvcmVhY2goaWR4 LCAqaW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFf SW5kaWNlcywgaWR4KTsKKwkJTm9kZQkgICAqYWkgPSBsZmlyc3QoaWR4KTsKIAotCQlpZiAo YWktPmlzX3NsaWNlKQorCQlpZiAoSXNBKGFpLCBBX0luZGljZXMpICYmIGNhc3ROb2RlKEFf SW5kaWNlcywgYWkpLT5pc19zbGljZSkKIAkJewogCQkJaXNTbGljZSA9IHRydWU7CiAJCQli cmVhazsKQEAgLTMxMiw2ICszMTksMzIgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0 cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJc2Jzcm91dGluZXMtPnRyYW5zZm9ybShzYnNyZWYs IGluZGlyZWN0aW9uLCBwc3RhdGUsCiAJCQkJCQkgICBpc1NsaWNlLCBpc0Fzc2lnbm1lbnQp OwogCisJLyoKKwkgKiBFcnJvciBvdXQsIGlmIGRhdGF0eW9lIGZhbGllZCB0byBjb25zdW1l IGFueSBpbmRpcmVjdGlvbiBlbGVtZW50cy4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoKmlu ZGlyZWN0aW9uKSA9PSBpbmRpcmVjdGlvbl9sZW5ndGgpCisJeworCQlOb2RlCSAgICppbmQg PSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24pOworCisJCWlmIChub0Vycm9yKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJaWYgKElzQShpbmQsIFN0cmluZykpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1z ZygidHlwZSAlcyBkb2VzIG5vdCBzdXBwb3J0IGNvbHVtbiBub3RhdGlvbiIsCisJCQkJCQkJ Zm9ybWF0X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkpOworCQllbHNlIGlm IChJc0EoaW5kLCBBX0luZGljZXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInR5cGUgJXMg ZG9lcyBub3Qgc3VwcG9ydCBhcnJheSBzdWJzY3JpcHRpbmciLAorCQkJCQkJCWZvcm1hdF90 eXBlX2JlKGNvbnRhaW5lclR5cGUpKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJCYXNlKSkpKTsKKwkJZWxzZQorCQkJZWxvZyhF UlJPUiwgImludmFsaWQgaW5kaXJlY3Rpb24gb3BlcmF0aW9uOiAlZCIsIG5vZGVUYWcoaW5k KSk7CisJfQorCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290IGEgdmFsaWQgdHlwZSAodGhpcyBk ZWZlbmRzLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25lCiAJICogdXNpbmcgYXJyYXlf c3Vic2NyaXB0X2hhbmRsZXIgYXMgdHlwc3Vic2NyaXB0IHdpdGhvdXQgc2V0dGluZyB0eXBl bGVtKS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA5YmVkNTQ1ZWIwMC4u MmRiY2ZkNzQ4OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkzNyw3 ICs5MzcsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJUeXBlLAogCQkJCQkJCQkJCSAgY29udGFp bmVyVHlwTW9kLAogCQkJCQkJCQkJCSAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJICB0cnVl KTsKKwkJCQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAlpZiAoc3Vi c2NyaXB0cykKIAkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGluZyBhc3NpZ25tZW50IGlzIG5v dCBzdXBwb3J0ZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwppbmRleCBkNTkw ZmRiNjk1OC4uYWIxOWVkZDViZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlzdWJzLmMK QEAgLTYxLDYgKzYxLDcgQEAgYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRp bmdSZWYgKnNic3JlZiwKIAlMaXN0CSAgICp1cHBlckluZGV4cHIgPSBOSUw7CiAJTGlzdAkg ICAqbG93ZXJJbmRleHByID0gTklMOwogCUxpc3RDZWxsICAgKmlkeDsKKwlpbnQJCQluZGlt OwogCiAJLyoKIAkgKiBUcmFuc2Zvcm0gdGhlIHN1YnNjcmlwdCBleHByZXNzaW9ucywgYW5k IHNlcGFyYXRlIHVwcGVyIGFuZCBsb3dlcgpAQCAtNzIsOSArNzMsMTQgQEAgYXJyYXlfc3Vi c2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlmb3Jl YWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKLQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rf bm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpz dWJleHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQorCQkJYnJl YWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisKIAkJaWYgKGlz U2xpY2UpCiAJCXsKIAkJCWlmIChhaS0+bGlkeCkKQEAgLTE0NCwxNCArMTUwLDE2IEBAIGFy cmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJc2Jz cmVmLT5yZWZsb3dlcmluZGV4cHIgPSBsb3dlckluZGV4cHI7CiAKIAkvKiBWZXJpZnkgc3Vi c2NyaXB0IGxpc3QgbGVuZ3RocyBhcmUgd2l0aGluIGltcGxlbWVudGF0aW9uIGxpbWl0ICov Ci0JaWYgKGxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwcikgPiBNQVhESU0pCisJbmRpbSA9IGxp c3RfbGVuZ3RoKHVwcGVySW5kZXhwcik7CisJaWYgKG5kaW0gPiBNQVhESU0pCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVE KSwKIAkJCQkgZXJybXNnKCJudW1iZXIgb2YgYXJyYXkgZGltZW5zaW9ucyAoJWQpIGV4Y2Vl ZHMgdGhlIG1heGltdW0gYWxsb3dlZCAoJWQpIiwKIAkJCQkJCWxpc3RfbGVuZ3RoKHVwcGVy SW5kZXhwciksIE1BWERJTSkpKTsKIAkvKiBXZSBuZWVkIG5vdCBjaGVjayBsb3dlckluZGV4 cHIgc2VwYXJhdGVseSAqLwogCi0JCSppbmRpcmVjdGlvbiA9IE5JTDsKKwkqaW5kaXJlY3Rp b24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwgbmRpbSk7CisKIAkvKgog CSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVy YXRpb24uICBJdCdzIHRoZSBzYW1lCiAJICogYXMgdGhlIGFycmF5IHR5cGUgaWYgd2UncmUg c2xpY2luZywgZWxzZSBpdCdzIHRoZSBlbGVtZW50IHR5cGUuICBJbgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCmluZGV4IGQzN2VlMDA0ZTE2Li42ZWNkMzIwYmM1MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtNTUsOSArNTUsMTQgQEAganNvbmJfc3Vi c2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlmb3Jl YWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKLQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rf bm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpz dWJFeHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQorCQkJYnJl YWs7CisKKwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisKIAkJaWYgKGlz U2xpY2UpCiAJCXsKIAkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlkeCA/IGFpLT51aWR4IDog YWktPmxpZHg7CkBAIC0xNjAsNyArMTY1LDkgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9y bShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09O Qk9JRDsKIAlzYnNyZWYtPnJlZnR5cG1vZCA9IC0xOwogCi0JKmluZGlyZWN0aW9uID0gTklM OworCS8qIFJlbW92ZSBwcm9jZXNzZWQgZWxlbWVudHMgKi8KKwlpZiAodXBwZXJJbmRleHBy KQorCQkqaW5kaXJlY3Rpb24gPSBsaXN0X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwg bGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKaW5kZXggYTM5MDY4ZDFiZjEuLmIwYjI1ZDhiOWU1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVk ZSAibm9kZXMvcGF0aG5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvc3Vic2NyaXB0aW5nLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgpAQCAtMTI4Mzgs MTcgKzEyODM5LDI5IEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCWxvd2xpc3RfaXRlbSA9IGxpc3RfaGVh ZChzYnNyZWYtPnJlZmxvd2VyaW5kZXhwcik7CS8qIGNvdWxkIGJlIE5VTEwgKi8KIAlmb3Jl YWNoKHVwbGlzdF9pdGVtLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikKIAl7Ci0JCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1snKTsKLQkJaWYgKGxvd2xpc3RfaXRlbSkKKwkJTm9k ZQkgICAqdXAgPSAoTm9kZSAqKSBsZmlyc3QodXBsaXN0X2l0ZW0pOworCisJCWlmIChJc0Eo dXAsIFN0cmluZykpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJy4nKTsK KwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHN0clZh bCh1cCkpKTsKKwkJfQorCQllbHNlCiAJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJ1snKTsKKwkJCWlmIChsb3dsaXN0X2l0ZW0pCisJCQl7CisJCQkJLyogSWYgc3ViZXhw cmVzc2lvbiBpcyBOVUxMLCBnZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCisJCQkJ Z2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QobG93bGlzdF9pdGVtKSwgY29udGV4dCwg ZmFsc2UpOworCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJzonKTsKKwkJCX0KIAkJ CS8qIElmIHN1YmV4cHJlc3Npb24gaXMgTlVMTCwgZ2V0X3J1bGVfZXhwciBwcmludHMgbm90 aGluZyAqLwotCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3QobG93bGlzdF9pdGVt KSwgY29udGV4dCwgZmFsc2UpOwotCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnOicp OwotCQkJbG93bGlzdF9pdGVtID0gbG5leHQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIsIGxv d2xpc3RfaXRlbSk7CisJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGxmaXJzdCh1cGxpc3Rf aXRlbSksIGNvbnRleHQsIGZhbHNlKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg J10nKTsKIAkJfQotCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5VTEwsIGdldF9ydWxlX2V4 cHIgcHJpbnRzIG5vdGhpbmcgKi8KLQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBsZmlyc3Qo dXBsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7Ci0JCWFwcGVuZFN0cmluZ0luZm9DaGFy KGJ1ZiwgJ10nKTsKKworCQlpZiAobG93bGlzdF9pdGVtKQorCQkJbG93bGlzdF9pdGVtID0g bG5leHQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIsIGxvd2xpc3RfaXRlbSk7CiAJfQogfQog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCAxOTViZDRkY2NiOC4uOWU0ZDQwNTZm MTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzcxLDcgKzM3MSw4IEBAIGV4 dGVybiBTdWJzY3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJCSBPaWQgY29udGFpbmVyVHlwZSwKIAkJ CQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAogCQkJCQkJCQkJCQkJCSBMaXN0 ICoqaW5kaXJlY3Rpb24sCi0JCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50KTsKKwkJ CQkJCQkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJCQkJCQkJIGJvb2wgbm9F cnJvcik7CiBleHRlcm4gQ29uc3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0NvbnN0ICphY29uc3QpOwogCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfTk9ERV9IICovCi0t IAoyLjI1LjEKCg== --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0004-Implement-read-only-dot-notation-for-hstore.patch" Content-Disposition: attachment; filename*0="v6-0004-Implement-read-only-dot-notation-for-hstore.patch" Content-Transfer-Encoding: base64 RnJvbSA1MjI5YTg0MDdkNDhkMWQ0ZmFkYzc2NTgxOWJiNmVkZWQxZjY4MGQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjozMjozNyArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDQvMTFdIEltcGxlbWVudCByZWFkLW9ubHkgZG90IG5vdGF0aW9uIGZv ciBoc3RvcmUKCi0tLQogY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQvaHN0b3JlLm91dCB8IDE0 ICsrKysrKysrKysrKystCiBjb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jICAgICAgIHwg MjUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQogY29udHJpYi9oc3RvcmUvc3FsL2hzdG9y ZS5zcWwgICAgICB8ICAyICsrCiAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9oc3RvcmUvZXhwZWN0ZWQv aHN0b3JlLm91dCBiL2NvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9yZS5vdXQKaW5kZXgg OWUyNDIxNzUwZmIuLjNkZDJiMmQ3MjgzIDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9l eHBlY3RlZC9oc3RvcmUub3V0CisrKyBiL2NvbnRyaWIvaHN0b3JlL2V4cGVjdGVkL2hzdG9y ZS5vdXQKQEAgLTE2MDQsMTIgKzE2MDQsMjAgQEAgc2VsZWN0IGYyWydkJ10sIGYyWyd4J10g aXMgbnVsbCBhcyB4X2lzbnVsbCBmcm9tIHRlc3RfanNvbl9hZ2c7CiAgICAgICAgIHwgdAog KDMgcm93cykKIAorc2VsZWN0IChmMikuZCwgKGYyKS54IGlzIG51bGwgYXMgeF9pc251bGwg ZnJvbSB0ZXN0X2pzb25fYWdnOworICAgZCAgICB8IHhfaXNudWxsIAorLS0tLS0tLS0rLS0t LS0tLS0tLQorIDEyMzQ1ICB8IHQKKyAtMTIzNDUgfCB0CisgICAgICAgIHwgdAorKDMgcm93 cykKKwogc2VsZWN0IGYyWydkJ11bJ2UnXSBmcm9tIHRlc3RfanNvbl9hZ2c7ICAtLSBlcnJv cgogRVJST1I6ICBjYW5ub3Qgc3Vic2NyaXB0IHR5cGUgdGV4dCBiZWNhdXNlIGl0IGRvZXMg bm90IHN1cHBvcnQgc3Vic2NyaXB0aW5nCiBMSU5FIDE6IHNlbGVjdCBmMlsnZCddWydlJ10g ZnJvbSB0ZXN0X2pzb25fYWdnOwogICAgICAgICAgICAgICAgXgogc2VsZWN0IGYyWydkJzon ZSddIGZyb20gdGVzdF9qc29uX2FnZzsgIC0tIGVycm9yCi1FUlJPUjogIGhzdG9yZSBhbGxv d3Mgb25seSBvbmUgc3Vic2NyaXB0CitFUlJPUjogIGhzdG9yZSBkb2VzIG5vdCBzdXBwb3J0 IHNsaWNpbmcKIHVwZGF0ZSB0ZXN0X2pzb25fYWdnIHNldCBmMlsnZCddID0gZjJbJ2UnXSwg ZjJbJ3gnXSA9ICd4eXp6eSc7CiBzZWxlY3QgZjIgZnJvbSB0ZXN0X2pzb25fYWdnOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCkBAIC0xNjE5LDYgKzE2MjcsMTAgQEAgc2VsZWN0IGYyIGZyb20gdGVzdF9qc29u X2FnZzsKICAiZCI9Pk5VTEwsICJ4Ij0+Inh5enp5IgogKDMgcm93cykKIAordXBkYXRlIHRl c3RfanNvbl9hZ2cgc2V0IGYyLmQgPSAoZjIpLngsIGYyLiIxMjMiID0gJ2FhYSc7CitFUlJP UjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgImQiIG9mIGNvbHVtbiAiZjIiIGJlY2F1c2Ug aXRzIHR5cGUgaHN0b3JlIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlCitMSU5FIDE6IHVwZGF0 ZSB0ZXN0X2pzb25fYWdnIHNldCBmMi5kID0gKGYyKS54LCBmMi4iMTIzIiA9ICdhYWEnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gVGVzdCBzdWJzY3JpcHRp bmcgaW4gcGxwZ3NxbAogZG8gJCQgZGVjbGFyZSBoIGhzdG9yZTsKIGJlZ2luIGhbJ2EnXSA6 PSAnYic7IHJhaXNlIG5vdGljZSAnaCA9ICUsIGhbYV0gPSAlJywgaCwgaFsnYSddOyBlbmQg JCQ7CmRpZmYgLS1naXQgYS9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jIGIvY29udHJp Yi9oc3RvcmUvaHN0b3JlX3N1YnMuYwppbmRleCAzMDRjZWU4YzAyNC4uN2MxMDZjMjI2OGUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMKKysrIGIvY29udHJp Yi9oc3RvcmUvaHN0b3JlX3N1YnMuYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJoc3RvcmUuaCIKKyNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNs dWRlICJub2Rlcy9zdWJzY3JpcHRpbmcuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29l cmNlLmgiCkBAIC00OCwxOCArNDksMjIgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0o U3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJTm9kZQkgICAqaW5kID0gbGluaXRpYWwoKmlu ZGlyZWN0aW9uKTsKIAlOb2RlCSAgICpzdWJleHByOwogCi0JLyogV2Ugc3VwcG9ydCBvbmx5 IHNpbmdsZS1zdWJzY3JpcHQsIG5vbi1zbGljZSBjYXNlcyAqLwotCWlmIChpc1NsaWNlIHx8 IGxpc3RfbGVuZ3RoKCppbmRpcmVjdGlvbikgPCAxKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkgZXJybXNn KCJoc3RvcmUgYWxsb3dzIG9ubHkgb25lIHN1YnNjcmlwdCIpLAotCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLAotCQkJCQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICopICppbmRp cmVjdGlvbikpKSk7CisJaWYgKCEqaW5kaXJlY3Rpb24pCisJCXJldHVybjsKIAogCWlmIChJ c0EoaW5kLCBBX0luZGljZXMpKQogCXsKIAkJQV9JbmRpY2VzICAqYWkgPSBjYXN0Tm9kZShB X0luZGljZXMsIGluZCk7CiAKKwkJLyogV2Ugc3VwcG9ydCBvbmx5IHNpbmdsZS1zdWJzY3Jp cHQsIG5vbi1zbGljZSBjYXNlcyAqLworCQlpZiAoYWktPmlzX3NsaWNlKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkgZXJybXNnKCJoc3RvcmUgZG9lcyBub3Qgc3VwcG9ydCBzbGljaW5nIiksCisJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJCWV4cHJMb2NhdGlv bigoTm9kZSAqKSAqaW5kaXJlY3Rpb24pKSkpOworCisKIAkJLyogVHJhbnNmb3JtIHRoZSBz dWJzY3JpcHQgZXhwcmVzc2lvbiB0byB0eXBlIHRleHQgKi8KIAkJYWkgPSBsaW5pdGlhbF9u b2RlKEFfSW5kaWNlcywgKmluZGlyZWN0aW9uKTsKIAkJQXNzZXJ0KGFpLT51aWR4ICE9IE5V TEwgJiYgYWktPmxpZHggPT0gTlVMTCAmJiAhYWktPmlzX3NsaWNlKTsKQEAgLTc4LDYgKzgz LDEyIEBAIGhzdG9yZV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2Jz cmVmLAogCQkJCQkgZXJybXNnKCJoc3RvcmUgc3Vic2NyaXB0IG11c3QgaGF2ZSB0eXBlIHRl eHQiKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihh aS0+dWlkeCkpKSk7CiAJfQorCWVsc2UgaWYgKElzQShpbmQsIFN0cmluZykpCisJeworCQlE YXR1bQkJZmllbGRfdHh0ID0gQ1N0cmluZ0dldFRleHREYXR1bShzdHJWYWwoaW5kKSk7CisK KwkJc3ViZXhwciA9IChOb2RlICopIG1ha2VDb25zdChURVhUT0lELCAtMSwgSW52YWxpZE9p ZCwgLTEsIGZpZWxkX3R4dCwgZmFsc2UsIGZhbHNlKTsKKwl9CiAJZWxzZQogCQlyZXR1cm47 CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlL3NxbC9oc3RvcmUuc3FsIGIvY29udHJp Yi9oc3RvcmUvc3FsL2hzdG9yZS5zcWwKaW5kZXggZWZlZjkxMjkyYTMuLjA1MDJhNjNhMjdl IDEwMDY0NAotLS0gYS9jb250cmliL2hzdG9yZS9zcWwvaHN0b3JlLnNxbAorKysgYi9jb250 cmliL2hzdG9yZS9zcWwvaHN0b3JlLnNxbApAQCAtMzc4LDEwICszNzgsMTIgQEAgc2VsZWN0 IGpzb25fYWdnKHEpIGZyb20gKHNlbGVjdCBmMSwgaHN0b3JlX3RvX2pzb25fbG9vc2UoZjIp IGFzIGYyIGZyb20gdGVzdF9qc28KIC0tIFRlc3Qgc3Vic2NyaXB0aW5nCiBpbnNlcnQgaW50 byB0ZXN0X2pzb25fYWdnIGRlZmF1bHQgdmFsdWVzOwogc2VsZWN0IGYyWydkJ10sIGYyWyd4 J10gaXMgbnVsbCBhcyB4X2lzbnVsbCBmcm9tIHRlc3RfanNvbl9hZ2c7CitzZWxlY3QgKGYy KS5kLCAoZjIpLnggaXMgbnVsbCBhcyB4X2lzbnVsbCBmcm9tIHRlc3RfanNvbl9hZ2c7CiBz ZWxlY3QgZjJbJ2QnXVsnZSddIGZyb20gdGVzdF9qc29uX2FnZzsgIC0tIGVycm9yCiBzZWxl Y3QgZjJbJ2QnOidlJ10gZnJvbSB0ZXN0X2pzb25fYWdnOyAgLS0gZXJyb3IKIHVwZGF0ZSB0 ZXN0X2pzb25fYWdnIHNldCBmMlsnZCddID0gZjJbJ2UnXSwgZjJbJ3gnXSA9ICd4eXp6eSc7 CiBzZWxlY3QgZjIgZnJvbSB0ZXN0X2pzb25fYWdnOwordXBkYXRlIHRlc3RfanNvbl9hZ2cg c2V0IGYyLmQgPSAoZjIpLngsIGYyLiIxMjMiID0gJ2FhYSc7CiAKIC0tIFRlc3Qgc3Vic2Ny aXB0aW5nIGluIHBscGdzcWwKIGRvICQkIGRlY2xhcmUgaCBoc3RvcmU7Ci0tIAoyLjI1LjEK Cg== --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0005-Allow-processing-of-.-by-generic-subscripting.patch" Content-Disposition: attachment; filename*0="v6-0005-Allow-processing-of-.-by-generic-subscripting.patch" Content-Transfer-Encoding: base64 RnJvbSA4MGFiM2RhMWM3NDhkZDFhYmU5ZmQ5ODBkOGRlMTg2MjQwN2Q4NjFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNToyNiArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDUvMTFdIEFsbG93IHByb2Nlc3Npbmcgb2YgLiogYnkgZ2VuZXJpYyBz dWJzY3JpcHRpbmcKCi0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgIHwg IDIgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICB8IDM0ICsrKysrKysr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIHwgNjAgKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIHwgIDYgKysrLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAg IHwgIDMgKysKIDUgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjdlYjk2Mzk2YWYuLmE4ZWU3OTUxOGNhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTE4ODg5LDYgKzE4ODg5LDcgQEAgY2hlY2tfZnVuY19uYW1l KExpc3QgKm5hbWVzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIHN0YXRpYyBMaXN0ICoK IGNoZWNrX2luZGlyZWN0aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcikKIHsKKyNpZiAwCiAJTGlzdENlbGwgKmw7CiAKIAlmb3JlYWNoKGwsIGluZGly ZWN0aW9uKQpAQCAtMTg4OTksNiArMTg5MDAsNyBAQCBjaGVja19pbmRpcmVjdGlvbihMaXN0 ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJcGFyc2VyX3l5 ZXJyb3IoImltcHJvcGVyIHVzZSBvZiBcIipcIiIpOwogCQl9CiAJfQorI2VuZGlmCiAJcmV0 dXJuIGluZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA3 MzVkNWM4ODcyOS4uM2VkMDE4NjRmNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpA QCAtNzUsNyArNzUsNiBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAgUGFyc2VOYW1l c3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJCQkJCSAgaW50IHN1YmxldmVsc191cCwgaW50IGxv Y2F0aW9uKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt VHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpOwogc3RhdGljIE5v ZGUgKnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRl Q2xhdXNlICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0 b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtMTU5LDcgKzE1OCw3IEBAIHRyYW5zZm9ybUV4 cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCWJyZWFrOwog CiAJCWNhc2UgVF9BX0luZGlyZWN0aW9uOgotCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5kaXJl Y3Rpb24ocHN0YXRlLCAoQV9JbmRpcmVjdGlvbiAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybUluZGlyZWN0aW9uKHBzdGF0ZSwgKEFfSW5kaXJlY3Rpb24gKikgZXhwciwgTlVM TCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CkBAIC00MzMsOCArNDMy LDkgQEAgdW5rbm93bl9hdHRyaWJ1dGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpyZWxy ZWYsIGNvbnN0IGNoYXIgKmF0dG5hbWUsCiAJfQogfQogCi1zdGF0aWMgTm9kZSAqCi10cmFu c2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmlu ZCkKK05vZGUgKgordHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0luZGlyZWN0aW9uICppbmQsCisJCQkJCSBib29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lv bikKIHsKIAlOb2RlCSAgICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAlOb2Rl CSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGluZC0+YXJnKTsK QEAgLTQ1NCwxMiArNDU0LDcgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCWlmIChJc0EobiwgQV9JbmRpY2VzKSkK IAkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlwdHMsIG4pOwogCQllbHNlIGlmIChJ c0EobiwgQV9TdGFyKSkKLQkJewotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJyb3cgZXhw YW5zaW9uIHZpYSBcIipcIiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUiKSwKLQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwotCQl9CisJCQlzdWJzY3JpcHRz ID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKIAkJZWxzZQogCQl7CiAJCQlBc3NlcnQoSXNB KG4sIFN0cmluZykpOwpAQCAtNTI2LDcgKzUyMSwyMSBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAogCQkJbiA9IGxp bml0aWFsKHN1YnNjcmlwdHMpOwogCi0JCQlpZiAoIUlzQShuLCBTdHJpbmcpKQorCQkJaWYg KElzQShuLCBBX1N0YXIpKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIGlmIHRyYWlsaW5nIHN0 YXIgZXhwYW5zaW9uIGlzIGFsbG93ZWQgKi8KKwkJCQlpZiAodHJhaWxpbmdfc3Rhcl9leHBh bnNpb24gJiYgbGlzdF9sZW5ndGgoc3Vic2NyaXB0cykgPT0gMSkKKwkJCQl7CisJCQkJCSp0 cmFpbGluZ19zdGFyX2V4cGFuc2lvbiA9IHRydWU7CisJCQkJCXJldHVybiByZXN1bHQ7CisJ CQkJfQorCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInJvdyBleHBhbnNpb24gdmlh IFwiKlwiIGlzIG5vdCBzdXBwb3J0ZWQgaGVyZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCQkJfQorCQkJZWxzZSBpZiAoIUlzQShuLCBT dHJpbmcpKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCiAJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVz IGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLApAQCAtNTUyLDYg KzU2MSw5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9J bmRpcmVjdGlvbiAqaW5kKQogCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CiAJfQogCisJaWYgKHRy YWlsaW5nX3N0YXJfZXhwYW5zaW9uKQorCQkqdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gPSBm YWxzZTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYwppbmRleCAyZGJjZmQ3NDg4Yi4uOTA0MWU0MjRlMWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdGFyZ2V0LmMKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9y bUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIHN0YXRpYyBMaXN0 ICpFeHBhbmRDb2x1bW5SZWZTdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpj cmVmLAogCQkJCQkJCQkgYm9vbCBtYWtlX3RhcmdldF9lbnRyeSk7CiBzdGF0aWMgTGlzdCAq RXhwYW5kQWxsVGFibGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgaW50IGxvY2F0aW9uKTsKLXN0 YXRpYyBMaXN0ICpFeHBhbmRJbmRpcmVjdGlvblN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0luZGlyZWN0aW9uICppbmQsCitzdGF0aWMgTm9kZSAqRXhwYW5kSW5kaXJlY3Rpb25TdGFy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAogCQkJCQkJCQkgICBi b29sIG1ha2VfdGFyZ2V0X2VudHJ5LCBQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKTsKIHN0YXRp YyBMaXN0ICpFeHBhbmRTaW5nbGVUYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFt ZXNwYWNlSXRlbSAqbnNpdGVtLAogCQkJCQkJCSAgIGludCBzdWJsZXZlbHNfdXAsIGludCBs b2NhdGlvbiwKQEAgLTEzNCw2ICsxMzQsNyBAQCB0cmFuc2Zvcm1UYXJnZXRMaXN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAlmb3JlYWNoKG9fdGFyZ2V0LCB0 YXJnZXRsaXN0KQogCXsKIAkJUmVzVGFyZ2V0ICAqcmVzID0gKFJlc1RhcmdldCAqKSBsZmly c3Qob190YXJnZXQpOworCQlOb2RlCSAgICp0cmFuc2Zvcm1lZCA9IE5VTEw7CiAKIAkJLyoK IAkJICogQ2hlY2sgZm9yICJzb21ldGhpbmcuKiIuICBEZXBlbmRpbmcgb24gdGhlIGNvbXBs ZXhpdHkgb2YgdGhlCkBAIC0xNjIsMTMgKzE2MywxOSBAQCB0cmFuc2Zvcm1UYXJnZXRMaXN0 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAogCQkJCWlmIChJc0Eo bGxhc3QoaW5kLT5pbmRpcmVjdGlvbiksIEFfU3RhcikpCiAJCQkJewotCQkJCQkvKiBJdCBp cyBzb21ldGhpbmcuKiwgZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KLQkJCQkJcF90 YXJnZXQgPSBsaXN0X2NvbmNhdChwX3RhcmdldCwKLQkJCQkJCQkJCQkgICBFeHBhbmRJbmRp cmVjdGlvblN0YXIocHN0YXRlLAotCQkJCQkJCQkJCQkJCQkJCSBpbmQsCi0JCQkJCQkJCQkJ CQkJCQkJIHRydWUsCi0JCQkJCQkJCQkJCQkJCQkJIGV4cHJLaW5kKSk7Ci0JCQkJCWNvbnRp bnVlOworCQkJCQlOb2RlCSAgICpjb2x1bW5zID0gRXhwYW5kSW5kaXJlY3Rpb25TdGFyKHBz dGF0ZSwKKwkJCQkJCQkJCQkJCQkJCQlpbmQsCisJCQkJCQkJCQkJCQkJCQkJdHJ1ZSwKKwkJ CQkJCQkJCQkJCQkJCQlleHByS2luZCk7CisKKwkJCQkJaWYgKElzQShjb2x1bW5zLCBMaXN0 KSkKKwkJCQkJeworCQkJCQkJLyogSXQgaXMgc29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11 bHRpcGxlIGl0ZW1zICovCisJCQkJCQlwX3RhcmdldCA9IGxpc3RfY29uY2F0KHBfdGFyZ2V0 LCAoTGlzdCAqKSBjb2x1bW5zKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisKKwkJCQkJ dHJhbnNmb3JtZWQgPSAoTm9kZSAqKSBjb2x1bW5zOwogCQkJCX0KIAkJCX0KIAkJfQpAQCAt MTgwLDcgKzE4Nyw3IEBAIHRyYW5zZm9ybVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICp0YXJnZXRsaXN0LAogCQlwX3RhcmdldCA9IGxhcHBlbmQocF90YXJnZXQsCiAJ CQkJCQkgICB0cmFuc2Zvcm1UYXJnZXRFbnRyeShwc3RhdGUsCiAJCQkJCQkJCQkJCQlyZXMt PnZhbCwKLQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQl0cmFuc2Zvcm1lZCwKIAkJ CQkJCQkJCQkJCWV4cHJLaW5kLAogCQkJCQkJCQkJCQkJcmVzLT5uYW1lLAogCQkJCQkJCQkJ CQkJZmFsc2UpKTsKQEAgLTI1MSwxMCArMjU4LDE1IEBAIHRyYW5zZm9ybUV4cHJlc3Npb25M aXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAKIAkJCWlmIChJc0Eo bGxhc3QoaW5kLT5pbmRpcmVjdGlvbiksIEFfU3RhcikpCiAJCQl7Ci0JCQkJLyogSXQgaXMg c29tZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCi0JCQkJcmVzdWx0 ID0gbGlzdF9jb25jYXQocmVzdWx0LAotCQkJCQkJCQkJIEV4cGFuZEluZGlyZWN0aW9uU3Rh cihwc3RhdGUsIGluZCwKLQkJCQkJCQkJCQkJCQkJICAgZmFsc2UsIGV4cHJLaW5kKSk7CisJ CQkJTm9kZQkgICAqY29scyA9IEV4cGFuZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsIGluZCwK KwkJCQkJCQkJCQkJCQkJIGZhbHNlLCBleHByS2luZCk7CisKKwkJCQlpZiAoIWNvbHMgfHwg SXNBKGNvbHMsIExpc3QpKQorCQkJCQkvKiBJdCBpcyBzb21ldGhpbmcuKiwgZXhwYW5kIGlu dG8gbXVsdGlwbGUgaXRlbXMgKi8KKwkJCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0 LCAoTGlzdCAqKSBjb2xzKTsKKwkJCQllbHNlCisJCQkJCXJlc3VsdCA9IGxhcHBlbmQocmVz dWx0LCBjb2xzKTsKKwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQl9CkBAIC0xMzQ4LDIyICsx MzYwLDMwIEBAIEV4cGFuZEFsbFRhYmxlcyhQYXJzZVN0YXRlICpwc3RhdGUsIGludCBsb2Nh dGlvbikKICAqIEZvciByb2J1c3RuZXNzLCB3ZSB1c2UgYSBzZXBhcmF0ZSAibWFrZV90YXJn ZXRfZW50cnkiIGZsYWcgdG8gY29udHJvbAogICogdGhpcyByYXRoZXIgdGhhbiByZWx5aW5n IG9uIGV4cHJLaW5kLgogICovCi1zdGF0aWMgTGlzdCAqCitzdGF0aWMgTm9kZSAqCiBFeHBh bmRJbmRpcmVjdGlvblN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICpp bmQsCiAJCQkJCSAgYm9vbCBtYWtlX3RhcmdldF9lbnRyeSwgUGFyc2VFeHByS2luZCBleHBy S2luZCkKIHsKIAlOb2RlCSAgICpleHByOworCVBhcnNlRXhwcktpbmQgc3ZfZXhwcl9raW5k OworCWJvb2wJCXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uID0gZmFsc2U7CisKKwkvKiBTYXZl IGFuZCByZXN0b3JlIGlkZW50aXR5IG9mIGV4cHJlc3Npb24gdHlwZSB3ZSdyZSBwYXJzaW5n ICovCisJQXNzZXJ0KGV4cHJLaW5kICE9IEVYUFJfS0lORF9OT05FKTsKKwlzdl9leHByX2tp bmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBleHBy S2luZDsKIAogCS8qIFN0cmlwIG9mZiB0aGUgJyonIHRvIGNyZWF0ZSBhIHJlZmVyZW5jZSB0 byB0aGUgcm93dHlwZSBvYmplY3QgKi8KLQlpbmQgPSBjb3B5T2JqZWN0KGluZCk7Ci0JaW5k LT5pbmRpcmVjdGlvbiA9IGxpc3RfdHJ1bmNhdGUoaW5kLT5pbmRpcmVjdGlvbiwKLQkJCQkJ CQkJCSBsaXN0X2xlbmd0aChpbmQtPmluZGlyZWN0aW9uKSAtIDEpOworCWV4cHIgPSB0cmFu c2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUsIGluZCwgJnRyYWlsaW5nX3N0YXJfZXhwYW5zaW9u KTsKKworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBzdl9leHByX2tpbmQ7CiAKLQkvKiBBbmQg dHJhbnNmb3JtIHRoYXQgKi8KLQlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2Rl ICopIGluZCwgZXhwcktpbmQpOworCS8qICcqJyB3YXMgY29uc3VtZWQgYnkgZ2VuZXJpYyB0 eXBlIHN1YnNjcmlwdGluZyAqLworCWlmICghdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24pCisJ CXJldHVybiBleHByOwogCiAJLyogRXhwYW5kIHRoZSByb3d0eXBlIGV4cHJlc3Npb24gaW50 byBpbmRpdmlkdWFsIGZpZWxkcyAqLwotCXJldHVybiBFeHBhbmRSb3dSZWZlcmVuY2UocHN0 YXRlLCBleHByLCBtYWtlX3RhcmdldF9lbnRyeSk7CisJcmV0dXJuIChOb2RlICopIEV4cGFu ZFJvd1JlZmVyZW5jZShwc3RhdGUsIGV4cHIsIG1ha2VfdGFyZ2V0X2VudHJ5KTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBiMGIyNWQ4YjllNS4uZmQ5 MmFjNjYzZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEyODQxLDcg KzEyODQxLDExIEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwg ZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJTm9kZQkgICAqdXAgPSAoTm9kZSAq KSBsZmlyc3QodXBsaXN0X2l0ZW0pOwogCi0JCWlmIChJc0EodXAsIFN0cmluZykpCisJCWlm ICghdXApCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLioiKTsKKwkJ fQorCQllbHNlIGlmIChJc0EodXAsIFN0cmluZykpCiAJCXsKIAkJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGJ1ZiwgJy4nKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90 ZV9pZGVudGlmaWVyKHN0clZhbCh1cCkpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCmlu ZGV4IGYxZjQ3OWZhNTZiLi43ZjE4ODllOWQ4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX2V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhw ci5oCkBAIC0yMyw0ICsyMyw3IEBAIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1FeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHByS2luCiAKIGV4 dGVybiBjb25zdCBjaGFyICpQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJL aW5kKTsKIAorZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAorCQkJCQkJCQkgIGJvb2wgKnRyYWlsaW5n X3N0YXJfZXhwYW5zaW9uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX0VYUFJfSCAqLwot LSAKMi4yNS4xCgo= --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0006-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v6-0006-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZjJiMTVkZGIwZGI2N2I3MzNiZGM0MzU5Yjk2NjQ1ZmI5MWE1MmMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNTo1NSArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDYvMTFdIEV4cG9ydCBqc29uUGF0aEZyb21QYXJzZVJlc3VsdCgpCgot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIHwgMjQgKysrKysrKysrKysr KysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oICAgICB8ICA0ICsr KysKIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jCmluZGV4IDBmNjkxYmM1ZjBmLi43MTk0NmZm ODM3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKQEAgLTE2NSwxNiArMTY1LDEy IEBAIGpzb25wYXRoX3NlbmQoUEdfRlVOQ1RJT05fQVJHUykKIC8qCiAgKiBDb252ZXJ0cyBD LXN0cmluZyB0byBhIGpzb25wYXRoIHZhbHVlLgogICoKLSAqIFVzZXMganNvbnBhdGggcGFy c2VyIHRvIHR1cm4gc3RyaW5nIGludG8gYW4gQVNULCB0aGVuCi0gKiBmbGF0dGVuSnNvblBh dGhQYXJzZUl0ZW0oKSBkb2VzIHNlY29uZCBwYXNzIHR1cm5pbmcgQVNUIGludG8gYmluYXJ5 Ci0gKiByZXByZXNlbnRhdGlvbiBvZiBqc29ucGF0aC4KKyAqIFVzZXMganNvbnBhdGggcGFy c2VyIHRvIHR1cm4gc3RyaW5nIGludG8gYW4gQVNULgogICovCiBzdGF0aWMgRGF0dW0KIGpz b25QYXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBsZW4sIHN0cnVjdCBOb2RlICplc2Nv bnRleHQpCiB7CiAJSnNvblBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGggPSBwYXJzZWpzb25w YXRoKGluLCBsZW4sIGVzY29udGV4dCk7Ci0JSnNvblBhdGggICAqcmVzOwotCVN0cmluZ0lu Zm9EYXRhIGJ1ZjsKIAogCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCiAJ CXJldHVybiAoRGF0dW0pIDA7CkBAIC0xODUsOCArMTgxLDI0IEBAIGpzb25QYXRoRnJvbUNz dHJpbmcoY2hhciAqaW4sIGludCBsZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiAJCQkJ IGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsICJq c29ucGF0aCIsCiAJCQkJCQlpbikpKTsKIAorCXJldHVybiBqc29uUGF0aEZyb21QYXJzZVJl c3VsdChqc29ucGF0aCwgNCAqIGxlbiAvKiBlc3RpbWF0aW9uICovLCBlc2NvbnRleHQpOwor fQorCisvKgorICogQ29udmVydHMganNvbnBhdGggQVNUIHRvIGEganNvbnBhdGggdmFsdWUu CisgKgorICogZmxhdHRlbkpzb25QYXRoUGFyc2VJdGVtKCkgZG9lcyBzZWNvbmQgcGFzcyB0 dXJuaW5nIEFTVCBpbnRvIGJpbmFyeQorICogcmVwcmVzZW50YXRpb24gb2YganNvbnBhdGgu CisgKi8KK0RhdHVtCitqc29uUGF0aEZyb21QYXJzZVJlc3VsdChKc29uUGF0aFBhcnNlUmVz dWx0ICpqc29ucGF0aCwgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJCQlzdHJ1Y3QgTm9kZSAq ZXNjb250ZXh0KQoreworCUpzb25QYXRoICAgKnJlczsKKwlTdHJpbmdJbmZvRGF0YSBidWY7 CisKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKLQllbmxhcmdlU3RyaW5nSW5mbygmYnVmLCA0 ICogbGVuIC8qIGVzdGltYXRpb24gKi8gKTsKKwllbmxhcmdlU3RyaW5nSW5mbygmYnVmLCBl c3RpbWF0ZWRfbGVuKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TcGFjZXMoJmJ1ZiwgSlNPTlBB VEhfSERSU1opOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCBlZTM1Njk4ZDA4My4uNGI4 ZDQzZGI2MzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMjgxLDYgKzI4MSwxMCBAQCBl eHRlcm4gSnNvblBhdGhQYXJzZVJlc3VsdCAqcGFyc2Vqc29ucGF0aChjb25zdCBjaGFyICpz dHIsIGludCBsZW4sCiBleHRlcm4gYm9vbCBqc3BDb252ZXJ0UmVnZXhGbGFncyh1aW50MzIg eGZsYWdzLCBpbnQgKnJlc3VsdCwKIAkJCQkJCQkJIHN0cnVjdCBOb2RlICplc2NvbnRleHQp OwogCitleHRlcm4gRGF0dW0ganNvblBhdGhGcm9tUGFyc2VSZXN1bHQoSnNvblBhdGhQYXJz ZVJlc3VsdCAqanNvbnBhdGgsCisJCQkJCQkJCQkgaW50IGVzdGltYXRlZF9sZW4sCisJCQkJ CQkJCQkgc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CisKIC8qCiAgKiBTdHJ1Y3QgZm9yIGRl dGFpbHMgYWJvdXQgZXh0ZXJuYWwgdmFyaWFibGVzIHBhc3NlZCBpbnRvIGpzb25wYXRoIGV4 ZWN1dG9yCiAgKi8KLS0gCjIuMjUuMQoK --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0007-Implement-read-only-dot-notation-for-jsonb-using-.patch" Content-Disposition: attachment; filename*0="v6-0007-Implement-read-only-dot-notation-for-jsonb-using-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlODM3OTMxZGNlNWFlMzNjMDYyMmVhN2ZiNWE5MzFkNjU4ZjQ4MzgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNzo1MyArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDcvMTFdIEltcGxlbWVudCByZWFkLW9ubHkgZG90IG5vdGF0aW9uIGZv ciBqc29uYiB1c2luZwoganNvbnBhdGgKCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25ic3Vicy5jICAgfCA0NTEgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYi5vdXQgfCAzMzYgKysrKysrKysrKysrKysrKysrKystCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA1NiArKysrCiA0IGZpbGVzIGNo YW5nZWQsIDc1NCBpbnNlcnRpb25zKCspLCA5MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmJzdWJzLmMKaW5kZXggNmVjZDMyMGJjNTIuLmRkY2I5NDZlNTQ5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCkBAIC0xNSwxMiArMTUsMTQgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKKyNp bmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3Mu aCIKICNpbmNsdWRlICJub2Rlcy9zdWJzY3JpcHRpbmcuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCisjaW5j bHVkZSAidXRpbHMvanNvbnBhdGguaCIKIAogCiAvKiBTdWJzY3JpcHRpbmdSZWZTdGF0ZS53 b3Jrc3BhY2UgZm9yIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24gKi8KQEAgLTMwLDgg KzMyLDI3NCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1YldvcmtzcGFjZQogCU9pZAkJICAg KmluZGV4T2lkOwkJLyogT0lEIG9mIGNvZXJjZWQgc3Vic2NyaXB0IGV4cHJlc3Npb24sIGNv dWxkCiAJCQkJCQkJCSAqIGJlIG9ubHkgaW50ZWdlciBvciB0ZXh0ICovCiAJRGF0dW0JICAg KmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9ybWF0ICovCisJSnNv blBhdGggICAqanNvbnBhdGg7CQkvKiBqc29ucGF0aCBmb3IgZG90IG5vdGF0aW9uIGV4ZWN1 dGlvbiAqLworCUxpc3QJCXZhcnM7CQkJLyoganNvbnBhdGggdmFycyAqLwogfSBKc29uYlN1 YldvcmtzcGFjZTsKIAorc3RhdGljIGJvb2wKK2pzb25iX2NoZWNrX2pzb25wYXRoX25lZWRl ZChMaXN0ICppbmRpcmVjdGlvbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2go bGMsIGluZGlyZWN0aW9uKQorCXsKKwkJTm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMp OworCisJCWlmIChJc0EoYWNjZXNzb3IsIFN0cmluZykgfHwKKwkJCUlzQShhY2Nlc3Nvciwg QV9TdGFyKSkKKwkJCXJldHVybiB0cnVlOworCQllbHNlIGlmIChJc0EoYWNjZXNzb3IsIEFf SW5kaWNlcykpCisJCXsKKwkJCUFfSW5kaWNlcyAgKmFpID0gY2FzdE5vZGUoQV9JbmRpY2Vz LCBhY2Nlc3Nvcik7CisKKwkJCWlmICghYWktPnVpZHggfHwgYWktPmxpZHgpCisJCQl7CisJ CQkJQXNzZXJ0KGFpLT5pc19zbGljZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0K KwkJZWxzZQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtKEpzb25QYXRo SXRlbVR5cGUgdHlwZSkKK3sKKwlKc29uUGF0aFBhcnNlSXRlbSAqdiA9IHBhbGxvYyhzaXpl b2YoKnYpKTsKKworCXYtPnR5cGUgPSB0eXBlOworCXYtPm5leHQgPSBOVUxMOworCisJcmV0 dXJuIHY7Cit9CisKK3N0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAqCittYWtlX2pzb25wYXRo X2l0ZW1faW50KGludDMyIHZhbCwgTGlzdCAqKmV4cHJzKQoreworCUpzb25QYXRoUGFyc2VJ dGVtICpqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpTnVtZXJpYyk7CisKKwlqcGktPnZh bHVlLm51bWVyaWMgPQorCQlEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShp bnQ0X251bWVyaWMsIEludDMyR2V0RGF0dW0odmFsKSkpOworCisJKmV4cHJzID0gbGFwcGVu ZCgqZXhwcnMsIG1ha2VDb25zdChJTlQ0T0lELCAtMSwgSW52YWxpZE9pZCwgNCwKKwkJCQkJ IEludDMyR2V0RGF0dW0odmFsKSwgZmFsc2UsIHRydWUpKTsKKworCXJldHVybiBqcGk7Cit9 CisKK3N0YXRpYyBPaWQKK2pzb25iX3N1YnNjcmlwdF90eXBlKE5vZGUgKmV4cHIpCit7CisJ aWYgKGV4cHIgJiYgSXNBKGV4cHIsIFN0cmluZykpCisJCXJldHVybiBURVhUT0lEOworCisJ cmV0dXJuIGV4cHJUeXBlKGV4cHIpOworfQorCitzdGF0aWMgTm9kZSAqCitjb2VyY2VfanNv bnBhdGhfc3Vic2NyaXB0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqc3ViRXhwciwgT2lk IG51bXR5cGUpCit7CisJT2lkCQkJc3ViRXhwclR5cGUgPSBqc29uYl9zdWJzY3JpcHRfdHlw ZShzdWJFeHByKTsKKwlPaWQJCQl0YXJnZXRUeXBlID0gVU5LTk9XTk9JRDsKKworCWlmIChz dWJFeHByVHlwZSAhPSBVTktOT1dOT0lEKQorCXsKKwkJT2lkCQkJdGFyZ2V0c1syXSA9IHtu dW10eXBlLCBURVhUT0lEfTsKKworCQkvKgorCQkgKiBKc29uYiBjYW4gaGFuZGxlIG11bHRp cGxlIHN1YnNjcmlwdCB0eXBlcywgYnV0IGNhc2VzIHdoZW4gYQorCQkgKiBzdWJzY3JpcHQg Y291bGQgYmUgY29lcmNlZCB0byBtdWx0aXBsZSB0YXJnZXQgdHlwZXMgbXVzdCBiZQorCQkg KiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJdCBjb3VsZCBi ZQorCQkgKiBwb3NzaWJseSBleHRlbmQgd2l0aCBqc29ucGF0aCBpbiB0aGUgZnV0dXJlLgor CQkgKi8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisJCXsKKwkJCWlmIChjYW5f Y29lcmNlX3R5cGUoMSwgJnN1YkV4cHJUeXBlLCAmdGFyZ2V0c1tpXSwgQ09FUkNJT05fSU1Q TElDSVQpKQorCQkJeworCQkJCS8qCisJCQkJICogT25lIHR5cGUgaGFzIGFscmVhZHkgc3Vj Y2VlZGVkLCBpdCBtZWFucyB0aGVyZSBhcmUKKwkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0 cyBwb3NzaWJsZSwgZmFpbHVyZS4KKwkJCQkgKi8KKwkJCQlpZiAodGFyZ2V0VHlwZSAhPSBV TktOT1dOT0lEKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBl ICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3JtYXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAor CQkJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8g b25seSBvbmUgdHlwZSwgaW50ZWdlciBvciB0ZXh0LiIpLAorCQkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisKKwkJCQl0YXJn ZXRUeXBlID0gdGFyZ2V0c1tpXTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIE5vIHN1aXRh YmxlIHR5cGVzIHdlcmUgZm91bmQsIGZhaWx1cmUuCisJCSAqLworCQlpZiAodGFyZ2V0VHlw ZSA9PSBVTktOT1dOT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBl ICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3JtYXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAor CQkJCQkgZXJyaGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGVp dGhlciBpbnRlZ2VyIG9yIHRleHQuIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oc3ViRXhwcikpKSk7CisJfQorCWVsc2UKKwkJdGFyZ2V0VHlw ZSA9IFRFWFRPSUQ7CisKKwkvKgorCSAqIFdlIGtub3duIGZyb20gY2FuX2NvZXJjZV90eXBl IHRoYXQgY29lcmNpb24gd2lsbCBzdWNjZWVkLCBzbworCSAqIGNvZXJjZV90eXBlIGNvdWxk IGJlIHVzZWQuIE5vdGUgdGhlIGltcGxpY2l0IGNvZXJjaW9uIGNvbnRleHQsCisJICogd2hp Y2ggaXMgcmVxdWlyZWQgdG8gaGFuZGxlIHN1YnNjcmlwdHMgb2YgZGlmZmVyZW50IHR5cGVz LAorCSAqIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCisJICovCisJc3ViRXhw ciA9IGNvZXJjZV90eXBlKHBzdGF0ZSwKKwkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUs CisJCQkJCQkgIHRhcmdldFR5cGUsIC0xLAorCQkJCQkJICBDT0VSQ0lPTl9JTVBMSUNJVCwK KwkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkgIC0xKTsKKwlpZiAoc3Vi RXhwciA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf REFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBtdXN0 IGhhdmUgdGV4dCB0eXBlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4 cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKworCXJldHVybiBzdWJFeHByOworfQorCitzdGF0 aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJSnNvblBhdGhQ YXJzZUl0ZW0gKmpwaTsKKworCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgZXhwciwg cHN0YXRlLT5wX2V4cHJfa2luZCk7CisKKwlpZiAoSXNBKGV4cHIsIENvbnN0KSkKKwl7CisJ CUNvbnN0CSAgICpjbnN0ID0gKENvbnN0ICopIGV4cHI7CisKKwkJaWYgKGNuc3QtPmNvbnN0 dHlwZSA9PSBJTlQ0T0lEICYmICFjbnN0LT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50MzIJ CXZhbCA9IERhdHVtR2V0SW50MzIoY25zdC0+Y29uc3R2YWx1ZSk7CisKKwkJCXJldHVybiBt YWtlX2pzb25wYXRoX2l0ZW1faW50KHZhbCwgZXhwcnMpOworCQl9CisJfQorCisJKmV4cHJz ID0gbGFwcGVuZCgqZXhwcnMsIGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQocHN0YXRlLCBl eHByLCBOVU1FUklDT0lEKSk7CisKKwlqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpVmFy aWFibGUpOworCWpwaS0+dmFsdWUuc3RyaW5nLnZhbCA9IHBzcHJpbnRmKCIlZCIsIGxpc3Rf bGVuZ3RoKCpleHBycykpOworCWpwaS0+dmFsdWUuc3RyaW5nLmxlbiA9IHN0cmxlbihqcGkt PnZhbHVlLnN0cmluZy52YWwpOworCisJcmV0dXJuIGpwaTsKK30KKworc3RhdGljIE5vZGUg KgoranNvbmJfc3Vic2NyaXB0X21ha2VfanNvbnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICoqaW5kaXJlY3Rpb24sCisJCQkJCQkJICBMaXN0ICoqdWV4cHJzLCBMaXN0ICoqbGV4 cHJzKQoreworCUpzb25QYXRoUGFyc2VSZXN1bHQganByZXM7CisJSnNvblBhdGhQYXJzZUl0 ZW0gKnBhdGggPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpUm9vdCk7CisJTGlzdENlbGwgICAq bGM7CisJRGF0dW0JCWpzcDsKKwlpbnQJCQlwYXRobGVuID0gMDsKKworCSp1ZXhwcnMgPSAg TklMOworCSpsZXhwcnMgPSAgTklMOworCisJanByZXMuZXhwciA9IHBhdGg7CisJanByZXMu bGF4ID0gdHJ1ZTsKKworCWZvcmVhY2gobGMsICppbmRpcmVjdGlvbikKKwl7CisJCU5vZGUJ ICAgKmFjY2Vzc29yID0gbGZpcnN0KGxjKTsKKwkJSnNvblBhdGhQYXJzZUl0ZW0gKmpwaTsK KworCQlpZiAoSXNBKGFjY2Vzc29yLCBTdHJpbmcpKQorCQl7CisJCQljaGFyCSAgICpmaWVs ZCA9IHN0clZhbChhY2Nlc3Nvcik7CisKKwkJCWpwaSA9IG1ha2VfanNvbnBhdGhfaXRlbShq cGlLZXkpOworCQkJanBpLT52YWx1ZS5zdHJpbmcudmFsID0gZmllbGQ7CisJCQlqcGktPnZh bHVlLnN0cmluZy5sZW4gPSBzdHJsZW4oZmllbGQpOworCisJCQkqdWV4cHJzID0gbGFwcGVu ZCgqdWV4cHJzLCBhY2Nlc3Nvcik7CisJCX0KKwkJZWxzZSBpZiAoSXNBKGFjY2Vzc29yLCBB X1N0YXIpKQorCQl7CisJCQlqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpQW55S2V5KTsK KworCQkJKnVleHBycyA9IGxhcHBlbmQoKnVleHBycywgTlVMTCk7CisJCX0KKwkJZWxzZSBp ZiAoSXNBKGFjY2Vzc29yLCBBX0luZGljZXMpKQorCQl7CisJCQlBX0luZGljZXMgICphaSA9 IGNhc3ROb2RlKEFfSW5kaWNlcywgYWNjZXNzb3IpOworCisJCQlqcGkgPSBtYWtlX2pzb25w YXRoX2l0ZW0oanBpSW5kZXhBcnJheSk7CisJCQlqcGktPnZhbHVlLmFycmF5Lm5lbGVtcyA9 IDE7CisJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zID0gcGFsbG9jKHNpemVvZihqcGktPnZh bHVlLmFycmF5LmVsZW1zWzBdKSk7CisKKwkJCWlmIChhaS0+aXNfc2xpY2UpCisJCQl7CisJ CQkJd2hpbGUgKGxpc3RfbGVuZ3RoKCpsZXhwcnMpIDwgbGlzdF9sZW5ndGgoKnVleHBycykp CisJCQkJCSpsZXhwcnMgPSBsYXBwZW5kKCpsZXhwcnMsIE5VTEwpOworCisJCQkJaWYgKGFp LT5saWR4KQorCQkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLmZyb20gPSBtYWtlX2pz b25wYXRoX2l0ZW1fZXhwcihwc3RhdGUsIGFpLT5saWR4LCBsZXhwcnMpOworCQkJCWVsc2UK KwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9p dGVtX2ludCgwLCBsZXhwcnMpOworCisJCQkJaWYgKGFpLT51aWR4KQorCQkJCQlqcGktPnZh bHVlLmFycmF5LmVsZW1zWzBdLnRvID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRl LCBhaS0+dWlkeCwgdWV4cHJzKTsKKwkJCQllbHNlCisJCQkJeworCQkJCQlqcGktPnZhbHVl LmFycmF5LmVsZW1zWzBdLnRvID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaUxhc3QpOworCQkJ CQkqdWV4cHJzID0gbGFwcGVuZCgqdWV4cHJzLCBOVUxMKTsKKwkJCQl9CisJCQl9CisJCQll bHNlCisJCQl7CisJCQkJQXNzZXJ0KGFpLT51aWR4ICYmICFhaS0+bGlkeCk7CisJCQkJanBp LT52YWx1ZS5hcnJheS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIo cHN0YXRlLCBhaS0+dWlkeCwgdWV4cHJzKTsKKwkJCQlqcGktPnZhbHVlLmFycmF5LmVsZW1z WzBdLnRvID0gTlVMTDsKKwkJCX0KKworI2lmIDAKKwkJCWlmIChqcGktPnZhbHVlLmFycmF5 LmVsZW1zWzBdLnRvKQorCQkJeworCQkJCXdoaWxlIChsaXN0X2xlbmd0aCgqbG93ZXIpIDwg bGlzdF9sZW5ndGgoKnVwcGVyKSkKKwkJCQkJKmxvd2VyID0gbGFwcGVuZCgqbG93ZXIsIE5V TEwpOworCisJCQkJKmxvd2VyID0gbGFwcGVuZCgqbG93ZXIsIGpwaS0+dmFsdWUuYXJyYXku ZWxlbXNbMF0uZnJvbSk7CisJCQkJKnVwcGVyID0gbGFwcGVuZCgqdXBwZXIsIGpwaS0+dmFs dWUuYXJyYXkuZWxlbXNbMF0udG8pOworCQkJfQorCQkJZWxzZQorCQkJCSp1cHBlciA9IGxh cHBlbmQoKnVwcGVyLCBqcGktPnZhbHVlLmFycmF5LmVsZW1zWzBdLmZyb20pOworI2VuZGlm CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisKKwkJLyogYXBwZW5kIHBhdGggaXRlbSAqLwor CQlwYXRoLT5uZXh0ID0ganBpOworCQlwYXRoID0ganBpOworCQlwYXRobGVuKys7CisJfQor CisJaWYgKCpsZXhwcnMpCisJeworCQl3aGlsZSAobGlzdF9sZW5ndGgoKmxleHBycykgPCBs aXN0X2xlbmd0aCgqdWV4cHJzKSkKKwkJCSpsZXhwcnMgPSBsYXBwZW5kKCpsZXhwcnMsIE5V TEwpOworCX0KKworCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0X24oKmluZGly ZWN0aW9uLCBwYXRobGVuKTsKKworCWpzcCA9IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCZq cHJlcywgMCwgTlVMTCk7CisKKwlyZXR1cm4gKE5vZGUgKikgbWFrZUNvbnN0KEpTT05QQVRI T0lELCAtMSwgSW52YWxpZE9pZCwgLTEsIGpzcCwgZmFsc2UsIGZhbHNlKTsKK30KIAogLyoK ICAqIEZpbmlzaCBwYXJzZSBhbmFseXNpcyBvZiBhIFN1YnNjcmlwdGluZ1JlZiBleHByZXNz aW9uIGZvciBhIGpzb25iLgpAQCAtNDksMTkgKzMxNywzNSBAQCBqc29uYl9zdWJzY3JpcHRf dHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5k ZXhwciA9IE5JTDsKIAlMaXN0Q2VsbCAgICppZHg7CiAKKwkvKiBEZXRlcm1pbmUgdGhlIHJl c3VsdCB0eXBlIG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdheXMganNvbmIg Ki8KKwlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09OQk9JRDsKKwlzYnNyZWYtPnJlZnR5cG1v ZCA9IC0xOworCisJaWYgKGpzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZCgqaW5kaXJlY3Rp b24pKQorCXsKKwkJc2JzcmVmLT5yZWZwcml2YXRlID0KKwkJCWpzb25iX3N1YnNjcmlwdF9t YWtlX2pzb25wYXRoKHBzdGF0ZSwgaW5kaXJlY3Rpb24sCisJCQkJCQkJCQkJICAmc2JzcmVm LT5yZWZ1cHBlcmluZGV4cHIsCisJCQkJCQkJCQkJICAmc2JzcmVmLT5yZWZsb3dlcmluZGV4 cHIpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBUcmFuc2Zvcm0gYW5kIGNvbnZlcnQg dGhlIHN1YnNjcmlwdCBleHByZXNzaW9ucy4gSnNvbmIgc3Vic2NyaXB0aW5nCiAJICogZG9l cyBub3Qgc3VwcG9ydCBzbGljZXMsIGxvb2sgb25seSBhbmQgdGhlIHVwcGVyIGluZGV4Lgog CSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJeworCQlOb2RlCSAgICppID0g bGZpcnN0KGlkeCk7CiAJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJFeHByOwog Ci0JCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQorCQlBc3NlcnQoSXNBKGks IEFfSW5kaWNlcykpOworCisJCWlmICghSXNBKGksIEFfSW5kaWNlcykpCiAJCQlicmVhazsK IAotCQlhaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJYWkgPSBjYXN0Tm9k ZShBX0luZGljZXMsIGkpOwogCiAJCWlmIChpc1NsaWNlKQogCQl7CkBAIC03NSw3MSArMzU5 LDggQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwKIAogCQlpZiAoYWktPnVpZHgpCiAJCXsKLQkJCU9pZAkJCXN1YkV4cHJUeXBlID0gSW52 YWxpZE9pZCwKLQkJCQkJCXRhcmdldFR5cGUgPSBVTktOT1dOT0lEOwotCiAJCQlzdWJFeHBy ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5k KTsKLQkJCXN1YkV4cHJUeXBlID0gZXhwclR5cGUoc3ViRXhwcik7Ci0KLQkJCWlmIChzdWJF eHByVHlwZSAhPSBVTktOT1dOT0lEKQotCQkJewotCQkJCU9pZAkJCXRhcmdldHNbMl0gPSB7 SU5UNE9JRCwgVEVYVE9JRH07Ci0KLQkJCQkvKgotCQkJCSAqIEpzb25iIGNhbiBoYW5kbGUg bXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQgY2FzZXMgd2hlbiBhCi0JCQkJICogc3Vi c2NyaXB0IGNvdWxkIGJlIGNvZXJjZWQgdG8gbXVsdGlwbGUgdGFyZ2V0IHR5cGVzIG11c3Qg YmUKLQkJCQkgKiBhdm9pZGVkLCBzaW1pbGFyIHRvIG92ZXJsb2FkZWQgZnVuY3Rpb25zLiBJ dCBjb3VsZCBiZQotCQkJCSAqIHBvc3NpYmx5IGV4dGVuZCB3aXRoIGpzb25wYXRoIGluIHRo ZSBmdXR1cmUuCi0JCQkJICovCi0JCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCi0J CQkJewotCQkJCQlpZiAoY2FuX2NvZXJjZV90eXBlKDEsICZzdWJFeHByVHlwZSwgJnRhcmdl dHNbaV0sIENPRVJDSU9OX0lNUExJQ0lUKSkKLQkJCQkJewotCQkJCQkJLyoKLQkJCQkJCSAq IE9uZSB0eXBlIGhhcyBhbHJlYWR5IHN1Y2NlZWRlZCwgaXQgbWVhbnMgdGhlcmUgYXJlCi0J CQkJCQkgKiB0d28gY29lcmNpb24gdGFyZ2V0cyBwb3NzaWJsZSwgZmFpbHVyZS4KLQkJCQkJ CSAqLwotCQkJCQkJaWYgKHRhcmdldFR5cGUgIT0gVU5LTk9XTk9JRCkKLQkJCQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCi0JCQkJCQkJCQkgZXJybXNnKCJzdWJzY3JpcHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9y dGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5cGUpKSwKLQkJCQkJCQkJCSBlcnJoaW50 KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gb25seSBvbmUgdHlwZSwg aW50ZWdlciBvciB0ZXh0LiIpLAotCQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQotCQkJCQkJdGFyZ2V0VHlwZSA9IHRh cmdldHNbaV07Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIE5vIHN1aXRhYmxl IHR5cGVzIHdlcmUgZm91bmQsIGZhaWx1cmUuCi0JCQkJICovCi0JCQkJaWYgKHRhcmdldFR5 cGUgPT0gVU5LTk9XTk9JRCkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJCQkgZXJybXNnKCJzdWJzY3Jp cHQgdHlwZSAlcyBpcyBub3Qgc3VwcG9ydGVkIiwgZm9ybWF0X3R5cGVfYmUoc3ViRXhwclR5 cGUpKSwKLQkJCQkJCQkgZXJyaGludCgianNvbmIgc3Vic2NyaXB0IG11c3QgYmUgY29lcmNp YmxlIHRvIGVpdGhlciBpbnRlZ2VyIG9yIHRleHQuIiksCi0JCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKLQkJCX0KLQkJCWVs c2UKLQkJCQl0YXJnZXRUeXBlID0gVEVYVE9JRDsKLQotCQkJLyoKLQkJCSAqIFdlIGtub3du IGZyb20gY2FuX2NvZXJjZV90eXBlIHRoYXQgY29lcmNpb24gd2lsbCBzdWNjZWVkLCBzbwot CQkJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNlZC4gTm90ZSB0aGUgaW1wbGljaXQgY29l cmNpb24gY29udGV4dCwKLQkJCSAqIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSBzdWJz Y3JpcHRzIG9mIGRpZmZlcmVudCB0eXBlcywKLQkJCSAqIHNpbWlsYXIgdG8gb3ZlcmxvYWRl ZCBmdW5jdGlvbnMuCi0JCQkgKi8KLQkJCXN1YkV4cHIgPSBjb2VyY2VfdHlwZShwc3RhdGUs Ci0JCQkJCQkJCSAgc3ViRXhwciwgc3ViRXhwclR5cGUsCi0JCQkJCQkJCSAgdGFyZ2V0VHlw ZSwgLTEsCi0JCQkJCQkJCSAgQ09FUkNJT05fSU1QTElDSVQsCi0JCQkJCQkJCSAgQ09FUkNF X0lNUExJQ0lUX0NBU1QsCi0JCQkJCQkJCSAgLTEpOwotCQkJaWYgKHN1YkV4cHIgPT0gTlVM TCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCi0JCQkJCQkgZXJybXNnKCJqc29uYiBzdWJzY3JpcHQgbXVzdCBoYXZl IHRleHQgdHlwZSIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihzdWJFeHByKSkpKTsKKwkJCXN1YkV4cHIgPSBjb2VyY2VfanNvbnBhdGhfc3Vi c2NyaXB0KHBzdGF0ZSwgc3ViRXhwciwgSU5UNE9JRCk7CiAJCX0KIAkJZWxzZQogCQl7CkBA IC0xNjEsMTAgKzM4Miw2IEBAIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0 aW5nUmVmICpzYnNyZWYsCiAJc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIgPSB1cHBlckluZGV4 cHI7CiAJc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIgPSBOSUw7CiAKLQkvKiBEZXRlcm1pbmUg dGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uOyBhbHdheXMg anNvbmIgKi8KLQlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09OQk9JRDsKLQlzYnNyZWYtPnJl ZnR5cG1vZCA9IC0xOwotCiAJLyogUmVtb3ZlIHByb2Nlc3NlZCBlbGVtZW50cyAqLwogCWlm ICh1cHBlckluZGV4cHIpCiAJCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0X24o KmluZGlyZWN0aW9uLCBsaXN0X2xlbmd0aCh1cHBlckluZGV4cHIpKTsKQEAgLTIxOSw3ICs0 MzYsNyBAQCBqc29uYl9zdWJzY3JpcHRfY2hlY2tfc3Vic2NyaXB0cyhFeHByU3RhdGUgKnN0 YXRlLAogCQkJICogRm9yIGpzb25iIGZldGNoIGFuZCBhc3NpZ24gZnVuY3Rpb25zIHdlIG5l ZWQgdG8gcHJvdmlkZSBwYXRoIGluCiAJCQkgKiB0ZXh0IGZvcm1hdC4gQ29udmVydCBpZiBp dCdzIG5vdCBhbHJlYWR5IHRleHQuCiAJCQkgKi8KLQkJCWlmICh3b3Jrc3BhY2UtPmluZGV4 T2lkW2ldID09IElOVDRPSUQpCisJCQlpZiAoIXdvcmtzcGFjZS0+anNvbnBhdGggJiYgd29y a3NwYWNlLT5pbmRleE9pZFtpXSA9PSBJTlQ0T0lEKQogCQkJewogCQkJCURhdHVtCQlkYXR1 bSA9IHNic3JlZnN0YXRlLT51cHBlcmluZGV4W2ldOwogCQkJCWNoYXIJICAgKmNzID0gRGF0 dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50NG91dCwgZGF0dW0pKTsKQEAg LTI0NywxNyArNDY0LDQ0IEBAIGpzb25iX3N1YnNjcmlwdF9mZXRjaChFeHByU3RhdGUgKnN0 YXRlLAogewogCVN1YnNjcmlwdGluZ1JlZlN0YXRlICpzYnNyZWZzdGF0ZSA9IG9wLT5kLnNi c3JlZi5zdGF0ZTsKIAlKc29uYlN1YldvcmtzcGFjZSAqd29ya3NwYWNlID0gKEpzb25iU3Vi V29ya3NwYWNlICopIHNic3JlZnN0YXRlLT53b3Jrc3BhY2U7Ci0JSnNvbmIJICAgKmpzb25i U291cmNlOwogCiAJLyogU2hvdWxkIG5vdCBnZXQgaGVyZSBpZiBzb3VyY2UganNvbmIgKG9y IGFueSBzdWJzY3JpcHQpIGlzIG51bGwgKi8KIAlBc3NlcnQoISgqb3AtPnJlc251bGwpKTsK IAotCWpzb25iU291cmNlID0gRGF0dW1HZXRKc29uYlAoKm9wLT5yZXN2YWx1ZSk7Ci0JKm9w LT5yZXN2YWx1ZSA9IGpzb25iX2dldF9lbGVtZW50KGpzb25iU291cmNlLAotCQkJCQkJCQkJ ICB3b3Jrc3BhY2UtPmluZGV4LAotCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVtdXBwZXIs Ci0JCQkJCQkJCQkgIG9wLT5yZXNudWxsLAotCQkJCQkJCQkJICBmYWxzZSk7CisJaWYgKHdv cmtzcGFjZS0+anNvbnBhdGgpCisJeworCQlib29sCQllbXB0eSA9IGZhbHNlOworCQlib29s CQllcnJvciA9IGZhbHNlOworCQlMaXN0CSAgICp2YXJzID0gJndvcmtzcGFjZS0+dmFyczsK KwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyogY29weSBjb21wdXRlZCB2YXJpYWJsZSB2YWx1 ZXMgKi8KKwkJZm9yZWFjaChsYywgdmFycykKKwkJeworCQkJSnNvblBhdGhWYXJpYWJsZSAq dmFyID0gbGZpcnN0KGxjKTsKKwkJCWludAkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgo bGMpOworCisJCQl2YXItPnZhbHVlID0gd29ya3NwYWNlLT5pbmRleFtpXTsKKwkJCXZhci0+ aXNudWxsID0gZmFsc2U7CisJCX0KKworCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVy eSgqb3AtPnJlc3ZhbHVlLCB3b3Jrc3BhY2UtPmpzb25wYXRoLAorCQkJCQkJCQkJICBKU1df Q09ORElUSU9OQUwsCisJCQkJCQkJCQkgICZlbXB0eSwgJmVycm9yLCB2YXJzLAorCQkJCQkJ CQkJICAvKiBGSVhNRSAqLyAianNvbmJfc3Vic2NyaXB0Iik7CisKKwkJKm9wLT5yZXNudWxs ID0gZW1wdHkgfHwgZXJyb3I7CisJfQorCWVsc2UKKwl7CisJCUpzb25iCSAgICpqc29uYlNv dXJjZSA9IERhdHVtR2V0SnNvbmJQKCpvcC0+cmVzdmFsdWUpOworCisJCSpvcC0+cmVzdmFs dWUgPSBqc29uYl9nZXRfZWxlbWVudChqc29uYlNvdXJjZSwKKwkJCQkJCQkJCQkgIHdvcmtz cGFjZS0+aW5kZXgsCisJCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVtdXBwZXIsCisJCQkJ CQkJCQkJICBvcC0+cmVzbnVsbCwKKwkJCQkJCQkJCQkgIGZhbHNlKTsKKwl9CiB9CiAKIC8q CkBAIC0zNjcsMTIgKzYxMSw1NyBAQCBqc29uYl9leGVjX3NldHVwKGNvbnN0IFN1YnNjcmlw dGluZ1JlZiAqc2JzcmVmLAogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCW51cHBlciA9IHNi c3JlZi0+cmVmdXBwZXJpbmRleHByLT5sZW5ndGg7CiAJY2hhcgkgICAqcHRyOworCWJvb2wJ CXVzZUpzb25wYXRoID0gc2JzcmVmLT5yZWZwcml2YXRlICE9IE5VTEw7CisJSnNvblBhdGhW YXJpYWJsZSAqdmFyczsKKwlpbnQJCQludmFycyA9IHVzZUpzb25wYXRoID8gbnVwcGVyIDog MDsKIAogCS8qIEFsbG9jYXRlIHR5cGUtc3BlY2lmaWMgd29ya3NwYWNlIHdpdGggc3BhY2Ug Zm9yIHBlci1zdWJzY3JpcHQgZGF0YSAqLwotCXdvcmtzcGFjZSA9IHBhbGxvYzAoTUFYQUxJ R04oc2l6ZW9mKEpzb25iU3ViV29ya3NwYWNlKSkgKworCXdvcmtzcGFjZSA9IHBhbGxvYzAo TUFYQUxJR04ob2Zmc2V0b2YoSnNvbmJTdWJXb3Jrc3BhY2UsIHZhcnMuaW5pdGlhbF9lbGVt ZW50cykgKyBudmFycyAqIHNpemVvZihMaXN0Q2VsbCkpICsKKwkJCQkJCU1BWEFMSUdOKG52 YXJzICogc2l6ZW9mKCp2YXJzKSArIG52YXJzICogMTYpICsKIAkJCQkJCW51cHBlciAqIChz aXplb2YoRGF0dW0pICsgc2l6ZW9mKE9pZCkpKTsKIAl3b3Jrc3BhY2UtPmV4cGVjdEFycmF5 ID0gZmFsc2U7Ci0JcHRyID0gKChjaGFyICopIHdvcmtzcGFjZSkgKyBNQVhBTElHTihzaXpl b2YoSnNvbmJTdWJXb3Jrc3BhY2UpKTsKKwlwdHIgPSAoKGNoYXIgKikgd29ya3NwYWNlKSAr CisJCU1BWEFMSUdOKG9mZnNldG9mKEpzb25iU3ViV29ya3NwYWNlLCB2YXJzLmluaXRpYWxf ZWxlbWVudHMpICsKKwkJCQkgbnZhcnMgKiBzaXplb2YoTGlzdENlbGwpKTsKKworCWlmICgh dXNlSnNvbnBhdGgpCisJCXdvcmtzcGFjZS0+anNvbnBhdGggPSBOVUxMOworCWVsc2UKKwl7 CisJCXdvcmtzcGFjZS0+anNvbnBhdGggPSBEYXR1bUdldEpzb25QYXRoUChjYXN0Tm9kZShD b25zdCwgc2JzcmVmLT5yZWZwcml2YXRlKS0+Y29uc3R2YWx1ZSk7CisKKwkJdmFycyA9IChK c29uUGF0aFZhcmlhYmxlICopIHB0cjsKKwkJcHRyICs9IE1BWEFMSUdOKG52YXJzICogc2l6 ZW9mKCp2YXJzKSk7CisKKwkJd29ya3NwYWNlLT52YXJzLnR5cGUgPSBUX0xpc3Q7CisJCXdv cmtzcGFjZS0+dmFycy5sZW5ndGggPSBudmFyczsKKwkJd29ya3NwYWNlLT52YXJzLm1heF9s ZW5ndGggPSBudmFyczsKKwkJd29ya3NwYWNlLT52YXJzLmVsZW1lbnRzID0gJndvcmtzcGFj ZS0+dmFycy5pbml0aWFsX2VsZW1lbnRzWzBdOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwg bnZhcnM7IGkrKykKKwkJeworCQkJTm9kZQkgICAqZXhwciA9IGxpc3RfbnRoKHNic3JlZi0+ cmVmdXBwZXJpbmRleHByLCBpKTsKKworCQkJd29ya3NwYWNlLT52YXJzLmVsZW1lbnRzW2ld LnB0cl92YWx1ZSA9ICZ2YXJzW2ldOworCisJCQlpZiAoZXhwciAmJiBJc0EoZXhwciwgU3Ry aW5nKSkKKwkJCXsKKwkJCQl2YXJzW2ldLnR5cGlkID0gVEVYVE9JRDsKKwkJCQl2YXJzW2ld LnR5cG1vZCA9IC0xOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXZhcnNbaV0udHlwaWQg PSBleHByVHlwZShleHByKTsKKwkJCQl2YXJzW2ldLnR5cG1vZCA9IGV4cHJUeXBtb2QoZXhw cik7CisJCQl9CisKKwkJCXZhcnNbaV0ubmFtZSA9IHB0cjsKKwkJCXNucHJpbnRmKHB0ciwg MTYsICIlZCIsIGkgKyAxKTsKKwkJCXZhcnNbaV0ubmFtZWxlbiA9IHN0cmxlbihwdHIpOwor CisJCQlwdHIgKz0gMTY7CisJCX0KKwl9CiAKIAkvKgogCSAqIFRoaXMgY29kaW5nIGFzc3Vt ZXMgc2l6ZW9mKERhdHVtKSA+PSBzaXplb2YoT2lkKSwgZWxzZSB3ZSBtaWdodApAQCAtMzkw LDcgKzY3OSw3IEBAIGpzb25iX2V4ZWNfc2V0dXAoY29uc3QgU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsCiAJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMpOwogCQlpbnQJCQlpID0gZm9y ZWFjaF9jdXJyZW50X2luZGV4KGxjKTsKIAotCQl3b3Jrc3BhY2UtPmluZGV4T2lkW2ldID0g ZXhwclR5cGUoZXhwcik7CisJCXdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPSBqc29uYl9zdWJz Y3JpcHRfdHlwZShleHByKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRl eCBiMGVmMTk1MmU4Zi4uZTI4MzY5NjBmMmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBA IC03MDEsNiArNzAxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW5nUmVmCiAJRXhw cgkgICAqcmVmZXhwcjsKIAkvKiBleHByZXNzaW9uIGZvciB0aGUgc291cmNlIHZhbHVlLCBv ciBOVUxMIGlmIGZldGNoICovCiAJRXhwcgkgICAqcmVmYXNzZ25leHByOworCS8qIHByaXZh dGUgZXhwcmVzc2lvbiAqLworCU5vZGUJICAgKnJlZnByaXZhdGU7CiB9IFN1YnNjcmlwdGlu Z1JlZjsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNv bmIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggN2Qx NjNhMTU2ZTMuLjk1YTkzYTU4MmIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dApAQCAtNDkzOSw2ICs0OTM5LDEyIEBAIHNlbGVjdCAoJzEyMyc6Ompzb25iKVsnYSdd OwogIAogKDEgcm93KQogCitzZWxlY3QgKCcxMjMnOjpqc29uYikuYTsKKyBhIAorLS0tCisg CisoMSByb3cpCisKIHNlbGVjdCAoJzEyMyc6Ompzb25iKVswXTsKICBqc29uYiAKIC0tLS0t LS0KQEAgLTQ5NTcsNiArNDk2MywxMiBAQCBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsn YSddOwogIDEKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuYTsKKyBh IAorLS0tCisgMQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVswXTsK ICBqc29uYiAKIC0tLS0tLS0KQEAgLTQ5NjksNiArNDk4MSwxMiBAQCBzZWxlY3QgKCd7ImEi OiAxfSc6Ompzb25iKVsnbm90X2V4aXN0J107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3si YSI6IDF9Jzo6anNvbmIpLiJub3RfZXhpc3QiOworIG5vdF9leGlzdCAKKy0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpW05VTExdOwogIGpz b25iIAogLS0tLS0tLQpAQCAtNDk4MSw2ICs0OTk5LDEyIEBAIHNlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpWydhJ107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpLmE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVswXTsKICBqc29uYiAKIC0tLS0tLS0KQEAgLTQ5OTMs NiArNTAxNywxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsnMSddOwog ICIyIgogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS4iMSI7 CisgMSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKVsxLjBdOwogRVJST1I6ICBzdWJzY3JpcHQgdHlwZSBudW1lcmljIGlzIG5vdCBzdXBw b3J0ZWQKIExJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsK QEAgLTUwMjIsNiArNTA1MiwxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25i KVsxXVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompz b25iKVsxXS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMV1bMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDM0LDczICs1 MDcwLDE0MyBAQCBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119 Jzo6anNvbmIpWydiJ107CiAgImMiCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJi IjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuYjsKKyAgYiAgCistLS0tLQorICJj IgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwg M119Jzo6anNvbmIpWydkJ107CiAgICBqc29uYiAgIAogLS0tLS0tLS0tLS0KICBbMSwgMiwg M10KICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIs IDNdfSc6Ompzb25iKS5kOworICAgICBkICAgICAKKy0tLS0tLS0tLS0tCisgWzEsIDIsIDNd CisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAz XX0nOjpqc29uYilbJ2QnXVsxXTsKICBqc29uYiAKIC0tLS0tLS0KICAyCiAoMSByb3cpCiAK K3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYiku ZFsxXTsKKyBkIAorLS0tCisgMgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6 ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11bJ2EnXTsKICBqc29uYiAKIC0t LS0tLS0KICAKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjog WzEsIDIsIDNdfSc6Ompzb25iKS5kWydhJ107CisgZCAKKy0tLQorIAorKDEgcm93KQorCitz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmQu YTsKKyBhIAorLS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEy IjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEn XTsKICAgICAganNvbmIgICAgIAogLS0tLS0tLS0tLS0tLS0tCiAgeyJhMiI6ICJhYWEifQog KDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjog ImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTE7CisgICAgICBhMSAgICAgICAKKy0t LS0tLS0tLS0tLS0tLQorIHsiYTIiOiAiYWFhIn0KKygxIHJvdykKKwogc2VsZWN0ICgneyJh IjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompz b25iKVsnYSddWydhMSddWydhMiddOwogIGpzb25iIAogLS0tLS0tLQogICJhYWEiCiAoMSBy b3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJi IiwgImMiOiAiY2NjIn0nOjpqc29uYikuYS5hMS5hMjsKKyAgYTIgICAKKy0tLS0tLS0KKyAi YWFhIgorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0s ICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ11bJ2EyJ11bJ2Ez J107CiAganNvbmIgCiAtLS0tLS0tCiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IHsi YTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJiIiwgImMiOiAiY2NjIn0nOjpqc29uYiku YS5hMS5hMi5hMzsKKyBhMyAKKy0tLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjog WyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompz b25iKVsnYSddWzFdWydiMSddOwogICAgICAgICAganNvbmIgICAgICAgICAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgWyJhYWEiLCAiYmJiIiwgImNjYyJdCiAoMSByb3cpCiAKK3Nl bGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJi IjogImJiIn0nOjpqc29uYikuYVsxXS5iMTsKKyAgICAgICAgICBiMSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsiYWFhIiwgImJiYiIsICJjY2MiXQorKDEgcm93 KQorCiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2Mi XX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ11bMl07CiAganNvbmIgCiAt LS0tLS0tCiAgImNjYyIKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEi OiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIx WzJdOworICBiMSAgIAorLS0tLS0tLQorICJjY2MiCisoMSByb3cpCisKIC0tIHNsaWNlcyBh cmUgbm90IHN1cHBvcnRlZAogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107 Ci1FUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElO RSAxOiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSc6J2InXTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyBqc29uYiAKKy0tLS0tLS0KKyAKKygx IHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMToyXTsKLUVSUk9S OiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IHNl bGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6Ml07Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgIGpzb25iICAgIAorLS0tLS0tLS0t LS0tLQorIFsiMiIsIG51bGxdCisoMSByb3cpCisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxd Jzo6anNvbmIpWzoyXTsKIEVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBv cnQgc2xpY2VzCiBMSU5FIDE6IHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzoy XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHNlbGVj dCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6XTsKLUVSUk9SOiAganNvbmIgc3Vic2Ny aXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCi1MSU5FIDE6IHNlbGVjdCAoJ1sxLCAiMiIs IG51bGxdJzo6anNvbmIpWzE6XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorICAgIGpzb25iICAgIAorLS0tLS0tLS0tLS0tLQorIFsiMiIsIG51bGxd CisoMSByb3cpCisKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzpdOwotRVJS T1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKKyAgICAganNv bmIgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBbMSwgIjIiLCBudWxsXQorKDEgcm93KQor CiBjcmVhdGUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iX3N1YnNjcmlwdCAoCiAgICAgICAgaWQg aW50LAogICAgICAgIHRlc3RfanNvbiBqc29uYgpAQCAtNTcxNSwzICs1ODIxLDIxMyBAQCBz ZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDUnOjpqc29uYjo6aW50ODsKICAxMjM0NQogKDEgcm93KQogCistLSBkb3Qgbm90YXRp b24KK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiBBUworU0VMRUNUICd7 ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7Inki OiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBbMywgNCwgeyJiIjogImciLCAieCI6IHsi eSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25iIGpiOworU0VMRUNUIChqYikuKiBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAi ZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIs ICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVDVCAo amIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJk IiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7 ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisK K1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGpiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMi fSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19 XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XV0K KygxIHJvdykKKworU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsi YiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6Ijog Inp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpa WiJ9fV1dCisoMSByb3cpCisKK1NFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJs ZSAidCIKK0xJTkUgMTogU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CisgICAgICAgICAgICAgICAgXgorU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgW1sxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6 IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6IHsi eSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAi ZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykKKworU0VMRUNU IChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAi ZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzMsIDQs IHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XQorKDEgcm93KQor CitTRUxFQ1QgKGpiKS5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgYyAKKy0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKKyAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK KyAgICAgICAgICAgICAgICAgICAgIGEgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbImMiLCAiZCIsICJmIiwg eyJ5IjogInl5eSIsICJ6IjogInp6eiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLiou YiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGIgCistLS0KKyAKKygxIHJvdykK KworU0VMRUNUIChqYikuYS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyB4 IAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuKi55IEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CisgICB5ICAgCistLS0tLS0tCisgInl5eSIKKygxIHJvdykKKwor U0VMRUNUIChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICBhICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBbInl5eSIsICJ6enoiXQorKDEgcm93 KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9 XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbiB0OworICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZIiwg InoiOiAiWlpaIn1dCisoMSByb3cpCisKK1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAo KGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyB4IAorLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwgeyJ5IjogIllZ WSIsICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW3sieSI6ICJ5eXkiLCAieiI6ICJ6enoifSwg eyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLngu KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICB4ICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbInl5eSIsICJ6 enoiLCAiWVlZIiwgIlpaWiJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLioueC55IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgeSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tCisgWyJ5eXkiLCAiWVlZIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi54Lnog RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICB6ICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0KKyBbInp6eiIsICJaWloiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4q LioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgIHkgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgIllZWSJdCisoMSByb3cpCisKK1NFTEVDVCAo amIpLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAg IGpiICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsi eXl5IiwgInp6eiIsICJZWVkiLCAiWlpaIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi4q LiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGpiIAorLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisgYyAKKy0tLQorIAorKDEgcm93KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiBqYi4qCisoMiByb3dzKQorCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0 cHV0OiBqYi5hCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbgorICAgT3V0cHV0OiBqYi5hWzFdCisoMiByb3dzKQorCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsnYiddIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24K KyAgIE91dHB1dDogamIuYS4qWydiJzo6dGV4dF0KKygyIHJvd3MpCisKK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6Ml1bJ2InXS5iIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAg IE91dHB1dDogamIuYS4qWzE6Ml1bOidiJzo6dGV4dF0uYgorKDIgcm93cykKKwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvanNvbmIuc3FsCmluZGV4IDVmMDE5MGQ1YTJiLi5lM2I4MWVmYTJkMCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pzb25iLnNxbApAQCAtMTI4NiwzMCArMTI4Niw0NiBAQCBzZWxlY3QganNv bmJfaW5zZXJ0KCd7ImEiOiB7ImIiOiAidmFsdWUifX0nLCAne2EsIGJ9JywgJyJuZXdfdmFs dWUiJywgdHJ1ZSk7CiAKIC0tIGpzb25iIHN1YnNjcmlwdAogc2VsZWN0ICgnMTIzJzo6anNv bmIpWydhJ107CitzZWxlY3QgKCcxMjMnOjpqc29uYikuYTsKIHNlbGVjdCAoJzEyMyc6Ompz b25iKVswXTsKIHNlbGVjdCAoJzEyMyc6Ompzb25iKVtOVUxMXTsKIHNlbGVjdCAoJ3siYSI6 IDF9Jzo6anNvbmIpWydhJ107CitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKS5hOwogc2Vs ZWN0ICgneyJhIjogMX0nOjpqc29uYilbMF07CiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25i KVsnbm90X2V4aXN0J107CitzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKS4ibm90X2V4aXN0 IjsKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpW05VTExdOwogc2VsZWN0ICgnWzEsICIy IiwgbnVsbF0nOjpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNv bmIpLmE7CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVswXTsKIHNlbGVjdCAo J1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWycxJ107CitzZWxlY3QgKCdbMSwgIjIiLCBudWxs XSc6Ompzb25iKS4iMSI7CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxLjBd Owogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMl07CiBzZWxlY3QgKCdbMSwg IjIiLCBudWxsXSc6Ompzb25iKVszXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNv bmIpWy0yXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWydhJ107Citz ZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxXS5hOwogc2VsZWN0ICgnWzEsICIy IiwgbnVsbF0nOjpqc29uYilbMV1bMF07CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwg ImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydiJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6 ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmI7CiBzZWxlY3QgKCd7ImEiOiAxLCAi YiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ107CitzZWxlY3QgKCd7ImEi OiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmQ7CiBzZWxlY3QgKCd7 ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11bMV07Citz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpLmRb MV07CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNv bmIpWydkJ11bJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAy LCAzXX0nOjpqc29uYikuZFsnYSddOworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJk IjogWzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJh MiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2Ex J107CitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIs ICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTE7CiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJh MiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2Ex J11bJ2EyJ107CitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjog ImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTEuYTI7CiBzZWxlY3QgKCd7ImEiOiB7 ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIp WydhJ11bJ2ExJ11bJ2EyJ11bJ2EzJ107CitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6 ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTEuYTIuYTM7 CiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1d LCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ107CitzZWxlY3QgKCd7ImEiOiBb ImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNv bmIpLmFbMV0uYjE7CiBzZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJi YiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIpWydhJ11bMV1bJ2IxJ11bMl07Citz ZWxlY3QgKCd7ImEiOiBbImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAi YiI6ICJiYiJ9Jzo6anNvbmIpLmFbMV0uYjFbMl07CiAKIC0tIHNsaWNlcyBhcmUgbm90IHN1 cHBvcnRlZAogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107CkBAIC0xNTU5 LDMgKzE1NzUsNDMgQEAgc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmZsb2F0ODsKIHNlbGVjdCAnMTIzNDUu MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25i OjppbnQyOwogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDQ7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50ODsK KworLS0gZG90IG5vdGF0aW9uCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRp b24gQVMKK1NFTEVDVCAneyJhIjogWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUi OiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sICJiIjogWzMsIDQsIHsi YiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XX0nOjpqc29uYiBqYjsK KworU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNU IChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKHQuamIp LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIChqYikuKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OworU0VMRUNUIChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOworU0VMRUNUIChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku YyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKi5iIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIChqYikuYS4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKK1NFTEVDVCAoamIpLmEuKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitT RUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAo amIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKChqYiku KikueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKChqYikuKiku eCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKChqYikuKilbOl0u eCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgKGpiKS4qLnggRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLioueC4qIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLngueSBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54LnogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiouKi55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitTRUxFQ1QgKGpiKS4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi4qLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor U0VMRUNUIChqYikuYS5iLmMuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IChqYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hWzFdIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsn YiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOjJdWydiJ10uYiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOwotLSAKMi4yNS4xCgo= --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0008-Extract-transformColumnRefInternal.patch" Content-Disposition: attachment; filename="v6-0008-Extract-transformColumnRefInternal.patch" Content-Transfer-Encoding: base64 RnJvbSBmYWNlNGQxNGZiMzM1MjA0ZDAyNDQ1NmU2M2I2ZGNhN2JkYzFmOTdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFN1biwgMiBBcHIgMjAyMyAwMDoxMzozOCArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDgvMTFdIEV4dHJhY3QgdHJhbnNmb3JtQ29sdW1uUmVmSW50ZXJuYWwo KQoKLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIHwgMjM4ICsrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTMyIGluc2VydGlv bnMoKyksIDEwNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRl eCAzZWQwMTg2NGY2Ni4uYjgyZDI1YzQwYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIu YwpAQCAtNTY3LDExNiArNTY3LDMxIEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kLAogCXJldHVybiByZXN1bHQ7CiB9CiAK LS8qCi0gKiBUcmFuc2Zvcm0gYSBDb2x1bW5SZWYuCi0gKgotICogSWYgeW91IGZpbmQgeW91 cnNlbGYgY2hhbmdpbmcgdGhpcyBjb2RlLCBzZWUgYWxzbyBFeHBhbmRDb2x1bW5SZWZTdGFy LgotICovCi1zdGF0aWMgTm9kZSAqCi10cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCit0eXBlZGVmIHN0cnVjdCBDb2xSZWZFcnJvcgog ewotCU5vZGUJICAgKm5vZGUgPSBOVUxMOwotCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOwot CWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwotCWNoYXIJICAgKmNvbG5hbWUgPSBOVUxMOwot CVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOwotCWludAkJCWxldmVsc191cDsKIAllbnVt CiAJewogCQlDUkVSUl9OT19DT0xVTU4sCiAJCUNSRVJSX05PX1JURSwKIAkJQ1JFUlJfV1JP TkdfREIsCiAJCUNSRVJSX1RPT19NQU5ZCi0JfQkJCWNyZXJyID0gQ1JFUlJfTk9fQ09MVU1O OwotCWNvbnN0IGNoYXIgKmVycjsKKwl9CQkJY29kZTsKKwljaGFyCSAgICpuc3BuYW1lOwor CWNoYXIJICAgKnJlbG5hbWU7CisJY2hhcgkgICAqY29sbmFtZTsKK30gQ29sUmVmRXJyb3I7 CiAKLQkvKgotCSAqIENoZWNrIHRvIHNlZSBpZiB0aGUgY29sdW1uIHJlZmVyZW5jZSBpcyBp biBhbiBpbnZhbGlkIHBsYWNlIHdpdGhpbiB0aGUKLQkgKiBxdWVyeS4gIFdlIGFsbG93IGNv bHVtbiByZWZlcmVuY2VzIGluIG1vc3QgcGxhY2VzLCBleGNlcHQgaW4gZGVmYXVsdAotCSAq IGV4cHJlc3Npb25zIGFuZCBwYXJ0aXRpb24gYm91bmQgZXhwcmVzc2lvbnMuCi0JICovCi0J ZXJyID0gTlVMTDsKLQlzd2l0Y2ggKHBzdGF0ZS0+cF9leHByX2tpbmQpCi0JewotCQljYXNl IEVYUFJfS0lORF9OT05FOgotCQkJQXNzZXJ0KGZhbHNlKTsJCS8qIGNhbid0IGhhcHBlbiAq LwotCQkJYnJlYWs7Ci0JCWNhc2UgRVhQUl9LSU5EX09USEVSOgotCQljYXNlIEVYUFJfS0lO RF9KT0lOX09OOgotCQljYXNlIEVYUFJfS0lORF9KT0lOX1VTSU5HOgotCQljYXNlIEVYUFJf S0lORF9GUk9NX1NVQlNFTEVDVDoKLQkJY2FzZSBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTjoK LQkJY2FzZSBFWFBSX0tJTkRfV0hFUkU6Ci0JCWNhc2UgRVhQUl9LSU5EX1BPTElDWToKLQkJ Y2FzZSBFWFBSX0tJTkRfSEFWSU5HOgotCQljYXNlIEVYUFJfS0lORF9GSUxURVI6Ci0JCWNh c2UgRVhQUl9LSU5EX1dJTkRPV19QQVJUSVRJT046Ci0JCWNhc2UgRVhQUl9LSU5EX1dJTkRP V19PUkRFUjoKLQkJY2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JBTkdFOgotCQljYXNl IEVYUFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUzoKLQkJY2FzZSBFWFBSX0tJTkRfV0lORE9X X0ZSQU1FX0dST1VQUzoKLQkJY2FzZSBFWFBSX0tJTkRfU0VMRUNUX1RBUkdFVDoKLQkJY2Fz ZSBFWFBSX0tJTkRfSU5TRVJUX1RBUkdFVDoKLQkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1NP VVJDRToKLQkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDoKLQkJY2FzZSBFWFBSX0tJ TkRfTUVSR0VfV0hFTjoKLQkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6Ci0JCWNhc2UgRVhQ Ul9LSU5EX09SREVSX0JZOgotCQljYXNlIEVYUFJfS0lORF9ESVNUSU5DVF9PTjoKLQkJY2Fz ZSBFWFBSX0tJTkRfTElNSVQ6Ci0JCWNhc2UgRVhQUl9LSU5EX09GRlNFVDoKLQkJY2FzZSBF WFBSX0tJTkRfUkVUVVJOSU5HOgotCQljYXNlIEVYUFJfS0lORF9NRVJHRV9SRVRVUk5JTkc6 Ci0JCWNhc2UgRVhQUl9LSU5EX1ZBTFVFUzoKLQkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJ TkdMRToKLQkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKLQkJY2FzZSBFWFBS X0tJTkRfRE9NQUlOX0NIRUNLOgotCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxU OgotCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgotCQljYXNlIEVYUFJfS0lO RF9JTkRFWF9QUkVESUNBVEU6Ci0JCWNhc2UgRVhQUl9LSU5EX1NUQVRTX0VYUFJFU1NJT046 Ci0JCWNhc2UgRVhQUl9LSU5EX0FMVEVSX0NPTF9UUkFOU0ZPUk06Ci0JCWNhc2UgRVhQUl9L SU5EX0VYRUNVVEVfUEFSQU1FVEVSOgotCQljYXNlIEVYUFJfS0lORF9UUklHR0VSX1dIRU46 Ci0JCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OOgotCQljYXNlIEVYUFJf S0lORF9DQUxMX0FSR1VNRU5UOgotCQljYXNlIEVYUFJfS0lORF9DT1BZX1dIRVJFOgotCQlj YXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgotCQljYXNlIEVYUFJfS0lORF9DWUNM RV9NQVJLOgotCQkJLyogb2theSAqLwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6Ci0JCQllcnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVu Y2UgaW4gREVGQVVMVCBleHByZXNzaW9uIik7Ci0JCQlicmVhazsKLQkJY2FzZSBFWFBSX0tJ TkRfUEFSVElUSU9OX0JPVU5EOgotCQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVm ZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIik7Ci0JCQlicmVhazsKLQot CQkJLyoKLQkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBo ZXJlLCBzbyB0aGF0IHRoZQotCQkJICogY29tcGlsZXIgd2lsbCB3YXJuIGlmIHdlIGFkZCBh IG5ldyBQYXJzZUV4cHJLaW5kIHdpdGhvdXQKLQkJCSAqIGV4dGVuZGluZyB0aGlzIHN3aXRj aC4gIElmIHdlIGRvIHNlZSBhbiB1bnJlY29nbml6ZWQgdmFsdWUgYXQKLQkJCSAqIHJ1bnRp bWUsIHRoZSBiZWhhdmlvciB3aWxsIGJlIHRoZSBzYW1lIGFzIGZvciBFWFBSX0tJTkRfT1RI RVIsCi0JCQkgKiB3aGljaCBpcyBzYW5lIGFueXdheS4KLQkJCSAqLwotCX0KLQlpZiAoZXJy KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCIlcyIsIGVyciksCi0JCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOwotCi0JLyoKLQkg KiBHaXZlIHRoZSBQcmVQYXJzZUNvbHVtblJlZkhvb2ssIGlmIGFueSwgZmlyc3Qgc2hvdC4g IElmIGl0IHJldHVybnMKLQkgKiBub24tbnVsbCB0aGVuIHRoYXQncyBhbGwsIGZvbGtzLgot CSAqLwotCWlmIChwc3RhdGUtPnBfcHJlX2NvbHVtbnJlZl9ob29rICE9IE5VTEwpCi0Jewot CQlub2RlID0gcHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZfaG9vayhwc3RhdGUsIGNyZWYpOwot CQlpZiAobm9kZSAhPSBOVUxMKQotCQkJcmV0dXJuIG5vZGU7Ci0JfQorc3RhdGljIE5vZGUg KgordHJhbnNmb3JtQ29sdW1uUmVmSW50ZXJuYWwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1 bW5SZWYgKmNyZWYsIGludCBuZmllbGRzLAorCQkJCQkJICAgQ29sUmVmRXJyb3IgKmVycikK K3sKKwlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICpub2RlID0gTlVM TDsKKwljaGFyCSAgICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICpyZWxuYW1lID0gTlVM TDsKKwljaGFyCSAgICpjb2xuYW1lID0gTlVMTDsKKwlpbnQJCQljcmVyciA9IENSRVJSX05P X0NPTFVNTjsKKwlpbnQJCQlsZXZlbHNfdXA7CiAKIAkvKi0tLS0tLS0tLS0KIAkgKiBUaGUg YWxsb3dlZCBzeW50YXhlcyBhcmU6CkBAIC03MDEsNyArNjE2LDcgQEAgdHJhbnNmb3JtQ29s dW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCSAqIGRhdGFi YXNlIG5hbWU7IHdlIGNoZWNrIGl0IGhlcmUgYW5kIHRoZW4gZGlzY2FyZCBpdC4KIAkgKi0t LS0tLS0tLS0KIAkgKi8KLQlzd2l0Y2ggKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykpCisJ c3dpdGNoIChuZmllbGRzKQogCXsKIAkJY2FzZSAxOgogCQkJewpAQCAtODkwLDYgKzgwNSwx MTcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVm ICpjcmVmKQogCQkJYnJlYWs7CiAJfQogCisJZXJyLT5jb2RlID0gY3JlcnI7CisJZXJyLT5u c3BuYW1lID0gbnNwbmFtZTsKKwllcnItPnJlbG5hbWUgPSByZWxuYW1lOworCWVyci0+Y29s bmFtZSA9IGNvbG5hbWU7CisKKwlyZXR1cm4gbm9kZTsKK30KKworLyoKKyAqIFRyYW5zZm9y bSBhIENvbHVtblJlZi4KKyAqCisgKiBJZiB5b3UgZmluZCB5b3Vyc2VsZiBjaGFuZ2luZyB0 aGlzIGNvZGUsIHNlZSBhbHNvIEV4cGFuZENvbHVtblJlZlN0YXIuCisgKi8KK3N0YXRpYyBO b2RlICoKK3RyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJl ZiAqY3JlZikKK3sKKwlOb2RlCSAgICpub2RlID0gTlVMTDsKKwlDb2xSZWZFcnJvciBjcmVy cjsKKwljb25zdCBjaGFyICplcnI7CisKKwkvKgorCSAqIENoZWNrIHRvIHNlZSBpZiB0aGUg Y29sdW1uIHJlZmVyZW5jZSBpcyBpbiBhbiBpbnZhbGlkIHBsYWNlIHdpdGhpbiB0aGUKKwkg KiBxdWVyeS4gIFdlIGFsbG93IGNvbHVtbiByZWZlcmVuY2VzIGluIG1vc3QgcGxhY2VzLCBl eGNlcHQgaW4gZGVmYXVsdAorCSAqIGV4cHJlc3Npb25zIGFuZCBwYXJ0aXRpb24gYm91bmQg ZXhwcmVzc2lvbnMuCisJICovCisJZXJyID0gTlVMTDsKKwlzd2l0Y2ggKHBzdGF0ZS0+cF9l eHByX2tpbmQpCisJeworCQljYXNlIEVYUFJfS0lORF9OT05FOgorCQkJQXNzZXJ0KGZhbHNl KTsJCS8qIGNhbid0IGhhcHBlbiAqLworCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX09U SEVSOgorCQljYXNlIEVYUFJfS0lORF9KT0lOX09OOgorCQljYXNlIEVYUFJfS0lORF9KT0lO X1VTSU5HOgorCQljYXNlIEVYUFJfS0lORF9GUk9NX1NVQlNFTEVDVDoKKwkJY2FzZSBFWFBS X0tJTkRfRlJPTV9GVU5DVElPTjoKKwkJY2FzZSBFWFBSX0tJTkRfV0hFUkU6CisJCWNhc2Ug RVhQUl9LSU5EX1BPTElDWToKKwkJY2FzZSBFWFBSX0tJTkRfSEFWSU5HOgorCQljYXNlIEVY UFJfS0lORF9GSUxURVI6CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19QQVJUSVRJT046CisJ CWNhc2UgRVhQUl9LSU5EX1dJTkRPV19PUkRFUjoKKwkJY2FzZSBFWFBSX0tJTkRfV0lORE9X X0ZSQU1FX1JBTkdFOgorCQljYXNlIEVYUFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUzoKKwkJ Y2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX0dST1VQUzoKKwkJY2FzZSBFWFBSX0tJTkRf U0VMRUNUX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfSU5TRVJUX1RBUkdFVDoKKwkJY2Fz ZSBFWFBSX0tJTkRfVVBEQVRFX1NPVVJDRToKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1RB UkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoKKwkJY2FzZSBFWFBSX0tJTkRf R1JPVVBfQlk6CisJCWNhc2UgRVhQUl9LSU5EX09SREVSX0JZOgorCQljYXNlIEVYUFJfS0lO RF9ESVNUSU5DVF9PTjoKKwkJY2FzZSBFWFBSX0tJTkRfTElNSVQ6CisJCWNhc2UgRVhQUl9L SU5EX09GRlNFVDoKKwkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgorCQljYXNlIEVYUFJf S0lORF9NRVJHRV9SRVRVUk5JTkc6CisJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFUzoKKwkJY2Fz ZSBFWFBSX0tJTkRfVkFMVUVTX1NJTkdMRToKKwkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09O U1RSQUlOVDoKKwkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgorCQljYXNlIEVYUFJf S0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNT SU9OOgorCQljYXNlIEVYUFJfS0lORF9JTkRFWF9QUkVESUNBVEU6CisJCWNhc2UgRVhQUl9L SU5EX1NUQVRTX0VYUFJFU1NJT046CisJCWNhc2UgRVhQUl9LSU5EX0FMVEVSX0NPTF9UUkFO U0ZPUk06CisJCWNhc2UgRVhQUl9LSU5EX0VYRUNVVEVfUEFSQU1FVEVSOgorCQljYXNlIEVY UFJfS0lORF9UUklHR0VSX1dIRU46CisJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBS RVNTSU9OOgorCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgorCQljYXNlIEVYUFJf S0lORF9DT1BZX1dIRVJFOgorCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgor CQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgorCQkJLyogb2theSAqLworCQkJYnJlYWs7 CisKKwkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJjYW5u b3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gREVGQVVMVCBleHByZXNzaW9uIik7CisJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgorCQkJZXJyID0gXygi Y2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNz aW9uIik7CisJCQlicmVhazsKKworCQkJLyoKKwkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFs bHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQorCQkJICogY29tcGlsZXIg d2lsbCB3YXJuIGlmIHdlIGFkZCBhIG5ldyBQYXJzZUV4cHJLaW5kIHdpdGhvdXQKKwkJCSAq IGV4dGVuZGluZyB0aGlzIHN3aXRjaC4gIElmIHdlIGRvIHNlZSBhbiB1bnJlY29nbml6ZWQg dmFsdWUgYXQKKwkJCSAqIHJ1bnRpbWUsIHRoZSBiZWhhdmlvciB3aWxsIGJlIHRoZSBzYW1l IGFzIGZvciBFWFBSX0tJTkRfT1RIRVIsCisJCQkgKiB3aGljaCBpcyBzYW5lIGFueXdheS4K KwkJCSAqLworCX0KKwlpZiAoZXJyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnX2ludGVybmFs KCIlcyIsIGVyciksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxv Y2F0aW9uKSkpOworCisJLyoKKwkgKiBHaXZlIHRoZSBQcmVQYXJzZUNvbHVtblJlZkhvb2ss IGlmIGFueSwgZmlyc3Qgc2hvdC4gIElmIGl0IHJldHVybnMKKwkgKiBub24tbnVsbCB0aGVu IHRoYXQncyBhbGwsIGZvbGtzLgorCSAqLworCWlmIChwc3RhdGUtPnBfcHJlX2NvbHVtbnJl Zl9ob29rICE9IE5VTEwpCisJeworCQlub2RlID0gcHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZf aG9vayhwc3RhdGUsIGNyZWYpOworCQlpZiAobm9kZSAhPSBOVUxMKQorCQkJcmV0dXJuIG5v ZGU7CisJfQorCisJbm9kZSA9IHRyYW5zZm9ybUNvbHVtblJlZkludGVybmFsKHBzdGF0ZSwg Y3JlZiwgbGlzdF9sZW5ndGgoY3JlZi0+ZmllbGRzKSwKKwkJCQkJCQkJCSAgJmNyZXJyKTsK KwogCS8qCiAJICogTm93IGdpdmUgdGhlIFBvc3RQYXJzZUNvbHVtblJlZkhvb2ssIGlmIGFu eSwgYSBjaGFuY2UuICBXZSBwYXNzIHRoZQogCSAqIHRyYW5zbGF0aW9uLXNvLWZhciBzbyB0 aGF0IGl0IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBpdCB3aXNoZXMgaW4gdGhlCkBAIC05MTks MTMgKzk0NSwxMyBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b2x1bW5SZWYgKmNyZWYpCiAJICovCiAJaWYgKG5vZGUgPT0gTlVMTCkKIAl7Ci0JCXN3aXRj aCAoY3JlcnIpCisJCXN3aXRjaCAoY3JlcnIuY29kZSkKIAkJewogCQkJY2FzZSBDUkVSUl9O T19DT0xVTU46Ci0JCQkJZXJyb3JNaXNzaW5nQ29sdW1uKHBzdGF0ZSwgcmVsbmFtZSwgY29s bmFtZSwgY3JlZi0+bG9jYXRpb24pOworCQkJCWVycm9yTWlzc2luZ0NvbHVtbihwc3RhdGUs IGNyZXJyLnJlbG5hbWUsIGNyZXJyLmNvbG5hbWUsIGNyZWYtPmxvY2F0aW9uKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgQ1JFUlJfTk9fUlRFOgotCQkJCWVycm9yTWlzc2luZ1JURShwc3Rh dGUsIG1ha2VSYW5nZVZhcihuc3BuYW1lLCByZWxuYW1lLAorCQkJCWVycm9yTWlzc2luZ1JU RShwc3RhdGUsIG1ha2VSYW5nZVZhcihjcmVyci5uc3BuYW1lLCBjcmVyci5yZWxuYW1lLAog CQkJCQkJCQkJCQkJCSBjcmVmLT5sb2NhdGlvbikpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBD UkVSUl9XUk9OR19EQjoKLS0gCjIuMjUuMQoK --------------PzZBhU9E1AzbpH4GCSf6m0aM Content-Type: text/x-patch; charset=UTF-8; name="v6-0009-Enable-non-parenthesized-column-references-in-dot.patch" Content-Disposition: attachment; filename*0="v6-0009-Enable-non-parenthesized-column-references-in-dot.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNDA1NjJiYzYxNWYxYWMwNGRlYjVkODdjODEwZTMzYjk3ODA5ZDBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFN1biwgMiBBcHIgMjAyMyAwMTo1Mzo0NiArMDMwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMDkvMTFdIEVuYWJsZSBub24tcGFyZW50aGVzaXplZCBjb2x1bW4gcmVm ZXJlbmNlcyBpbiBkb3QKIG5vdGF0aW9uCgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYyAgIHwgIDk5ICsrKysrKysrKysrKysrKy0tLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX2V4cHIuaCAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmIub3V0IHwgIDg0ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA1NiArKysrKystLS0tLS0KIDcgZmlsZXMgY2hh bmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCBhOGVlNzk1MThjYS4uMjlmMzBkMTc4MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt MTg3MTUsMTMgKzE4NzE1LDE2IEBAIG1ha2VDb2x1bW5SZWYoY2hhciAqY29sbmFtZSwgTGlz dCAqaW5kaXJlY3Rpb24sCiAJCQkJYy0+ZmllbGRzID0gbGNvbnMobWFrZVN0cmluZyhjb2xu YW1lKSwgaW5kaXJlY3Rpb24pOwogCQkJfQogCQkJaS0+YXJnID0gKE5vZGUgKikgYzsKKwkJ CWktPmFyZ19pc19jb2xyZWYgPSB0cnVlOwkvKiB0byBkaXN0aW5ndWlzaCBmcm9tICcoYS5j b2wucmVmKVsuLi5dJyBjYXNlICovCiAJCQlyZXR1cm4gKE5vZGUgKikgaTsKIAkJfQogCQll bHNlIGlmIChJc0EobGZpcnN0KGwpLCBBX1N0YXIpKQogCQl7CisjaWYgMAogCQkJLyogV2Ug b25seSBhbGxvdyAnKicgYXQgdGhlIGVuZCBvZiBhIENvbHVtblJlZiAqLwogCQkJaWYgKGxu ZXh0KGluZGlyZWN0aW9uLCBsKSAhPSBOVUxMKQogCQkJCXBhcnNlcl95eWVycm9yKCJpbXBy b3BlciB1c2Ugb2YgXCIqXCIiKTsKKyNlbmRpZgogCQl9CiAJCW5maWVsZHMrKzsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCBiODJkMjVjNDBhNC4uZWE5Y2EzYTZmNzEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNzEsNyArNzEsOCBAQCBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtWG1sRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIFhtbEV4cHIgKngp Owogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVhtbFNlcmlhbGl6ZShQYXJzZVN0YXRlICpwc3Rh dGUsIFhtbFNlcmlhbGl6ZSAqeHMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUJvb2xlYW5U ZXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbGVhblRlc3QgKmIpOwogc3RhdGljIE5vZGUg KnRyYW5zZm9ybUN1cnJlbnRPZkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDdXJyZW50T2ZF eHByICpjZXhwcik7Ci1zdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1D b2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsCisJCQkJCQkJ CUxpc3QgKippbmRpcmVjdGlvbiwgYm9vbCByZXBvcnRfZXJyb3IpOwogc3RhdGljIE5vZGUg KnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJICBQ YXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJCQkJICBpbnQgc3VibGV2ZWxzX3Vw LCBpbnQgbG9jYXRpb24pOwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIHRyYW5zZm9ybUV4cHJSZWN1 cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAlzd2l0Y2ggKG5vZGVUYWco ZXhwcikpCiAJewogCQljYXNlIFRfQ29sdW1uUmVmOgotCQkJcmVzdWx0ID0gdHJhbnNmb3Jt Q29sdW1uUmVmKHBzdGF0ZSwgKENvbHVtblJlZiAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRy YW5zZm9ybUNvbHVtblJlZihwc3RhdGUsIChDb2x1bW5SZWYgKikgZXhwciwgTlVMTCwgdHJ1 ZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRfUGFyYW1SZWY6CkBAIC0xNTgsNyArMTU5LDgg QEAgdHJhbnNmb3JtRXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHBy KQogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX0FfSW5kaXJlY3Rpb246Ci0JCQlyZXN1bHQgPSB0 cmFuc2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUsIChBX0luZGlyZWN0aW9uICopIGV4cHIsIE5V TEwpOworCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5kaXJlY3Rpb24ocHN0YXRlLCAoQV9JbmRp cmVjdGlvbiAqKSBleHByLAorCQkJCQkJCQkJCSAgTlVMTCwgTlVMTCwgdHJ1ZSk7CiAJCQli cmVhazsKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CkBAIC00MzQsMjAgKzQzNiw1MiBAQCB1 bmtub3duX2F0dHJpYnV0ZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnJlbHJlZiwgY29u c3QgY2hhciAqYXR0bmFtZSwKIAogTm9kZSAqCiB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKLQkJCQkJIGJvb2wgKnRyYWls aW5nX3N0YXJfZXhwYW5zaW9uKQorCQkJCQkgTm9kZSAqdHJhbnNmb3JtZWRfYXJnLAorCQkJ CQkgYm9vbCAqdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24sCisJCQkJCSBib29sIHJlcG9ydF9l cnJvcikKIHsKIAlOb2RlCSAgICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKLQlO b2RlCSAgICpyZXN1bHQgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGluZC0+YXJn KTsKKwlOb2RlCSAgICpyZXN1bHQ7CisJTGlzdAkgICAqaW5kaXJlY3Rpb24gPSBOSUw7CiAJ TGlzdAkgICAqc3Vic2NyaXB0cyA9IE5JTDsKLQlpbnQJCQlsb2NhdGlvbiA9IGV4cHJMb2Nh dGlvbihyZXN1bHQpOworCWludAkJCWxvY2F0aW9uOwogCUxpc3RDZWxsICAgKmk7CiAKKwlp ZiAodHJhbnNmb3JtZWRfYXJnKQorCQlyZXN1bHQgPSB0cmFuc2Zvcm1lZF9hcmc7CisJZWxz ZSBpZiAoSXNBKGluZC0+YXJnLCBDb2x1bW5SZWYpKQorCXsKKwkJLyoKKwkJICogR2V0IHRo ZSB0cmFpbGluZyBpbmRpcmVjdGlvbiBhZnRlciBjb2x1bW4gbmFtZSByZXNvbHV0aW9uLAor CQkgKiBpZiBhcmd1bWVudCBpcyBhIG5vbi1wYXJlbnRoaXplZCBjb2x1bW4gcmVmZXJlbmNl LgorCQkgKi8KKwkJTGlzdAkgICoqdHJhaWxpbmdfaW5kaXJlY3Rpb24gPSBpbmQtPmFyZ19p c19jb2xyZWYgPworCQkJKGNvbXBhdF9maWVsZF9ub3RhdGlvbiA/ICZpbmRpcmVjdGlvbiA6 ICZzdWJzY3JpcHRzKSA6IE5VTEw7CisKKwkJcmVzdWx0ID0gdHJhbnNmb3JtQ29sdW1uUmVm KHBzdGF0ZSwgKENvbHVtblJlZiAqKSBpbmQtPmFyZywKKwkJCQkJCQkJCXRyYWlsaW5nX2lu ZGlyZWN0aW9uLCByZXBvcnRfZXJyb3IpOworCQlpZiAoIXJlc3VsdCkKKwkJCXJldHVybiBO VUxMOworCX0KKwllbHNlCisJCXJlc3VsdCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0 ZSwgaW5kLT5hcmcpOworCisJbG9jYXRpb24gPSBleHByTG9jYXRpb24ocmVzdWx0KTsKKwor CS8qIFByZXBlbmQgdHJhaWxpbmcgaW5kaXJlY3Rpb24gb2YgQ29sdW1uUmVmLCBpZiBhbnkg Ki8KKwlpZiAoaW5kaXJlY3Rpb24pCisJCWluZGlyZWN0aW9uID0gbGlzdF9jb25jYXQoaW5k aXJlY3Rpb24sIGluZC0+aW5kaXJlY3Rpb24pOworCWVsc2UKKwkJaW5kaXJlY3Rpb24gPSBp bmQtPmluZGlyZWN0aW9uOworCiAJLyoKIAkgKiBXZSBoYXZlIHRvIHNwbGl0IGFueSBmaWVs ZC1zZWxlY3Rpb24gb3BlcmF0aW9ucyBhcGFydCBmcm9tCi0JICogc3Vic2NyaXB0aW5nLiAg QWRqYWNlbnQgQV9JbmRpY2VzIG5vZGVzIGhhdmUgdG8gYmUgdHJlYXRlZCBhcyBhIHNpbmds ZQorCSAqIHN1YnNjcmlwdGluZyBpbiAiY29tcGF0X2ZpZWxkX25vdGF0aW9uIiBtb2RlLgor CSAqCisJICogQWRqYWNlbnQgQV9JbmRpY2VzIG5vZGVzIGhhdmUgdG8gYmUgdHJlYXRlZCBh cyBhIHNpbmdsZQogCSAqIG11bHRpZGltZW5zaW9uYWwgc3Vic2NyaXB0IG9wZXJhdGlvbi4K IAkgKi8KLQlmb3JlYWNoKGksIGluZC0+aW5kaXJlY3Rpb24pCisJZm9yZWFjaChpLCBpbmRp cmVjdGlvbikKIAl7CiAJCU5vZGUJICAgKm4gPSBsZmlyc3QoaSk7CiAKQEAgLTU1Miw3ICs1 ODYsMTIgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0lu ZGlyZWN0aW9uICppbmQsCiAJCQkJCQkJCQkJICBsb2NhdGlvbik7CiAKIAkJCWlmICghbmV3 cmVzdWx0KQorCQkJeworCQkJCWlmICghcmVwb3J0X2Vycm9yKQorCQkJCQlyZXR1cm4gTlVM TDsKKwogCQkJCXVua25vd25fYXR0cmlidXRlKHBzdGF0ZSwgcmVzdWx0LCBzdHJWYWwobiks IGxvY2F0aW9uKTsKKwkJCX0KIAogCQkJLyogY29uc3VtZSBmaWVsZCBzZWxlY3QgKi8KIAkJ CXN1YnNjcmlwdHMgPSBsaXN0X2RlbGV0ZV9maXJzdChzdWJzY3JpcHRzKTsKQEAgLTgwNSwx MCArODQ0LDEzIEBAIHRyYW5zZm9ybUNvbHVtblJlZkludGVybmFsKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ29sdW1uUmVmICpjcmVmLCBpbnQgbmZpZWxkcywKIAkJCWJyZWFrOwogCX0KIAot CWVyci0+Y29kZSA9IGNyZXJyOwotCWVyci0+bnNwbmFtZSA9IG5zcG5hbWU7Ci0JZXJyLT5y ZWxuYW1lID0gcmVsbmFtZTsKLQllcnItPmNvbG5hbWUgPSBjb2xuYW1lOworCWlmIChlcnIp CisJeworCQllcnItPmNvZGUgPSBjcmVycjsKKwkJZXJyLT5uc3BuYW1lID0gbnNwbmFtZTsK KwkJZXJyLT5yZWxuYW1lID0gcmVsbmFtZTsKKwkJZXJyLT5jb2xuYW1lID0gY29sbmFtZTsK Kwl9CiAKIAlyZXR1cm4gbm9kZTsKIH0KQEAgLTgxOSwxMSArODYxLDE2IEBAIHRyYW5zZm9y bUNvbHVtblJlZkludGVybmFsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVm LCBpbnQgbmZpZWxkcywKICAqIElmIHlvdSBmaW5kIHlvdXJzZWxmIGNoYW5naW5nIHRoaXMg Y29kZSwgc2VlIGFsc28gRXhwYW5kQ29sdW1uUmVmU3Rhci4KICAqLwogc3RhdGljIE5vZGUg KgotdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpj cmVmKQordHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVm ICpjcmVmLCBMaXN0ICoqcF9pbmRpcmVjdGlvbiwKKwkJCQkgICBib29sIHJlcG9ydF9lcnJv cikKIHsKIAlOb2RlCSAgICpub2RlID0gTlVMTDsKKwlMaXN0CSAgICppbmRpcmVjdGlvbiA9 IE5JTDsKIAlDb2xSZWZFcnJvciBjcmVycjsKIAljb25zdCBjaGFyICplcnI7CisJaW50CQkJ bnVtX2ZpZWxkczsKKwlpbnQJCQltYXhfZmllbGRzX3RvX3RyeTsKKwlpbnQJCQltaW5fZmll bGRzX3RvX3RyeTsKIAogCS8qCiAJICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBjb2x1bW4gcmVm ZXJlbmNlIGlzIGluIGFuIGludmFsaWQgcGxhY2Ugd2l0aGluIHRoZQpAQCAtOTEzLDggKzk2 MCw0NSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYpCiAJCQlyZXR1cm4gbm9kZTsKIAl9CiAKLQlub2RlID0gdHJhbnNmb3JtQ29s dW1uUmVmSW50ZXJuYWwocHN0YXRlLCBjcmVmLCBsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMp LAotCQkJCQkJCQkJICAmY3JlcnIpOworCS8qCisJICogVHJ5IHRvIGludGVycHJldCBkaWZm ZXJlbnQgcHJlZml4ZXMgb2YgdGhlIGZpZWxkIGxpc3QgYXMgYQorCSAqIGNvbHVtbiByZWZl cmVuY2UsIHN0YXJ0aW5nIGZyb20gdGhlIGxvbmdlc3QgcHJlZml4LgorCSAqIDQgaXMgYSBs ZW5ndGggb2YgdGhlIGxvbmdzZXQgcG9zc2libGUgJ2NhdC5zY2hlbWEudGFiLmNvbCcgcHJl Zml4LgorCSAqIFByZWZpeCBhbHNvIGNhbiBiZSBkZWxpbWl0ZWQgd2l0aCB0aGUgZmlyc3Qg b2NjdXJlbmNlIG9mICcuKicuCisJICogUmVtYWluaW5nIGZpZWxkcyB3aWxsIGJlIHRyZWF0 ZWQgYXMgaW5kaXJlY3Rpb25zLgorCSAqLworCW51bV9maWVsZHMgPSBsaXN0X2xlbmd0aChj cmVmLT5maWVsZHMpOworCW1heF9maWVsZHNfdG9fdHJ5ID0gTWluKDQsIG51bV9maWVsZHMp OworCisJZm9yIChpbnQgaiA9IDE7IGogPCBtYXhfZmllbGRzX3RvX3RyeTsgaisrKQorCXsK KwkJaWYgKElzQShsaXN0X250aChjcmVmLT5maWVsZHMsIGopLCBBX1N0YXIpKQorCQl7CisJ CQltYXhfZmllbGRzX3RvX3RyeSA9IGogKyAxOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkv KgorCSAqIERvbid0IHRyeSAnY29sLmZpZWxkJyBjYXNlIGJlY2F1c2UgYnkgdGhlIFNRTCBz dGFuZGFyZCwgY29sdW1uCisJICogc2hvdWxkIGJlIHRoZSBwcmVmaXhlZCB3aXRoIHRhYmxl IG5hbWUgd2hlbiB1c2VkIGluIGRvdCBub3RhdGlvbi4KKwkgKi8KKwltaW5fZmllbGRzX3Rv X3RyeSA9IE1pbihtYXhfZmllbGRzX3RvX3RyeSwgMik7CisKKwlmb3IgKGludCBpID0gbWF4 X2ZpZWxkc190b190cnk7IGkgPj0gbWluX2ZpZWxkc190b190cnk7IGktLSkKKwl7CisJCS8q IFRoZSBmaXJzdCBvY2N1cmVkIGVycm9yIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nICovCisJ CUNvbFJlZkVycm9yICpwY3JlcnIgPSBpID09IG1heF9maWVsZHNfdG9fdHJ5ID8gJmNyZXJy IDogTlVMTDsKKworCQlub2RlID0gdHJhbnNmb3JtQ29sdW1uUmVmSW50ZXJuYWwocHN0YXRl LCBjcmVmLCBpLCBwY3JlcnIpOworCisJCWlmIChub2RlKQorCQl7CisJCQkvKiBDb2xsZWN0 IHRyYWlsaW5nIGluZGlyZWN0aW9ucyAqLworCQkJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlf dGFpbChjcmVmLT5maWVsZHMsIGkpOworCQkJYnJlYWs7CisJCX0KKwl9CiAKIAkvKgogCSAq IE5vdyBnaXZlIHRoZSBQb3N0UGFyc2VDb2x1bW5SZWZIb29rLCBpZiBhbnksIGEgY2hhbmNl LiAgV2UgcGFzcyB0aGUKQEAgLTk0MCwxMSArMTAyNCwzMyBAQCB0cmFuc2Zvcm1Db2x1bW5S ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKIAl9CiAKKwlpZiAobm9k ZSkKKwl7CisJCWlmIChwX2luZGlyZWN0aW9uKQorCQl7CisJCQkvKiBSZXR1cm4gdHJhaWxp bmcgaW5kaXJlY3Rpb24gaWYgcmVxdWVzdGVkICovCisJCQkqcF9pbmRpcmVjdGlvbiA9IGlu ZGlyZWN0aW9uOworCQl9CisJCWVsc2UgaWYgKGluZGlyZWN0aW9uKQorCQl7CisJCQkvKiBU cmFuc2Zvcm0gdHJhaWxpbmcgaW5kaXJlY3Rpb24gcGFzc2luZyBhbHJlYWR5IHRyYW5zZm9y bWVkIG5vZGUgKi8KKwkJCUFfSW5kaXJlY3Rpb24gKmluZCA9IG1ha2VOb2RlKEFfSW5kaXJl Y3Rpb24pOworCisJCQlpbmQtPmFyZyA9IG5vZGU7CisJCQlpbmQtPmluZGlyZWN0aW9uID0g aW5kaXJlY3Rpb247CisKKwkJCW5vZGUgPSB0cmFuc2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUs IGluZCwgbm9kZSwgTlVMTCwgZmFsc2UpOworCQl9CisJfQorCiAJLyoKIAkgKiBUaHJvdyBl cnJvciBpZiBubyB0cmFuc2xhdGlvbiBmb3VuZC4KIAkgKi8KIAlpZiAobm9kZSA9PSBOVUxM KQogCXsKKwkJaWYgKCFyZXBvcnRfZXJyb3IpCisJCQlyZXR1cm4gTlVMTDsKKwogCQlzd2l0 Y2ggKGNyZXJyLmNvZGUpCiAJCXsKIAkJCWNhc2UgQ1JFUlJfTk9fQ09MVU1OOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDkwNDFlNDI0ZTFhLi40ZTk5NzI1YTczOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtNDUsMTEgKzQ1LDEzIEBAIHN0 YXRpYyBOb2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkJICAgTm9kZSAqcmhzLAogCQkJCQkJCQkJCSAgIENvZXJjaW9u Q29udGV4dCBjY29udGV4dCwKIAkJCQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwotc3RhdGlj IExpc3QgKkV4cGFuZENvbHVtblJlZlN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYsCi0JCQkJCQkJCSBib29sIG1ha2VfdGFyZ2V0X2VudHJ5KTsKK3N0YXRpYyBO b2RlICpFeHBhbmRDb2x1bW5SZWZTdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVm ICpjcmVmLAorCQkJCQkJCQkgYm9vbCBtYWtlX3RhcmdldF9lbnRyeSwgUGFyc2VFeHByS2lu ZCBleHByS2luZCk7CiBzdGF0aWMgTGlzdCAqRXhwYW5kQWxsVGFibGVzKFBhcnNlU3RhdGUg KnBzdGF0ZSwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICpFeHBhbmRJbmRpcmVjdGlv blN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQsCi0JCQkJCQkJ CSAgIGJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBhcnNlRXhwcktpbmQgZXhwcktpbmQpOwor CQkJCQkJCQkgICBib29sIG1ha2VfdGFyZ2V0X2VudHJ5LAorCQkJCQkJCQkgICBib29sIHJl cG9ydF9lcnJvciwKKwkJCQkJCQkJICAgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiBzdGF0 aWMgTGlzdCAqRXhwYW5kU2luZ2xlVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJCQkgICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQg bG9jYXRpb24sCiAJCQkJCQkJICAgYm9vbCBtYWtlX3RhcmdldF9lbnRyeSk7CkBAIC0xNTAs MTEgKzE1MiwxOCBAQCB0cmFuc2Zvcm1UYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqdGFyZ2V0bGlzdCwKIAkJCQlpZiAoSXNBKGxsYXN0KGNyZWYtPmZpZWxkcyksIEFf U3RhcikpCiAJCQkJewogCQkJCQkvKiBJdCBpcyBzb21ldGhpbmcuKiwgZXhwYW5kIGludG8g bXVsdGlwbGUgaXRlbXMgKi8KLQkJCQkJcF90YXJnZXQgPSBsaXN0X2NvbmNhdChwX3Rhcmdl dCwKLQkJCQkJCQkJCQkgICBFeHBhbmRDb2x1bW5SZWZTdGFyKHBzdGF0ZSwKLQkJCQkJCQkJ CQkJCQkJCSAgIGNyZWYsCi0JCQkJCQkJCQkJCQkJCQkgICB0cnVlKSk7Ci0JCQkJCWNvbnRp bnVlOworCQkJCQlOb2RlCSAgICpjb2x1bW5zID0gRXhwYW5kQ29sdW1uUmVmU3Rhcihwc3Rh dGUsCisJCQkJCQkJCQkJCQkJCQkgIGNyZWYsCisJCQkJCQkJCQkJCQkJCQkgIHRydWUsCisJ CQkJCQkJCQkJCQkJCQkgIGV4cHJLaW5kKTsKKworCQkJCQlpZiAoIWNvbHVtbnMgfHwgSXNB KGNvbHVtbnMsIExpc3QpKQorCQkJCQl7CisJCQkJCQlwX3RhcmdldCA9IGxpc3RfY29uY2F0 KHBfdGFyZ2V0LCAoTGlzdCAqKSBjb2x1bW5zKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9 CisKKwkJCQkJdHJhbnNmb3JtZWQgPSAoTm9kZSAqKSBjb2x1bW5zOwogCQkJCX0KIAkJCX0K IAkJCWVsc2UgaWYgKElzQShyZXMtPnZhbCwgQV9JbmRpcmVjdGlvbikpCkBAIC0xNjYsOSAr MTc1LDEwIEBAIHRyYW5zZm9ybVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICp0YXJnZXRsaXN0LAogCQkJCQlOb2RlCSAgICpjb2x1bW5zID0gRXhwYW5kSW5kaXJlY3Rp b25TdGFyKHBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkJCQlpbmQsCiAJCQkJCQkJCQkJCQkJCQkJ dHJ1ZSwKKwkJCQkJCQkJCQkJCQkJCQl0cnVlLAogCQkJCQkJCQkJCQkJCQkJCWV4cHJLaW5k KTsKIAotCQkJCQlpZiAoSXNBKGNvbHVtbnMsIExpc3QpKQorCQkJCQlpZiAoIWNvbHVtbnMg fHwgSXNBKGNvbHVtbnMsIExpc3QpKQogCQkJCQl7CiAJCQkJCQkvKiBJdCBpcyBzb21ldGhp bmcuKiwgZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KIAkJCQkJCXBfdGFyZ2V0ID0g bGlzdF9jb25jYXQocF90YXJnZXQsIChMaXN0ICopIGNvbHVtbnMpOwpAQCAtMjQ2LDkgKzI1 NiwxNCBAQCB0cmFuc2Zvcm1FeHByZXNzaW9uTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExp c3QgKmV4cHJsaXN0LAogCQkJaWYgKElzQShsbGFzdChjcmVmLT5maWVsZHMpLCBBX1N0YXIp KQogCQkJewogCQkJCS8qIEl0IGlzIHNvbWV0aGluZy4qLCBleHBhbmQgaW50byBtdWx0aXBs ZSBpdGVtcyAqLwotCQkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwKLQkJCQkJCQkJ CSBFeHBhbmRDb2x1bW5SZWZTdGFyKHBzdGF0ZSwgY3JlZiwKLQkJCQkJCQkJCQkJCQkJIGZh bHNlKSk7CisJCQkJTm9kZQkgICAqY29scyA9IEV4cGFuZENvbHVtblJlZlN0YXIocHN0YXRl LCBjcmVmLAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCBleHByS2luZCk7CisKKwkJCQlpZiAo IWNvbHMgfHwgSXNBKGNvbHMsIExpc3QpKQorCQkJCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChy ZXN1bHQsIChMaXN0ICopIGNvbHMpOworCQkJCWVsc2UKKwkJCQkJcmVzdWx0ID0gbGFwcGVu ZChyZXN1bHQsIGNvbHMpOworCiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTI1OSw3 ICsyNzQsOCBAQCB0cmFuc2Zvcm1FeHByZXNzaW9uTGlzdChQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKmV4cHJsaXN0LAogCQkJaWYgKElzQShsbGFzdChpbmQtPmluZGlyZWN0aW9uKSwg QV9TdGFyKSkKIAkJCXsKIAkJCQlOb2RlCSAgICpjb2xzID0gRXhwYW5kSW5kaXJlY3Rpb25T dGFyKHBzdGF0ZSwgaW5kLAotCQkJCQkJCQkJCQkJCQkgZmFsc2UsIGV4cHJLaW5kKTsKKwkJ CQkJCQkJCQkJCQkJIGZhbHNlLCB0cnVlLAorCQkJCQkJCQkJCQkJCQkgZXhwcktpbmQpOwog CiAJCQkJaWYgKCFjb2xzIHx8IElzQShjb2xzLCBMaXN0KSkKIAkJCQkJLyogSXQgaXMgc29t ZXRoaW5nLiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCkBAIC0xMTM1LDkgKzEx NTEsOSBAQCBjaGVja0luc2VydFRhcmdldHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpj b2xzLCBMaXN0ICoqYXR0cm5vcykKICAqCiAgKiBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIGFy ZSBtYXJrZWQgYXMgcmVxdWlyaW5nIFNFTEVDVCBhY2Nlc3MuCiAgKi8KLXN0YXRpYyBMaXN0 ICoKK3N0YXRpYyBOb2RlICoKIEV4cGFuZENvbHVtblJlZlN0YXIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDb2x1bW5SZWYgKmNyZWYsCi0JCQkJCWJvb2wgbWFrZV90YXJnZXRfZW50cnkpCisJ CQkJCWJvb2wgbWFrZV90YXJnZXRfZW50cnksIFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiB7 CiAJTGlzdAkgICAqZmllbGRzID0gY3JlZi0+ZmllbGRzOwogCWludAkJCW51bW5hbWVzID0g bGlzdF9sZW5ndGgoZmllbGRzKTsKQEAgLTExNTMsNyArMTE2OSw3IEBAIEV4cGFuZENvbHVt blJlZlN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsCiAJCSAqIG5l ZWQgbm90IGhhbmRsZSB0aGUgbWFrZV90YXJnZXRfZW50cnk9PWZhbHNlIGNhc2UgaGVyZS4K IAkJICovCiAJCUFzc2VydChtYWtlX3RhcmdldF9lbnRyeSk7Ci0JCXJldHVybiBFeHBhbmRB bGxUYWJsZXMocHN0YXRlLCBjcmVmLT5sb2NhdGlvbik7CisJCXJldHVybiAoTm9kZSAqKSBF eHBhbmRBbGxUYWJsZXMocHN0YXRlLCBjcmVmLT5sb2NhdGlvbik7CiAJfQogCWVsc2UKIAl7 CkBAIC0xMTkyLDcgKzEyMDgsMjIgQEAgRXhwYW5kQ29sdW1uUmVmU3RhcihQYXJzZVN0YXRl ICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZiwKIAogCQkJbm9kZSA9IHBzdGF0ZS0+cF9wcmVf Y29sdW1ucmVmX2hvb2socHN0YXRlLCBjcmVmKTsKIAkJCWlmIChub2RlICE9IE5VTEwpCi0J CQkJcmV0dXJuIEV4cGFuZFJvd1JlZmVyZW5jZShwc3RhdGUsIG5vZGUsIG1ha2VfdGFyZ2V0 X2VudHJ5KTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgRXhwYW5kUm93UmVmZXJlbmNlKHBzdGF0 ZSwgbm9kZSwgbWFrZV90YXJnZXRfZW50cnkpOworCQl9CisKKwkJaWYgKG51bW5hbWVzID4g MikKKwkJeworCQkJTGlzdENlbGwgKmxjOworCisJCQludW1uYW1lcyA9IDA7CisKKwkJCWZv cmVhY2gobGMsIGZpZWxkcykKKwkJCXsKKwkJCQludW1uYW1lcysrOworCisJCQkJaWYgKElz QShsZmlyc3QobGMpLCBBX1N0YXIpKQorCQkJCQlicmVhazsKKwkJCX0KIAkJfQogCiAJCXN3 aXRjaCAobnVtbmFtZXMpCkBAIC0xMjU3LDcgKzEyODgsNyBAQCBFeHBhbmRDb2x1bW5SZWZT dGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmLAogCQkJCQkJCSBlcnJt c2coImNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCiAJCQkJCQkJCQlO YW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAogCQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKLQkJCQlyZXR1cm4gRXhwYW5kUm93 UmVmZXJlbmNlKHBzdGF0ZSwgbm9kZSwgbWFrZV90YXJnZXRfZW50cnkpOworCQkJCXJldHVy biAoTm9kZSAqKSBFeHBhbmRSb3dSZWZlcmVuY2UocHN0YXRlLCBub2RlLCBtYWtlX3Rhcmdl dF9lbnRyeSk7CiAJCQl9CiAJCX0KIApAQCAtMTI2Niw2ICsxMjk3LDI1IEBAIEV4cGFuZENv bHVtblJlZlN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsCiAJCSAq LwogCQlpZiAobnNpdGVtID09IE5VTEwpCiAJCXsKKwkJCS8vaWYgKG51bW5hbWVzID4gMiB8 fCBudW1uYW1lcyAhPSBsaXN0X2xlbmd0aChmaWVsZHMpKQorCQkJeworCQkJCUFfSW5kaXJl Y3Rpb24gKmluZCA9IG1ha2VOb2RlKEFfSW5kaXJlY3Rpb24pOworCQkJCUNvbHVtblJlZiAg KmNyZWYyID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwkJCQlOb2RlCSAgICpyZXN1bHQ7CisK KwkJCQljcmVmMi0+ZmllbGRzID0gbGlzdF9jb3B5X2hlYWQoZmllbGRzLCBudW1uYW1lcyAt IDEpOworCQkJCWNyZWYyLT5sb2NhdGlvbiA9IGNyZWYtPmxvY2F0aW9uOworCisJCQkJaW5k LT5hcmcgPSAoTm9kZSAqKSBjcmVmMjsKKwkJCQlpbmQtPmluZGlyZWN0aW9uID0gbGlzdF9j b3B5X3RhaWwoZmllbGRzLCBudW1uYW1lcyAtIDEpOworCisJCQkJcmVzdWx0ID0gRXhwYW5k SW5kaXJlY3Rpb25TdGFyKHBzdGF0ZSwgaW5kLCBtYWtlX3RhcmdldF9lbnRyeSwKKwkJCQkJ CQkJCQkJICAgZmFsc2UsIGV4cHJLaW5kKTsKKworCQkJCWlmIChyZXN1bHQpCisJCQkJCXJl dHVybiByZXN1bHQ7CisJCQl9CisKIAkJCXN3aXRjaCAoY3JzZXJyKQogCQkJewogCQkJCWNh c2UgQ1JTRVJSX05PX1JURToKQEAgLTEyOTIsOCArMTM0Miw4IEBAIEV4cGFuZENvbHVtblJl ZlN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsCiAJCS8qCiAJCSAq IE9LLCBleHBhbmQgdGhlIG5zaXRlbSBpbnRvIGZpZWxkcy4KIAkJICovCi0JCXJldHVybiBF eHBhbmRTaW5nbGVUYWJsZShwc3RhdGUsIG5zaXRlbSwgbGV2ZWxzX3VwLCBjcmVmLT5sb2Nh dGlvbiwKLQkJCQkJCQkJIG1ha2VfdGFyZ2V0X2VudHJ5KTsKKwkJcmV0dXJuIChOb2RlICop IEV4cGFuZFNpbmdsZVRhYmxlKHBzdGF0ZSwgbnNpdGVtLCBsZXZlbHNfdXAsCisJCQkJCQkJ CQkJICBjcmVmLT5sb2NhdGlvbiwgbWFrZV90YXJnZXRfZW50cnkpOwogCX0KIH0KIApAQCAt MTM2Miw3ICsxNDEyLDggQEAgRXhwYW5kQWxsVGFibGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwg aW50IGxvY2F0aW9uKQogICovCiBzdGF0aWMgTm9kZSAqCiBFeHBhbmRJbmRpcmVjdGlvblN0 YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQsCi0JCQkJCSAgYm9v bCBtYWtlX3RhcmdldF9lbnRyeSwgUGFyc2VFeHByS2luZCBleHByS2luZCkKKwkJCQkJICBi b29sIG1ha2VfdGFyZ2V0X2VudHJ5LCBib29sIHJlcG9ydF9lcnJvciwKKwkJCQkJICBQYXJz ZUV4cHJLaW5kIGV4cHJLaW5kKQogewogCU5vZGUJICAgKmV4cHI7CiAJUGFyc2VFeHByS2lu ZCBzdl9leHByX2tpbmQ7CkBAIC0xMzc0LDEwICsxNDI1LDE0IEBAIEV4cGFuZEluZGlyZWN0 aW9uU3RhcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKIAlwc3Rh dGUtPnBfZXhwcl9raW5kID0gZXhwcktpbmQ7CiAKIAkvKiBTdHJpcCBvZmYgdGhlICcqJyB0 byBjcmVhdGUgYSByZWZlcmVuY2UgdG8gdGhlIHJvd3R5cGUgb2JqZWN0ICovCi0JZXhwciA9 IHRyYW5zZm9ybUluZGlyZWN0aW9uKHBzdGF0ZSwgaW5kLCAmdHJhaWxpbmdfc3Rhcl9leHBh bnNpb24pOworCWV4cHIgPSB0cmFuc2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUsIGluZCwgTlVM TCwgJnRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uLAorCQkJCQkJCQlyZXBvcnRfZXJyb3IpOwog CiAJcHN0YXRlLT5wX2V4cHJfa2luZCA9IHN2X2V4cHJfa2luZDsKIAorCWlmICghZXhwcikK KwkJcmV0dXJuIE5VTEw7CisKIAkvKiAnKicgd2FzIGNvbnN1bWVkIGJ5IGdlbmVyaWMgdHlw ZSBzdWJzY3JpcHRpbmcgKi8KIAlpZiAoIXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uKQogCQly ZXR1cm4gZXhwcjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwZjk0NjI0OTNlMy4u OGYxNzU2MDA0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ3NCwxNSArNDc0 LDEzIEBAIHR5cGVkZWYgc3RydWN0IEFfSW5kaWNlcwogICoJCQkJKGZvbykuZmllbGQxWzQy XVs3XS5maWVsZDIKICAqIHdvdWxkIGJlIHJlcHJlc2VudGVkIHdpdGggYSBzaW5nbGUgQV9J bmRpcmVjdGlvbiBub2RlIGhhdmluZyBhIDQtZWxlbWVudAogICogaW5kaXJlY3Rpb24gbGlz dC4KLSAqCi0gKiBDdXJyZW50bHksIEFfU3RhciBtdXN0IGFwcGVhciBvbmx5IGFzIHRoZSBs YXN0IGxpc3QgZWxlbWVudCAtLS0gdGhlIGdyYW1tYXIKLSAqIGlzIHJlc3BvbnNpYmxlIGZv ciBlbmZvcmNpbmcgdGhpcyEKICAqLwogdHlwZWRlZiBzdHJ1Y3QgQV9JbmRpcmVjdGlvbgog ewogCU5vZGVUYWcJCXR5cGU7CiAJTm9kZQkgICAqYXJnOwkJCS8qIHRoZSB0aGluZyBiZWlu ZyBzZWxlY3RlZCBmcm9tICovCiAJTGlzdAkgICAqaW5kaXJlY3Rpb247CS8qIHN1YnNjcmlw dHMgYW5kL29yIGZpZWxkIG5hbWVzIGFuZC9vciAqICovCisJYm9vbAkJYXJnX2lzX2NvbHJl ZjsJLyogYXJnIGlzIG5vbi1wYXJlbnRoaXplZCBjb2x1bW4gcmVmZXJlbmNlICovCiB9IEFf SW5kaXJlY3Rpb247CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCA3ZjE4 ODllOWQ4NC4uMGFlYzhkNTNhNjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9leHByLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaApAQCAt MjQsNiArMjQsOCBAQCBleHRlcm4gTm9kZSAqdHJhbnNmb3JtRXhwcihQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKmV4cHIsIFBhcnNlRXhwcktpbmQgZXhwcktpbgogZXh0ZXJuIGNvbnN0 IGNoYXIgKlBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpOwogCiBl eHRlcm4gTm9kZSAqdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB X0luZGlyZWN0aW9uICppbmQsCi0JCQkJCQkJCSAgYm9vbCAqdHJhaWxpbmdfc3Rhcl9leHBh bnNpb24pOworCQkJCQkJCQkgIE5vZGUgKnRyYW5zZm9ybWVkX2FyZywKKwkJCQkJCQkJICBi b29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lvbiwKKwkJCQkJCQkJICBib29sIHJlcG9ydF9l cnJvcik7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9FWFBSX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggOTVhOTNhNTgyYjEuLjhkMWY1M2M5OTRlIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTgyNCwxOSArNTgyNCwx OSBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDUnOjpqc29uYjo6aW50ODsKIC0tIGRvdCBub3RhdGlvbgogQ1JFQVRFIFRB QkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFTCiBTRUxFQ1QgJ3siYSI6IFsxLCAyLCB7 ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6 ICJ6enoifX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6 IjogIlpaWiJ9fV19Jzo6anNvbmIgamI7Ci1TRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CitTRUxFQ1QgamIuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBqYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBbWzEsIDIs IHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6 IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6Ijog IlpaWiJ9fV1dCiAoMSByb3cpCiAKLVNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OworU0VMRUNUIGpiLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBqYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBbWzEsIDIs IHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6 IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6Ijog IlpaWiJ9fV1dCiAoMSByb3cpCiAKLVNFTEVDVCAodC5qYikuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgamIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgW1sx LCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXki LCAieiI6ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAi eiI6ICJaWloifX1dXQpAQCAtNTg1OCw3ICs1ODU4LDcgQEAgU0VMRUNUICh0LmpiKS4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICBbWzEsIDIsIHsiYiI6ICJjIn0sIHsi YiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFsz LCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCiAoMSBy b3cpCiAKLVNFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NF TEVDVCB0LmpiLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFsxLCAyLCB7ImIiOiAiYyJ9LCB7 ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dCkBA IC01ODcwLDU1ICs1ODcwLDU1IEBAIFNFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKICBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwg IngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XQogKDEgcm93KQogCi1TRUxFQ1QgKGpi KS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgdC5qYi5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICBi ICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7Inki OiAiWVlZIiwgInoiOiAiWlpaIn19XQogKDEgcm93KQogCi1TRUxFQ1QgKGpiKS5jIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgdC5qYi5jIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdDsKICBjIAogLS0tCiAgCiAoMSByb3cpCiAKLVNFTEVDVCAoamIp LmEuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIHQuamIuYS5iIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICAgICAgYiAgICAgIAogLS0tLS0tLS0t LS0tCiAgWyJjIiwgImQiXQogKDEgcm93KQogCi1TRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCB0LmpiLmEuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uIHQ7CiAgICAgICAgICAgICAgICAgICAgICBhICAgICAgICAgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg WyJjIiwgImQiLCAiZiIsIHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifV0KICgxIHJvdykKIAot U0VMRUNUIChqYikuYS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVD VCB0LmpiLmEuKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKICBiIAogLS0t CiAgCiAoMSByb3cpCiAKLVNFTEVDVCAoamIpLmEuKi54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgdC5qYi5hLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7CiAgeCAKIC0tLQogIAogKDEgcm93KQogCi1TRUxFQ1QgKGpiKS5hLioueSBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIHQuamIuYS4qLnkgRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogICAgeSAgIAogLS0tLS0tLQogICJ5eXkiCiAoMSBy b3cpCiAKLVNFTEVDVCAoamIpLmEuKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitTRUxFQ1QgdC5qYi5hLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CiAg ICAgICAgYSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tCiAgWyJ5eXkiLCAienp6Il0KICgx IHJvdykKIAotU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CitTRUxFQ1QgdC5qYi4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogICAg ICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn1d CkBAIC01OTMwLDcgKzU5MzAsNyBAQCBTRUxFQ1QgKGpiKS4qLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OwogIFt7InkiOiAieXl5IiwgInoiOiAienp6In0sIHsieSI6ICJZ WVkiLCAieiI6ICJaWloifV0KICgxIHJvdykKIAotU0VMRUNUICgoamIpLiopLnggRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUICh0LmpiLiopLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogIHggCiAtLS0KICAKQEAgLTU5NDgsODYgKzU5NDgs ODYgQEAgU0VMRUNUICgoamIpLiopWzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OwogIFt7InkiOiAieXl5IiwgInoiOiAienp6In0sIHsieSI6ICJZWVkiLCAieiI6ICJa WloifV0KICgxIHJvdykKIAotU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgdC5qYi4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBbeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZIiwgInoi OiAiWlpaIn1dCiAoMSByb3cpCiAKLVNFTEVDVCAoamIpLioueC4qIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CitTRUxFQ1QgdC5qYi4qLnguKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uIHQ7CiAgICAgICAgICAgICAgIHggICAgICAgICAgICAgICAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFsieXl5IiwgInp6eiIsICJZWVkiLCAiWlpaIl0K ICgxIHJvdykKIAotU0VMRUNUIChqYikuKi54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1NFTEVDVCB0LmpiLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKICAgICAgICB5ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0KICBbInl5eSIsICJZWVki XQogKDEgcm93KQogCi1TRUxFQ1QgKGpiKS4qLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworU0VMRUNUIHQuamIuKi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OwogICAgICAgIHogICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLQogIFsienp6IiwgIlpa WiJdCiAoMSByb3cpCiAKLVNFTEVDVCAoamIpLiouKi55IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgdC5qYi4qLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7CiAgICAgICAgeSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tCiAgWyJ5eXkiLCAi WVlZIl0KICgxIHJvdykKIAotU0VMRUNUIChqYikuKi4qLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCB0LmpiLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsKICAgICAgICAgICAgICAgamIgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgWyJ5eXkiLCAienp6IiwgIllZWSIsICJaWloiXQogKDEg cm93KQogCi1TRUxFQ1QgKGpiKS4qLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CitTRUxFQ1QgdC5qYi4qLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKICBqYiAKIC0tLS0KICAKICgxIHJvdykKIAotU0VMRUNUIChqYikuYS5iLmMuKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIHQuamIuYS5iLmMuKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CiAgYyAKIC0tLQogIAogKDEgcm93KQogCi1FWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot IFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgdC5qYi4qIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdAogICAgT3V0 cHV0OiBqYi4qCiAoMiByb3dzKQogCi1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pz b25iX2RvdF9ub3RhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg dC5qYi5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdAogICAgT3V0cHV0OiBqYi5hCiAoMiByb3dzKQogCi1FWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKLSAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgdC5qYi5hWzFdIEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdAog ICAgT3V0cHV0OiBqYi5hWzFdCiAoMiByb3dzKQogCi1FWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKlsnYiddIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247Ci0gICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBv biBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUIHQuamIuYS4qWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbiB0OworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNl cSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0CiAgICBPdXRwdXQ6 IGpiLmEuKlsnYic6OnRleHRdCiAoMiByb3dzKQogCi1FWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAoamIpLmEuKlsxOjJdWydiJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOwotICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2Vx IFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCB0LmpiLmEuKlsxOjJdWydiJ10uYiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9u IHQKICAgIE91dHB1dDogamIuYS4qWzE6Ml1bOidiJzo6dGV4dF0uYgogKDIgcm93cykKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvanNvbmIuc3FsCmluZGV4IGUzYjgxZWZhMmQwLi4xZmM5NDlhYTdhNiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbApAQCAtMTU4MCwzOCArMTU4MCwzOCBAQCBzZWxl Y3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDUnOjpqc29uYjo6aW50ODsKIENSRUFURSBUQUJMRSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biBBUwogU0VMRUNUICd7ImEiOiBbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6 ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgImIiOiBbMywgNCwgeyJi IjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dfSc6Ompzb25iIGpiOwog Ci1TRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1Qg KGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKLVNFTEVDVCAodC5qYiku KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgamIuKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIGpiLiogRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7CiBTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CiBT RUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAo dC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5h IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKIFNFTEVDVCAoamIpLmEgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLVNFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKLVNFTEVDVCAoamIpLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKLVNFTEVDVCAoamIpLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLVNF TEVDVCAoamIpLmEuYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUIChq YikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1QgKGpiKS5hLiou YiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUIChqYikuYS4qLnggRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLVNFTEVDVCAoamIpLmEuKi55IEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1QgKGpiKS5hLiouKiBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOwotU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CitTRUxFQ1QgdC5qYi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKK1NFTEVDVCB0LmpiLmMgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VM RUNUIHQuamIuYS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCB0 LmpiLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5h LiouYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5hLiou eCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5hLioueSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5hLiouKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi4qLnggRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNUIChqYikuKi54IEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb24gdDsKLVNFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdDsKK1NFTEVDVCAodC5qYi4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKIFNFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsKIFNFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsKLVNFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OwotU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLVNF TEVDVCAoamIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1Qg KGpiKS4qLngueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotU0VMRUNUIChqYiku Ki4qLnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLVNFTEVDVCAoamIpLiouKi4q IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1QgKGpiKS4qLiouKi4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci1TRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247Ci0KLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikgU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpiKS5hIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247Ci1FWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIp LmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLUVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWydiJ10gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKLUVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4q WzE6Ml1bJ2InXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgdC5q Yi4qLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi54 LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi54Lnkg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi54LnogRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi4qLnkgRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi4qLiogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUIHQuamIuKi4qLiouKiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uIHQ7CitTRUxFQ1QgdC5qYi5hLmIuYy4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgdC5qYi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIHQuamIuYSBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uIHQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCB0Lmpi LmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgdC5qYi5hLipbJ2InXSBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uIHQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCB0Lmpi LmEuKlsxOjJdWydiJ10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7Ci0tIAoy LjI1LjEKCg== --------------PzZBhU9E1AzbpH4GCSf6m0aM--