<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>219192</bug_id>
          
          <creation_ts>2020-11-19 22:29:56 -0800</creation_ts>
          <short_desc>[WASM-References] Add support for active mods in element section</short_desc>
          <delta_ts>2020-12-02 04:00:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1709384</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-19 22:29:56 -0800</bug_when>
    <thetext>[WASM-References] Add support for active mods in element section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709385</commentid>
    <comment_count>1</comment_count>
      <attachid>414651</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-19 22:37:40 -0800</bug_when>
    <thetext>Created attachment 414651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709392</commentid>
    <comment_count>2</comment_count>
      <attachid>414655</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-19 23:25:13 -0800</bug_when>
    <thetext>Created attachment 414655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709400</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-20 00:25:31 -0800</bug_when>
    <thetext>Haven&apos;t supported passive &amp; declarative segments because there is no table.init instruction for it in JSC yet.

I&apos;m going to add table.init with passive segments in next patches.
Then support declarative segments and add all tests from the ref-types spec repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709430</commentid>
    <comment_count>4</comment_count>
      <attachid>414666</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-20 03:00:03 -0800</bug_when>
    <thetext>Created attachment 414666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710116</commentid>
    <comment_count>5</comment_count>
      <attachid>414886</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-26 00:53:18 -0800</bug_when>
    <thetext>Created attachment 414886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710216</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-26 22:30:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71758493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710602</commentid>
    <comment_count>7</comment_count>
      <attachid>414886</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-11-30 07:09:45 -0800</bug_when>
    <thetext>Comment on attachment 414886
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=414886&amp;action=review

overall looks good, but I think we should address the Optional vs sentinel value issue.

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +        Adjust wasm parser to parse new form of element section.

Nit: We usually put a new line here.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:250
&gt; +    Vector&lt;Optional&lt;uint32_t&gt;&gt; functionIndices;

Since this is long lived, and could be very large (many modules I&apos;ve seen have 10k+ functions), we should probably use a sentinel value that&apos;s not realistic like UINT_MAX. Right now I think this is doubling the memory of this vector.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:611
&gt; +            if (!element.functionIndices[i].hasValue()) {

Nit: I think you can just do `if (!element.functionIndices[I])`

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:-624
&gt; -                    ++elementIndex;

lol we have quality code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710699</commentid>
    <comment_count>8</comment_count>
      <attachid>414886</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-30 11:55:12 -0800</bug_when>
    <thetext>Comment on attachment 414886
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=414886&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Add support for vec(exp) in element section:

can you explain what it used t be and how this is different?

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        Just transformed (ref.func idx) -&gt; idx and (ref.null func) -&gt; null.

I don&apos;t know what this means.

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        For null values call table-&gt;clear to zero value.

I don&apos;t understand the significance here. Can you explain it more

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:386
&gt; +            const uint32_t tableIndex = 0;

nit: can be constexpr

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:412
&gt; +        case 0x01: {
&gt; +            WASM_PARSER_FAIL_IF(!Options::useWebAssemblyReferences(), &quot;references are not enabled&quot;);
&gt; +            WASM_PARSER_FAIL_IF(true, &quot;unsupported &quot;, elementNum, &quot;th Element reserved byte&quot;);
&gt; +            break;
&gt; +        }

What do we need to do to support this? Maybe we should have a bug?

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:432
&gt; +                Optional&lt;uint32_t&gt; funcIdx;

Why optional here? Seems like a weird choice since we fail unless we parse a real uint32_t

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:443
&gt; +        case 0x03: {
&gt; +            WASM_PARSER_FAIL_IF(!Options::useWebAssemblyReferences(), &quot;references are not enabled&quot;);
&gt; +            WASM_PARSER_FAIL_IF(true, &quot;unsupported &quot;, elementNum, &quot;th Element reserved byte&quot;);
&gt; +            break;

Should we have a bug on implementing this?

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:472
&gt; +            WASM_PARSER_FAIL_IF(true, &quot;unsupported &quot;, elementNum, &quot;th Element reserved byte&quot;);

What do we need to do to support this? Maybe we should have a bug?

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:487
&gt; +            WASM_PARSER_FAIL_IF(refType == Externref, &quot;reftype in element section should be funcref&quot;);

I think the error message and the condition here are a bit worrisome if anyone adds another enum value. Why can&apos;t we just directly check if != Funcref?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710934</commentid>
    <comment_count>9</comment_count>
      <attachid>415097</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-30 22:15:19 -0800</bug_when>
    <thetext>Created attachment 415097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710944</commentid>
    <comment_count>10</comment_count>
      <attachid>414886</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-11-30 22:57:51 -0800</bug_when>
    <thetext>Comment on attachment 414886
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=414886&amp;action=review

&gt;&gt; Source/JavaScriptCore/ChangeLog:7
&gt;&gt; +        Adjust wasm parser to parse new form of element section.
&gt; 
&gt; Nit: We usually put a new line here.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        Add support for vec(exp) in element section:
&gt; 
&gt; can you explain what it used t be and how this is different?

Removed implementation details from high-level description.

&gt;&gt; Source/JavaScriptCore/wasm/WasmFormat.h:250
&gt;&gt; +    Vector&lt;Optional&lt;uint32_t&gt;&gt; functionIndices;
&gt; 
&gt; Since this is long lived, and could be very large (many modules I&apos;ve seen have 10k+ functions), we should probably use a sentinel value that&apos;s not realistic like UINT_MAX. Right now I think this is doubling the memory of this vector.

Fixed this and all other issues. Now design of this is just one-one copy from SpiderMonkey :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711257</commentid>
    <comment_count>11</comment_count>
      <attachid>415097</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-01 22:09:11 -0800</bug_when>
    <thetext>Comment on attachment 415097
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=415097&amp;action=review

r=me with suggestions.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:233
&gt; +    constexpr static uint32_t NullFuncIndex = UINT32_MAX;

Let&apos;s define it as `nullFuncIndex`, which is WebKit&apos;s naming convention for constants.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:235
&gt; +    enum class Kind {

Let&apos;s make it `enum class Kind : uint8_t`.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:248
&gt; +    bool active() const { return kind == Kind::Active; }

isActive() would be better.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:253
&gt; +    TableElementType elemType;

Let&apos;s name it elementType.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:417
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=219297

Add FIXME with comment about what is missing.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:428
&gt; +            uint8_t elemKind;

=&gt; elementKind.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:450
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=219385

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:480
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=219297

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:516
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=219385

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.h:75
&gt; +    PartialResult WARN_UNUSED_RETURN parseElemKind(uint8_t&amp; elemKind);
&gt; +    PartialResult WARN_UNUSED_RETURN parseIndexCountForElemSection(uint32_t&amp;, const unsigned);
&gt; +    PartialResult WARN_UNUSED_RETURN parseFuncIdxFromRefExpForElemSection(uint32_t&amp;, const unsigned, const unsigned);
&gt; +    PartialResult WARN_UNUSED_RETURN parseFuncIdxForElemSection(uint32_t&amp;, const unsigned, const unsigned);

Let&apos;s rename Elem to Element. WebKit prefers non-abbreviated names :)
And since we have parseElement, using &quot;Element&quot; is good for consistency.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:558
&gt; +            if (element.active()) {

if (!element.isActive())
    continue;

can be cleaner.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:619
&gt;              // for the import.

Let&apos;s move `uint32_t functionIndex = element.functionIndices[i];` to the prologue of this loop body and use `functionIndex` instead of `element.functionIndices[i]`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711263</commentid>
    <comment_count>12</comment_count>
      <attachid>415193</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-12-01 23:20:03 -0800</bug_when>
    <thetext>Created attachment 415193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711265</commentid>
    <comment_count>13</comment_count>
      <attachid>415195</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2020-12-01 23:34:54 -0800</bug_when>
    <thetext>Created attachment 415195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711268</commentid>
    <comment_count>14</comment_count>
      <attachid>415195</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-01 23:50:39 -0800</bug_when>
    <thetext>Comment on attachment 415195
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711285</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-02 02:43:46 -0800</bug_when>
    <thetext>Committed r270344: &lt;https://trac.webkit.org/changeset/270344&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415195.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414651</attachid>
            <date>2020-11-19 22:37:40 -0800</date>
            <delta_ts>2020-11-19 23:26:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201120133738.patch</filename>
            <type>text/plain</type>
            <size>32675</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Njg1NTFlYWFkNWU1ZGEyNGQ1Mzc5MzAyY2U4ZmU5M2M4NGRiN2E1Li40ODdmNmVjYjg4YzQ5YmQ5
YTRiODhiZWM4YzNmNmIzYzg5NGZiMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICBBZGp1c3Qgd2FzbSBwYXJzZXIgdG8gcGFyc2UgbmV3IGZvcm0g
b2YgZWxlbWVudCBzZWN0aW9uLgorICAgICAgICBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHBy
ZXZpb3VzIGZvcm1zIGJlY2F1c2UgdGhleSBhcmUgY29tcGF0aWJsZS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgdmVjKGV4cCkgaW4gZWxlbWVudCBzZWN0aW9uOgorICAgICAgICBodHRwczov
L3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9kdWxl
cy5odG1sI2VsZW1lbnQtc2VjdGlvbgorICAgICAgICBKdXN0IHRyYW5zZm9ybWVkIChyZWYuZnVu
YyBpZHgpIC0+IGlkeCBhbmQgKHJlZi5udWxsIGZ1bmMpIC0+IG51bGwuCisgICAgICAgIEZvciBu
dWxsIHZhbHVlcyBjYWxsIHRhYmxlLT5jbGVhciB0byB6ZXJvIHZhbHVlLgorCisgICAgICAgICog
d2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpw
cmVwYXJlKToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OkVsZW1lbnQ6OmFjdGl2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcik6CisgICAgICAgIChK
U0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbUtpbmQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbik6CisgICAg
ICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JF
bGVtU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y0lkeEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmg6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTgg
IERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9yIGV4dGVybnJlZiBhbmQg
ZnVuY3JlZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApp
bmRleCAwYTljZjA1NDNhNGZhOWE4ZmI2NmRlZjNiMDcxMjlhNjM0YWMzNzUzLi4wOTRiNDA0MjRi
NGNmZDdiMDNmNWMxMTQ0YmI4ZWUwYWM4MDVkNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgRW50cnlQ
bGFuOjpwcmVwYXJlKCkKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBt
X21vZHVsZUluZm9ybWF0aW9uLT5lbGVtZW50cykgewotICAgICAgICBmb3IgKGNvbnN0IHVpbnQz
Ml90IGVsZW1lbnRJbmRleCA6IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzKSB7Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCi0gICAgICAgICAgICAg
ICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoZWxlbWVudEluZGV4IC0gaW1wb3J0RnVu
Y3Rpb25Db3VudCk7CisgICAgICAgIGZvciAoY29uc3QgT3B0aW9uYWw8dWludDMyX3Q+IGVsZW1l
bnRJbmRleCA6IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzKSB7CisgICAgICAgICAgICBpZiAoZWxl
bWVudEluZGV4ICYmICplbGVtZW50SW5kZXggPj0gaW1wb3J0RnVuY3Rpb25Db3VudCkKKyAgICAg
ICAgICAgICAgICBtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmFkZCgqZWxlbWVudEluZGV4IC0g
aW1wb3J0RnVuY3Rpb25Db3VudCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCAxZmNmZGYyYmEyMDBjNDUyYjVmYTM2MzEzZGE0
YTQ3NTM0YzQ3NWM2Li44MzJhN2QxZmQyNzU4NDBlOGYwMTY1YmRhZTY1NDE1ODJkZjk5YTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0yMjYsMTQgKzIyNiwy
OCBAQCBzdHJ1Y3QgU2VnbWVudCB7CiAKIHN0cnVjdCBFbGVtZW50IHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgRWxlbWVudCh1aW50MzJfdCB0YWJsZUluZGV4LCBJ
MzJJbml0RXhwciBvZmZzZXQpCi0gICAgICAgIDogdGFibGVJbmRleCh0YWJsZUluZGV4KQotICAg
ICAgICAsIG9mZnNldChvZmZzZXQpCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyAgICAgICAgQWN0
aXZlLAorICAgICAgICBQYXNzaXZlLAorICAgICAgICBEZWNsYXJlZCwKKyAgICB9OworCisgICAg
RWxlbWVudChFbGVtZW50OjpLaW5kIGtpbmQsIFRhYmxlRWxlbWVudFR5cGUgZWxlbVR5cGUsIHVp
bnQzMl90IHRhYmxlSW5kZXgsIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcikKKyAgICAg
ICAgOiBraW5kKGtpbmQpCisgICAgICAgICwgZWxlbVR5cGUoZWxlbVR5cGUpCisgICAgICAgICwg
dGFibGVJbmRleCh0YWJsZUluZGV4KQorICAgICAgICAsIG9mZnNldElmQWN0aXZlKGluaXRFeHBy
KQogICAgIHsgfQogCisgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBraW5kID09IEtp
bmQ6OkFjdGl2ZTsgfQorCisgICAgS2luZCBraW5kOworICAgIFRhYmxlRWxlbWVudFR5cGUgZWxl
bVR5cGU7CiAgICAgdWludDMyX3QgdGFibGVJbmRleDsKLSAgICBJMzJJbml0RXhwciBvZmZzZXQ7
Ci0gICAgVmVjdG9yPHVpbnQzMl90PiBmdW5jdGlvbkluZGljZXM7CisgICAgT3B0aW9uYWw8STMy
SW5pdEV4cHI+IG9mZnNldElmQWN0aXZlOworCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gdmFsdWUg
dGhlbiBpdGVtIHJlcHJlc2VudHMgcmVmLm51bGwuCisgICAgVmVjdG9yPE9wdGlvbmFsPHVpbnQz
Ml90Pj4gZnVuY3Rpb25JbmRpY2VzOwogfTsKIAogY2xhc3MgVGFibGVJbmZvcm1hdGlvbiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5k
ZXggYjQxMWIyN2QzNGNhM2U2YjM1YTA5MDEyZDYyNGViNmVkMjYyYTg4MC4uM2I4OGI3ZDEzNDQz
OGY2ZTEyNWMzYmM2YzE3ZjU0NzkxZTI4ZjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMzc4LDQxICszNzgsMTMwIEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoZWxlbWVudENvdW50ID4gbWF4VGFibGVFbnRyaWVzLCAiRWxlbWVu
dCBzZWN0aW9uJ3MgY291bnQgaXMgdG9vIGJpZyAiLCBlbGVtZW50Q291bnQsICIgbWF4aW11bSAi
LCBtYXhUYWJsZUVudHJpZXMpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+ZWxl
bWVudHMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGVsZW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBt
ZW1vcnkgZm9yICIsIGVsZW1lbnRDb3VudCwgIiBFbGVtZW50cyIpOwogICAgIGZvciAodW5zaWdu
ZWQgZWxlbWVudE51bSA9IDA7IGVsZW1lbnROdW0gPCBlbGVtZW50Q291bnQ7ICsrZWxlbWVudE51
bSkgewotICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4OwotICAgICAgICB1aW50NjRfdCBpbml0
RXhwckJpdHM7Ci0gICAgICAgIHVpbnQ4X3QgaW5pdE9wY29kZTsKLSAgICAgICAgdWludDMyX3Qg
aW5kZXhDb3VudDsKKyAgICAgICAgdWludDhfdCBlbGVtZW50RmxhZ3M7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgoZWxlbWVudEZsYWdzKSwgImNhbid0IGdldCAiLCBl
bGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlLCB3aGljaCBzaG91bGQgYmUgZWxl
bWVudCBmbGFncyIpOworCisgICAgICAgIHN3aXRjaCAoZWxlbWVudEZsYWdzKSB7CisgICAgICAg
IGNhc2UgMHgwMDogeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdGFibGVJbmRleCA9IDA7
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRh
YmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+
IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkz
MkluaXRFeHByKGluaXRFeHByKSk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZv
ckVsZW1TZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VS
VCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICB1aW50OF90IG1hZ2lj
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG1hZ2ljKSB8fCAobWFn
aWMgJiYgbWFnaWMgIT0gMiksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQg
cmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVpdGhlciAweDAwIG9yIDB4MDIgZm9sbG93
ZWQgYnkgYSB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVsZW1l
bnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRleCwg
V1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxl
bWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2Fu
J3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIp
OwogCi0gICAgICAgIGlmIChtYWdpYyA9PSAyKQorICAgICAgICAgICAgZm9yICh1aW50MzJfdCBp
bmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAgICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxlbWVu
dE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDAxOiB7Cisg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJ1bnN1cHBvcnRlZCAiLCBlbGVt
ZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDI6IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRh
YmxlSW5kZXg7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
Mih0YWJsZUluZGV4KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCB0YWJs
ZSBpbmRleCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YWJsZUluZGV4ID0gMDsKLSAg
ICAgICAgCi0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8t
PnRhYmxlQ291bnQoKSwgIkVsZW1lbnQgc2VjdGlvbiBmb3IgVGFibGUgIiwgdGFibGVJbmRleCwg
IiBleGNlZWRzIGF2YWlsYWJsZSBUYWJsZSAiLCBtX2luZm8tPnRhYmxlQ291bnQoKSk7Ci0gICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0udHlwZSgp
ICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11
c3QgaGF2ZSB0eXBlICdmdW5jcmVmJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOwotICAg
ICAgICBUeXBlIGluaXRFeHByVHlwZTsKLSAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlM
UyhwYXJzZUluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5pdEV4cHJUeXBlICE9IEkzMiwgIkVsZW1l
bnQgaW5pdF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVu
dE51bSwgInRoIGluZGV4IGNvdW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihpbmRleENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSwgIkVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBj
b3VudCBpcyB0b28gYmlnICIsIGluZGV4Q291bnQpOworICAgICAgICAgICAgV0FTTV9GQUlMX0lG
X0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAg
ICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwcihpbml0RXhwcikpOworCisg
ICAgICAgICAgICB1aW50OF90IGVsZW1LaW5kOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZUVsZW1LaW5kKGVsZW1LaW5kKSk7CisKKyAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4Q291bnQ7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBh
cnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKKworICAgICAg
ICAgICAgRWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50
VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2
ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRl
eENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVt
ZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2Vz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGZ1bmNJZHgpKTsKKyAgICAgICAgICAgIH0KIAotICAg
ICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CisgICAgICAgICAgICBt
X2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMzogeworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwg
InRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSAweDA0OiB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB0YWJs
ZUluZGV4ID0gMDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRh
dGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisgICAgICAgICAgICBPcHRpb25hbDxJ
MzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZB
SUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKIAotICAgICAgICBFbGVtZW50IGVsZW1l
bnQodGFibGVJbmRleCwgbWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykp
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50
cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9y
ICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CisgICAgICAgICAgICB1aW50MzJf
dCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJz
ZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7CisgICAg
ICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CiAKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgewot
ICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKLSAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IEVs
ZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0
aCBpbmRleCIpOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmdW5jdGlvbkluZGV4
ID49IG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpLCAiRWxlbWVudCBzZWN0aW9uJ3Mg
IiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4IGlzICIsIGZ1
bmN0aW9uSW5kZXgsICIgd2hpY2ggZXhjZWVkcyB0aGUgZnVuY3Rpb24gaW5kZXggc3BhY2Ugc2l6
ZSBvZiAiLCBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAgICAgICAgICBF
bGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6QWN0aXZlLCBUYWJsZUVsZW1lbnRUeXBlOjpG
dW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGluaXRFeHByKSk7CisgICAgICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNp
dHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQs
ICIgRWxlbWVudCBpbmRpY2VzIik7CiAKLSAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRp
Y2VzLnVuY2hlY2tlZEFwcGVuZChmdW5jdGlvbkluZGV4KTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNN
X0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2VjdGlv
bihmdW5jSWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQu
ZnVuY3Rpb25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGZ1bmNJZHgpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIDB4MDU6IHsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVu
c3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwNjogeworICAgICAg
ICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0s
ICJ0aCBFbGVtZW50IHRhYmxlIGluZGV4Iik7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVM
UEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAg
ICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9G
QUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7CisKKyAgICAg
ICAgICAgIFR5cGUgcmVmVHlwZTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9u
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJlZlR5cGUgPT0gRXh0ZXJucmVm
LCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKworICAg
ICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxl
bWVudE51bSkpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRl
eF0pOworCisgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6QWN0aXZl
LCBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGluaXRFeHBy
KSk7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5k
aWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1v
cnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CiAKLSAgICAgICAgbV9p
bmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4
KSB7CisgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1bmNJZHg7CisgICAgICAg
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGcm9tUmVmRXhw
Rm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5j
SWR4KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5j
aGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSAweDA3OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKHRydWUsICJ1bnN1cHBvcnRlZCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZl
ZCBieXRlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAiY2FuJ3QgZ2V0ICIsIGVs
ZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHJldHVybiB7IH07CkBAIC01MDQsNiArNTkzLDc5IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnRO
dW1iZXIsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBTZWN0aW9uUGFyc2VyOjp2YWxpZGF0
ZUVsZW1lbnRUYWJsZUlkeCh1aW50MzJfdCB0YWJsZUluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0Cit7
CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0YWJsZUluZGV4ID49IG1faW5mby0+dGFibGVDb3Vu
dCgpLCAiRWxlbWVudCBzZWN0aW9uIGZvciBUYWJsZSAiLCB0YWJsZUluZGV4LCAiIGV4Y2VlZHMg
YXZhaWxhYmxlIFRhYmxlICIsIG1faW5mby0+dGFibGVDb3VudCgpKTsKKyAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1l
bnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBtdXN0IGhhdmUgdHlwZSAn
ZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKKworICAgIHJldHVybiB7IH07
Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJ
bml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDhfdCBpbml0
T3Bjb2RlOworICAgIHVpbnQ2NF90IGluaXRFeHByQml0czsKKyAgICBUeXBlIGluaXRFeHByVHlw
ZTsKKyAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29k
ZSwgaW5pdEV4cHJCaXRzLCBpbml0RXhwclR5cGUpKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4g
aTMyIik7CisgICAgaW5pdEV4cHIgPSBtYWtlSTMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4
cHJCaXRzKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VFbGVtS2luZCh1aW50OF90JiByZXN1bHRFbGVtS2luZCkgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIHVpbnQ4X3QgZWxlbUtpbmQ7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50
OChlbGVtS2luZCksICJjYW4ndCBnZXQgZWxlbWtpbmQiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFlbGVtS2luZCwgImVsZW1raW5kIG11c3QgYmUgemVybyIpOworICAgIHJlc3VsdEVsZW1L
aW5kID0gZWxlbUtpbmQ7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKHVpbnQzMl90JiByZXN1bHRJbmRleENv
dW50LCBjb25zdCB1bnNpZ25lZCBlbGVtZW50TnVtKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAg
dWludDMyX3QgaW5kZXhDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihpbmRleENvdW50KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291
bnQgZm9yIEVsZW1lbnQgc2VjdGlvbiIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhD
b3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksICJFbGVtZW50IHNl
Y3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgaXMgdG9vIGJpZyAiLCBpbmRl
eENvdW50KTsKKyAgICByZXN1bHRJbmRleENvdW50ID0gaW5kZXhDb3VudDsKKworICAgIHJldHVy
biB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZv
ckVsZW1TZWN0aW9uKE9wdGlvbmFsPHVpbnQzMl90PiYgZnVuY0lkeCwgY29uc3QgdW5zaWduZWQg
ZWxlbWVudE51bSwgY29uc3QgdW5zaWduZWQgaW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICB1aW50OF90IG9wY29kZTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG9w
Y29kZSksICJjYW4ndCBnZXQgb3Bjb2RlIGZvciBleHAgaW4gZWxlbWVudCBzZWN0aW9uJ3MgIiwg
ZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRigob3Bjb2RlICE9IFJlZkZ1bmMpICYmIChvcGNvZGUgIT0gUmVmTnVs
bCksICJvcGNvZGUgZm9yIGV4cCBpbiBlbGVtZW50IHNlY3Rpb24ncyBzaG91bGQgYmUgZWl0aGVy
IHJlZi5mdW5jIG9yIHJlZi5udWxsICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5k
ZXgsICJ0aCBpbmRleCIpOworCisgICAgaWYgKG9wY29kZSA9PSBSZWZGdW5jKSB7CisgICAgICAg
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IEVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlv
bkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGgg
ZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwgIiB3aGlj
aCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5mby0+ZnVu
Y3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgZnVuY0lkeCA9IGZ1bmN0aW9uSW5kZXg7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOworICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11
c3QgYmUgYSBmdW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYodHlwZU9mTnVsbCAhPSBGdW5jcmVmLCAicmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJp
ZGRlbiBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAi
LCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgfQorCisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VVSW50OChvcGNvZGUpLCAiY2FuJ3QgZ2V0IG9wY29kZSBmb3IgZXhwIGVuZCBpbiBlbGVt
ZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGgg
aW5kZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG9wY29kZSAhPSBFbmQsICJtYWxmb3Jt
ZWQgZXhwciBpbiBlbGVtZW50IHNlY3Rpb24ncyIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3Mg
IiwgaW5kZXgsICJ0aCBpbmRleCIpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBTZWN0
aW9uUGFyc2VyOjpwYXJzZUZ1bmNJZHhGb3JFbGVtU2VjdGlvbihPcHRpb25hbDx1aW50MzJfdD4m
IGZ1bmNJZHgsIGNvbnN0IHVuc2lnbmVkIGVsZW1lbnROdW0sIGNvbnN0IHVuc2lnbmVkIGluZGV4
KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0
IGdldCBFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGlu
ZGV4LCAidGggaW5kZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXgg
Pj0gbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAi
LCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVu
Y3Rpb25JbmRleCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXpl
IG9mICIsIG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBmdW5jSWR4ID0g
ZnVuY3Rpb25JbmRleDsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VHbG9iYWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwpIC0+IFBhcnRpYWxS
ZXN1bHQKIHsKICAgICB1aW50OF90IG11dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA1Mjc3YTdhYzBmZTkwOTBhMDA2YTQ4
MGYwZjRhNzUwMmEyNmIwYzk0Li40NDEwOWQ4ZjkzZjdlOTZiZWZiNmJkYThlNjEzZWQzOThiYTFh
MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2Vy
LmgKQEAgLTY2LDYgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIE9wdGlv
bmFsPHVpbnQzMl90PiYgbWF4aW11bSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VJbml0RXhwcih1aW50OF90JiwgdWludDY0X3QmLCBUeXBlJiBpbml0RXhwclR5
cGUpOwogCisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gdmFsaWRhdGVFbGVt
ZW50VGFibGVJZHgodWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIHBhcnNlSTMySW5pdEV4cHIoT3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CisgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtS2luZCh1aW50OF90JiBlbGVtS2lu
ZCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbmRleENvdW50
Rm9yRWxlbVNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCk7CisgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0
aW9uKE9wdGlvbmFsPHVpbnQzMl90PiYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7
CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jSWR4Rm9yRWxl
bVNlY3Rpb24oT3B0aW9uYWw8dWludDMyX3Q+JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0IHVuc2ln
bmVkKTsKKwogICAgIHNpemVfdCBtX29mZnNldEluU291cmNlOwogICAgIFJlZjxNb2R1bGVJbmZv
cm1hdGlvbj4gbV9pbmZvOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAyMDY0YTQ2NjI4NTUx
NmQ0Y2M2ODg0YTJiMzI0YmM2ZTY2OTdlYmE3Li44MDc3YjI0MDljMjVhYjE1YmI4NTFjOTVlNTQz
OGE4MTZkOTU1ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NTUsMTQgKzU1NSwxNiBAQCBK
U1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgaWYgKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5z
aXplKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHVpbnQzMl90
IGVsZW1lbnRJbmRleCA9IGVsZW1lbnQub2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKLSAgICAgICAg
ICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxv
YWRJMzJHbG9iYWwoZWxlbWVudC5vZmZzZXQuZ2xvYmFsSW1wb3J0SW5kZXgoKSkpCi0gICAgICAg
ICAgICAgICAgOiBlbGVtZW50Lm9mZnNldC5jb25zdFZhbHVlKCk7CisgICAgICAgICAgICBpZiAo
ZWxlbWVudC5hY3RpdmUoKSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGVsZW1lbnRJbmRl
eCA9IGVsZW1lbnQub2Zmc2V0SWZBY3RpdmUtPmlzR2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAg
ICAgICAgICAgPyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5s
b2FkSTMyR2xvYmFsKGVsZW1lbnQub2Zmc2V0SWZBY3RpdmUtPmdsb2JhbEltcG9ydEluZGV4KCkp
KQorICAgICAgICAgICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0SWZBY3RpdmUtPmNvbnN0VmFs
dWUoKTsKIAotICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUluZGV4LCBlbGVt
ZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRl
eCwgZWxlbWVudEluZGV4KTsKIAotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CiAKQEAg
LTYwNSwxMiArNjA3LDE3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBleGNlcHRp
b24udmFsdWUoKTsKIAogICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVu
dCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7
Ci0gICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVu
dC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpOyArK2ksICsrZWxlbWVudEluZGV4KSB7CisgICAgICAg
ICAgICBpZiAoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzW2ldLmhhc1ZhbHVlKCkpIHsKKyAgICAg
ICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+Y2xlYXIoZWxlbWVudElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgZXNzZW50aWFsbHkgbWVhbnMgd2UncmUgZXhwb3J0aW5nIGFu
IGltcG9ydC4KICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBzdG9yeSBoZXJlLiBXZSBuZWVkIHRv
IGNyZWF0ZSBhIFdlYkFzc2VtYmx5RnVuY3Rpb24KICAgICAgICAgICAgIC8vIGZvciB0aGUgaW1w
b3J0LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUxMAotICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCA9IGVsZW1lbnQu
ZnVuY3Rpb25JbmRpY2VzW2ldOworICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCA9
ICplbGVtZW50LmZ1bmN0aW9uSW5kaWNlc1tpXTsKICAgICAgICAgICAgIFdhc206OlNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9u
SW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbkluZGV4
IDwgY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCkpIHsKICAgICAgICAgICAgICAgICBK
U09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1
bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKQEAg
LTYyMSwxMyArNjI4LDExIEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBvbmx5IHR5cGUgdGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24pOwogICAgICAgICAg
ICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRl
eCwgd2FzbUZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4
LAogICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2Uu
Z2V0KCksIHNpZ25hdHVyZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTY0MCw5ICs2
NDUsNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgyNQogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5j
dGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAg
ICAgICAgdm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9u
U3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZygpLCBtX2luc3Rh
bmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRp
b24sIHNpZ25hdHVyZUluZGV4KTsKLQogICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFi
bGVJbmRleCktPnNldChlbGVtZW50SW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrZWxl
bWVudEluZGV4OwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjVjNjZiNDg5NjI4M2NjMGVmZGZjZDky
OGZkNjBjMDk1NGYyNWI1My4uMWViOWVlOGVmMjUyMGEzNDA2NWJkNzhiNmMzN2YwNmQ4NmQ5MmRh
ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0
c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0
IGZvciBhY3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBGaXggYnVpbGRlciBkc2wgdG8gcHJvZHVjZSByaWdo
dCBlbGVtZW50IHNlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlv
L3JlZmVyZW5jZS10eXBlcy9jb3JlL2JpbmFyeS9tb2R1bGVzLmh0bWwjZWxlbWVudC1zZWN0aW9u
LgorICAgICAgICBBZGRlZCBiYXNpYyB0ZXN0cyBmb3IgZWxlbWVudCBzZWN0aW9uLgorCisKKyAg
ICAgICAgKiB3YXNtL0J1aWxkZXIuanM6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5CdWlsZGVy
LnByb3RvdHlwZS5fcmVnaXN0ZXJTZWN0aW9uQnVpbGRlcnMuY29uc3Quc2VjdGlvbi5pbi5XQVNN
LmRlc2NyaXB0aW9uLnNlY3Rpb24uc3dpdGNoLnNlY3Rpb24uY2FzZS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS50aGlzLnNlY3Rpb24pOgorICAgICAgICAqIHdhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJp
bmFyeS5qczoKKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLkVsZW1lbnQpOgorICAgICAgICAqIHdh
c20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzOgorICAgICAgICAobW9kdWxlKToK
KyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzOiBBZGRlZC4K
KyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgIChiYXNpY1Rlc3QpOgorICAgICAgICAocmVmTnVs
bEV4dGVybkluRWxlbXNTZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvZWxlbWVu
dF9wYXJzaW5nLmpzOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzOgor
CiAyMDIwLTExLTE4ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVtb3ZlIHN1YnR5cGluZyBydWxlIGZvciBl
eHRlcm5yZWYgYW5kIGZ1bmNyZWYKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpz
IGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKaW5kZXggMzI3YjE3ZDdlNGMwNDQ3OTI1NzEwZTcy
ZDYzZmI4OWU0ZWQ5NTY1Yy4uMDExY2NiODQ1NmRjYmRkZmJiMzU3NTgxODQzZWIyZTY0ZjA3NDVj
ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0cy93YXNt
L0J1aWxkZXIuanMKQEAgLTU5NCw4ICs1OTQsOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWls
ZGVyIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2Vj
dGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCdWlsZGVyID0gewogICAg
ICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgRWxlbWVudDogKHt0YWJsZUluZGV4ID0gMCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goe3RhYmxlSW5k
ZXgsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2VzfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBF
bGVtZW50OiAoe3RhYmxlSW5kZXggPSAwLCBvZmZzZXQsIGVsZW1raW5kID0gMCwgZnVuY3Rpb25J
bmRpY2VzfSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHt0
YWJsZUluZGV4LCBvZmZzZXQsIGVsZW1raW5kLCBmdW5jdGlvbkluZGljZXN9KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihlbGVtZW50
QnVpbGRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5q
cyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCmluZGV4IDFlZWY5
ZDQxODJkZTMzNzIwMTRjZGRjNDk5Yjg4ODdkMDUyMzA4ZmEuLjQ3MTFjOGNkNGRkNTZmMGNiMzRk
MTQ0M2JjODlhZWM1ZTBkZDZlZjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dl
YkFzc2VtYmx5QmluYXJ5LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzCkBAIC0xOTMsMTAgKzE5MywxMyBAQCBjb25zdCBlbWl0dGVycyA9IHsKICAgICBF
bGVtZW50OiAoc2VjdGlvbiwgYmluKSA9PiB7CiAgICAgICAgIGNvbnN0IGRhdGEgPSBzZWN0aW9u
LmRhdGE7CiAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBkYXRhLmxlbmd0aCk7Ci0gICAg
ICAgIGZvciAoY29uc3Qge3RhYmxlSW5kZXgsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2VzfSBvZiBk
YXRhKSB7Ci0gICAgICAgICAgICBpZiAodGFibGVJbmRleCAhPSAwKQotICAgICAgICAgICAgICAg
IHB1dChiaW4sICJ1aW50OCIsIDIpOwotICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIs
IHRhYmxlSW5kZXgpOworICAgICAgICBmb3IgKGNvbnN0IHt0YWJsZUluZGV4LCBvZmZzZXQsIGVs
ZW1raW5kLCBmdW5jdGlvbkluZGljZXN9IG9mIGRhdGEpIHsKKyAgICAgICAgICAgIGxldCBmbGFn
cyA9IHRhYmxlSW5kZXggPT0gMCA/IDAgOiAyOworICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4
IiwgZmxhZ3MpOworCisgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gMikgeworICAgICAgICAgICAg
ICBwdXQoYmluLCAidmFydWludDMyIiwgdGFibGVJbmRleCk7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGxldCBpbml0RXhwcjsKICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09
PSAibnVtYmVyIikKQEAgLTIwNSw2ICsyMDgsMTAgQEAgY29uc3QgZW1pdHRlcnMgPSB7CiAgICAg
ICAgICAgICAgICAgaW5pdEV4cHIgPSBvZmZzZXQ7CiAgICAgICAgICAgICBwdXRJbml0RXhwcihi
aW4sIGluaXRFeHByKTsKIAorICAgICAgICAgICAgaWYgKGZsYWdzID09IDIpIHsKKyAgICAgICAg
ICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgZWxlbWtpbmQpOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZnVuY3Rpb25JbmRpY2VzLmxlbmd0aCk7CiAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGZ1bmN0aW9uSW5kZXggb2YgZnVuY3Rpb25JbmRpY2VzKQog
ICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBmdW5jdGlvbkluZGV4KTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanMg
Yi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCmluZGV4IDlk
ZGE3YWZmYTQwMGE0NDM4YTUyMzYyZTliMzNjMGI4MjM3MTIwY2MuLjI3OTFkNGNiNGVlZWEyMWI2
MGRkMjcyZWQxN2FkYWZmNzRiOGYxNDUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMt
c3BlYy10ZXN0cy9yZWZfbnVsbC5qcwpAQCAtNjIsNyArNjIsNyBAQCBmdW5jdGlvbiBtb2R1bGUo
Ynl0ZXMsIHZhbGlkID0gdHJ1ZSkgewogICAgIHRocm93IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0
ZSB0aHJvd3MiKTsKICAgfQogICBpZiAodmFsaWRhdGVkICE9PSB2YWxpZCkgewotICAgIC8vdGhy
b3cgbmV3IEVycm9yKCJXYXNtIHZhbGlkYXRlIGZhaWx1cmUiICsgKHZhbGlkID8gIiIgOiAiIGV4
cGVjdGVkIikpOworICAgIHRocm93IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0ZSBmYWlsdXJlIiAr
ICh2YWxpZCA/ICIiIDogIiBleHBlY3RlZCIpKTsKICAgfQogICByZXR1cm4gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShidWZmZXIpOwogfQpAQCAtMTc1LDEwICsxNzUsMTMgQEAgZnVuY3Rpb24gYXNz
ZXJ0X3JldHVybl9mdW5jKGFjdGlvbikgewogfQogCiAvLyByZWZfbnVsbC53YXN0OjEKLWxldCAk
MSA9IGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4
MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDFceDZmXHg2MFx4MDBceDAxXHg3MFx4MDNceDgz
XHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MDZceDhiXHg4MFx4ODBceDgwXHgwMFx4MDJc
eDZmXHgwMFx4ZDBceDZmXHgwYlx4NzBceDAwXHhkMFx4NzBceDBiXHgwN1x4OTdceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
MFx4MDdceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDFceDBhXHg5M1x4ODBceDgw
XHg4MFx4MDBceDAyXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHhkMFx4NmZceDBiXHg4NFx4ODBc
eDgwXHg4MFx4MDBceDAwXHhkMFx4NzBceDBiIik7CitsZXQgJDIgPSBpbnN0YW5jZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNFx4MDFceDYwXHgwMFx4MDBceDAzXHgw
Mlx4MDFceDAwXHgwNFx4MDRceDAxXHg3MFx4MDBceDBhXHgwN1x4MDVceDAxXHgwMVx4NzJceDAw
XHgwMFx4MGFceDBhXHgwMVx4MDhceDAwXHg0MVx4MDBceGQwXHg3MFx4MjZceDAwXHgwYiIpOwor
Y2FsbCgkMiwgInIiLCBbXSk7CiAKLS8vIHJlZl9udWxsLndhc3Q6OQotYXNzZXJ0X3JldHVybigo
KSA9PiBjYWxsKCQxLCAiZXh0ZXJucmVmIiwgW10pLCBudWxsKTsKKy8vbGV0ICQxID0gaW5zdGFu
Y2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMlx4NjBceDAwXHgwMVx4NmZceDYwXHgwMFx4MDFceDcwXHgwM1x4ODNceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDBceDAxXHgwNlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMlx4NmZceDAwXHhk
MFx4NmZceDBiXHg3MFx4MDBceGQwXHg3MFx4MGJceDA3XHg5N1x4ODBceDgwXHg4MFx4MDBceDAy
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAwXHgwN1x4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwMVx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4
MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQwXHg2Zlx4MGJceDg0XHg4MFx4ODBceDgwXHgw
MFx4MDBceGQwXHg3MFx4MGIiKTsKIAotLy8gcmVmX251bGwud2FzdDoxMAotYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAiZnVuY3JlZiIsIFtdKSwgbnVsbCk7CisvLy8vIHJlZl9udWxsLndh
c3Q6OQorLy9hc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJleHRlcm5yZWYiLCBbXSksIG51
bGwpOworCisvLy8vIHJlZl9udWxsLndhc3Q6MTAKKy8vYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAiZnVuY3JlZiIsIFtdKSwgbnVsbCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9l
bGVtZW50X2FjdGl2ZV9tb2QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE3MDg0MDA2ODM0ZDM3ZWU2M2I3MmVi
OTlmYWYzOWI3Y2YwMzljYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qcwpAQCAtMCwwICsxLDU5IEBACisvL0AgcnVuV2ViQXNz
ZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQgKiBh
cyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2
YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5n
dGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAobGV0IGkg
PSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNv
ZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOwor
fQorCitmdW5jdGlvbiBiYXNpY1Rlc3QoKSB7CisgIC8qCisgIChtb2R1bGUKKyAgICAoZnVuYyAk
ZiAocmVzdWx0IGkzMikKKyAgICAgIChpMzIuY29uc3QgMzcpCisgICAgKQorICAgIChmdW5jICRn
IChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5jb25zdCA0MikKKyAgICApCisgICAgKHRhYmxlICR0
MSAxMCBmdW5jcmVmKQorICAgICh0YWJsZSAkdDIgMjAgZnVuY3JlZikKKyAgICAoZWxlbSAoaTMy
LmNvbnN0IDMpIGZ1bmNyZWYgKHJlZi5mdW5jICRnKSAocmVmLm51bGwgZnVuYykgKHJlZi5mdW5j
ICRmKSAocmVmLm51bGwgZnVuYykpCisgICAgKGVsZW0gKHRhYmxlICR0MikgKGkzMi5jb25zdCA3
KSBmdW5jcmVmIChyZWYuZnVuYyAkZikgKHJlZi5udWxsIGZ1bmMpIChyZWYuZnVuYyAkZykpCisg
ICAgKGZ1bmMgKGV4cG9ydCAiZ2V0X3RibDEiKSAocGFyYW0gJGlkeCBpMzIpIChyZXN1bHQgZnVu
Y3JlZikKKyAgICAgICh0YWJsZS5nZXQgJHQxIChsb2NhbC5nZXQgJGlkeCkpCisgICAgKQorICAg
IChmdW5jIChleHBvcnQgImdldF90YmwyIikgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0IGZ1bmNy
ZWYpCisgICAgICAodGFibGUuZ2V0ICR0MiAobG9jYWwuZ2V0ICRpZHgpKQorICAgICkKKyAgKQor
ICAqLworICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAwXHgwMVx4
N2ZceDYwXHgwMVx4N2ZceDAxXHg3MFx4MDNceDA1XHgwNFx4MDBceDAwXHgwMVx4MDFceDA0XHgw
N1x4MDJceDcwXHgwMFx4MGFceDcwXHgwMFx4MTRceDA3XHgxN1x4MDJceDA4XHg2N1x4NjVceDc0
XHg1Zlx4NzRceDYyXHg2Y1x4MzFceDAwXHgwMlx4MDhceDY3XHg2NVx4NzRceDVmXHg3NFx4NjJc
eDZjXHgzMlx4MDBceDAzXHgwOVx4MjJceDAyXHgwNFx4NDFceDAzXHgwYlx4MDRceGQyXHgwMVx4
MGJceGQwXHg3MFx4MGJceGQyXHgwMFx4MGJceGQwXHg3MFx4MGJceDA2XHgwMVx4NDFceDA3XHgw
Ylx4NzBceDAzXHhkMlx4MDBceDBiXHhkMFx4NzBceDBiXHhkMlx4MDFceDBiXHgwYVx4MTlceDA0
XHgwNFx4MDBceDQxXHgyNVx4MGJceDA0XHgwMFx4NDFceDJhXHgwYlx4MDZceDAwXHgyMFx4MDBc
eDI1XHgwMFx4MGJceDA2XHgwMFx4MjBceDAwXHgyNVx4MDFceDBiIikpOworCisgIGFzc2VydC5l
cShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwxKDMpKCksIDQyKTsKKyAgYXNzZXJ0LmVxKGluc3Rh
bmNlLmV4cG9ydHMuZ2V0X3RibDEoNCksIG51bGwpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhw
b3J0cy5nZXRfdGJsMSg1KSgpLCAzNyk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdl
dF90YmwxKDYpLCBudWxsKTsKKworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJs
Mig3KSgpLCAzNyk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwyKDgpLCBu
dWxsKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIoOSkoKSwgNDIpOwor
fQorCitmdW5jdGlvbiByZWZOdWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24oKSB7CisgIC8qCisgICht
b2R1bGUKKyAgICAodGFibGUgJHQgMTAgZnVuY3JlZikKKyAgICAoZWxlbSAoaTMyLmNvbnN0IDMp
IGZ1bmNyZWYgKHJlZi5udWxsIGV4dGVybikpCisgICkKKyAgKi8KKyAgYXNzZXJ0LnRocm93cygo
KSA9PiBtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4MDRceDAx
XHg3MFx4MDBceDBhXHgwOVx4MDlceDAxXHgwNFx4NDFceDAzXHgwYlx4MDFceGQwXHg2Zlx4MGIi
KSwKKyAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgcGFyc2UgYXQgYnl0ZSAyNDogcmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBl
bGVtZW50IHNlY3Rpb24ncywgMHRoIGVsZW1lbnQncyAwdGggaW5kZXggKGV2YWx1YXRpbmcgJ25l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIik7Cit9CisKK2Jhc2ljVGVzdCgpOworcmVm
TnVsbEV4dGVybkluRWxlbXNTZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9lbGVt
ZW50X3BhcnNpbmcuanMKaW5kZXggOTNiZTFmZDY1NzYyZDQ0NTVhYWU5MzVkMzJlN2M2ZDM2NDA4
Y2EwMS4uMDFmODkwMjQ4MmM2YjJmYjA3NDc4MjRhNTczNmIyNzMyZGUwZmFmNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qcwpAQCAtMjMsNCArMjMsNCBAQCBh
c3NlcnQudGhyb3dzKCgpID0+IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHg5N1x4ODBceDgwXHg4MAogLy8gICsgIlx4MDIiCiAgICAgKyAiXHgwMSIKICAgICAr
ICJceDQxXHgwMVx4MGJceDAxXHgwMlx4MGFceGQ0XHg4MFx4ODBceDgwXHgwMFx4MDdceDg1XHg4
MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4ZDFceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAw
XHgyMFx4MDBceGQxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGJceDg4XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMVx4MjBceDAwXHgyNlx4MDBceDBiXHg4Y1x4ODBceDgwXHg4MFx4
MDBceDAwXHg0MVx4MDFceGQwXHgyNlx4MDBceDQxXHgwMVx4ZDBceDI2XHgwMVx4MGJceDg4XHg4
MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MjVceDAwXHgxMFx4MDBceDBiXHg4OFx4ODBceDgw
XHg4MFx4MDBceDAwXHgyMFx4MDBceDI1XHgwMVx4MTBceDAxXHgwYiIpLAotICAgIEVycm9yLCAi
V2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNDM6IGNhbid0IGdldCAw
dGggRWxlbWVudCByZXNlcnZlZCBieXRlLCB3aGljaCBzaG91bGQgYmUgZWl0aGVyIDB4MDAgb3Ig
MHgwMiBmb2xsb3dlZCBieSBhIHRhYmxlIGluZGV4IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJ1ZmZlciknKSIpOworICAgIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRv
ZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNDM6IHVuc3VwcG9ydGVkIDB0aCBFbGVtZW50IHJlc2VydmVk
IGJ5dGUgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIik7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzIGIvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwppbmRleCA0OGE4NTYwYzBjNjAzMjBlNTY3
NjIwNGQyMDYzMjExMjAyYjAyYjI0Li4xMDA3MDE1YzJiOGIxNWJjMGJiNzM3MTRiNzQ2NWE5OWUz
M2Y4MDVlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpz
CisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKQEAgLTMwNCw3ICsz
MDQsNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcgogICAgICAgICAgICAgLkZ1bmN0aW9uKCJy
ZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQogICAgICAgICAgICAgICAuSTMyQ29u
c3QoNDIpCiAgICAgICAgICAgICAuRW5kKCkKLSAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHko
KS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5
dGUgNDE6IFRhYmxlIDAgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVu
dCBzZWN0aW9uIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQorICAgICAg
ICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9k
dWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA0MjogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnZnVu
Y3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUnKSIpCiAKIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgICAg
LlR5cGUoKS5FbmQoKQo=
</data>
<flag name="commit-queue"
          id="431602"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414655</attachid>
            <date>2020-11-19 23:25:13 -0800</date>
            <delta_ts>2020-11-20 02:59:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201120142511.patch</filename>
            <type>text/plain</type>
            <size>32676</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Njg1NTFlYWFkNWU1ZGEyNGQ1Mzc5MzAyY2U4ZmU5M2M4NGRiN2E1Li40ODdmNmVjYjg4YzQ5YmQ5
YTRiODhiZWM4YzNmNmIzYzg5NGZiMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICBBZGp1c3Qgd2FzbSBwYXJzZXIgdG8gcGFyc2UgbmV3IGZvcm0g
b2YgZWxlbWVudCBzZWN0aW9uLgorICAgICAgICBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHBy
ZXZpb3VzIGZvcm1zIGJlY2F1c2UgdGhleSBhcmUgY29tcGF0aWJsZS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgdmVjKGV4cCkgaW4gZWxlbWVudCBzZWN0aW9uOgorICAgICAgICBodHRwczov
L3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9kdWxl
cy5odG1sI2VsZW1lbnQtc2VjdGlvbgorICAgICAgICBKdXN0IHRyYW5zZm9ybWVkIChyZWYuZnVu
YyBpZHgpIC0+IGlkeCBhbmQgKHJlZi5udWxsIGZ1bmMpIC0+IG51bGwuCisgICAgICAgIEZvciBu
dWxsIHZhbHVlcyBjYWxsIHRhYmxlLT5jbGVhciB0byB6ZXJvIHZhbHVlLgorCisgICAgICAgICog
d2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpw
cmVwYXJlKToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OkVsZW1lbnQ6OmFjdGl2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcik6CisgICAgICAgIChK
U0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbUtpbmQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbik6CisgICAg
ICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JF
bGVtU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y0lkeEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmg6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTgg
IERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9yIGV4dGVybnJlZiBhbmQg
ZnVuY3JlZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApp
bmRleCAwYTljZjA1NDNhNGZhOWE4ZmI2NmRlZjNiMDcxMjlhNjM0YWMzNzUzLi42MjRmM2FhMzNm
ZDhmMjA0YjhjY2UwMjU2ZTIyMTU1YmY3ODhiNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgRW50cnlQ
bGFuOjpwcmVwYXJlKCkKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBt
X21vZHVsZUluZm9ybWF0aW9uLT5lbGVtZW50cykgewotICAgICAgICBmb3IgKGNvbnN0IHVpbnQz
Ml90IGVsZW1lbnRJbmRleCA6IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzKSB7Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCi0gICAgICAgICAgICAg
ICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoZWxlbWVudEluZGV4IC0gaW1wb3J0RnVu
Y3Rpb25Db3VudCk7CisgICAgICAgIGZvciAoY29uc3QgT3B0aW9uYWw8dWludDMyX3Q+JiBlbGVt
ZW50SW5kZXggOiBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcykgeworICAgICAgICAgICAgaWYgKGVs
ZW1lbnRJbmRleCAmJiAqZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCisgICAg
ICAgICAgICAgICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoKmVsZW1lbnRJbmRleCAt
IGltcG9ydEZ1bmN0aW9uQ291bnQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggMWZjZmRmMmJhMjAwYzQ1MmI1ZmEzNjMxM2Rh
NGE0NzUzNGM0NzVjNi4uODMyYTdkMWZkMjc1ODQwZThmMDE2NWJkYWU2NTQxNTgyZGY5OWE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjI2LDE0ICsyMjYs
MjggQEAgc3RydWN0IFNlZ21lbnQgewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwg
STMySW5pdEV4cHIgb2Zmc2V0KQotICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAg
ICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgIGVudW0gY2xhc3MgS2luZCB7CisgICAgICAgIEFj
dGl2ZSwKKyAgICAgICAgUGFzc2l2ZSwKKyAgICAgICAgRGVjbGFyZWQsCisgICAgfTsKKworICAg
IEVsZW1lbnQoRWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1lbnRUeXBlIGVsZW1UeXBlLCB1
aW50MzJfdCB0YWJsZUluZGV4LCBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHIpCisgICAg
ICAgIDoga2luZChraW5kKQorICAgICAgICAsIGVsZW1UeXBlKGVsZW1UeXBlKQorICAgICAgICAs
IHRhYmxlSW5kZXgodGFibGVJbmRleCkKKyAgICAgICAgLCBvZmZzZXRJZkFjdGl2ZShpbml0RXhw
cikKICAgICB7IH0KIAorICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4ga2luZCA9PSBL
aW5kOjpBY3RpdmU7IH0KKworICAgIEtpbmQga2luZDsKKyAgICBUYWJsZUVsZW1lbnRUeXBlIGVs
ZW1UeXBlOwogICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7Ci0gICAgSTMySW5pdEV4cHIgb2Zmc2V0
OwotICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOworICAgIE9wdGlvbmFsPEkz
MkluaXRFeHByPiBvZmZzZXRJZkFjdGl2ZTsKKworICAgIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVl
IHRoZW4gaXRlbSByZXByZXNlbnRzIHJlZi5udWxsLgorICAgIFZlY3RvcjxPcHRpb25hbDx1aW50
MzJfdD4+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKIGNsYXNzIFRhYmxlSW5mb3JtYXRpb24gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmlu
ZGV4IGI0MTFiMjdkMzRjYTNlNmIzNWEwOTAxMmQ2MjRlYjZlZDI2MmE4ODAuLjNiODhiN2QxMzQ0
MzhmNmUxMjVjM2JjNmMxN2Y1NDc5MWUyOGY4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTM3OCw0MSArMzc4LDEzMCBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGVsZW1lbnRDb3VudCA+IG1heFRhYmxlRW50cmllcywgIkVsZW1l
bnQgc2VjdGlvbidzIGNvdW50IGlzIHRvbyBiaWcgIiwgZWxlbWVudENvdW50LCAiIG1heGltdW0g
IiwgbWF4VGFibGVFbnRyaWVzKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8tPmVs
ZW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShlbGVtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUg
bWVtb3J5IGZvciAiLCBlbGVtZW50Q291bnQsICIgRWxlbWVudHMiKTsKICAgICBmb3IgKHVuc2ln
bmVkIGVsZW1lbnROdW0gPSAwOyBlbGVtZW50TnVtIDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRO
dW0pIHsKLSAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKLSAgICAgICAgdWludDY0X3QgaW5p
dEV4cHJCaXRzOwotICAgICAgICB1aW50OF90IGluaXRPcGNvZGU7Ci0gICAgICAgIHVpbnQzMl90
IGluZGV4Q291bnQ7CisgICAgICAgIHVpbnQ4X3QgZWxlbWVudEZsYWdzOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KGVsZW1lbnRGbGFncyksICJjYW4ndCBnZXQgIiwg
ZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVs
ZW1lbnQgZmxhZ3MiKTsKKworICAgICAgICBzd2l0Y2ggKGVsZW1lbnRGbGFncykgeworICAgICAg
ICBjYXNlIDB4MDA6IHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHRhYmxlSW5kZXggPSAw
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRU
YWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHBy
PiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJ
MzJJbml0RXhwcihpbml0RXhwcikpOworCisgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRG
b3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7CisgICAgICAgICAgICBBU1NF
UlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CiAKLSAgICAgICAgdWludDhfdCBtYWdp
YzsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChtYWdpYykgfHwgKG1h
Z2ljICYmIG1hZ2ljICE9IDIpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50
IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgwMCBvciAweDAyIGZvbGxv
d2VkIGJ5IGEgdGFibGUgaW5kZXgiKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVt
ZW50OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgs
IFdURk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNh
bid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMi
KTsKIAotICAgICAgICBpZiAobWFnaWMgPT0gMikKKyAgICAgICAgICAgIGZvciAodWludDMyX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1l
bnROdW0sIGluZGV4KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZnVuY0lkeCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMTogewor
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxl
bWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDAyOiB7CisgICAgICAgICAgICB1aW50MzJfdCB0
YWJsZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFi
bGUgaW5kZXgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFibGVJbmRleCA9IDA7Ci0g
ICAgICAgIAotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZv
LT50YWJsZUNvdW50KCksICJFbGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgs
ICIgZXhjZWVkcyBhdmFpbGFibGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUo
KSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBt
dXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKLSAg
ICAgICAgVHlwZSBpbml0RXhwclR5cGU7Ci0gICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJ
TFMocGFyc2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkp
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVt
ZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1l
bnROdW0sICJ0aCBpbmRleCBjb3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7Ci0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXgg
Y291bnQgaXMgdG9vIGJpZyAiLCBpbmRleENvdW50KTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisg
ICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKwor
ICAgICAgICAgICAgdWludDhfdCBlbGVtS2luZDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VFbGVtS2luZChlbGVtS2luZCkpOworCisgICAgICAgICAgICB1aW50
MzJfdCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhw
YXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CisKKyAgICAg
ICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVu
dFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdURk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2Vy
dmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5k
ZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAg
ICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxl
bWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOworICAgICAgICAgICAg
bV9pbmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDM6IHsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0s
ICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgMHgwNDogeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdGFi
bGVJbmRleCA9IDA7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlk
YXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8
STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9G
QUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7CiAKLSAgICAgICAgRWxlbWVudCBlbGVt
ZW50KHRhYmxlSW5kZXgsIG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMp
KTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOworICAgICAgICAgICAgdWludDMy
X3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFy
c2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOworICAg
ICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0gICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsK
LSAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBF
bGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAi
dGggaW5kZXgiKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRl
eCA+PSBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBm
dW5jdGlvbkluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNp
emUgb2YgIiwgbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgICAgICAgICAg
RWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6
RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50
LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5k
aWNlcy51bmNoZWNrZWRBcHBlbmQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CisgICAgICAg
ICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGcm9tUmVmRXhwRm9yRWxlbVNlY3Rp
b24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSAweDA1OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJ1
bnN1cHBvcnRlZCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDY6IHsKKyAgICAg
ICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVt
LCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAgICAg
ICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwcihpbml0RXhwcikpOworCisgICAg
ICAgICAgICBUeXBlIHJlZlR5cGU7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlv
biIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihyZWZUeXBlID09IEV4dGVybnJl
ZiwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CisKKyAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKGluZGV4Q291bnQsIGVs
ZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5k
ZXhdKTsKKworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2
ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhw
cikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbklu
ZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVt
b3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgIG1f
aW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRl
eCkgeworICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdW5jSWR4OworICAgICAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4RnJvbVJlZkV4
cEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1lbnROdW0sIGluZGV4KSk7CisgICAgICAgICAg
ICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZnVu
Y0lkeCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgMHgwNzogeworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2
ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImNhbid0IGdldCAiLCBl
bGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4geyB9OwpAQCAtNTA0LDYgKzU5Myw3OSBAQCBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0
TnVtYmVyLAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gU2VjdGlvblBhcnNlcjo6dmFsaWRh
dGVFbGVtZW50VGFibGVJZHgodWludDMyX3QgdGFibGVJbmRleCkgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8tPnRhYmxlQ291
bnQoKSwgIkVsZW1lbnQgc2VjdGlvbiBmb3IgVGFibGUgIiwgdGFibGVJbmRleCwgIiBleGNlZWRz
IGF2YWlsYWJsZSBUYWJsZSAiLCBtX2luZm8tPnRhYmxlQ291bnQoKSk7CisgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVt
ZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUg
J2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CisKKyAgICByZXR1cm4geyB9
OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHIoT3B0aW9uYWw8STMy
SW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQ4X3QgaW5p
dE9wY29kZTsKKyAgICB1aW50NjRfdCBpbml0RXhwckJpdHM7CisgICAgVHlwZSBpbml0RXhwclR5
cGU7CisgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGluaXRPcGNv
ZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rihpbml0RXhwclR5cGUgIT0gSTMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFu
IGkzMiIpOworICAgIGluaXRFeHByID0gbWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRF
eHByQml0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBh
cnNlRWxlbUtpbmQodWludDhfdCYgcmVzdWx0RWxlbUtpbmQpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICB1aW50OF90IGVsZW1LaW5kOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUlu
dDgoZWxlbUtpbmQpLCAiY2FuJ3QgZ2V0IGVsZW1raW5kIik7CisgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighZWxlbUtpbmQsICJlbGVta2luZCBtdXN0IGJlIHplcm8iKTsKKyAgICByZXN1bHRFbGVt
S2luZCA9IGVsZW1LaW5kOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbih1aW50MzJfdCYgcmVzdWx0SW5kZXhD
b3VudCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51bSkgLT4gUGFydGlhbFJlc3VsdAoreworICAg
IHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNv
dW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4
Q291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCAiRWxlbWVudCBz
ZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGlzIHRvbyBiaWcgIiwgaW5k
ZXhDb3VudCk7CisgICAgcmVzdWx0SW5kZXhDb3VudCA9IGluZGV4Q291bnQ7CisKKyAgICByZXR1
cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBG
b3JFbGVtU2VjdGlvbihPcHRpb25hbDx1aW50MzJfdD4mIGZ1bmNJZHgsIGNvbnN0IHVuc2lnbmVk
IGVsZW1lbnROdW0sIGNvbnN0IHVuc2lnbmVkIGluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgdWludDhfdCBvcGNvZGU7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChv
cGNvZGUpLCAiY2FuJ3QgZ2V0IG9wY29kZSBmb3IgZXhwIGluIGVsZW1lbnQgc2VjdGlvbidzICIs
IGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoKG9wY29kZSAhPSBSZWZGdW5jKSAmJiAob3Bjb2RlICE9IFJlZk51
bGwpLCAib3Bjb2RlIGZvciBleHAgaW4gZWxlbWVudCBzZWN0aW9uJ3Mgc2hvdWxkIGJlIGVpdGhl
ciByZWYuZnVuYyBvciByZWYubnVsbCAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGlu
ZGV4LCAidGggaW5kZXgiKTsKKworICAgIGlmIChvcGNvZGUgPT0gUmVmRnVuYykgeworICAgICAg
ICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBFbGVtZW50IHNlY3Rpb24n
cyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKKyAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmdW5jdGlvbkluZGV4ID49IG1faW5mby0+ZnVuY3Rp
b25JbmRleFNwYWNlU2l6ZSgpLCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRo
IGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4IGlzICIsIGZ1bmN0aW9uSW5kZXgsICIgd2hp
Y2ggZXhjZWVkcyB0aGUgZnVuY3Rpb24gaW5kZXggc3BhY2Ugc2l6ZSBvZiAiLCBtX2luZm8tPmZ1
bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAgICAgIGZ1bmNJZHggPSBmdW5jdGlvbkluZGV4
OworICAgIH0gZWxzZSB7CisgICAgICAgIFR5cGUgdHlwZU9mTnVsbDsKKyAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBt
dXN0IGJlIGEgZnVuYyB0eXBlIGluIGVsZW0gc2VjdGlvbiIpOworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKHR5cGVPZk51bGwgIT0gRnVuY3JlZiwgInJlZi5udWxsIGV4dGVybiBpcyBmb3Ji
aWRkZW4gaW4gZWxlbWVudCBzZWN0aW9uJ3MsICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3Mg
IiwgaW5kZXgsICJ0aCBpbmRleCIpOworICAgIH0KKworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlVUludDgob3Bjb2RlKSwgImNhbid0IGdldCBvcGNvZGUgZm9yIGV4cCBlbmQgaW4gZWxl
bWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRo
IGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihvcGNvZGUgIT0gRW5kLCAibWFsZm9y
bWVkIGV4cHIgaW4gZWxlbWVudCBzZWN0aW9uJ3MiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdz
ICIsIGluZGV4LCAidGggaW5kZXgiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24oT3B0aW9uYWw8dWludDMyX3Q+
JiBmdW5jSWR4LCBjb25zdCB1bnNpZ25lZCBlbGVtZW50TnVtLCBjb25zdCB1bnNpZ25lZCBpbmRl
eCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CisgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25JbmRleCksICJjYW4n
dCBnZXQgRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBp
bmRleCwgInRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmdW5jdGlvbkluZGV4
ID49IG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpLCAiRWxlbWVudCBzZWN0aW9uJ3Mg
IiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4IGlzICIsIGZ1
bmN0aW9uSW5kZXgsICIgd2hpY2ggZXhjZWVkcyB0aGUgZnVuY3Rpb24gaW5kZXggc3BhY2Ugc2l6
ZSBvZiAiLCBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CisgICAgZnVuY0lkeCA9
IGZ1bmN0aW9uSW5kZXg7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlR2xvYmFsVHlwZShHbG9iYWxJbmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgdWludDhfdCBtdXRhYmlsaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKaW5kZXggNTI3N2E3YWMwZmU5MDkwYTAwNmE0
ODBmMGY0YTc1MDJhMjZiMGM5NC4uNDQxMDlkOGY5M2Y3ZTk2YmVmYjZiZGE4ZTYxM2VkMzk4YmEx
YTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oCkBAIC02Niw2ICs2NiwxMyBAQCBwcml2YXRlOgogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlUmVzaXphYmxlTGltaXRzKHVpbnQzMl90JiBpbml0aWFsLCBPcHRp
b25hbDx1aW50MzJfdD4mIG1heGltdW0pOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlSW5pdEV4cHIodWludDhfdCYsIHVpbnQ2NF90JiwgVHlwZSYgaW5pdEV4cHJU
eXBlKTsKIAorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxl
bWVudFRhYmxlSWR4KHVpbnQzMl90KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUkzMkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHByPiYpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRWxlbUtpbmQodWludDhfdCYgZWxlbUtp
bmQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW5kZXhDb3Vu
dEZvckVsZW1TZWN0aW9uKHVpbnQzMl90JiwgY29uc3QgdW5zaWduZWQpOworICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2Vj
dGlvbihPcHRpb25hbDx1aW50MzJfdD4mLCBjb25zdCB1bnNpZ25lZCwgY29uc3QgdW5zaWduZWQp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY0lkeEZvckVs
ZW1TZWN0aW9uKE9wdGlvbmFsPHVpbnQzMl90PiYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNp
Z25lZCk7CisKICAgICBzaXplX3QgbV9vZmZzZXRJblNvdXJjZTsKICAgICBSZWY8TW9kdWxlSW5m
b3JtYXRpb24+IG1faW5mbzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggMjA2NGE0NjYyODU1
MTZkNGNjNjg4NGEyYjMyNGJjNmU2Njk3ZWJhNy4uODA3N2IyNDA5YzI1YWIxNWJiODUxYzk1ZTU0
MzhhODE2ZDk1NWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtNTU1LDE0ICs1NTUsMTYgQEAg
SlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGlmICghZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
c2l6ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1aW50MzJf
dCBlbGVtZW50SW5kZXggPSBlbGVtZW50Lm9mZnNldC5pc0dsb2JhbEltcG9ydCgpCi0gICAgICAg
ICAgICAgICAgPyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5s
b2FkSTMyR2xvYmFsKGVsZW1lbnQub2Zmc2V0Lmdsb2JhbEltcG9ydEluZGV4KCkpKQotICAgICAg
ICAgICAgICAgIDogZWxlbWVudC5vZmZzZXQuY29uc3RWYWx1ZSgpOworICAgICAgICAgICAgaWYg
KGVsZW1lbnQuYWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBlbGVtZW50SW5k
ZXggPSBlbGVtZW50Lm9mZnNldElmQWN0aXZlLT5pc0dsb2JhbEltcG9ydCgpCisgICAgICAgICAg
ICAgICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5zdGFuY2UtPmluc3RhbmNlKCku
bG9hZEkzMkdsb2JhbChlbGVtZW50Lm9mZnNldElmQWN0aXZlLT5nbG9iYWxJbXBvcnRJbmRleCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgOiBlbGVtZW50Lm9mZnNldElmQWN0aXZlLT5jb25zdFZh
bHVlKCk7CiAKLSAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRleCwgZWxl
bWVudEluZGV4KTsKKyAgICAgICAgICAgICAgICBmbihlbGVtZW50LCBlbGVtZW50LnRhYmxlSW5k
ZXgsIGVsZW1lbnRJbmRleCk7CiAKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9OwogCkBA
IC02MDUsMTIgKzYwNywxNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm4gZXhjZXB0
aW9uLnZhbHVlKCk7CiAKICAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1l
bnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkg
ewotICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGlj
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVsZW1l
bnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpLCArK2VsZW1lbnRJbmRleCkgeworICAgICAg
ICAgICAgaWYgKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlc1tpXS5oYXNWYWx1ZSgpKSB7CisgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmNsZWFyKGVsZW1lbnRJ
bmRleCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGVzc2VudGlhbGx5IG1lYW5zIHdlJ3JlIGV4cG9ydGluZyBh
biBpbXBvcnQuCiAgICAgICAgICAgICAvLyBXZSBuZWVkIGEgc3RvcnkgaGVyZS4gV2UgbmVlZCB0
byBjcmVhdGUgYSBXZWJBc3NlbWJseUZ1bmN0aW9uCiAgICAgICAgICAgICAvLyBmb3IgdGhlIGlt
cG9ydC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjU1MTAKLSAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSBlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgg
PSAqZWxlbWVudC5mdW5jdGlvbkluZGljZXNbaV07CiAgICAgICAgICAgICBXYXNtOjpTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBpZiAoZnVuY3Rpb25JbmRl
eCA8IGNvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAg
SlNPYmplY3QqIGZ1bmN0aW9uSW1wb3J0ID0gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRG
dW5jdGlvbjxXcml0ZUJhcnJpZXI8SlNPYmplY3Q+PihmdW5jdGlvbkluZGV4KS0+Z2V0KCk7CkBA
IC02MjEsMTMgKzYyOCwxMSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICAv
LyB0aGUgb25seSB0eXBlIHRoaXMgY291bGQgYmUgaXMgV2ViQXNzZW1ibHlGdW5jdGlvbi4KICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQod2FzbUZ1bmN0aW9uKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5k
ZXgsIHdhc21GdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICsrZWxlbWVudEluZGV4Owog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uU3RydWN0dXJlKCksIGZ1bmN0aW9uSW1wb3J0LCBmdW5jdGlvbkluZGV4LCBtX2luc3RhbmNl
LmdldCgpLCBzaWduYXR1cmVJbmRleCkpOwotICAgICAgICAgICAgICAgICsrZWxlbWVudEluZGV4
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC02NDAsOSAr
NjQ1LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4MjUKICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVu
Y3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKAogICAgICAgICAg
ICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlv
blN0cnVjdHVyZSgpLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmcoKSwgbV9pbnN0
YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0
aW9uLCBzaWduYXR1cmVJbmRleCk7Ci0KICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRh
YmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LCBmdW5jdGlvbik7Ci0gICAgICAgICAgICArK2Vs
ZW1lbnRJbmRleDsKICAgICAgICAgfQogICAgIH0pOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1YzY2YjQ4OTYyODNjYzBlZmRmY2Q5
MjhmZDYwYzA5NTRmMjViNTMuLjFlYjllZThlZjI1MjBhMzQwNjViZDc4YjZjMzdmMDZkODZkOTJk
YWYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMTEtMTkgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhl
dHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9y
dCBmb3IgYWN0aXZlIG1vZHMgaW4gZWxlbWVudCBzZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkxOTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgRml4IGJ1aWxkZXIgZHNsIHRvIHByb2R1Y2Ugcmln
aHQgZWxlbWVudCBzZWN0aW9uLgorICAgICAgICBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5p
by9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9kdWxlcy5odG1sI2VsZW1lbnQtc2VjdGlv
bi4KKyAgICAgICAgQWRkZWQgYmFzaWMgdGVzdHMgZm9yIGVsZW1lbnQgc2VjdGlvbi4KKworCisg
ICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAoZXhwb3J0LmRlZmF1bHQuQnVpbGRl
ci5wcm90b3R5cGUuX3JlZ2lzdGVyU2VjdGlvbkJ1aWxkZXJzLmNvbnN0LnNlY3Rpb24uaW4uV0FT
TS5kZXNjcmlwdGlvbi5zZWN0aW9uLnN3aXRjaC5zZWN0aW9uLmNhc2Uuc3RyaW5nX2FwcGVhcmVk
X2hlcmUudGhpcy5zZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlC
aW5hcnkuanM6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5FbGVtZW50KToKKyAgICAgICAgKiB3
YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qczoKKyAgICAgICAgKG1vZHVsZSk6
CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qczogQWRkZWQu
CisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAoYmFzaWNUZXN0KToKKyAgICAgICAgKHJlZk51
bGxFeHRlcm5JbkVsZW1zU2VjdGlvbik6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2VsZW1l
bnRfcGFyc2luZy5qczoKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qczoK
KwogMjAyMC0xMS0xOCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFJlbW92ZSBzdWJ0eXBpbmcgcnVsZSBmb3Ig
ZXh0ZXJucmVmIGFuZCBmdW5jcmVmCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5q
cyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IDMyN2IxN2Q3ZTRjMDQ0NzkyNTcxMGU3
MmQ2M2ZiODllNGVkOTU2NWMuLjAxMWNjYjg0NTZkY2JkZGZiYjM1NzU4MTg0M2ViMmU2NGYwNzQ1
Y2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2Fz
bS9CdWlsZGVyLmpzCkBAIC01OTQsOCArNTk0LDggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVp
bGRlciB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNl
Y3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QnVpbGRlciA9IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEVuZDogKCkgPT4gdGhpcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEVsZW1lbnQ6ICh7dGFibGVJbmRleCA9IDAsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2Vz
fSkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHt0YWJsZUlu
ZGV4LCBvZmZzZXQsIGZ1bmN0aW9uSW5kaWNlc30pOworICAgICAgICAgICAgICAgICAgICAgICAg
RWxlbWVudDogKHt0YWJsZUluZGV4ID0gMCwgb2Zmc2V0LCBlbGVta2luZCA9IDAsIGZ1bmN0aW9u
SW5kaWNlc30pID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7
dGFibGVJbmRleCwgb2Zmc2V0LCBlbGVta2luZCwgZnVuY3Rpb25JbmRpY2VzfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZWxlbWVu
dEJ1aWxkZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnku
anMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCAxZWVm
OWQ0MTgyZGUzMzcyMDE0Y2RkYzQ5OWI4ODg3ZDA1MjMwOGZhLi40NzExYzhjZDRkZDU2ZjBjYjM0
ZDE0NDNiYzg5YWVjNWUwZGQ2ZWYzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9X
ZWJBc3NlbWJseUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJs
eUJpbmFyeS5qcwpAQCAtMTkzLDEwICsxOTMsMTMgQEAgY29uc3QgZW1pdHRlcnMgPSB7CiAgICAg
RWxlbWVudDogKHNlY3Rpb24sIGJpbikgPT4gewogICAgICAgICBjb25zdCBkYXRhID0gc2VjdGlv
bi5kYXRhOwogICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZGF0YS5sZW5ndGgpOwotICAg
ICAgICBmb3IgKGNvbnN0IHt0YWJsZUluZGV4LCBvZmZzZXQsIGZ1bmN0aW9uSW5kaWNlc30gb2Yg
ZGF0YSkgewotICAgICAgICAgICAgaWYgKHRhYmxlSW5kZXggIT0gMCkKLSAgICAgICAgICAgICAg
ICBwdXQoYmluLCAidWludDgiLCAyKTsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIi
LCB0YWJsZUluZGV4KTsKKyAgICAgICAgZm9yIChjb25zdCB7dGFibGVJbmRleCwgb2Zmc2V0LCBl
bGVta2luZCwgZnVuY3Rpb25JbmRpY2VzfSBvZiBkYXRhKSB7CisgICAgICAgICAgICBsZXQgZmxh
Z3MgPSB0YWJsZUluZGV4ID09IDAgPyAwIDogMjsKKyAgICAgICAgICAgIHB1dChiaW4sICJ1aW50
OCIsIGZsYWdzKTsKKworICAgICAgICAgICAgaWYgKGZsYWdzID09IDIpIHsKKyAgICAgICAgICAg
ICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHRhYmxlSW5kZXgpOworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBsZXQgaW5pdEV4cHI7CiAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCA9
PT0gIm51bWJlciIpCkBAIC0yMDUsNiArMjA4LDEwIEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAg
ICAgICAgICAgICAgIGluaXRFeHByID0gb2Zmc2V0OwogICAgICAgICAgICAgcHV0SW5pdEV4cHIo
YmluLCBpbml0RXhwcik7CiAKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSAyKSB7CisgICAgICAg
ICAgICAgIHB1dChiaW4sICJ1aW50OCIsIGVsZW1raW5kKTsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGZ1bmN0aW9uSW5kaWNlcy5sZW5ndGgpOwog
ICAgICAgICAgICAgZm9yIChjb25zdCBmdW5jdGlvbkluZGV4IG9mIGZ1bmN0aW9uSW5kaWNlcykK
ICAgICAgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZnVuY3Rpb25JbmRleCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpz
IGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qcwppbmRleCA5
ZGRhN2FmZmE0MDBhNDQzOGE1MjM2MmU5YjMzYzBiODIzNzEyMGNjLi4yNzkxZDRjYjRlZWVhMjFi
NjBkZDI3MmVkMTdhZGFmZjc0YjhmMTQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
LXNwZWMtdGVzdHMvcmVmX251bGwuanMKQEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rpb24gbW9kdWxl
KGJ5dGVzLCB2YWxpZCA9IHRydWUpIHsKICAgICB0aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRh
dGUgdGhyb3dzIik7CiAgIH0KICAgaWYgKHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKLSAgICAvL3Ro
cm93IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0ZSBmYWlsdXJlIiArICh2YWxpZCA/ICIiIDogIiBl
eHBlY3RlZCIpKTsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUgZmFpbHVyZSIg
KyAodmFsaWQgPyAiIiA6ICIgZXhwZWN0ZWQiKSk7CiAgIH0KICAgcmV0dXJuIG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYnVmZmVyKTsKIH0KQEAgLTE3NSwxMCArMTc1LDEzIEBAIGZ1bmN0aW9uIGFz
c2VydF9yZXR1cm5fZnVuYyhhY3Rpb24pIHsKIH0KIAogLy8gcmVmX251bGwud2FzdDoxCi1sZXQg
JDEgPSBpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4
ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAxXHg2Zlx4NjBceDAwXHgwMVx4NzBceDAzXHg4
M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDA2XHg4Ylx4ODBceDgwXHg4MFx4MDBceDAy
XHg2Zlx4MDBceGQwXHg2Zlx4MGJceDcwXHgwMFx4ZDBceDcwXHgwYlx4MDdceDk3XHg4MFx4ODBc
eDgwXHgwMFx4MDJceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDBceDA3XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAxXHgwYVx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDZmXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4ZDBceDcwXHgwYiIpOworbGV0ICQyID0gaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDRceDAxXHg2MFx4MDBceDAwXHgwM1x4
MDJceDAxXHgwMFx4MDRceDA0XHgwMVx4NzBceDAwXHgwYVx4MDdceDA1XHgwMVx4MDFceDcyXHgw
MFx4MDBceDBhXHgwYVx4MDFceDA4XHgwMFx4NDFceDAwXHhkMFx4NzBceDI2XHgwMFx4MGIiKTsK
K2NhbGwoJDIsICJyIiwgW10pOwogCi0vLyByZWZfbnVsbC53YXN0OjkKLWFzc2VydF9yZXR1cm4o
KCkgPT4gY2FsbCgkMSwgImV4dGVybnJlZiIsIFtdKSwgbnVsbCk7CisvL2xldCAkMSA9IGluc3Rh
bmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgw
XHgwMFx4MDJceDYwXHgwMFx4MDFceDZmXHg2MFx4MDBceDAxXHg3MFx4MDNceDgzXHg4MFx4ODBc
eDgwXHgwMFx4MDJceDAwXHgwMVx4MDZceDhiXHg4MFx4ODBceDgwXHgwMFx4MDJceDZmXHgwMFx4
ZDBceDZmXHgwYlx4NzBceDAwXHhkMFx4NzBceDBiXHgwN1x4OTdceDgwXHg4MFx4ODBceDAwXHgw
Mlx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMFx4MDdceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDFceDBhXHg5M1x4ODBceDgwXHg4MFx4MDBc
eDAyXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHhkMFx4NmZceDBiXHg4NFx4ODBceDgwXHg4MFx4
MDBceDAwXHhkMFx4NzBceDBiIik7CiAKLS8vIHJlZl9udWxsLndhc3Q6MTAKLWFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgImZ1bmNyZWYiLCBbXSksIG51bGwpOworLy8vLyByZWZfbnVsbC53
YXN0OjkKKy8vYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXh0ZXJucmVmIiwgW10pLCBu
dWxsKTsKKworLy8vLyByZWZfbnVsbC53YXN0OjEwCisvL2Fzc2VydF9yZXR1cm4oKCkgPT4gY2Fs
bCgkMSwgImZ1bmNyZWYiLCBbXSksIG51bGwpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMv
ZWxlbWVudF9hY3RpdmVfbW9kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNzA4NDAwNjgzNGQzN2VlNjNiNzJl
Yjk5ZmFmMzliN2NmMDM5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanMKQEAgLTAsMCArMSw1OSBAQAorLy9AIHJ1bldlYkFz
c2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzPXRydWUiKQoraW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywg
dmFsaWQgPSB0cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVu
Z3RoKTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBp
ID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJD
b2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsK
K30KKworZnVuY3Rpb24gYmFzaWNUZXN0KCkgeworICAvKgorICAobW9kdWxlCisgICAgKGZ1bmMg
JGYgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmNvbnN0IDM3KQorICAgICkKKyAgICAoZnVuYyAk
ZyAocmVzdWx0IGkzMikKKyAgICAgIChpMzIuY29uc3QgNDIpCisgICAgKQorICAgICh0YWJsZSAk
dDEgMTAgZnVuY3JlZikKKyAgICAodGFibGUgJHQyIDIwIGZ1bmNyZWYpCisgICAgKGVsZW0gKGkz
Mi5jb25zdCAzKSBmdW5jcmVmIChyZWYuZnVuYyAkZykgKHJlZi5udWxsIGZ1bmMpIChyZWYuZnVu
YyAkZikgKHJlZi5udWxsIGZ1bmMpKQorICAgIChlbGVtICh0YWJsZSAkdDIpIChpMzIuY29uc3Qg
NykgZnVuY3JlZiAocmVmLmZ1bmMgJGYpIChyZWYubnVsbCBmdW5jKSAocmVmLmZ1bmMgJGcpKQor
ICAgIChmdW5jIChleHBvcnQgImdldF90YmwxIikgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0IGZ1
bmNyZWYpCisgICAgICAodGFibGUuZ2V0ICR0MSAobG9jYWwuZ2V0ICRpZHgpKQorICAgICkKKyAg
ICAoZnVuYyAoZXhwb3J0ICJnZXRfdGJsMiIpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBmdW5j
cmVmKQorICAgICAgKHRhYmxlLmdldCAkdDIgKGxvY2FsLmdldCAkaWR4KSkKKyAgICApCisgICkK
KyAgKi8KKyAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMFx4MDFc
eDdmXHg2MFx4MDFceDdmXHgwMVx4NzBceDAzXHgwNVx4MDRceDAwXHgwMFx4MDFceDAxXHgwNFx4
MDdceDAyXHg3MFx4MDBceDBhXHg3MFx4MDBceDE0XHgwN1x4MTdceDAyXHgwOFx4NjdceDY1XHg3
NFx4NWZceDc0XHg2Mlx4NmNceDMxXHgwMFx4MDJceDA4XHg2N1x4NjVceDc0XHg1Zlx4NzRceDYy
XHg2Y1x4MzJceDAwXHgwM1x4MDlceDIyXHgwMlx4MDRceDQxXHgwM1x4MGJceDA0XHhkMlx4MDFc
eDBiXHhkMFx4NzBceDBiXHhkMlx4MDBceDBiXHhkMFx4NzBceDBiXHgwNlx4MDFceDQxXHgwN1x4
MGJceDcwXHgwM1x4ZDJceDAwXHgwYlx4ZDBceDcwXHgwYlx4ZDJceDAxXHgwYlx4MGFceDE5XHgw
NFx4MDRceDAwXHg0MVx4MjVceDBiXHgwNFx4MDBceDQxXHgyYVx4MGJceDA2XHgwMFx4MjBceDAw
XHgyNVx4MDBceDBiXHgwNlx4MDBceDIwXHgwMFx4MjVceDAxXHgwYiIpKTsKKworICBhc3NlcnQu
ZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMSgzKSgpLCA0Mik7CisgIGFzc2VydC5lcShpbnN0
YW5jZS5leHBvcnRzLmdldF90YmwxKDQpLCBudWxsKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMuZ2V0X3RibDEoNSkoKSwgMzcpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5n
ZXRfdGJsMSg2KSwgbnVsbCk7CisKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3Ri
bDIoNykoKSwgMzcpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMig4KSwg
bnVsbCk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwyKDkpKCksIDQyKTsK
K30KKworZnVuY3Rpb24gcmVmTnVsbEV4dGVybkluRWxlbXNTZWN0aW9uKCkgeworICAvKgorICAo
bW9kdWxlCisgICAgKHRhYmxlICR0IDEwIGZ1bmNyZWYpCisgICAgKGVsZW0gKGkzMi5jb25zdCAz
KSBmdW5jcmVmIChyZWYubnVsbCBleHRlcm4pKQorICApCisgICovCisgIGFzc2VydC50aHJvd3Mo
KCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDRceDA0XHgw
MVx4NzBceDAwXHgwYVx4MDlceDA5XHgwMVx4MDRceDQxXHgwM1x4MGJceDAxXHhkMFx4NmZceDBi
IiksCisgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgIldlYkFzc2VtYmx5Lk1vZHVsZSBk
b2Vzbid0IHBhcnNlIGF0IGJ5dGUgMjQ6IHJlZi5udWxsIGV4dGVybiBpcyBmb3JiaWRkZW4gaW4g
ZWxlbWVudCBzZWN0aW9uJ3MsIDB0aCBlbGVtZW50J3MgMHRoIGluZGV4IChldmFsdWF0aW5nICdu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIpOworfQorCitiYXNpY1Rlc3QoKTsKK3Jl
Zk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbigpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxl
bWVudF9wYXJzaW5nLmpzCmluZGV4IDkzYmUxZmQ2NTc2MmQ0NDU1YWFlOTM1ZDMyZTdjNmQzNjQw
OGNhMDEuLjAxZjg5MDI0ODJjNmIyZmIwNzQ3ODI0YTU3MzZiMjczMmRlMGZhZjcgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qcworKysgYi9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMKQEAgLTIzLDQgKzIzLDQgQEAg
YXNzZXJ0LnRocm93cygoKSA9PiBtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4OTdceDgwXHg4MFx4ODAKIC8vICArICJceDAyIgogICAgICsgIlx4MDEiCiAgICAg
KyAiXHg0MVx4MDFceDBiXHgwMVx4MDJceDBhXHhkNFx4ODBceDgwXHg4MFx4MDBceDA3XHg4NVx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceGQxXHgwYlx4ODVceDgwXHg4MFx4ODBceDAwXHgw
MFx4MjBceDAwXHhkMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiXHg4OFx4ODBceDgw
XHg4MFx4MDBceDAwXHg0MVx4MDFceDIwXHgwMFx4MjZceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDAxXHhkMFx4MjZceDAwXHg0MVx4MDFceGQwXHgyNlx4MDFceDBiXHg4OFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDI1XHgwMFx4MTBceDAwXHgwYlx4ODhceDgwXHg4
MFx4ODBceDAwXHgwMFx4MjBceDAwXHgyNVx4MDFceDEwXHgwMVx4MGIiKSwKLSAgICBFcnJvciwg
IldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTQzOiBjYW4ndCBnZXQg
MHRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVpdGhlciAweDAwIG9y
IDB4MDIgZm9sbG93ZWQgYnkgYSB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShidWZmZXIpJykiKTsKKyAgICBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBk
b2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTQzOiB1bnN1cHBvcnRlZCAwdGggRWxlbWVudCByZXNlcnZl
ZCBieXRlIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcyBiL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKaW5kZXggNDhhODU2MGMwYzYwMzIwZTU2
NzYyMDRkMjA2MzIxMTIwMmIwMmIyNC4uMTAwNzAxNWMyYjhiMTViYzBiYjczNzE0Yjc0NjVhOTll
MzNmODA1ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5q
cworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCkBAIC0zMDQsNyAr
MzA0LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIKICAgICAgICAgICAgIC5GdW5jdGlvbigi
cmV0NDIiLCB7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDQyKQogICAgICAgICAgICAgLkVuZCgpCi0gICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5
KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBi
eXRlIDQxOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBlICdmdW5jcmVmJyB0byBoYXZlIGFuIGVsZW1l
bnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKyAgICAg
ICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgNDI6IFRhYmxlIDAgbXVzdCBoYXZlIHR5cGUgJ2Z1
bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlJykiKQogCiBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAg
IC5UeXBlKCkuRW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414666</attachid>
            <date>2020-11-20 03:00:03 -0800</date>
            <delta_ts>2020-11-26 00:53:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201120180000.patch</filename>
            <type>text/plain</type>
            <size>32677</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Njg1NTFlYWFkNWU1ZGEyNGQ1Mzc5MzAyY2U4ZmU5M2M4NGRiN2E1Li40ODdmNmVjYjg4YzQ5YmQ5
YTRiODhiZWM4YzNmNmIzYzg5NGZiMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICBBZGp1c3Qgd2FzbSBwYXJzZXIgdG8gcGFyc2UgbmV3IGZvcm0g
b2YgZWxlbWVudCBzZWN0aW9uLgorICAgICAgICBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHBy
ZXZpb3VzIGZvcm1zIGJlY2F1c2UgdGhleSBhcmUgY29tcGF0aWJsZS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgdmVjKGV4cCkgaW4gZWxlbWVudCBzZWN0aW9uOgorICAgICAgICBodHRwczov
L3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9kdWxl
cy5odG1sI2VsZW1lbnQtc2VjdGlvbgorICAgICAgICBKdXN0IHRyYW5zZm9ybWVkIChyZWYuZnVu
YyBpZHgpIC0+IGlkeCBhbmQgKHJlZi5udWxsIGZ1bmMpIC0+IG51bGwuCisgICAgICAgIEZvciBu
dWxsIHZhbHVlcyBjYWxsIHRhYmxlLT5jbGVhciB0byB6ZXJvIHZhbHVlLgorCisgICAgICAgICog
d2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpw
cmVwYXJlKToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OkVsZW1lbnQ6OmFjdGl2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcik6CisgICAgICAgIChK
U0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbUtpbmQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbik6CisgICAg
ICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JF
bGVtU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y0lkeEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmg6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTgg
IERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9yIGV4dGVybnJlZiBhbmQg
ZnVuY3JlZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApp
bmRleCAwYTljZjA1NDNhNGZhOWE4ZmI2NmRlZjNiMDcxMjlhNjM0YWMzNzUzLi42MjRmM2FhMzNm
ZDhmMjA0YjhjY2UwMjU2ZTIyMTU1YmY3ODhiNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgRW50cnlQ
bGFuOjpwcmVwYXJlKCkKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBt
X21vZHVsZUluZm9ybWF0aW9uLT5lbGVtZW50cykgewotICAgICAgICBmb3IgKGNvbnN0IHVpbnQz
Ml90IGVsZW1lbnRJbmRleCA6IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzKSB7Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCi0gICAgICAgICAgICAg
ICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoZWxlbWVudEluZGV4IC0gaW1wb3J0RnVu
Y3Rpb25Db3VudCk7CisgICAgICAgIGZvciAoY29uc3QgT3B0aW9uYWw8dWludDMyX3Q+JiBlbGVt
ZW50SW5kZXggOiBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcykgeworICAgICAgICAgICAgaWYgKGVs
ZW1lbnRJbmRleCAmJiAqZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCisgICAg
ICAgICAgICAgICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoKmVsZW1lbnRJbmRleCAt
IGltcG9ydEZ1bmN0aW9uQ291bnQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggMWZjZmRmMmJhMjAwYzQ1MmI1ZmEzNjMxM2Rh
NGE0NzUzNGM0NzVjNi4uODMyYTdkMWZkMjc1ODQwZThmMDE2NWJkYWU2NTQxNTgyZGY5OWE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjI2LDE0ICsyMjYs
MjggQEAgc3RydWN0IFNlZ21lbnQgewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwg
STMySW5pdEV4cHIgb2Zmc2V0KQotICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAg
ICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgIGVudW0gY2xhc3MgS2luZCB7CisgICAgICAgIEFj
dGl2ZSwKKyAgICAgICAgUGFzc2l2ZSwKKyAgICAgICAgRGVjbGFyZWQsCisgICAgfTsKKworICAg
IEVsZW1lbnQoRWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1lbnRUeXBlIGVsZW1UeXBlLCB1
aW50MzJfdCB0YWJsZUluZGV4LCBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHIpCisgICAg
ICAgIDoga2luZChraW5kKQorICAgICAgICAsIGVsZW1UeXBlKGVsZW1UeXBlKQorICAgICAgICAs
IHRhYmxlSW5kZXgodGFibGVJbmRleCkKKyAgICAgICAgLCBvZmZzZXRJZkFjdGl2ZShpbml0RXhw
cikKICAgICB7IH0KIAorICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4ga2luZCA9PSBL
aW5kOjpBY3RpdmU7IH0KKworICAgIEtpbmQga2luZDsKKyAgICBUYWJsZUVsZW1lbnRUeXBlIGVs
ZW1UeXBlOwogICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7Ci0gICAgSTMySW5pdEV4cHIgb2Zmc2V0
OwotICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOworICAgIE9wdGlvbmFsPEkz
MkluaXRFeHByPiBvZmZzZXRJZkFjdGl2ZTsKKworICAgIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVl
IHRoZW4gaXRlbSByZXByZXNlbnRzIHJlZi5udWxsLgorICAgIFZlY3RvcjxPcHRpb25hbDx1aW50
MzJfdD4+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKIGNsYXNzIFRhYmxlSW5mb3JtYXRpb24gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmlu
ZGV4IGI0MTFiMjdkMzRjYTNlNmIzNWEwOTAxMmQ2MjRlYjZlZDI2MmE4ODAuLmY2NDlhMTgxYmUw
Y2MwNmVlNDY4ZGZjMGY3MDJjZmRiNDAzYTllZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTM3OCw0MSArMzc4LDEzMCBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGVsZW1lbnRDb3VudCA+IG1heFRhYmxlRW50cmllcywgIkVsZW1l
bnQgc2VjdGlvbidzIGNvdW50IGlzIHRvbyBiaWcgIiwgZWxlbWVudENvdW50LCAiIG1heGltdW0g
IiwgbWF4VGFibGVFbnRyaWVzKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8tPmVs
ZW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShlbGVtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUg
bWVtb3J5IGZvciAiLCBlbGVtZW50Q291bnQsICIgRWxlbWVudHMiKTsKICAgICBmb3IgKHVuc2ln
bmVkIGVsZW1lbnROdW0gPSAwOyBlbGVtZW50TnVtIDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRO
dW0pIHsKLSAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKLSAgICAgICAgdWludDY0X3QgaW5p
dEV4cHJCaXRzOwotICAgICAgICB1aW50OF90IGluaXRPcGNvZGU7Ci0gICAgICAgIHVpbnQzMl90
IGluZGV4Q291bnQ7CisgICAgICAgIHVpbnQ4X3QgZWxlbWVudEZsYWdzOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KGVsZW1lbnRGbGFncyksICJjYW4ndCBnZXQgIiwg
ZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVs
ZW1lbnQgZmxhZ3MiKTsKKworICAgICAgICBzd2l0Y2ggKGVsZW1lbnRGbGFncykgeworICAgICAg
ICBjYXNlIDB4MDA6IHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHRhYmxlSW5kZXggPSAw
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRU
YWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHBy
PiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJ
MzJJbml0RXhwcihpbml0RXhwcikpOworCisgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRG
b3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7CisgICAgICAgICAgICBBU1NF
UlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CiAKLSAgICAgICAgdWludDhfdCBtYWdp
YzsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChtYWdpYykgfHwgKG1h
Z2ljICYmIG1hZ2ljICE9IDIpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50
IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgwMCBvciAweDAyIGZvbGxv
d2VkIGJ5IGEgdGFibGUgaW5kZXgiKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVt
ZW50OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgs
IFdURk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNh
bid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMi
KTsKIAotICAgICAgICBpZiAobWFnaWMgPT0gMikKKyAgICAgICAgICAgIGZvciAodWludDMyX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1l
bnROdW0sIGluZGV4KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZnVuY0lkeCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMTogewor
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxl
bWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDAyOiB7CisgICAgICAgICAgICB1aW50MzJfdCB0
YWJsZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFi
bGUgaW5kZXgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFibGVJbmRleCA9IDA7Ci0g
ICAgICAgIAotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZv
LT50YWJsZUNvdW50KCksICJFbGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgs
ICIgZXhjZWVkcyBhdmFpbGFibGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUo
KSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBt
dXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKLSAg
ICAgICAgVHlwZSBpbml0RXhwclR5cGU7Ci0gICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJ
TFMocGFyc2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkp
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVt
ZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1l
bnROdW0sICJ0aCBpbmRleCBjb3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7Ci0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXgg
Y291bnQgaXMgdG9vIGJpZyAiLCBpbmRleENvdW50KTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisg
ICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKwor
ICAgICAgICAgICAgdWludDhfdCBlbGVtS2luZDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VFbGVtS2luZChlbGVtS2luZCkpOworCisgICAgICAgICAgICB1aW50
MzJfdCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhw
YXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CisKKyAgICAg
ICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVu
dFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdURk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2Vy
dmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5k
ZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAg
ICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxl
bWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOworICAgICAgICAgICAg
bV9pbmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDM6IHsKKyAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0s
ICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgMHgwNDogeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdGFi
bGVJbmRleCA9IDA7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlk
YXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8
STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9G
QUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7CiAKLSAgICAgICAgRWxlbWVudCBlbGVt
ZW50KHRhYmxlSW5kZXgsIG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMp
KTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOworICAgICAgICAgICAgdWludDMy
X3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFy
c2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOworICAg
ICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0gICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsK
LSAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBF
bGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAi
dGggaW5kZXgiKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRl
eCA+PSBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBm
dW5jdGlvbkluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNp
emUgb2YgIiwgbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgICAgICAgICAg
RWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6
RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50
LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5k
aWNlcy51bmNoZWNrZWRBcHBlbmQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CisgICAgICAg
ICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGcm9tUmVmRXhwRm9yRWxlbVNlY3Rp
b24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSAweDA1OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJ1
bnN1cHBvcnRlZCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDY6IHsKKyAgICAg
ICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVt
LCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAgICAg
ICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwcihpbml0RXhwcikpOworCisgICAg
ICAgICAgICBUeXBlIHJlZlR5cGU7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlv
biIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihyZWZUeXBlID09IEV4dGVybnJl
ZiwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CisKKyAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKGluZGV4Q291bnQsIGVs
ZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5k
ZXhdKTsKKworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2
ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhw
cikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbklu
ZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVt
b3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgIG1f
aW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRl
eCkgeworICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmdW5jSWR4OworICAgICAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4RnJvbVJlZkV4
cEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1lbnROdW0sIGluZGV4KSk7CisgICAgICAgICAg
ICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZnVu
Y0lkeCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgMHgwNzogeworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2
ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImNhbid0IGdldCAiLCBl
bGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7CisgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4geyB9OwpAQCAtNTA0LDYgKzU5Myw3OSBAQCBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0
TnVtYmVyLAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gU2VjdGlvblBhcnNlcjo6dmFsaWRh
dGVFbGVtZW50VGFibGVJZHgodWludDMyX3QgdGFibGVJbmRleCkgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8tPnRhYmxlQ291
bnQoKSwgIkVsZW1lbnQgc2VjdGlvbiBmb3IgVGFibGUgIiwgdGFibGVJbmRleCwgIiBleGNlZWRz
IGF2YWlsYWJsZSBUYWJsZSAiLCBtX2luZm8tPnRhYmxlQ291bnQoKSk7CisgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVt
ZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUg
J2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7CisKKyAgICByZXR1cm4geyB9
OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHIoT3B0aW9uYWw8STMy
SW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQ4X3QgaW5p
dE9wY29kZTsKKyAgICB1aW50NjRfdCBpbml0RXhwckJpdHM7CisgICAgVHlwZSBpbml0RXhwclR5
cGU7CisgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGluaXRPcGNv
ZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rihpbml0RXhwclR5cGUgIT0gSTMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFu
IGkzMiIpOworICAgIGluaXRFeHByID0gbWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRF
eHByQml0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBh
cnNlRWxlbUtpbmQodWludDhfdCYgcmVzdWx0RWxlbUtpbmQpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICB1aW50OF90IGVsZW1LaW5kOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUlu
dDgoZWxlbUtpbmQpLCAiY2FuJ3QgZ2V0IGVsZW1raW5kIik7CisgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighIWVsZW1LaW5kLCAiZWxlbWtpbmQgbXVzdCBiZSB6ZXJvIik7CisgICAgcmVzdWx0RWxl
bUtpbmQgPSBlbGVtS2luZDsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24odWludDMyX3QmIHJlc3VsdEluZGV4
Q291bnQsIGNvbnN0IHVuc2lnbmVkIGVsZW1lbnROdW0pIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAg
ICB1aW50MzJfdCBpbmRleENvdW50OworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBj
b3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRl
eENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgIkVsZW1lbnQg
c2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBpcyB0b28gYmlnICIsIGlu
ZGV4Q291bnQpOworICAgIHJlc3VsdEluZGV4Q291bnQgPSBpbmRleENvdW50OworCisgICAgcmV0
dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmNJZHhGcm9tUmVmRXhw
Rm9yRWxlbVNlY3Rpb24oT3B0aW9uYWw8dWludDMyX3Q+JiBmdW5jSWR4LCBjb25zdCB1bnNpZ25l
ZCBlbGVtZW50TnVtLCBjb25zdCB1bnNpZ25lZCBpbmRleCkgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIHVpbnQ4X3Qgb3Bjb2RlOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgo
b3Bjb2RlKSwgImNhbid0IGdldCBvcGNvZGUgZm9yIGV4cCBpbiBlbGVtZW50IHNlY3Rpb24ncyAi
LCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKKyAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKChvcGNvZGUgIT0gUmVmRnVuYykgJiYgKG9wY29kZSAhPSBSZWZO
dWxsKSwgIm9wY29kZSBmb3IgZXhwIGluIGVsZW1lbnQgc2VjdGlvbidzIHNob3VsZCBiZSBlaXRo
ZXIgcmVmLmZ1bmMgb3IgcmVmLm51bGwgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBp
bmRleCwgInRoIGluZGV4Iik7CisKKyAgICBpZiAob3Bjb2RlID09IFJlZkZ1bmMpIHsKKyAgICAg
ICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIoZnVuY3Rpb25JbmRleCksICJjYW4ndCBnZXQgRWxlbWVudCBzZWN0aW9u
J3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7Cisg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRleCA+PSBtX2luZm8tPmZ1bmN0
aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0
aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBmdW5jdGlvbkluZGV4LCAiIHdo
aWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNpemUgb2YgIiwgbV9pbmZvLT5m
dW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgICAgICBmdW5jSWR4ID0gZnVuY3Rpb25JbmRl
eDsKKyAgICB9IGVsc2UgeworICAgICAgICBUeXBlIHR5cGVPZk51bGw7CisgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZSh0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUg
bXVzdCBiZSBhIGZ1bmMgdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRih0eXBlT2ZOdWxsICE9IEZ1bmNyZWYsICJyZWYubnVsbCBleHRlcm4gaXMgZm9y
YmlkZGVuIGluIGVsZW1lbnQgc2VjdGlvbidzLCAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdz
ICIsIGluZGV4LCAidGggaW5kZXgiKTsKKyAgICB9CisKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVVJbnQ4KG9wY29kZSksICJjYW4ndCBnZXQgb3Bjb2RlIGZvciBleHAgZW5kIGluIGVs
ZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0
aCBpbmRleCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYob3Bjb2RlICE9IEVuZCwgIm1hbGZv
cm1lZCBleHByIGluIGVsZW1lbnQgc2VjdGlvbidzIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQn
cyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNl
Y3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZvckVsZW1TZWN0aW9uKE9wdGlvbmFsPHVpbnQzMl90
PiYgZnVuY0lkeCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51bSwgY29uc3QgdW5zaWduZWQgaW5k
ZXgpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4OworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2Fu
J3QgZ2V0IEVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwg
aW5kZXgsICJ0aCBpbmRleCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRl
eCA+PSBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBm
dW5jdGlvbkluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNp
emUgb2YgIiwgbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgIGZ1bmNJZHgg
PSBmdW5jdGlvbkluZGV4OworCisgICAgcmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUdsb2JhbFR5cGUoR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCkgLT4gUGFydGlh
bFJlc3VsdAogewogICAgIHVpbnQ4X3QgbXV0YWJpbGl0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCmluZGV4IDUyNzdhN2FjMGZlOTA5MGEwMDZh
NDgwZjBmNGE3NTAyYTI2YjBjOTQuLjQ0MTA5ZDhmOTNmN2U5NmJlZmI2YmRhOGU2MTNlZDM5OGJh
MWEwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuaApAQCAtNjYsNiArNjYsMTMgQEAgcHJpdmF0ZToKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBwYXJzZVJlc2l6YWJsZUxpbWl0cyh1aW50MzJfdCYgaW5pdGlhbCwgT3B0
aW9uYWw8dWludDMyX3Q+JiBtYXhpbXVtKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZUluaXRFeHByKHVpbnQ4X3QmLCB1aW50NjRfdCYsIFR5cGUmIGluaXRFeHBy
VHlwZSk7CiAKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiB2YWxpZGF0ZUVs
ZW1lbnRUYWJsZUlkeCh1aW50MzJfdCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUVsZW1LaW5kKHVpbnQ4X3QmIGVsZW1L
aW5kKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUluZGV4Q291
bnRGb3JFbGVtU2VjdGlvbih1aW50MzJfdCYsIGNvbnN0IHVuc2lnbmVkKTsKKyAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmNJZHhGcm9tUmVmRXhwRm9yRWxlbVNl
Y3Rpb24oT3B0aW9uYWw8dWludDMyX3Q+JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0IHVuc2lnbmVk
KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmNJZHhGb3JF
bGVtU2VjdGlvbihPcHRpb25hbDx1aW50MzJfdD4mLCBjb25zdCB1bnNpZ25lZCwgY29uc3QgdW5z
aWduZWQpOworCiAgICAgc2l6ZV90IG1fb2Zmc2V0SW5Tb3VyY2U7CiAgICAgUmVmPE1vZHVsZUlu
Zm9ybWF0aW9uPiBtX2luZm87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDIwNjRhNDY2Mjg1
NTE2ZDRjYzY4ODRhMmIzMjRiYzZlNjY5N2ViYTcuLjgwNzdiMjQwOWMyNWFiMTViYjg1MWM5NWU1
NDM4YTgxNmQ5NTVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU1NSwxNCArNTU1LDE2IEBA
IEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2Vz
LnNpemUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdWludDMy
X3QgZWxlbWVudEluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQoKQotICAgICAg
ICAgICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5zdGFuY2UtPmluc3RhbmNlKCku
bG9hZEkzMkdsb2JhbChlbGVtZW50Lm9mZnNldC5nbG9iYWxJbXBvcnRJbmRleCgpKSkKLSAgICAg
ICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0LmNvbnN0VmFsdWUoKTsKKyAgICAgICAgICAgIGlm
IChlbGVtZW50LmFjdGl2ZSgpKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgZWxlbWVudElu
ZGV4ID0gZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+aXNHbG9iYWxJbXBvcnQoKQorICAgICAgICAg
ICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5jZSgp
LmxvYWRJMzJHbG9iYWwoZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+Z2xvYmFsSW1wb3J0SW5kZXgo
KSkpCisgICAgICAgICAgICAgICAgICAgIDogZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+Y29uc3RW
YWx1ZSgpOwogCi0gICAgICAgICAgICBmbihlbGVtZW50LCBlbGVtZW50LnRhYmxlSW5kZXgsIGVs
ZW1lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUlu
ZGV4LCBlbGVtZW50SW5kZXgpOwogCi0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsKIApA
QCAtNjA1LDEyICs2MDcsMTcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbi52YWx1ZSgpOwogCiAgICAgZm9yRWFjaEVsZW1lbnQoWyZdIChjb25zdCBXYXNtOjpFbGVt
ZW50JiBlbGVtZW50LCB1aW50MzJfdCB0YWJsZUluZGV4LCB1aW50MzJfdCBlbGVtZW50SW5kZXgp
IHsKLSAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRp
Y2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVt
ZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCk7ICsraSwgKytlbGVtZW50SW5kZXgpIHsKKyAgICAg
ICAgICAgIGlmICghZWxlbWVudC5mdW5jdGlvbkluZGljZXNbaV0uaGFzVmFsdWUoKSkgeworICAg
ICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5jbGVhcihlbGVtZW50
SW5kZXgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxseSBtZWFucyB3ZSdyZSBleHBvcnRpbmcg
YW4gaW1wb3J0LgogICAgICAgICAgICAgLy8gV2UgbmVlZCBhIHN0b3J5IGhlcmUuIFdlIG5lZWQg
dG8gY3JlYXRlIGEgV2ViQXNzZW1ibHlGdW5jdGlvbgogICAgICAgICAgICAgLy8gZm9yIHRoZSBp
bXBvcnQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1NTEwCi0gICAgICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gZWxlbWVu
dC5mdW5jdGlvbkluZGljZXNbaV07CisgICAgICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4
ID0gKmVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzW2ldOwogICAgICAgICAgICAgV2FzbTo6U2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUuc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rp
b25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uSW5k
ZXggPCBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKSkgewogICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBmdW5jdGlvbkltcG9ydCA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0
RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwpA
QCAtNjIxLDEzICs2MjgsMTEgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhlIG9ubHkgdHlwZSB0aGlzIGNvdWxkIGJlIGlzIFdlYkFzc2VtYmx5RnVuY3Rpb24uCiAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHdhc21GdW5jdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudElu
ZGV4LCB3YXNtRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleDsK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvblN0cnVjdHVyZSgpLCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9pbnN0YW5j
ZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpKTsKLSAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRl
eDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtNjQwLDkg
KzY0NSw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODI1CiAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1
bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSgKICAgICAgICAg
ICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgU3RyaW5nKCksIG1faW5z
dGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRMb2Nh
dGlvbiwgc2lnbmF0dXJlSW5kZXgpOwotCiAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0
YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgZnVuY3Rpb24pOwotICAgICAgICAgICAgKytl
bGVtZW50SW5kZXg7CiAgICAgICAgIH0KICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyNWM2NmI0ODk2MjgzY2MwZWZkZmNk
OTI4ZmQ2MGMwOTU0ZjI1YjUzLi4xZWI5ZWU4ZWYyNTIwYTM0MDY1YmQ3OGI2YzM3ZjA2ZDg2ZDky
ZGFmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTE5ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpo
ZXRza292QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkIHN1cHBv
cnQgZm9yIGFjdGl2ZSBtb2RzIGluIGVsZW1lbnQgc2VjdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIEZpeCBidWlsZGVyIGRzbCB0byBwcm9kdWNlIHJp
Z2h0IGVsZW1lbnQgc2VjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIu
aW8vcmVmZXJlbmNlLXR5cGVzL2NvcmUvYmluYXJ5L21vZHVsZXMuaHRtbCNlbGVtZW50LXNlY3Rp
b24uCisgICAgICAgIEFkZGVkIGJhc2ljIHRlc3RzIGZvciBlbGVtZW50IHNlY3Rpb24uCisKKwor
ICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAgKGV4cG9ydC5kZWZhdWx0LkJ1aWxk
ZXIucHJvdG90eXBlLl9yZWdpc3RlclNlY3Rpb25CdWlsZGVycy5jb25zdC5zZWN0aW9uLmluLldB
U00uZGVzY3JpcHRpb24uc2VjdGlvbi5zd2l0Y2guc2VjdGlvbi5jYXNlLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnRoaXMuc2VjdGlvbik6CisgICAgICAgICogd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzOgorICAgICAgICAoY29uc3QuZW1pdHRlcnMuRWxlbWVudCk6CisgICAgICAgICog
d2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanM6CisgICAgICAgIChtb2R1bGUp
OgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanM6IEFkZGVk
LgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKGJhc2ljVGVzdCk6CisgICAgICAgIChyZWZO
dWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24pOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9lbGVt
ZW50X3BhcnNpbmcuanM6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanM6
CisKIDIwMjAtMTEtMTggIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9y
IGV4dGVybnJlZiBhbmQgZnVuY3JlZgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIu
anMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRleCAzMjdiMTdkN2U0YzA0NDc5MjU3MTBl
NzJkNjNmYjg5ZTRlZDk1NjVjLi4wMTFjY2I4NDU2ZGNiZGRmYmIzNTc1ODE4NDNlYjJlNjRmMDc0
NWNlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dh
c20vQnVpbGRlci5qcwpAQCAtNTk0LDggKzU5NCw4IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1
aWxkZXIgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihz
ZWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEJ1aWxkZXIgPSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBFbGVtZW50OiAoe3RhYmxlSW5kZXggPSAwLCBvZmZzZXQsIGZ1bmN0aW9uSW5kaWNl
c30pID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7dGFibGVJ
bmRleCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEVsZW1lbnQ6ICh7dGFibGVJbmRleCA9IDAsIG9mZnNldCwgZWxlbWtpbmQgPSAwLCBmdW5jdGlv
bkluZGljZXN9KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRhLnB1c2go
e3RhYmxlSW5kZXgsIG9mZnNldCwgZWxlbWtpbmQsIGZ1bmN0aW9uSW5kaWNlc30pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGVsZW1l
bnRCdWlsZGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5
LmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKaW5kZXggMWVl
ZjlkNDE4MmRlMzM3MjAxNGNkZGM0OTliODg4N2QwNTIzMDhmYS4uNDcxMWM4Y2Q0ZGQ1NmYwY2Iz
NGQxNDQzYmM4OWFlYzVlMGRkNmVmMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXJf
V2ViQXNzZW1ibHlCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1i
bHlCaW5hcnkuanMKQEAgLTE5MywxMCArMTkzLDEzIEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAg
IEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsKICAgICAgICAgY29uc3QgZGF0YSA9IHNlY3Rp
b24uZGF0YTsKICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGRhdGEubGVuZ3RoKTsKLSAg
ICAgICAgZm9yIChjb25zdCB7dGFibGVJbmRleCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9IG9m
IGRhdGEpIHsKLSAgICAgICAgICAgIGlmICh0YWJsZUluZGV4ICE9IDApCi0gICAgICAgICAgICAg
ICAgcHV0KGJpbiwgInVpbnQ4IiwgMik7Ci0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMy
IiwgdGFibGVJbmRleCk7CisgICAgICAgIGZvciAoY29uc3Qge3RhYmxlSW5kZXgsIG9mZnNldCwg
ZWxlbWtpbmQsIGZ1bmN0aW9uSW5kaWNlc30gb2YgZGF0YSkgeworICAgICAgICAgICAgbGV0IGZs
YWdzID0gdGFibGVJbmRleCA9PSAwID8gMCA6IDI7CisgICAgICAgICAgICBwdXQoYmluLCAidWlu
dDgiLCBmbGFncyk7CisKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSAyKSB7CisgICAgICAgICAg
ICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCB0YWJsZUluZGV4KTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgbGV0IGluaXRFeHByOwogICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQg
PT09ICJudW1iZXIiKQpAQCAtMjA1LDYgKzIwOCwxMCBAQCBjb25zdCBlbWl0dGVycyA9IHsKICAg
ICAgICAgICAgICAgICBpbml0RXhwciA9IG9mZnNldDsKICAgICAgICAgICAgIHB1dEluaXRFeHBy
KGJpbiwgaW5pdEV4cHIpOwogCisgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gMikgeworICAgICAg
ICAgICAgICBwdXQoYmluLCAidWludDgiLCBlbGVta2luZCk7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBmdW5jdGlvbkluZGljZXMubGVuZ3RoKTsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgZnVuY3Rpb25JbmRleCBvZiBmdW5jdGlvbkluZGljZXMp
CiAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGZ1bmN0aW9uSW5kZXgpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5q
cyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanMKaW5kZXgg
OWRkYTdhZmZhNDAwYTQ0MzhhNTIzNjJlOWIzM2MwYjgyMzcxMjBjYy4uMjc5MWQ0Y2I0ZWVlYTIx
YjYwZGQyNzJlZDE3YWRhZmY3NGI4ZjE0NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVy
ZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNl
cy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCkBAIC02Miw3ICs2Miw3IEBAIGZ1bmN0aW9uIG1vZHVs
ZShieXRlcywgdmFsaWQgPSB0cnVlKSB7CiAgICAgdGhyb3cgbmV3IEVycm9yKCJXYXNtIHZhbGlk
YXRlIHRocm93cyIpOwogICB9CiAgIGlmICh2YWxpZGF0ZWQgIT09IHZhbGlkKSB7Ci0gICAgLy90
aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUgZmFpbHVyZSIgKyAodmFsaWQgPyAiIiA6ICIg
ZXhwZWN0ZWQiKSk7CisgICAgdGhyb3cgbmV3IEVycm9yKCJXYXNtIHZhbGlkYXRlIGZhaWx1cmUi
ICsgKHZhbGlkID8gIiIgOiAiIGV4cGVjdGVkIikpOwogICB9CiAgIHJldHVybiBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGJ1ZmZlcik7CiB9CkBAIC0xNzUsMTAgKzE3NSwxMyBAQCBmdW5jdGlvbiBh
c3NlcnRfcmV0dXJuX2Z1bmMoYWN0aW9uKSB7CiB9CiAKIC8vIHJlZl9udWxsLndhc3Q6MQotbGV0
ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlc
eDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgwMVx4NmZceDYwXHgwMFx4MDFceDcwXHgwM1x4
ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwNlx4OGJceDgwXHg4MFx4ODBceDAwXHgw
Mlx4NmZceDAwXHhkMFx4NmZceDBiXHg3MFx4MDBceGQwXHg3MFx4MGJceDA3XHg5N1x4ODBceDgw
XHg4MFx4MDBceDAyXHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAwXHgwN1x4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwMVx4MGFceDkzXHg4MFx4
ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQwXHg2Zlx4MGJceDg0XHg4
MFx4ODBceDgwXHgwMFx4MDBceGQwXHg3MFx4MGIiKTsKK2xldCAkMiA9IGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA0XHgwMVx4NjBceDAwXHgwMFx4MDNc
eDAyXHgwMVx4MDBceDA0XHgwNFx4MDFceDcwXHgwMFx4MGFceDA3XHgwNVx4MDFceDAxXHg3Mlx4
MDBceDAwXHgwYVx4MGFceDAxXHgwOFx4MDBceDQxXHgwMFx4ZDBceDcwXHgyNlx4MDBceDBiIik7
CitjYWxsKCQyLCAiciIsIFtdKTsKIAotLy8gcmVmX251bGwud2FzdDo5Ci1hc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJleHRlcm5yZWYiLCBbXSksIG51bGwpOworLy9sZXQgJDEgPSBpbnN0
YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4
MFx4MDBceDAyXHg2MFx4MDBceDAxXHg2Zlx4NjBceDAwXHgwMVx4NzBceDAzXHg4M1x4ODBceDgw
XHg4MFx4MDBceDAyXHgwMFx4MDFceDA2XHg4Ylx4ODBceDgwXHg4MFx4MDBceDAyXHg2Zlx4MDBc
eGQwXHg2Zlx4MGJceDcwXHgwMFx4ZDBceDcwXHgwYlx4MDdceDk3XHg4MFx4ODBceDgwXHgwMFx4
MDJceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDBceDA3XHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAxXHgwYVx4OTNceDgwXHg4MFx4ODBceDAw
XHgwMlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDBceDZmXHgwYlx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4ZDBceDcwXHgwYiIpOwogCi0vLyByZWZfbnVsbC53YXN0OjEwCi1hc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJmdW5jcmVmIiwgW10pLCBudWxsKTsKKy8vLy8gcmVmX251bGwu
d2FzdDo5CisvL2Fzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV4dGVybnJlZiIsIFtdKSwg
bnVsbCk7CisKKy8vLy8gcmVmX251bGwud2FzdDoxMAorLy9hc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJmdW5jcmVmIiwgW10pLCBudWxsKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L2VsZW1lbnRfYWN0aXZlX21vZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTcwODQwMDY4MzRkMzdlZTYzYjcy
ZWI5OWZhZjM5YjdjZjAzOWNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVy
ZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8vQCBydW5XZWJB
c3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAq
IGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMs
IHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxl
bmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQg
aSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFy
Q29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7
Cit9CisKK2Z1bmN0aW9uIGJhc2ljVGVzdCgpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgIChmdW5j
ICRmIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5jb25zdCAzNykKKyAgICApCisgICAgKGZ1bmMg
JGcgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmNvbnN0IDQyKQorICAgICkKKyAgICAodGFibGUg
JHQxIDEwIGZ1bmNyZWYpCisgICAgKHRhYmxlICR0MiAyMCBmdW5jcmVmKQorICAgIChlbGVtIChp
MzIuY29uc3QgMykgZnVuY3JlZiAocmVmLmZ1bmMgJGcpIChyZWYubnVsbCBmdW5jKSAocmVmLmZ1
bmMgJGYpIChyZWYubnVsbCBmdW5jKSkKKyAgICAoZWxlbSAodGFibGUgJHQyKSAoaTMyLmNvbnN0
IDcpIGZ1bmNyZWYgKHJlZi5mdW5jICRmKSAocmVmLm51bGwgZnVuYykgKHJlZi5mdW5jICRnKSkK
KyAgICAoZnVuYyAoZXhwb3J0ICJnZXRfdGJsMSIpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBm
dW5jcmVmKQorICAgICAgKHRhYmxlLmdldCAkdDEgKGxvY2FsLmdldCAkaWR4KSkKKyAgICApCisg
ICAgKGZ1bmMgKGV4cG9ydCAiZ2V0X3RibDIiKSAocGFyYW0gJGlkeCBpMzIpIChyZXN1bHQgZnVu
Y3JlZikKKyAgICAgICh0YWJsZS5nZXQgJHQyIChsb2NhbC5nZXQgJGlkeCkpCisgICAgKQorICAp
CisgICovCisgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAx
XHg3Zlx4NjBceDAxXHg3Zlx4MDFceDcwXHgwM1x4MDVceDA0XHgwMFx4MDBceDAxXHgwMVx4MDRc
eDA3XHgwMlx4NzBceDAwXHgwYVx4NzBceDAwXHgxNFx4MDdceDE3XHgwMlx4MDhceDY3XHg2NVx4
NzRceDVmXHg3NFx4NjJceDZjXHgzMVx4MDBceDAyXHgwOFx4NjdceDY1XHg3NFx4NWZceDc0XHg2
Mlx4NmNceDMyXHgwMFx4MDNceDA5XHgyMlx4MDJceDA0XHg0MVx4MDNceDBiXHgwNFx4ZDJceDAx
XHgwYlx4ZDBceDcwXHgwYlx4ZDJceDAwXHgwYlx4ZDBceDcwXHgwYlx4MDZceDAxXHg0MVx4MDdc
eDBiXHg3MFx4MDNceGQyXHgwMFx4MGJceGQwXHg3MFx4MGJceGQyXHgwMVx4MGJceDBhXHgxOVx4
MDRceDA0XHgwMFx4NDFceDI1XHgwYlx4MDRceDAwXHg0MVx4MmFceDBiXHgwNlx4MDBceDIwXHgw
MFx4MjVceDAwXHgwYlx4MDZceDAwXHgyMFx4MDBceDI1XHgwMVx4MGIiKSk7CisKKyAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDEoMykoKSwgNDIpOworICBhc3NlcnQuZXEoaW5z
dGFuY2UuZXhwb3J0cy5nZXRfdGJsMSg0KSwgbnVsbCk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5l
eHBvcnRzLmdldF90YmwxKDUpKCksIDM3KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMu
Z2V0X3RibDEoNiksIG51bGwpOworCisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90
YmwyKDcpKCksIDM3KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIoOCks
IG51bGwpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMig5KSgpLCA0Mik7
Cit9CisKK2Z1bmN0aW9uIHJlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbigpIHsKKyAgLyoKKyAg
KG1vZHVsZQorICAgICh0YWJsZSAkdCAxMCBmdW5jcmVmKQorICAgIChlbGVtIChpMzIuY29uc3Qg
MykgZnVuY3JlZiAocmVmLm51bGwgZXh0ZXJuKSkKKyAgKQorICAqLworICBhc3NlcnQudGhyb3dz
KCgpID0+IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDA0XHgwNFx4
MDFceDcwXHgwMFx4MGFceDA5XHgwOVx4MDFceDA0XHg0MVx4MDNceDBiXHgwMVx4ZDBceDZmXHgw
YiIpLAorICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCBwYXJzZSBhdCBieXRlIDI0OiByZWYubnVsbCBleHRlcm4gaXMgZm9yYmlkZGVuIGlu
IGVsZW1lbnQgc2VjdGlvbidzLCAwdGggZWxlbWVudCdzIDB0aCBpbmRleCAoZXZhbHVhdGluZyAn
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiKTsKK30KKworYmFzaWNUZXN0KCk7City
ZWZOdWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Vs
ZW1lbnRfcGFyc2luZy5qcwppbmRleCA5M2JlMWZkNjU3NjJkNDQ1NWFhZTkzNWQzMmU3YzZkMzY0
MDhjYTAxLi4wMWY4OTAyNDgyYzZiMmZiMDc0NzgyNGE1NzM2YjI3MzJkZTBmYWY3IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMKKysrIGIvSlNU
ZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCkBAIC0yMyw0ICsyMyw0IEBA
IGFzc2VydC50aHJvd3MoKCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDk3XHg4MFx4ODBceDgwCiAvLyAgKyAiXHgwMiIKICAgICArICJceDAxIgogICAg
ICsgIlx4NDFceDAxXHgwYlx4MDFceDAyXHgwYVx4ZDRceDgwXHg4MFx4ODBceDAwXHgwN1x4ODVc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHhkMVx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4
MDBceDIwXHgwMFx4ZDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODhceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDFceDAxXHgyMFx4MDBceDI2XHgwMFx4MGJceDhjXHg4MFx4ODBceDgw
XHgwMFx4MDBceDQxXHgwMVx4ZDBceDI2XHgwMFx4NDFceDAxXHhkMFx4MjZceDAxXHgwYlx4ODhc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgyNVx4MDBceDEwXHgwMFx4MGJceDg4XHg4MFx4
ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MjVceDAxXHgxMFx4MDFceDBiIiksCi0gICAgRXJyb3Is
ICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE0MzogY2FuJ3QgZ2V0
IDB0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgwMCBv
ciAweDAyIGZvbGxvd2VkIGJ5IGEgdGFibGUgaW5kZXggKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYnVmZmVyKScpIik7CisgICAgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUg
ZG9lc24ndCBwYXJzZSBhdCBieXRlIDE0MzogdW5zdXBwb3J0ZWQgMHRoIEVsZW1lbnQgcmVzZXJ2
ZWQgYnl0ZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMgYi9KU1Rl
c3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCmluZGV4IDQ4YTg1NjBjMGM2MDMyMGU1
Njc2MjA0ZDIwNjMyMTEyMDJiMDJiMjQuLjEwMDcwMTVjMmI4YjE1YmMwYmI3MzcxNGI3NDY1YTk5
ZTMzZjgwNWUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUu
anMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwpAQCAtMzA0LDcg
KzMwNCw3IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyCiAgICAgICAgICAgICAuRnVuY3Rpb24o
InJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCiAgICAgICAgICAgICAgIC5JMzJD
b25zdCg0MikKICAgICAgICAgICAgIC5FbmQoKQotICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJs
eSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQg
Ynl0ZSA0MTogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVt
ZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisgICAg
ICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQyOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBlICdm
dW5jcmVmJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZScpIikKIAogYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgICAg
ICAuVHlwZSgpLkVuZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414886</attachid>
            <date>2020-11-26 00:53:18 -0800</date>
            <delta_ts>2020-11-30 22:15:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201126155316.patch</filename>
            <type>text/plain</type>
            <size>31965</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Njg1NTFlYWFkNWU1ZGEyNGQ1Mzc5MzAyY2U4ZmU5M2M4NGRiN2E1Li40ODdmNmVjYjg4YzQ5YmQ5
YTRiODhiZWM4YzNmNmIzYzg5NGZiMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICBBZGp1c3Qgd2FzbSBwYXJzZXIgdG8gcGFyc2UgbmV3IGZvcm0g
b2YgZWxlbWVudCBzZWN0aW9uLgorICAgICAgICBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHBy
ZXZpb3VzIGZvcm1zIGJlY2F1c2UgdGhleSBhcmUgY29tcGF0aWJsZS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgdmVjKGV4cCkgaW4gZWxlbWVudCBzZWN0aW9uOgorICAgICAgICBodHRwczov
L3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9kdWxl
cy5odG1sI2VsZW1lbnQtc2VjdGlvbgorICAgICAgICBKdXN0IHRyYW5zZm9ybWVkIChyZWYuZnVu
YyBpZHgpIC0+IGlkeCBhbmQgKHJlZi5udWxsIGZ1bmMpIC0+IG51bGwuCisgICAgICAgIEZvciBu
dWxsIHZhbHVlcyBjYWxsIHRhYmxlLT5jbGVhciB0byB6ZXJvIHZhbHVlLgorCisgICAgICAgICog
d2FzbS9XYXNtRW50cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpw
cmVwYXJlKToKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6RWxlbWVudDo6RWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OkVsZW1lbnQ6OmFjdGl2
ZSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6
Oldhc206OlNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJMzJJbml0RXhwcik6CisgICAgICAgIChK
U0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbUtpbmQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbik6CisgICAg
ICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JF
bGVtU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y0lkeEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmg6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisKIDIwMjAtMTEtMTgg
IERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9yIGV4dGVybnJlZiBhbmQg
ZnVuY3JlZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApp
bmRleCAwYTljZjA1NDNhNGZhOWE4ZmI2NmRlZjNiMDcxMjlhNjM0YWMzNzUzLi42MjRmM2FhMzNm
ZDhmMjA0YjhjY2UwMjU2ZTIyMTU1YmY3ODhiNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMTQzLDkgKzE0Myw5IEBAIHZvaWQgRW50cnlQ
bGFuOjpwcmVwYXJlKCkKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBt
X21vZHVsZUluZm9ybWF0aW9uLT5lbGVtZW50cykgewotICAgICAgICBmb3IgKGNvbnN0IHVpbnQz
Ml90IGVsZW1lbnRJbmRleCA6IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzKSB7Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCi0gICAgICAgICAgICAg
ICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoZWxlbWVudEluZGV4IC0gaW1wb3J0RnVu
Y3Rpb25Db3VudCk7CisgICAgICAgIGZvciAoY29uc3QgT3B0aW9uYWw8dWludDMyX3Q+JiBlbGVt
ZW50SW5kZXggOiBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcykgeworICAgICAgICAgICAgaWYgKGVs
ZW1lbnRJbmRleCAmJiAqZWxlbWVudEluZGV4ID49IGltcG9ydEZ1bmN0aW9uQ291bnQpCisgICAg
ICAgICAgICAgICAgbV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5hZGQoKmVsZW1lbnRJbmRleCAt
IGltcG9ydEZ1bmN0aW9uQ291bnQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggMWZjZmRmMmJhMjAwYzQ1MmI1ZmEzNjMxM2Rh
NGE0NzUzNGM0NzVjNi4uODMyYTdkMWZkMjc1ODQwZThmMDE2NWJkYWU2NTQxNTgyZGY5OWE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjI2LDE0ICsyMjYs
MjggQEAgc3RydWN0IFNlZ21lbnQgewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwg
STMySW5pdEV4cHIgb2Zmc2V0KQotICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAg
ICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgIGVudW0gY2xhc3MgS2luZCB7CisgICAgICAgIEFj
dGl2ZSwKKyAgICAgICAgUGFzc2l2ZSwKKyAgICAgICAgRGVjbGFyZWQsCisgICAgfTsKKworICAg
IEVsZW1lbnQoRWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1lbnRUeXBlIGVsZW1UeXBlLCB1
aW50MzJfdCB0YWJsZUluZGV4LCBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHIpCisgICAg
ICAgIDoga2luZChraW5kKQorICAgICAgICAsIGVsZW1UeXBlKGVsZW1UeXBlKQorICAgICAgICAs
IHRhYmxlSW5kZXgodGFibGVJbmRleCkKKyAgICAgICAgLCBvZmZzZXRJZkFjdGl2ZShpbml0RXhw
cikKICAgICB7IH0KIAorICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4ga2luZCA9PSBL
aW5kOjpBY3RpdmU7IH0KKworICAgIEtpbmQga2luZDsKKyAgICBUYWJsZUVsZW1lbnRUeXBlIGVs
ZW1UeXBlOwogICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7Ci0gICAgSTMySW5pdEV4cHIgb2Zmc2V0
OwotICAgIFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOworICAgIE9wdGlvbmFsPEkz
MkluaXRFeHByPiBvZmZzZXRJZkFjdGl2ZTsKKworICAgIC8vIElmIHRoZXJlIGlzIG5vIHZhbHVl
IHRoZW4gaXRlbSByZXByZXNlbnRzIHJlZi5udWxsLgorICAgIFZlY3RvcjxPcHRpb25hbDx1aW50
MzJfdD4+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKIGNsYXNzIFRhYmxlSW5mb3JtYXRpb24gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmlu
ZGV4IGI0MTFiMjdkMzRjYTNlNmIzNWEwOTAxMmQ2MjRlYjZlZDI2MmE4ODAuLmFlODhlNDIzYWM3
MjlmNmU1Y2VhNWRlZTY4YzNkMmQyYjVmNWRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTM3OCw0MSArMzc4LDEzOCBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGVsZW1lbnRDb3VudCA+IG1heFRhYmxlRW50cmllcywgIkVsZW1l
bnQgc2VjdGlvbidzIGNvdW50IGlzIHRvbyBiaWcgIiwgZWxlbWVudENvdW50LCAiIG1heGltdW0g
IiwgbWF4VGFibGVFbnRyaWVzKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2luZm8tPmVs
ZW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShlbGVtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUg
bWVtb3J5IGZvciAiLCBlbGVtZW50Q291bnQsICIgRWxlbWVudHMiKTsKICAgICBmb3IgKHVuc2ln
bmVkIGVsZW1lbnROdW0gPSAwOyBlbGVtZW50TnVtIDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRO
dW0pIHsKLSAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKLSAgICAgICAgdWludDY0X3QgaW5p
dEV4cHJCaXRzOwotICAgICAgICB1aW50OF90IGluaXRPcGNvZGU7Ci0gICAgICAgIHVpbnQzMl90
IGluZGV4Q291bnQ7CisgICAgICAgIHVpbnQ4X3QgZWxlbWVudEZsYWdzOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KGVsZW1lbnRGbGFncyksICJjYW4ndCBnZXQgIiwg
ZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVs
ZW1lbnQgZmxhZ3MiKTsKKworICAgICAgICBzd2l0Y2ggKGVsZW1lbnRGbGFncykgeworICAgICAg
ICBjYXNlIDB4MDA6IHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHRhYmxlSW5kZXggPSAw
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRU
YWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHBy
PiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJ
MzJJbml0RXhwcihpbml0RXhwcikpOworCisgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRG
b3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50TnVtKSk7CisgICAgICAgICAgICBBU1NF
UlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CiAKLSAgICAgICAgdWludDhfdCBtYWdp
YzsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChtYWdpYykgfHwgKG1h
Z2ljICYmIG1hZ2ljICE9IDIpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50
IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgwMCBvciAweDAyIGZvbGxv
d2VkIGJ5IGEgdGFibGUgaW5kZXgiKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVt
ZW50OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgs
IFdURk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVs
ZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNh
bid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMi
KTsKIAotICAgICAgICBpZiAobWFnaWMgPT0gMikKKyAgICAgICAgICAgIGZvciAodWludDMyX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1l
bnROdW0sIGluZGV4KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZnVuY0lkeCkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMTogewor
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlS
ZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRo
IEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSAweDAyOiB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4Owog
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodGFibGVJbmRl
eCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUgaW5kZXgiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFibGVJbmRleCA9IDA7Ci0gICAgICAgIAotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLT50YWJsZUNvdW50
KCksICJFbGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgsICIgZXhjZWVkcyBh
dmFpbGFibGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVs
ZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBtdXN0IGhhdmUgdHlw
ZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKLSAgICAgICAgVHlwZSBp
bml0RXhwclR5cGU7Ci0gICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbml0
RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkpOwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVtZW50IGluaXRfZXhw
ciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBp
bmRleCBjb3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoaW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCks
ICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgaXMgdG9v
IGJpZyAiLCBpbmRleENvdW50KTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJ
TFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisgICAgICAgICAgICBP
cHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKworICAgICAgICAgICAg
dWludDhfdCBlbGVtS2luZDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMo
cGFyc2VFbGVtS2luZChlbGVtS2luZCkpOwogCi0gICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFi
bGVzW3RhYmxlSW5kZXhdKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAg
ICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1T
ZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1f
aW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICBFbGVtZW50IGVsZW1lbnQodGFi
bGVJbmRleCwgbWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cykpOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNl
cnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGlu
ZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CisgICAgICAgICAgICBFbGVtZW50IGVsZW1l
bnQoRWxlbWVudDo6S2luZDo6QWN0aXZlLCBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCB0YWJs
ZUluZGV4LCBXVEZNb3ZlKGluaXRFeHByKSk7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3Vu
dCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBp
bmRpY2VzIik7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5k
ZXhDb3VudDsgKytpbmRleCkgewotICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsK
LSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9u
SW5kZXgpLCAiY2FuJ3QgZ2V0IEVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBl
bGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihmdW5jdGlvbkluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgp
LCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRl
eCwgInRoIGluZGV4IGlzICIsIGZ1bmN0aW9uSW5kZXgsICIgd2hpY2ggZXhjZWVkcyB0aGUgZnVu
Y3Rpb24gaW5kZXggc3BhY2Ugc2l6ZSBvZiAiLCBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNp
emUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRl
eENvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1
bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1
bmNJZHhGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAg
ICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3Zl
KGZ1bmNJZHgpKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlv
bkluZGljZXMudW5jaGVja2VkQXBwZW5kKGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgbV9p
bmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDM6IHsKKyAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygp
LCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJl
c2VydmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNh
c2UgMHgwNDogeworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOwor
CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB0YWJsZUluZGV4ID0gMDsKKyAgICAgICAgICAg
IFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJ
bmRleCkpOwogCi0gICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUoZWxlbWVudCkpOworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHBy
OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRFeHBy
KGluaXRFeHByKSk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgICAg
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0
aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5m
by0+dGFibGVzW3RhYmxlSW5kZXhdKTsKKworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVs
ZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRl
eCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
ZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAi
Y2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNl
cyIpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRl
eENvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZ1
bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1
bmNJZHhGcm9tUmVmRXhwRm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgp
KTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShmdW5jSWR4KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5m
by0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDA1OiB7CisgICAgICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwg
InJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKHRydWUsICJ1bnN1cHBvcnRlZCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNl
cnZlZCBieXRlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IDB4MDY6IHsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKwor
ICAgICAgICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKKyAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1l
bnROdW0sICJ0aCBFbGVtZW50IHRhYmxlIGluZGV4Iik7CisgICAgICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKwor
ICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAg
V0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7CisK
KyAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBz
ZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHJlZlR5cGUgPT0gRXh0
ZXJucmVmLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsK
KworICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3Vu
dCwgZWxlbWVudE51bSkpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFi
bGVJbmRleF0pOworCisgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6
QWN0aXZlLCBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGlu
aXRFeHByKSk7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0
aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0
ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CisKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZnVuY0lkeDsKKyAgICAg
ICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZyb21SZWZF
eHBGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAgICAg
ICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGZ1
bmNJZHgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZvLT5lbGVtZW50cy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIDB4MDc6IHsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBh
cmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwg
InVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwg
InRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTUwNCw2ICs2MDEsNzkgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUlu
aXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKICAg
ICByZXR1cm4geyB9OwogfQogCithdXRvIFNlY3Rpb25QYXJzZXI6OnZhbGlkYXRlRWxlbWVudFRh
YmxlSWR4KHVpbnQzMl90IHRhYmxlSW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZvLT50YWJsZUNvdW50KCksICJFbGVt
ZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgsICIgZXhjZWVkcyBhdmFpbGFibGUg
VGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
bV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1
bmNyZWYsICJUYWJsZSAiLCB0YWJsZUluZGV4LCAiIG11c3QgaGF2ZSB0eXBlICdmdW5jcmVmJyB0
byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiIpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHByPiYg
aW5pdEV4cHIpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90IGluaXRPcGNvZGU7Cisg
ICAgdWludDY0X3QgaW5pdEV4cHJCaXRzOworICAgIFR5cGUgaW5pdEV4cHJUeXBlOworICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhw
ckJpdHMsIGluaXRFeHByVHlwZSkpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5pdEV4cHJU
eXBlICE9IEkzMiwgIkVsZW1lbnQgaW5pdF9leHByIG11c3QgcHJvZHVjZSBhbiBpMzIiKTsKKyAg
ICBpbml0RXhwciA9IG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMpOwor
CisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1LaW5k
KHVpbnQ4X3QmIHJlc3VsdEVsZW1LaW5kKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDhf
dCBlbGVtS2luZDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KGVsZW1LaW5k
KSwgImNhbid0IGdldCBlbGVta2luZCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoISFlbGVt
S2luZCwgImVsZW1raW5kIG11c3QgYmUgemVybyIpOworICAgIHJlc3VsdEVsZW1LaW5kID0gZWxl
bUtpbmQ7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNl
SW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKHVpbnQzMl90JiByZXN1bHRJbmRleENvdW50LCBjb25z
dCB1bnNpZ25lZCBlbGVtZW50TnVtKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3Qg
aW5kZXhDb3VudDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRl
eENvdW50KSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgZm9yIEVs
ZW1lbnQgc2VjdGlvbiIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhDb3VudCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksICJFbGVtZW50IHNlY3Rpb24ncyAi
LCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgaXMgdG9vIGJpZyAiLCBpbmRleENvdW50KTsK
KyAgICByZXN1bHRJbmRleENvdW50ID0gaW5kZXhDb3VudDsKKworICAgIHJldHVybiB7IH07Cit9
CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0
aW9uKE9wdGlvbmFsPHVpbnQzMl90PiYgZnVuY0lkeCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51
bSwgY29uc3QgdW5zaWduZWQgaW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90
IG9wY29kZTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG9wY29kZSksICJj
YW4ndCBnZXQgb3Bjb2RlIGZvciBleHAgaW4gZWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51
bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRigob3Bjb2RlICE9IFJlZkZ1bmMpICYmIChvcGNvZGUgIT0gUmVmTnVsbCksICJvcGNv
ZGUgZm9yIGV4cCBpbiBlbGVtZW50IHNlY3Rpb24ncyBzaG91bGQgYmUgZWl0aGVyIHJlZi5mdW5j
IG9yIHJlZi5udWxsICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBp
bmRleCIpOworCisgICAgaWYgKG9wY29kZSA9PSBSZWZGdW5jKSB7CisgICAgICAgIHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUlu
dDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IEVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1l
bnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbkluZGV4U3Bh
Y2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdz
ICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwgIiB3aGljaCBleGNlZWRz
IHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5mby0+ZnVuY3Rpb25JbmRl
eFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgZnVuY0lkeCA9IGZ1bmN0aW9uSW5kZXg7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBm
dW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
dHlwZU9mTnVsbCAhPSBGdW5jcmVmLCAicmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBl
bGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwg
InRoIGluZGV4Iik7CisgICAgfQorCisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50
OChvcGNvZGUpLCAiY2FuJ3QgZ2V0IG9wY29kZSBmb3IgZXhwIGVuZCBpbiBlbGVtZW50IHNlY3Rp
b24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG9wY29kZSAhPSBFbmQsICJtYWxmb3JtZWQgZXhwciBp
biBlbGVtZW50IHNlY3Rpb24ncyIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgs
ICJ0aCBpbmRleCIpOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUZ1bmNJZHhGb3JFbGVtU2VjdGlvbihPcHRpb25hbDx1aW50MzJfdD4mIGZ1bmNJZHgs
IGNvbnN0IHVuc2lnbmVkIGVsZW1lbnROdW0sIGNvbnN0IHVuc2lnbmVkIGluZGV4KSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBFbGVt
ZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGgg
aW5kZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZv
LT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50
TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRl
eCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1f
aW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBmdW5jSWR4ID0gZnVuY3Rpb25J
bmRleDsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VH
bG9iYWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
ICAgICB1aW50OF90IG11dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA1Mjc3YTdhYzBmZTkwOTBhMDA2YTQ4MGYwZjRhNzUw
MmEyNmIwYzk0Li40NDEwOWQ4ZjkzZjdlOTZiZWZiNmJkYThlNjEzZWQzOThiYTFhMDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAgLTY2
LDYgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gcGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIE9wdGlvbmFsPHVpbnQz
Ml90PiYgbWF4aW11bSk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VJbml0RXhwcih1aW50OF90JiwgdWludDY0X3QmLCBUeXBlJiBpbml0RXhwclR5cGUpOwogCisg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gdmFsaWRhdGVFbGVtZW50VGFibGVJ
ZHgodWludDMyX3QpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
STMySW5pdEV4cHIoT3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CisgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFbGVtS2luZCh1aW50OF90JiBlbGVtS2luZCk7CisgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJbmRleENvdW50Rm9yRWxlbVNl
Y3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0aW9uKE9wdGlv
bmFsPHVpbnQzMl90PiYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24o
T3B0aW9uYWw8dWludDMyX3Q+JiwgY29uc3QgdW5zaWduZWQsIGNvbnN0IHVuc2lnbmVkKTsKKwog
ICAgIHNpemVfdCBtX29mZnNldEluU291cmNlOwogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4g
bV9pbmZvOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAyMDY0YTQ2NjI4NTUxNmQ0Y2M2ODg0
YTJiMzI0YmM2ZTY2OTdlYmE3Li44MDc3YjI0MDljMjVhYjE1YmI4NTFjOTVlNTQzOGE4MTZkOTU1
ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NTUsMTQgKzU1NSwxNiBAQCBKU1ZhbHVlIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICAgICAgaWYgKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHVpbnQzMl90IGVsZW1lbnRJ
bmRleCA9IGVsZW1lbnQub2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKLSAgICAgICAgICAgICAgICA/
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJMzJHbG9i
YWwoZWxlbWVudC5vZmZzZXQuZ2xvYmFsSW1wb3J0SW5kZXgoKSkpCi0gICAgICAgICAgICAgICAg
OiBlbGVtZW50Lm9mZnNldC5jb25zdFZhbHVlKCk7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5h
Y3RpdmUoKSkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGVsZW1lbnRJbmRleCA9IGVsZW1l
bnQub2Zmc2V0SWZBY3RpdmUtPmlzR2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAgICAgICAgICAg
PyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xv
YmFsKGVsZW1lbnQub2Zmc2V0SWZBY3RpdmUtPmdsb2JhbEltcG9ydEluZGV4KCkpKQorICAgICAg
ICAgICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0SWZBY3RpdmUtPmNvbnN0VmFsdWUoKTsKIAot
ICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUluZGV4LCBlbGVtZW50SW5kZXgp
OworICAgICAgICAgICAgICAgIGZuKGVsZW1lbnQsIGVsZW1lbnQudGFibGVJbmRleCwgZWxlbWVu
dEluZGV4KTsKIAotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CiAKQEAgLTYwNSwxMiAr
NjA3LDE3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24udmFsdWUo
KTsKIAogICAgIGZvckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVu
dCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMyX3QgZWxlbWVudEluZGV4KSB7Ci0gICAgICAg
IGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVudC5mdW5jdGlv
bkluZGljZXMuc2l6ZSgpOyArK2ksICsrZWxlbWVudEluZGV4KSB7CisgICAgICAgICAgICBpZiAo
IWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzW2ldLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAg
ICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+Y2xlYXIoZWxlbWVudEluZGV4KTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgZXNzZW50aWFsbHkgbWVhbnMgd2UncmUgZXhwb3J0aW5nIGFuIGltcG9ydC4K
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBzdG9yeSBoZXJlLiBXZSBuZWVkIHRvIGNyZWF0ZSBh
IFdlYkFzc2VtYmx5RnVuY3Rpb24KICAgICAgICAgICAgIC8vIGZvciB0aGUgaW1wb3J0LgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUx
MAotICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCA9IGVsZW1lbnQuZnVuY3Rpb25J
bmRpY2VzW2ldOworICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleCA9ICplbGVtZW50
LmZ1bmN0aW9uSW5kaWNlc1tpXTsKICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbW9kdWxlLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFj
ZShmdW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbkluZGV4IDwgY29kZUJs
b2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCkpIHsKICAgICAgICAgICAgICAgICBKU09iamVjdCog
ZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdy
aXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKQEAgLTYyMSwxMyAr
NjI4LDExIEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5
IHR5cGUgdGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgICAg
ICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgd2FzbUZ1
bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LAogICAgICAg
ICAgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNp
Z25hdHVyZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTY0MCw5ICs2NDUsNyBAQCBK
U1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTgyNQogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVu
Y3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgdm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJl
KCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZygpLCBtX2luc3RhbmNlLmdldCgp
LCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25h
dHVyZUluZGV4KTsKLQogICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCkt
PnNldChlbGVtZW50SW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrZWxlbWVudEluZGV4
OwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjVjNjZiNDg5NjI4M2NjMGVmZGZjZDkyOGZkNjBjMDk1
NGYyNWI1My4uZTE2ODA4ZGNlMWFiNDJiYjcwNTc4MTI4ZTI3OTlhM2EyZWZiMDIwYyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAyMC0xMS0xOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBhY3Rp
dmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICBGaXggYnVpbGRlciBkc2wgdG8gcHJvZHVjZSB0aGUgcmlnaHQgZWxl
bWVudCBzZWN0aW9uLgorICAgICAgICBJdCBwcm9kdWNlcyBjb3JyZWN0IHdhc20gY29kZSBmb3Ig
dGhlIHByZXZpb3VzIHNwZWMgYW5kIGZvciB0aGUgcmVmLXR5cGVzIHNwZWMgYmVjYXVzZSB0aGUg
Y29yZSBzcGVjIGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIHJlZi10eXBlcy4KKyAgICAg
ICAgaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIuaW8vcmVmZXJlbmNlLXR5cGVzL2NvcmUvYmlu
YXJ5L21vZHVsZXMuaHRtbCNlbGVtZW50LXNlY3Rpb24uCisgICAgICAgIEFkZGVkIGJhc2ljIHRl
c3RzIGZvciB0aGUgZWxlbWVudCBzZWN0aW9uLgorCisKKyAgICAgICAgKiB3YXNtL0J1aWxkZXIu
anM6CisgICAgICAgIChleHBvcnQuZGVmYXVsdC5CdWlsZGVyLnByb3RvdHlwZS5fcmVnaXN0ZXJT
ZWN0aW9uQnVpbGRlcnMuY29uc3Quc2VjdGlvbi5pbi5XQVNNLmRlc2NyaXB0aW9uLnNlY3Rpb24u
c3dpdGNoLnNlY3Rpb24uY2FzZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50aGlzLnNlY3Rpb24pOgor
ICAgICAgICAqIHdhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAgKGNv
bnN0LmVtaXR0ZXJzLkVsZW1lbnQpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy1zcGVjLXRl
c3RzL3JlZl9udWxsLmpzOgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKiB3YXNtL3JlZmVy
ZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6Cisg
ICAgICAgIChiYXNpY1Rlc3QpOgorICAgICAgICAocmVmTnVsbEV4dGVybkluRWxlbXNTZWN0aW9u
KToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzOgorICAgICAg
ICAqIHdhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzOgorCiAyMDIwLTExLTE4ICBEbWl0cnkg
QmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVm
ZXJlbmNlc10gUmVtb3ZlIHN1YnR5cGluZyBydWxlIGZvciBleHRlcm5yZWYgYW5kIGZ1bmNyZWYK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxk
ZXIuanMKaW5kZXggMzI3YjE3ZDdlNGMwNDQ3OTI1NzEwZTcyZDYzZmI4OWU0ZWQ5NTY1Yy4uMDEx
Y2NiODQ1NmRjYmRkZmJiMzU3NTgxODQzZWIyZTY0ZjA3NDVjZSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL0J1aWxkZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAgLTU5NCw4
ICs1OTQsOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVsZW1lbnRCdWlsZGVyID0gewogICAgICAgICAgICAgICAgICAgICAgICAg
RW5kOiAoKSA9PiB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudDogKHt0YWJs
ZUluZGV4ID0gMCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goe3RhYmxlSW5kZXgsIG9mZnNldCwgZnVuY3Rpb25J
bmRpY2VzfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50OiAoe3RhYmxlSW5kZXgg
PSAwLCBvZmZzZXQsIGVsZW1raW5kID0gMCwgZnVuY3Rpb25JbmRpY2VzfSkgPT4geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHt0YWJsZUluZGV4LCBvZmZzZXQsIGVs
ZW1raW5kLCBmdW5jdGlvbkluZGljZXN9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihlbGVtZW50QnVpbGRlcik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcyBiL0pTVGVzdHMvd2FzbS9CdWls
ZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCmluZGV4IDFlZWY5ZDQxODJkZTMzNzIwMTRjZGRjNDk5
Yjg4ODdkMDUyMzA4ZmEuLjQ3MTFjOGNkNGRkNTZmMGNiMzRkMTQ0M2JjODlhZWM1ZTBkZDZlZjMg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCisr
KyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCkBAIC0xOTMsMTAg
KzE5MywxMyBAQCBjb25zdCBlbWl0dGVycyA9IHsKICAgICBFbGVtZW50OiAoc2VjdGlvbiwgYmlu
KSA9PiB7CiAgICAgICAgIGNvbnN0IGRhdGEgPSBzZWN0aW9uLmRhdGE7CiAgICAgICAgIHB1dChi
aW4sICJ2YXJ1aW50MzIiLCBkYXRhLmxlbmd0aCk7Ci0gICAgICAgIGZvciAoY29uc3Qge3RhYmxl
SW5kZXgsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2VzfSBvZiBkYXRhKSB7Ci0gICAgICAgICAgICBp
ZiAodGFibGVJbmRleCAhPSAwKQotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIDIp
OwotICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHRhYmxlSW5kZXgpOworICAgICAg
ICBmb3IgKGNvbnN0IHt0YWJsZUluZGV4LCBvZmZzZXQsIGVsZW1raW5kLCBmdW5jdGlvbkluZGlj
ZXN9IG9mIGRhdGEpIHsKKyAgICAgICAgICAgIGxldCBmbGFncyA9IHRhYmxlSW5kZXggPT0gMCA/
IDAgOiAyOworICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgZmxhZ3MpOworCisgICAgICAg
ICAgICBpZiAoZmxhZ3MgPT0gMikgeworICAgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMy
IiwgdGFibGVJbmRleCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxldCBpbml0RXhw
cjsKICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAibnVtYmVyIikKQEAgLTIwNSw2
ICsyMDgsMTAgQEAgY29uc3QgZW1pdHRlcnMgPSB7CiAgICAgICAgICAgICAgICAgaW5pdEV4cHIg
PSBvZmZzZXQ7CiAgICAgICAgICAgICBwdXRJbml0RXhwcihiaW4sIGluaXRFeHByKTsKIAorICAg
ICAgICAgICAgaWYgKGZsYWdzID09IDIpIHsKKyAgICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4
IiwgZWxlbWtpbmQpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBwdXQoYmluLCAidmFy
dWludDMyIiwgZnVuY3Rpb25JbmRpY2VzLmxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGZ1bmN0aW9uSW5kZXggb2YgZnVuY3Rpb25JbmRpY2VzKQogICAgICAgICAgICAgICAgIHB1dChi
aW4sICJ2YXJ1aW50MzIiLCBmdW5jdGlvbkluZGV4KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCmluZGV4IDlkZGE3YWZmYTQwMGE0NDM4YTUyMzYy
ZTliMzNjMGI4MjM3MTIwY2MuLjUzMjVhYmFhM2E2ZmY3NjNiNGZhMDlkOGIzODNhYWVkNGI5OGU3
MDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251
bGwuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5q
cwpAQCAtNjIsNyArNjIsNyBAQCBmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkg
ewogICAgIHRocm93IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0ZSB0aHJvd3MiKTsKICAgfQogICBp
ZiAodmFsaWRhdGVkICE9PSB2YWxpZCkgewotICAgIC8vdGhyb3cgbmV3IEVycm9yKCJXYXNtIHZh
bGlkYXRlIGZhaWx1cmUiICsgKHZhbGlkID8gIiIgOiAiIGV4cGVjdGVkIikpOworICAgIHRocm93
IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0ZSBmYWlsdXJlIiArICh2YWxpZCA/ICIiIDogIiBleHBl
Y3RlZCIpKTsKICAgfQogICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOwog
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9k
LmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxNzA4NDAwNjgzNGQzN2VlNjNiNzJlYjk5ZmFmMzliN2NmMDM5Y2IKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanMK
QEAgLTAsMCArMSw1OSBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1i
bHlSZWZlcmVuY2VzPXRydWUiKQoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5q
cyc7CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywgdmFsaWQgPSB0cnVlKSB7CisgIGxldCBidWZm
ZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAgbGV0IHZpZXcgPSBuZXcgVWlu
dDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytp
KSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKK30KKworZnVuY3Rpb24gYmFzaWNUZXN0KCkg
eworICAvKgorICAobW9kdWxlCisgICAgKGZ1bmMgJGYgKHJlc3VsdCBpMzIpCisgICAgICAoaTMy
LmNvbnN0IDM3KQorICAgICkKKyAgICAoZnVuYyAkZyAocmVzdWx0IGkzMikKKyAgICAgIChpMzIu
Y29uc3QgNDIpCisgICAgKQorICAgICh0YWJsZSAkdDEgMTAgZnVuY3JlZikKKyAgICAodGFibGUg
JHQyIDIwIGZ1bmNyZWYpCisgICAgKGVsZW0gKGkzMi5jb25zdCAzKSBmdW5jcmVmIChyZWYuZnVu
YyAkZykgKHJlZi5udWxsIGZ1bmMpIChyZWYuZnVuYyAkZikgKHJlZi5udWxsIGZ1bmMpKQorICAg
IChlbGVtICh0YWJsZSAkdDIpIChpMzIuY29uc3QgNykgZnVuY3JlZiAocmVmLmZ1bmMgJGYpIChy
ZWYubnVsbCBmdW5jKSAocmVmLmZ1bmMgJGcpKQorICAgIChmdW5jIChleHBvcnQgImdldF90Ymwx
IikgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0IGZ1bmNyZWYpCisgICAgICAodGFibGUuZ2V0ICR0
MSAobG9jYWwuZ2V0ICRpZHgpKQorICAgICkKKyAgICAoZnVuYyAoZXhwb3J0ICJnZXRfdGJsMiIp
IChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBmdW5jcmVmKQorICAgICAgKHRhYmxlLmdldCAkdDIg
KGxvY2FsLmdldCAkaWR4KSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0IGluc3RhbmNlID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4NzBceDAz
XHgwNVx4MDRceDAwXHgwMFx4MDFceDAxXHgwNFx4MDdceDAyXHg3MFx4MDBceDBhXHg3MFx4MDBc
eDE0XHgwN1x4MTdceDAyXHgwOFx4NjdceDY1XHg3NFx4NWZceDc0XHg2Mlx4NmNceDMxXHgwMFx4
MDJceDA4XHg2N1x4NjVceDc0XHg1Zlx4NzRceDYyXHg2Y1x4MzJceDAwXHgwM1x4MDlceDIyXHgw
Mlx4MDRceDQxXHgwM1x4MGJceDA0XHhkMlx4MDFceDBiXHhkMFx4NzBceDBiXHhkMlx4MDBceDBi
XHhkMFx4NzBceDBiXHgwNlx4MDFceDQxXHgwN1x4MGJceDcwXHgwM1x4ZDJceDAwXHgwYlx4ZDBc
eDcwXHgwYlx4ZDJceDAxXHgwYlx4MGFceDE5XHgwNFx4MDRceDAwXHg0MVx4MjVceDBiXHgwNFx4
MDBceDQxXHgyYVx4MGJceDA2XHgwMFx4MjBceDAwXHgyNVx4MDBceDBiXHgwNlx4MDBceDIwXHgw
MFx4MjVceDAxXHgwYiIpKTsKKworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJs
MSgzKSgpLCA0Mik7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwxKDQpLCBu
dWxsKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDEoNSkoKSwgMzcpOwor
ICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMSg2KSwgbnVsbCk7CisKKyAgYXNz
ZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIoNykoKSwgMzcpOworICBhc3NlcnQuZXEo
aW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMig4KSwgbnVsbCk7CisgIGFzc2VydC5lcShpbnN0YW5j
ZS5leHBvcnRzLmdldF90YmwyKDkpKCksIDQyKTsKK30KKworZnVuY3Rpb24gcmVmTnVsbEV4dGVy
bkluRWxlbXNTZWN0aW9uKCkgeworICAvKgorICAobW9kdWxlCisgICAgKHRhYmxlICR0IDEwIGZ1
bmNyZWYpCisgICAgKGVsZW0gKGkzMi5jb25zdCAzKSBmdW5jcmVmIChyZWYubnVsbCBleHRlcm4p
KQorICApCisgICovCisgIGFzc2VydC50aHJvd3MoKCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDRceDA0XHgwMVx4NzBceDAwXHgwYVx4MDlceDA5XHgwMVx4
MDRceDQxXHgwM1x4MGJceDAxXHhkMFx4NmZceDBiIiksCisgIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwKKyAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMjQ6IHJl
Zi5udWxsIGV4dGVybiBpcyBmb3JiaWRkZW4gaW4gZWxlbWVudCBzZWN0aW9uJ3MsIDB0aCBlbGVt
ZW50J3MgMHRoIGluZGV4IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZl
ciknKSIpOworfQorCitiYXNpY1Rlc3QoKTsKK3JlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpz
IGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCmluZGV4IDkzYmUx
ZmQ2NTc2MmQ0NDU1YWFlOTM1ZDMyZTdjNmQzNjQwOGNhMDEuLjAxZjg5MDI0ODJjNmIyZmIwNzQ3
ODI0YTU3MzZiMjczMmRlMGZhZjcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L2VsZW1lbnRfcGFyc2luZy5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9lbGVtZW50
X3BhcnNpbmcuanMKQEAgLTIzLDQgKzIzLDQgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBtb2R1bGUo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4OTdceDgwXHg4MFx4ODAKIC8v
ICArICJceDAyIgogICAgICsgIlx4MDEiCiAgICAgKyAiXHg0MVx4MDFceDBiXHgwMVx4MDJceDBh
XHhkNFx4ODBceDgwXHg4MFx4MDBceDA3XHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBc
eGQxXHgwYlx4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHhkMVx4MGJceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDBiXHg4OFx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDFceDIwXHgw
MFx4MjZceDAwXHgwYlx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHhkMFx4MjZceDAw
XHg0MVx4MDFceGQwXHgyNlx4MDFceDBiXHg4OFx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBc
eDI1XHgwMFx4MTBceDAwXHgwYlx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgyNVx4
MDFceDEwXHgwMVx4MGIiKSwKLSAgICBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0
IHBhcnNlIGF0IGJ5dGUgMTQzOiBjYW4ndCBnZXQgMHRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwg
d2hpY2ggc2hvdWxkIGJlIGVpdGhlciAweDAwIG9yIDB4MDIgZm9sbG93ZWQgYnkgYSB0YWJsZSBp
bmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiKTsKKyAg
ICBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMTQzOiB1
bnN1cHBvcnRlZCAwdGggRWxlbWVudCByZXNlcnZlZCBieXRlIChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvbXVsdGl0YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFi
bGUuanMKaW5kZXggNDhhODU2MGMwYzYwMzIwZTU2NzYyMDRkMjA2MzIxMTIwMmIwMmIyNC4uMTAw
NzAxNWMyYjhiMTViYzBiYjczNzE0Yjc0NjVhOTllMzNmODA1ZSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcworKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9tdWx0aXRhYmxlLmpzCkBAIC0zMDQsNyArMzA0LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1
aWxkZXIKICAgICAgICAgICAgIC5GdW5jdGlvbigicmV0NDIiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKICAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQogICAgICAgICAgICAgLkVuZCgp
Ci0gICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3Nl
bWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQxOiBUYWJsZSAwIG11c3QgaGF2ZSB0
eXBlICdmdW5jcmVmJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZScpIikKKyAgICAgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5n
ZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUg
NDI6IFRhYmxlIDAgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBz
ZWN0aW9uIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQogCiBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9k
dWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAgIC5UeXBlKCkuRW5kKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415097</attachid>
            <date>2020-11-30 22:15:19 -0800</date>
            <delta_ts>2020-12-01 23:19:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201201131517.patch</filename>
            <type>text/plain</type>
            <size>31712</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjRjNGUxNTQ4Yzk2NzkwZDBlYTc5ZjNmMDFkMmZiZWQxYzViOGNlLi5jZjRiMTQ2NTFhODE4NzMy
NTExNzYwOTY0M2Y3MzY2NGUyOWJlYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0xMS0zMCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRqdXN0IHdhc20gcGFyc2VyIHRvIHBhcnNl
IG5ldyBmb3JtIG9mIGVsZW1lbnQgc2VjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly93ZWJhc3NlbWJs
eS5naXRodWIuaW8vcmVmZXJlbmNlLXR5cGVzL2NvcmUvYmluYXJ5L21vZHVsZXMuaHRtbCNlbGVt
ZW50LXNlY3Rpb24uCisKKyAgICAgICAgKiB3YXNtL1dhc21FbnRyeVBsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OnByZXBhcmUpOgorICAgICAgICAqIHdhc20vV2FzbUZv
cm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjpFbGVtZW50OjpFbGVtZW50KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6YWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFy
c2VFbGVtZW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6dmFsaWRhdGVF
bGVtZW50VGFibGVJZHgpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJz
ZUkzMkluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VF
bGVtS2luZCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5kZXhD
b3VudEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6
cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24pOgorICAgICAgICAq
IHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0zMCAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBpNjQgc2lnbi1leHRlbnNp
b24tb3BzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBs
YW4uY3BwCmluZGV4IDBhOWNmMDU0M2E0ZmE5YThmYjY2ZGVmM2IwNzEyOWE2MzRhYzM3NTMuLmFh
YjdlNmIwZWFmZWMxMDljMjQ2NDJkODE2OWI3YTdhN2M4MjMxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBFbnRyeVBsYW46OnByZXBhcmUoKQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9tb2R1bGVJbmZvcm1hdGlvbi0+ZWxlbWVudHMpIHsKICAgICAgICAgZm9yIChjb25zdCB1aW50
MzJfdCBlbGVtZW50SW5kZXggOiBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcykgewotICAgICAgICAg
ICAgaWYgKGVsZW1lbnRJbmRleCA+PSBpbXBvcnRGdW5jdGlvbkNvdW50KQorICAgICAgICAgICAg
aWYgKCFFbGVtZW50Ojppc051bGxGdW5jSW5kZXgoZWxlbWVudEluZGV4KSAmJiBlbGVtZW50SW5k
ZXggPj0gaW1wb3J0RnVuY3Rpb25Db3VudCkKICAgICAgICAgICAgICAgICBtX2V4cG9ydGVkRnVu
Y3Rpb25JbmRpY2VzLmFkZChlbGVtZW50SW5kZXggLSBpbXBvcnRGdW5jdGlvbkNvdW50KTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRl
eCAxZmNmZGYyYmEyMDBjNDUyYjVmYTM2MzEzZGE0YTQ3NTM0YzQ3NWM2Li45NDM3MjE1NjczYTQ4
MWY1ZDM1M2Q1YmMxNmM4YjhiODE5MjkwYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2lu
Y2x1ZGUgIldhc21QYWdlQ291bnQuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisjaW5j
bHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMjI2LDEzICsyMjcsMzQgQEAgc3RydWN0IFNlZ21l
bnQgewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwgSTMySW5pdEV4cHIgb2Zmc2V0
KQotICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAgICAgICAgLCBvZmZzZXQob2Zm
c2V0KQorCisgICAgLy8gTnVsbEZ1bmNJbmRleCByZXByZXNlbnRzIHRoZSBjYXNlIHdoZW4gYW4g
ZWxlbWVudCBzZWdtZW50IChvZiB0eXBlIGZ1bmNyZWYpCisgICAgLy8gY29udGFpbnMgYSBudWxs
IGVsZW1lbnQuCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50MzJfdCBOdWxsRnVuY0luZGV4ID0g
VUlOVDMyX01BWDsKKworICAgIGVudW0gY2xhc3MgS2luZCB7CisgICAgICAgIEFjdGl2ZSwKKyAg
ICAgICAgUGFzc2l2ZSwKKyAgICAgICAgRGVjbGFyZWQsCisgICAgfTsKKworICAgIEVsZW1lbnQo
RWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1lbnRUeXBlIGVsZW1UeXBlLCB1aW50MzJfdCB0
YWJsZUluZGV4LCBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHIpCisgICAgICAgIDoga2lu
ZChraW5kKQorICAgICAgICAsIGVsZW1UeXBlKGVsZW1UeXBlKQorICAgICAgICAsIHRhYmxlSW5k
ZXgodGFibGVJbmRleCkKKyAgICAgICAgLCBvZmZzZXRJZkFjdGl2ZShpbml0RXhwcikKICAgICB7
IH0KIAorICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4ga2luZCA9PSBLaW5kOjpBY3Rp
dmU7IH0KKworICAgIHN0YXRpYyBib29sIGlzTnVsbEZ1bmNJbmRleCh1aW50MzJfdCBpZHgpIHsg
cmV0dXJuIGlkeCA9PSBOdWxsRnVuY0luZGV4OyB9CisKKyAgICBLaW5kIGtpbmQ7CisgICAgVGFi
bGVFbGVtZW50VHlwZSBlbGVtVHlwZTsKICAgICB1aW50MzJfdCB0YWJsZUluZGV4OwotICAgIEkz
MkluaXRFeHByIG9mZnNldDsKKyAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gb2Zmc2V0SWZBY3Rp
dmU7CisKKyAgICAvLyBJbmRleCBtYXkgYmUgTnVsbEZ1bmNJbmRleC4KICAgICBWZWN0b3I8dWlu
dDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCBmNjUzZTI5MTIzYWUyZmM0N2I1MWU0
YTBjOThiMDY0Y2U0OTNjZmM1Li4yNDg5ZmNjZTE3OTcwNWIzY2IwYjg2ZjBlMzRiMWJlYTNlODFk
ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwCkBAIC0zODQsNDEgKzM4NCwxNDEgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVs
ZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihlbGVtZW50
Q291bnQgPiBtYXhUYWJsZUVudHJpZXMsICJFbGVtZW50IHNlY3Rpb24ncyBjb3VudCBpcyB0b28g
YmlnICIsIGVsZW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1heFRhYmxlRW50cmllcyk7CiAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT5lbGVtZW50cy50cnlSZXNlcnZlQ2FwYWNpdHko
ZWxlbWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgZWxlbWVudENvdW50
LCAiIEVsZW1lbnRzIik7CiAgICAgZm9yICh1bnNpZ25lZCBlbGVtZW50TnVtID0gMDsgZWxlbWVu
dE51bSA8IGVsZW1lbnRDb3VudDsgKytlbGVtZW50TnVtKSB7Ci0gICAgICAgIHVpbnQzMl90IHRh
YmxlSW5kZXg7Ci0gICAgICAgIHVpbnQ2NF90IGluaXRFeHByQml0czsKLSAgICAgICAgdWludDhf
dCBpbml0T3Bjb2RlOwotICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OworICAgICAgICB1aW50
OF90IGVsZW1lbnRGbGFnczsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50
OChlbGVtZW50RmxhZ3MpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJl
c2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlbGVtZW50IGZsYWdzIik7CisKKyAgICAgICAg
c3dpdGNoIChlbGVtZW50RmxhZ3MpIHsKKyAgICAgICAgY2FzZSAweDAwOiB7CisgICAgICAgICAg
ICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7CisgICAgICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsK
KworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAg
ICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7
CisKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKGluZGV4Q291
bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mby0+dGFibGVzW3Rh
YmxlSW5kZXhdKTsKIAotICAgICAgICB1aW50OF90IG1hZ2ljOwotICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVVJbnQ4KG1hZ2ljKSB8fCAobWFnaWMgJiYgbWFnaWMgIT0gMiksICJj
YW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2gg
c2hvdWxkIGJlIGVpdGhlciAweDAwIG9yIDB4MDIgZm9sbG93ZWQgYnkgYSB0YWJsZSBpbmRleCIp
OworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFi
bGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOwor
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgIGlmIChtYWdp
YyA9PSAyKQorICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgaW5k
ZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmNJZHg7Cisg
ICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JF
bGVtU2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAg
IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIDB4MDE6IHsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQi
KTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIs
IGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkyOTcKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMjogeworICAgICAgICAgICAg
dWludDMyX3QgdGFibGVJbmRleDsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFyVUludDMyKHRhYmxlSW5kZXgpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBF
bGVtZW50IHRhYmxlIGluZGV4Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRhYmxlSW5k
ZXggPSAwOwotICAgICAgICAKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0YWJsZUluZGV4
ID49IG1faW5mby0+dGFibGVDb3VudCgpLCAiRWxlbWVudCBzZWN0aW9uIGZvciBUYWJsZSAiLCB0
YWJsZUluZGV4LCAiIGV4Y2VlZHMgYXZhaWxhYmxlIFRhYmxlICIsIG1faW5mby0+dGFibGVDb3Vu
dCgpKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlc1t0YWJsZUlu
ZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxl
SW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0
aW9uIik7Ci0gICAgICAgIFR5cGUgaW5pdEV4cHJUeXBlOwotICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzLCBpbml0
RXhwclR5cGUpKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbml0RXhwclR5cGUgIT0g
STMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiIpOwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleENvdW50KSwgImNhbid0IGdl
dCAiLCBlbGVtZW50TnVtLCAidGggaW5kZXggY291bnQgZm9yIEVsZW1lbnQgc2VjdGlvbiIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4Q291bnQgPT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpLCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwg
InRoIGluZGV4IGNvdW50IGlzIHRvbyBiaWcgIiwgaW5kZXhDb3VudCk7CisgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHRhYmxlSW5k
ZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByOworICAg
ICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRFeHByKGluaXRF
eHByKSk7CisKKyAgICAgICAgICAgIHVpbnQ4X3QgZWxlbUtpbmQ7CisgICAgICAgICAgICBXQVNN
X0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRWxlbUtpbmQoZWxlbUtpbmQpKTsKKworICAgICAg
ICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQ
RVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVu
dE51bSkpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0p
OworCisgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6QWN0aXZlLCBU
YWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGluaXRFeHByKSk7
CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxl
bWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy51bmNoZWNrZWRBcHBlbmQoZnVuY0lkeCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgQVNT
RVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOworICAgICAgICAgICAgbV9pbmZvLT5l
bGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDM6IHsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVm
ZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVk
IGJ5dGUiKTsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTkzODUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgMHgwNDogeworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOwor
ICAgICAgICAgICAgY29uc3RleHByIHVpbnQzMl90IHRhYmxlSW5kZXggPSAwOworICAgICAgICAg
ICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh0YWJs
ZUluZGV4KSk7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsK
KyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwcihp
bml0RXhwcikpOwogCi0gICAgICAgIEVsZW1lbnQgZWxlbWVudCh0YWJsZUluZGV4LCBtYWtlSTMy
SW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzKSk7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRl
eENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVt
ZW50IGluZGljZXMiKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgICAg
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0
aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5m
by0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7Ci0gICAgICAgICAgICB1aW50MzJfdCBm
dW5jdGlvbkluZGV4OwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIoZnVuY3Rpb25JbmRleCksICJjYW4ndCBnZXQgRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxl
bWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7Ci0gICAgICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbklu
ZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxl
bWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwgIiB3aGljaCBl
eGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5mby0+ZnVuY3Rp
b25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50
OjpLaW5kOjpBY3RpdmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdU
Rk1vdmUoaW5pdEV4cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1l
bnQuZnVuY3Rpb25JbmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0
IGFsbG9jYXRlIG1lbW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsK
IAotICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMudW5jaGVja2VkQXBwZW5kKGZ1
bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmNJ
ZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJ
ZHhGcm9tUmVmRXhwRm9yRWxlbVNlY3Rpb24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgpKTsK
KyAgICAgICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQo
ZnVuY0lkeCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1faW5mby0+ZWxlbWVudHMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSAweDA1OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMg
YXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUs
ICJ1bnN1cHBvcnRlZCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7
CisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5Mjk3CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDY6
IHsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKIAotICAgICAg
ICBtX2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAg
ICAgICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVZhclVJbnQzMih0YWJsZUluZGV4KSwgImNhbid0IGdldCAiLCBlbGVtZW50
TnVtLCAidGggRWxlbWVudCB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgV0FTTV9GQUlMX0lG
X0hFTFBFUl9GQUlMUyh2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh0YWJsZUluZGV4KSk7CisKKyAg
ICAgICAgICAgIE9wdGlvbmFsPEkzMkluaXRFeHByPiBpbml0RXhwcjsKKyAgICAgICAgICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwcihpbml0RXhwcikpOworCisg
ICAgICAgICAgICBUeXBlIHJlZlR5cGU7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2Vj
dGlvbiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihyZWZUeXBlICE9IEZ1bmNy
ZWYsICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOworCisg
ICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lG
X0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBl
bGVtZW50TnVtKSk7CisgICAgICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUlu
ZGV4XSk7CisKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50OjpLaW5kOjpBY3Rp
dmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdURk1vdmUoaW5pdEV4
cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25J
bmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1l
bW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKKworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGcm9tUmVmRXhwRm9yRWxlbVNlY3Rp
b24oZnVuY0lkeCwgZWxlbWVudE51bSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50
LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoZnVuY0lkeCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIG1faW5mby0+ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
ZWxlbWVudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAw
eDA3OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJB
c3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CisgICAg
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRydWUsICJ1bnN1cHBvcnRlZCAiLCBlbGVtZW50
TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7CisgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Mzg1CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRih0cnVlLCAiY2FuJ3QgZ2V0ICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2Vy
dmVkIGJ5dGUiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB7IH07CkBAIC01MTAs
NiArNjEwLDgwIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBv
cGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorYXV0byBTZWN0aW9uUGFyc2VyOjp2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh1aW50MzJfdCB0
YWJsZUluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0
YWJsZUluZGV4ID49IG1faW5mby0+dGFibGVDb3VudCgpLCAiRWxlbWVudCBzZWN0aW9uIGZvciBU
YWJsZSAiLCB0YWJsZUluZGV4LCAiIGV4Y2VlZHMgYXZhaWxhYmxlIFRhYmxlICIsIG1faW5mby0+
dGFibGVDb3VudCgpKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3Rh
YmxlSW5kZXhdLnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwg
dGFibGVJbmRleCwgIiBtdXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50
IHNlY3Rpb24iKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VJMzJJbml0RXhwcihPcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQYXJ0
aWFsUmVzdWx0Cit7CisgICAgdWludDhfdCBpbml0T3Bjb2RlOworICAgIHVpbnQ2NF90IGluaXRF
eHByQml0czsKKyAgICBUeXBlIGluaXRFeHByVHlwZTsKKyAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHBhcnNlSW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzLCBpbml0RXhwclR5
cGUpKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVt
ZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7CisgICAgaW5pdEV4cHIgPSBtYWtl
STMySW5pdEV4cHIoaW5pdE9wY29kZSwgaW5pdEV4cHJCaXRzKTsKKworICAgIHJldHVybiB7IH07
Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtS2luZCh1aW50OF90JiByZXN1bHRF
bGVtS2luZCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQ4X3QgZWxlbUtpbmQ7CisgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChlbGVtS2luZCksICJjYW4ndCBnZXQgZWxl
bWtpbmQiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCEhZWxlbUtpbmQsICJlbGVta2luZCBt
dXN0IGJlIHplcm8iKTsKKyAgICByZXN1bHRFbGVtS2luZCA9IGVsZW1LaW5kOworCisgICAgcmV0
dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVt
U2VjdGlvbih1aW50MzJfdCYgcmVzdWx0SW5kZXhDb3VudCwgY29uc3QgdW5zaWduZWQgZWxlbWVu
dE51bSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBn
ZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4Q291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpLCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRo
IGluZGV4IGNvdW50IGlzIHRvbyBiaWcgIiwgaW5kZXhDb3VudCk7CisgICAgcmVzdWx0SW5kZXhD
b3VudCA9IGluZGV4Q291bnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2VjdGlvbih1aW50MzJfdCYgZnVu
Y0lkeCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51bSwgY29uc3QgdW5zaWduZWQgaW5kZXgpIC0+
IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90IG9wY29kZTsKKyAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVVJbnQ4KG9wY29kZSksICJjYW4ndCBnZXQgb3Bjb2RlIGZvciBleHAgaW4g
ZWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwg
InRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigob3Bjb2RlICE9IFJlZkZ1bmMp
ICYmIChvcGNvZGUgIT0gUmVmTnVsbCksICJvcGNvZGUgZm9yIGV4cCBpbiBlbGVtZW50IHNlY3Rp
b24ncyBzaG91bGQgYmUgZWl0aGVyIHJlZi5mdW5jIG9yIHJlZi5udWxsICIsIGVsZW1lbnROdW0s
ICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworCisgICAgaWYgKG9wY29kZSA9
PSBSZWZGdW5jKSB7CisgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CisgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3Qg
Z2V0IEVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5k
ZXgsICJ0aCBpbmRleCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5k
ZXggPj0gbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24n
cyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwg
ZnVuY3Rpb25JbmRleCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBz
aXplIG9mICIsIG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgZnVu
Y0lkeCA9IGZ1bmN0aW9uSW5kZXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVHlwZSB0eXBlT2ZO
dWxsOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVs
bCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBmdW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU9mTnVsbCAhPSBGdW5jcmVmLCAicmVm
Lm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVu
dE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgICAgIGZ1bmNJ
ZHggPSBFbGVtZW50OjpOdWxsRnVuY0luZGV4OworICAgIH0KKworICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVUludDgob3Bjb2RlKSwgImNhbid0IGdldCBvcGNvZGUgZm9yIGV4cCBlbmQg
aW4gZWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRl
eCwgInRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihvcGNvZGUgIT0gRW5kLCAi
bWFsZm9ybWVkIGV4cHIgaW4gZWxlbWVudCBzZWN0aW9uJ3MiLCBlbGVtZW50TnVtLCAidGggZWxl
bWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24odWludDMyX3QmIGZ1
bmNJZHgsIGNvbnN0IHVuc2lnbmVkIGVsZW1lbnROdW0sIGNvbnN0IHVuc2lnbmVkIGluZGV4KSAt
PiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdl
dCBFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4
LCAidGggaW5kZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0g
bV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBl
bGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rp
b25JbmRleCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9m
ICIsIG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBmdW5jSWR4ID0gZnVu
Y3Rpb25JbmRleDsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VHbG9iYWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICB1aW50OF90IG11dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA4NmI5ODBhYzA2OGUzZjc4M2FkODVmZGNk
Y2VlYjEyOGRlNWRmY2QzLi42NWQxNWZlMzZjMDYyM2Q1MWVmMDU1M2I0MDQ5ZWVmMWRlYzcwOTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgK
QEAgLTY3LDYgKzY3LDEzIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gcGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIE9wdGlvbmFs
PHVpbnQzMl90PiYgbWF4aW11bSwgYm9vbCYgaXNTaGFyZWQsIExpbWl0c1R5cGUpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW5pdEV4cHIodWludDhfdCYsIHVp
bnQ2NF90JiwgVHlwZSYgaW5pdEV4cHJUeXBlKTsKIAorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByKE9wdGlvbmFsPEkz
MkluaXRFeHByPiYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
RWxlbUtpbmQodWludDhfdCYgZWxlbUtpbmQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlSW5kZXhDb3VudEZvckVsZW1TZWN0aW9uKHVpbnQzMl90JiwgY29uc3Qg
dW5zaWduZWQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVu
Y0lkeEZyb21SZWZFeHBGb3JFbGVtU2VjdGlvbih1aW50MzJfdCYsIGNvbnN0IHVuc2lnbmVkLCBj
b25zdCB1bnNpZ25lZCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCwgY29uc3Qg
dW5zaWduZWQpOworCiAgICAgc2l6ZV90IG1fb2Zmc2V0SW5Tb3VyY2U7CiAgICAgUmVmPE1vZHVs
ZUluZm9ybWF0aW9uPiBtX2luZm87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDIwNjRhNDY2
Mjg1NTE2ZDRjYzY4ODRhMmIzMjRiYzZlNjY5N2ViYTcuLjIzMzlmNDBjMTc3MGNkNGVhMjAyM2Fj
M2Y0ZjJmMzkwOWI1ZTMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU1NSwxNCArNTU1LDE2
IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuZnVuY3Rpb25JbmRp
Y2VzLnNpemUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdWlu
dDMyX3QgZWxlbWVudEluZGV4ID0gZWxlbWVudC5vZmZzZXQuaXNHbG9iYWxJbXBvcnQoKQotICAg
ICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5zdGFuY2UtPmluc3RhbmNl
KCkubG9hZEkzMkdsb2JhbChlbGVtZW50Lm9mZnNldC5nbG9iYWxJbXBvcnRJbmRleCgpKSkKLSAg
ICAgICAgICAgICAgICA6IGVsZW1lbnQub2Zmc2V0LmNvbnN0VmFsdWUoKTsKKyAgICAgICAgICAg
IGlmIChlbGVtZW50LmFjdGl2ZSgpKSB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgZWxlbWVu
dEluZGV4ID0gZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+aXNHbG9iYWxJbXBvcnQoKQorICAgICAg
ICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLmxvYWRJMzJHbG9iYWwoZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+Z2xvYmFsSW1wb3J0SW5k
ZXgoKSkpCisgICAgICAgICAgICAgICAgICAgIDogZWxlbWVudC5vZmZzZXRJZkFjdGl2ZS0+Y29u
c3RWYWx1ZSgpOwogCi0gICAgICAgICAgICBmbihlbGVtZW50LCBlbGVtZW50LnRhYmxlSW5kZXgs
IGVsZW1lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJs
ZUluZGV4LCBlbGVtZW50SW5kZXgpOwogCi0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsK
IApAQCAtNjA0LDggKzYwNiwxNCBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpl
dmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGlmIChVTkxJS0VMWShl
eGNlcHRpb24pKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnZhbHVlKCk7CiAKLSAgICBmb3JF
YWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRh
YmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgIGZvckVhY2hFbGVtZW50KFsm
XSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWlu
dDMyX3Qgc3RhcnRFbGVtZW50SW5kZXgpIHsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsg
aSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBj
b25zdCB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBzdGFydEVsZW1lbnRJbmRleCArIGk7CisgICAg
ICAgICAgICBpZiAoV2FzbTo6RWxlbWVudDo6aXNOdWxsRnVuY0luZGV4KGVsZW1lbnQuZnVuY3Rp
b25JbmRpY2VzW2ldKSkgeworICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxl
SW5kZXgpLT5jbGVhcihlbGVtZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxseSBt
ZWFucyB3ZSdyZSBleHBvcnRpbmcgYW4gaW1wb3J0LgogICAgICAgICAgICAgLy8gV2UgbmVlZCBh
IHN0b3J5IGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgV2ViQXNzZW1ibHlGdW5jdGlvbgogICAg
ICAgICAgICAgLy8gZm9yIHRoZSBpbXBvcnQuCkBAIC02MjEsMTMgKzYyOSwxMSBAQCBKU1ZhbHVl
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgb25seSB0eXBlIHRoaXMgY291bGQg
YmUgaXMgV2ViQXNzZW1ibHlGdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQod2FzbUZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFi
bGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5kZXgsIHdhc21GdW5jdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJs
ZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPndlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCksIGZ1bmN0aW9uSW1w
b3J0LCBmdW5jdGlvbkluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCkpOwot
ICAgICAgICAgICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgfQogCkBAIC02NDAsOSArNjQ2LDcgQEAgSlNWYWx1ZSBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4
MjUKICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1i
bHlGdW5jdGlvbjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpLCBzaWduYXR1cmUuYXJn
dW1lbnRDb3VudCgpLCBTdHJpbmcoKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBv
aW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7Ci0KICAg
ICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4
LCBmdW5jdGlvbik7Ci0gICAgICAgICAgICArK2VsZW1lbnRJbmRleDsKICAgICAgICAgfQogICAg
IH0pOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDJlNTQ1ZWRhODI3ZmU5MjFlMmE3NzdkNmZkMGUxNWU5ZjM5MDdhMjIuLjAwNmM3ZDFm
NWQ4NzlmZjBiOTk0MDIxNjRmZjYzZDAxYmE5ZGFhYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTEt
MzAgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgc3VwcG9ydCBmb3IgYWN0aXZlIG1vZHMgaW4gZWxlbWVu
dCBzZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTkxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEZpeCBidWlsZGVyIGRzbCB0byBwcm9kdWNlIHRoZSByaWdodCBlbGVtZW50IHNl
Y3Rpb24uCisgICAgICAgIEl0IHByb2R1Y2VzIGNvcnJlY3Qgd2FzbSBjb2RlIGZvciB0aGUgcHJl
dmlvdXMgc3BlYyBhbmQgZm9yIHRoZSByZWYtdHlwZXMgc3BlYyBiZWNhdXNlIHRoZSBjb3JlIHNw
ZWMgaXMgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVmLXR5cGVzLgorICAgICAgICBodHRw
czovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMvY29yZS9iaW5hcnkvbW9k
dWxlcy5odG1sI2VsZW1lbnQtc2VjdGlvbi4KKyAgICAgICAgQWRkZWQgYmFzaWMgdGVzdHMgZm9y
IHRoZSBlbGVtZW50IHNlY3Rpb24uCisKKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczoKKyAg
ICAgICAgKGV4cG9ydC5kZWZhdWx0LkJ1aWxkZXIucHJvdG90eXBlLl9yZWdpc3RlclNlY3Rpb25C
dWlsZGVycy5jb25zdC5zZWN0aW9uLmluLldBU00uZGVzY3JpcHRpb24uc2VjdGlvbi5zd2l0Y2gu
c2VjdGlvbi5jYXNlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnRoaXMuc2VjdGlvbik6CisgICAgICAg
ICogd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzOgorICAgICAgICAoY29uc3QuZW1p
dHRlcnMuRWxlbWVudCk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVm
X251bGwuanM6CisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9l
bGVtZW50X2FjdGl2ZV9tb2QuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAg
KGJhc2ljVGVzdCk6CisgICAgICAgIChyZWZOdWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24pOgorICAg
ICAgICAqIHdhc20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanM6CisgICAgICAgICogd2Fz
bS9yZWZlcmVuY2VzL211bHRpdGFibGUuanM6CisKIDIwMjAtMTEtMzAgIFNlcmdleSBSdWJhbm92
ICA8Y2hpMTg3QGdtYWlsLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdhc20g
aTY0IHNpZ24tZXh0ZW5zaW9uLW9wcyBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRleCBiNGQ3MmIxYzY3YjRl
MjUxNGExNjdiMWI0M2NkMWIwNThjZjU4MDM0Li4zMmZmZTZiYmI1NjFhNTMzMzg1N2VkMjMxYjA0
N2E3ZjJhZmJmMTE1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9K
U1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtNTk0LDggKzU5NCw4IEBAIGV4cG9ydCBkZWZhdWx0
IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRk
U2VjdGlvbihzZWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEJ1aWxk
ZXIgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBFbGVtZW50OiAoe3RhYmxlSW5kZXggPSAwLCBvZmZzZXQsIGZ1bmN0
aW9uSW5kaWNlc30pID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVz
aCh7dGFibGVJbmRleCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEVsZW1lbnQ6ICh7dGFibGVJbmRleCA9IDAsIG9mZnNldCwgZWxlbWtpbmQgPSAw
LCBmdW5jdGlvbkluZGljZXN9KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5k
YXRhLnB1c2goe3RhYmxlSW5kZXgsIG9mZnNldCwgZWxlbWtpbmQsIGZ1bmN0aW9uSW5kaWNlc30p
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5
Rm9yKGVsZW1lbnRCdWlsZGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2Vt
Ymx5QmluYXJ5LmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMK
aW5kZXggYjBmNDM4N2UwZjg3YzkyZjczNjNkYTliMDMxMWViYjM0MjQ0YjQxZC4uMzU4YmI0ODJk
NGUwNzMyNmEyMGU1ODkzNGU1NTI5MmJiNTUxNjM3MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXJf
V2ViQXNzZW1ibHlCaW5hcnkuanMKQEAgLTE5NywxMCArMTk3LDEzIEBAIGNvbnN0IGVtaXR0ZXJz
ID0gewogICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsKICAgICAgICAgY29uc3QgZGF0
YSA9IHNlY3Rpb24uZGF0YTsKICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGRhdGEubGVu
Z3RoKTsKLSAgICAgICAgZm9yIChjb25zdCB7dGFibGVJbmRleCwgb2Zmc2V0LCBmdW5jdGlvbklu
ZGljZXN9IG9mIGRhdGEpIHsKLSAgICAgICAgICAgIGlmICh0YWJsZUluZGV4ICE9IDApCi0gICAg
ICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4IiwgMik7Ci0gICAgICAgICAgICBwdXQoYmluLCAi
dmFydWludDMyIiwgdGFibGVJbmRleCk7CisgICAgICAgIGZvciAoY29uc3Qge3RhYmxlSW5kZXgs
IG9mZnNldCwgZWxlbWtpbmQsIGZ1bmN0aW9uSW5kaWNlc30gb2YgZGF0YSkgeworICAgICAgICAg
ICAgbGV0IGZsYWdzID0gdGFibGVJbmRleCA9PSAwID8gMCA6IDI7CisgICAgICAgICAgICBwdXQo
YmluLCAidWludDgiLCBmbGFncyk7CisKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSAyKSB7Cisg
ICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCB0YWJsZUluZGV4KTsKKyAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgbGV0IGluaXRFeHByOwogICAgICAgICAgICAgaWYgKHR5cGVv
ZiBvZmZzZXQgPT09ICJudW1iZXIiKQpAQCAtMjA5LDYgKzIxMiwxMCBAQCBjb25zdCBlbWl0dGVy
cyA9IHsKICAgICAgICAgICAgICAgICBpbml0RXhwciA9IG9mZnNldDsKICAgICAgICAgICAgIHB1
dEluaXRFeHByKGJpbiwgaW5pdEV4cHIpOwogCisgICAgICAgICAgICBpZiAoZmxhZ3MgPT0gMikg
eworICAgICAgICAgICAgICBwdXQoYmluLCAidWludDgiLCBlbGVta2luZCk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBmdW5jdGlvbkluZGljZXMu
bGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgZnVuY3Rpb25JbmRleCBvZiBmdW5jdGlv
bkluZGljZXMpCiAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGZ1bmN0aW9u
SW5kZXgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9y
ZWZfbnVsbC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwu
anMKaW5kZXggOWRkYTdhZmZhNDAwYTQ0MzhhNTIzNjJlOWIzM2MwYjgyMzcxMjBjYy4uNTMyNWFi
YWEzYTZmZjc2M2I0ZmEwOWQ4YjM4M2FhZWQ0Yjk4ZTcwNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qcworKysgYi9KU1Rlc3RzL3dhc20v
cmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCkBAIC02Miw3ICs2Miw3IEBAIGZ1bmN0
aW9uIG1vZHVsZShieXRlcywgdmFsaWQgPSB0cnVlKSB7CiAgICAgdGhyb3cgbmV3IEVycm9yKCJX
YXNtIHZhbGlkYXRlIHRocm93cyIpOwogICB9CiAgIGlmICh2YWxpZGF0ZWQgIT09IHZhbGlkKSB7
Ci0gICAgLy90aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUgZmFpbHVyZSIgKyAodmFsaWQg
PyAiIiA6ICIgZXhwZWN0ZWQiKSk7CisgICAgdGhyb3cgbmV3IEVycm9yKCJXYXNtIHZhbGlkYXRl
IGZhaWx1cmUiICsgKHZhbGlkID8gIiIgOiAiIGV4cGVjdGVkIikpOwogICB9CiAgIHJldHVybiBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9lbGVtZW50X2FjdGl2ZV9tb2QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE3MDg0MDA2ODM0ZDM3ZWU2
M2I3MmViOTlmYWYzOWI3Y2YwMzljYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qcwpAQCAtMCwwICsxLDU5IEBACisvL0AgcnVu
V2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworZnVuY3Rpb24gbW9kdWxlKGJ5
dGVzLCB2YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRl
cy5sZW5ndGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAo
bGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMu
Y2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZm
ZXIpOworfQorCitmdW5jdGlvbiBiYXNpY1Rlc3QoKSB7CisgIC8qCisgIChtb2R1bGUKKyAgICAo
ZnVuYyAkZiAocmVzdWx0IGkzMikKKyAgICAgIChpMzIuY29uc3QgMzcpCisgICAgKQorICAgIChm
dW5jICRnIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5jb25zdCA0MikKKyAgICApCisgICAgKHRh
YmxlICR0MSAxMCBmdW5jcmVmKQorICAgICh0YWJsZSAkdDIgMjAgZnVuY3JlZikKKyAgICAoZWxl
bSAoaTMyLmNvbnN0IDMpIGZ1bmNyZWYgKHJlZi5mdW5jICRnKSAocmVmLm51bGwgZnVuYykgKHJl
Zi5mdW5jICRmKSAocmVmLm51bGwgZnVuYykpCisgICAgKGVsZW0gKHRhYmxlICR0MikgKGkzMi5j
b25zdCA3KSBmdW5jcmVmIChyZWYuZnVuYyAkZikgKHJlZi5udWxsIGZ1bmMpIChyZWYuZnVuYyAk
ZykpCisgICAgKGZ1bmMgKGV4cG9ydCAiZ2V0X3RibDEiKSAocGFyYW0gJGlkeCBpMzIpIChyZXN1
bHQgZnVuY3JlZikKKyAgICAgICh0YWJsZS5nZXQgJHQxIChsb2NhbC5nZXQgJGlkeCkpCisgICAg
KQorICAgIChmdW5jIChleHBvcnQgImdldF90YmwyIikgKHBhcmFtICRpZHggaTMyKSAocmVzdWx0
IGZ1bmNyZWYpCisgICAgICAodGFibGUuZ2V0ICR0MiAobG9jYWwuZ2V0ICRpZHgpKQorICAgICkK
KyAgKQorICAqLworICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAw
XHgwMVx4N2ZceDYwXHgwMVx4N2ZceDAxXHg3MFx4MDNceDA1XHgwNFx4MDBceDAwXHgwMVx4MDFc
eDA0XHgwN1x4MDJceDcwXHgwMFx4MGFceDcwXHgwMFx4MTRceDA3XHgxN1x4MDJceDA4XHg2N1x4
NjVceDc0XHg1Zlx4NzRceDYyXHg2Y1x4MzFceDAwXHgwMlx4MDhceDY3XHg2NVx4NzRceDVmXHg3
NFx4NjJceDZjXHgzMlx4MDBceDAzXHgwOVx4MjJceDAyXHgwNFx4NDFceDAzXHgwYlx4MDRceGQy
XHgwMVx4MGJceGQwXHg3MFx4MGJceGQyXHgwMFx4MGJceGQwXHg3MFx4MGJceDA2XHgwMVx4NDFc
eDA3XHgwYlx4NzBceDAzXHhkMlx4MDBceDBiXHhkMFx4NzBceDBiXHhkMlx4MDFceDBiXHgwYVx4
MTlceDA0XHgwNFx4MDBceDQxXHgyNVx4MGJceDA0XHgwMFx4NDFceDJhXHgwYlx4MDZceDAwXHgy
MFx4MDBceDI1XHgwMFx4MGJceDA2XHgwMFx4MjBceDAwXHgyNVx4MDFceDBiIikpOworCisgIGFz
c2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwxKDMpKCksIDQyKTsKKyAgYXNzZXJ0LmVx
KGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDEoNCksIG51bGwpOworICBhc3NlcnQuZXEoaW5zdGFu
Y2UuZXhwb3J0cy5nZXRfdGJsMSg1KSgpLCAzNyk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBv
cnRzLmdldF90YmwxKDYpLCBudWxsKTsKKworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5n
ZXRfdGJsMig3KSgpLCAzNyk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90Ymwy
KDgpLCBudWxsKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIoOSkoKSwg
NDIpOworfQorCitmdW5jdGlvbiByZWZOdWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24oKSB7CisgIC8q
CisgIChtb2R1bGUKKyAgICAodGFibGUgJHQgMTAgZnVuY3JlZikKKyAgICAoZWxlbSAoaTMyLmNv
bnN0IDMpIGZ1bmNyZWYgKHJlZi5udWxsIGV4dGVybikpCisgICkKKyAgKi8KKyAgYXNzZXJ0LnRo
cm93cygoKSA9PiBtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwNFx4
MDRceDAxXHg3MFx4MDBceDBhXHgwOVx4MDlceDAxXHgwNFx4NDFceDAzXHgwYlx4MDFceGQwXHg2
Zlx4MGIiKSwKKyAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAiV2ViQXNzZW1ibHkuTW9k
dWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAyNDogcmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRl
biBpbiBlbGVtZW50IHNlY3Rpb24ncywgMHRoIGVsZW1lbnQncyAwdGggaW5kZXggKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIik7Cit9CisKK2Jhc2ljVGVzdCgp
OworcmVmTnVsbEV4dGVybkluRWxlbXNTZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNl
cy9lbGVtZW50X3BhcnNpbmcuanMKaW5kZXggOTNiZTFmZDY1NzYyZDQ0NTVhYWU5MzVkMzJlN2M2
ZDM2NDA4Y2EwMS4uMDFmODkwMjQ4MmM2YjJmYjA3NDc4MjRhNTczNmIyNzMyZGUwZmFmNyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qcwpAQCAtMjMsNCArMjMs
NCBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHg5N1x4ODBceDgwXHg4MAogLy8gICsgIlx4MDIiCiAgICAgKyAiXHgwMSIK
ICAgICArICJceDQxXHgwMVx4MGJceDAxXHgwMlx4MGFceGQ0XHg4MFx4ODBceDgwXHgwMFx4MDdc
eDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4ZDFceDBiXHg4NVx4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDBceGQxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGJceDg4XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMVx4MjBceDAwXHgyNlx4MDBceDBiXHg4Y1x4ODBceDgw
XHg4MFx4MDBceDAwXHg0MVx4MDFceGQwXHgyNlx4MDBceDQxXHgwMVx4ZDBceDI2XHgwMVx4MGJc
eDg4XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MjVceDAwXHgxMFx4MDBceDBiXHg4OFx4
ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4MDBceDI1XHgwMVx4MTBceDAxXHgwYiIpLAotICAgIEVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNDM6IGNhbid0
IGdldCAwdGggRWxlbWVudCByZXNlcnZlZCBieXRlLCB3aGljaCBzaG91bGQgYmUgZWl0aGVyIDB4
MDAgb3IgMHgwMiBmb2xsb3dlZCBieSBhIHRhYmxlIGluZGV4IChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuTW9kdWxlKGJ1ZmZlciknKSIpOworICAgIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9k
dWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAxNDM6IHVuc3VwcG9ydGVkIDB0aCBFbGVtZW50IHJl
c2VydmVkIGJ5dGUgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKScp
Iik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzIGIv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwppbmRleCA0OGE4NTYwYzBjNjAz
MjBlNTY3NjIwNGQyMDYzMjExMjAyYjAyYjI0Li4xMDA3MDE1YzJiOGIxNWJjMGJiNzM3MTRiNzQ2
NWE5OWUzM2Y4MDVlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRh
YmxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKQEAgLTMw
NCw3ICszMDQsNyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcgogICAgICAgICAgICAgLkZ1bmN0
aW9uKCJyZXQ0MiIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQogICAgICAgICAgICAgICAu
STMyQ29uc3QoNDIpCiAgICAgICAgICAgICAuRW5kKCkKLSAgICAgICAgICAuRW5kKCkuV2ViQXNz
ZW1ibHkoKS5nZXQoKSkpLCBFcnJvciwgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgNDE6IFRhYmxlIDAgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUgYW4g
ZWxlbWVudCBzZWN0aW9uIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuTW9kdWxlJykiKQor
ICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1i
bHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA0MjogVGFibGUgMCBtdXN0IGhhdmUgdHlw
ZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUnKSIpCiAKIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAg
ICAgICAgLlR5cGUoKS5FbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415193</attachid>
            <date>2020-12-01 23:20:03 -0800</date>
            <delta_ts>2020-12-01 23:34:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201202142001.patch</filename>
            <type>text/plain</type>
            <size>32395</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjRjNGUxNTQ4Yzk2NzkwZDBlYTc5ZjNmMDFkMmZiZWQxYzViOGNlLi5jZjRiMTQ2NTFhODE4NzMy
NTExNzYwOTY0M2Y3MzY2NGUyOWJlYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0xMS0zMCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRqdXN0IHdhc20gcGFyc2VyIHRvIHBhcnNl
IG5ldyBmb3JtIG9mIGVsZW1lbnQgc2VjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly93ZWJhc3NlbWJs
eS5naXRodWIuaW8vcmVmZXJlbmNlLXR5cGVzL2NvcmUvYmluYXJ5L21vZHVsZXMuaHRtbCNlbGVt
ZW50LXNlY3Rpb24uCisKKyAgICAgICAgKiB3YXNtL1dhc21FbnRyeVBsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OnByZXBhcmUpOgorICAgICAgICAqIHdhc20vV2FzbUZv
cm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjpFbGVtZW50OjpFbGVtZW50KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6YWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFy
c2VFbGVtZW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6dmFsaWRhdGVF
bGVtZW50VGFibGVJZHgpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJz
ZUkzMkluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VF
bGVtS2luZCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5kZXhD
b3VudEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6
cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24pOgorICAgICAgICAq
IHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0zMCAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBpNjQgc2lnbi1leHRlbnNp
b24tb3BzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBs
YW4uY3BwCmluZGV4IDBhOWNmMDU0M2E0ZmE5YThmYjY2ZGVmM2IwNzEyOWE2MzRhYzM3NTMuLmFh
YjdlNmIwZWFmZWMxMDljMjQ2NDJkODE2OWI3YTdhN2M4MjMxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBFbnRyeVBsYW46OnByZXBhcmUoKQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9tb2R1bGVJbmZvcm1hdGlvbi0+ZWxlbWVudHMpIHsKICAgICAgICAgZm9yIChjb25zdCB1aW50
MzJfdCBlbGVtZW50SW5kZXggOiBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcykgewotICAgICAgICAg
ICAgaWYgKGVsZW1lbnRJbmRleCA+PSBpbXBvcnRGdW5jdGlvbkNvdW50KQorICAgICAgICAgICAg
aWYgKCFFbGVtZW50Ojppc051bGxGdW5jSW5kZXgoZWxlbWVudEluZGV4KSAmJiBlbGVtZW50SW5k
ZXggPj0gaW1wb3J0RnVuY3Rpb25Db3VudCkKICAgICAgICAgICAgICAgICBtX2V4cG9ydGVkRnVu
Y3Rpb25JbmRpY2VzLmFkZChlbGVtZW50SW5kZXggLSBpbXBvcnRGdW5jdGlvbkNvdW50KTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRl
eCAxZmNmZGYyYmEyMDBjNDUyYjVmYTM2MzEzZGE0YTQ3NTM0YzQ3NWM2Li5kMGY5YmVhYmM4MDI4
M2RlNWRjMTFhMDk0ZWI3NjIxZGI0MTMxMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2lu
Y2x1ZGUgIldhc21QYWdlQ291bnQuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisjaW5j
bHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMjI2LDEzICsyMjcsMzQgQEAgc3RydWN0IFNlZ21l
bnQgewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwgSTMySW5pdEV4cHIgb2Zmc2V0
KQotICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAgICAgICAgLCBvZmZzZXQob2Zm
c2V0KQorCisgICAgLy8gTnVsbEZ1bmNJbmRleCByZXByZXNlbnRzIHRoZSBjYXNlIHdoZW4gYW4g
ZWxlbWVudCBzZWdtZW50IChvZiB0eXBlIGZ1bmNyZWYpCisgICAgLy8gY29udGFpbnMgYSBudWxs
IGVsZW1lbnQuCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50MzJfdCBudWxsRnVuY0luZGV4ID0g
VUlOVDMyX01BWDsKKworICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAgICAgICBB
Y3RpdmUsCisgICAgICAgIFBhc3NpdmUsCisgICAgICAgIERlY2xhcmVkLAorICAgIH07CisKKyAg
ICBFbGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlw
ZSwgdWludDMyX3QgdGFibGVJbmRleCwgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByKQor
ICAgICAgICA6IGtpbmQoa2luZCkKKyAgICAgICAgLCBlbGVtZW50VHlwZShlbGVtZW50VHlwZSkK
KyAgICAgICAgLCB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zmc2V0SWZBY3Rp
dmUoaW5pdEV4cHIpCiAgICAgeyB9CiAKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1
cm4ga2luZCA9PSBLaW5kOjpBY3RpdmU7IH0KKworICAgIHN0YXRpYyBib29sIGlzTnVsbEZ1bmNJ
bmRleCh1aW50MzJfdCBpZHgpIHsgcmV0dXJuIGlkeCA9PSBudWxsRnVuY0luZGV4OyB9CisKKyAg
ICBLaW5kIGtpbmQ7CisgICAgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZTsKICAgICB1aW50
MzJfdCB0YWJsZUluZGV4OwotICAgIEkzMkluaXRFeHByIG9mZnNldDsKKyAgICBPcHRpb25hbDxJ
MzJJbml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CisKKyAgICAvLyBJbmRleCBtYXkgYmUgTnVsbEZ1
bmNJbmRleC4KICAgICBWZWN0b3I8dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRl
eCBmNjUzZTI5MTIzYWUyZmM0N2I1MWU0YTBjOThiMDY0Y2U0OTNjZmM1Li5iNjFlOTBhMTVjMmVk
ZGVhZGEyODBhYzY0MGNmN2Y1OGU2YTM0OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0zODQsNDEgKzM4NCwxNDUgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihlbGVtZW50Q291bnQgPiBtYXhUYWJsZUVudHJpZXMsICJFbGVtZW50
IHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGVsZW1lbnRDb3VudCwgIiBtYXhpbXVtICIs
IG1heFRhYmxlRW50cmllcyk7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT5lbGVt
ZW50cy50cnlSZXNlcnZlQ2FwYWNpdHkoZWxlbWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1l
bW9yeSBmb3IgIiwgZWxlbWVudENvdW50LCAiIEVsZW1lbnRzIik7CiAgICAgZm9yICh1bnNpZ25l
ZCBlbGVtZW50TnVtID0gMDsgZWxlbWVudE51bSA8IGVsZW1lbnRDb3VudDsgKytlbGVtZW50TnVt
KSB7Ci0gICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7Ci0gICAgICAgIHVpbnQ2NF90IGluaXRF
eHByQml0czsKLSAgICAgICAgdWludDhfdCBpbml0T3Bjb2RlOwotICAgICAgICB1aW50MzJfdCBp
bmRleENvdW50OworICAgICAgICB1aW50OF90IGVsZW1lbnRGbGFnczsKKyAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChlbGVtZW50RmxhZ3MpLCAiY2FuJ3QgZ2V0ICIsIGVs
ZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlbGVt
ZW50IGZsYWdzIik7CisKKyAgICAgICAgc3dpdGNoIChlbGVtZW50RmxhZ3MpIHsKKyAgICAgICAg
Y2FzZSAweDAwOiB7CisgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9
IDA7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVu
dFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4
cHI+IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJz
ZUkzMkluaXRFeHByKGluaXRFeHByKSk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291
bnQ7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3Vu
dEZvckVsZW1TZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFT
U0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICB1aW50OF90IG1h
Z2ljOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG1hZ2ljKSB8fCAo
bWFnaWMgJiYgbWFnaWMgIT0gMiksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1l
bnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVpdGhlciAweDAwIG9yIDB4MDIgZm9s
bG93ZWQgYnkgYSB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVs
ZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRl
eCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
ZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAi
Y2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNl
cyIpOwogCi0gICAgICAgIGlmIChtYWdpYyA9PSAyKQorICAgICAgICAgICAgZm9yICh1aW50MzJf
dCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVtLCBp
bmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hlY2tl
ZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZvLT5l
bGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDE6IHsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVm
ZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVk
IGJ5dGUiKTsKKyAgICAgICAgICAgIC8vIEFkZCBzdXBwb3J0IGZvciBwYXNzaXZlIGVsZW1lbnQg
c2VnbWVudHMgYW5kIHRhYmxlLmluaXQuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI5NworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDAyOiB7CisgICAgICAgICAgICB1aW50MzJfdCB0
YWJsZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFi
bGUgaW5kZXgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFibGVJbmRleCA9IDA7Ci0g
ICAgICAgIAotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9pbmZv
LT50YWJsZUNvdW50KCksICJFbGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5kZXgs
ICIgZXhjZWVkcyBhdmFpbGFibGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5cGUo
KSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwgIiBt
dXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsKLSAg
ICAgICAgVHlwZSBpbml0RXhwclR5cGU7Ci0gICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJ
TFMocGFyc2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlwZSkp
OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJFbGVt
ZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7Ci0gICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1l
bnROdW0sICJ0aCBpbmRleCBjb3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7Ci0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5kZXgg
Y291bnQgaXMgdG9vIGJpZyAiLCBpbmRleENvdW50KTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisg
ICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKwor
ICAgICAgICAgICAgdWludDhfdCBlbGVtZW50S2luZDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VFbGVtZW50S2luZChlbGVtZW50S2luZCkpOworCisgICAgICAg
ICAgICB1aW50MzJfdCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbihpbmRleENvdW50LCBlbGVtZW50
TnVtKSk7CisgICAgICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7
CisKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50OjpLaW5kOjpBY3RpdmUsIFRh
YmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdURk1vdmUoaW5pdEV4cHIpKTsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25JbmRpY2Vz
LnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBm
b3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKKworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVt
ZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2Vz
LnVuY2hlY2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBBU1NF
UlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CisgICAgICAgICAgICBtX2luZm8tPmVs
ZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMzogeworICAgICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZl
cmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQg
Ynl0ZSIpOworICAgICAgICAgICAgLy8gQWRkIHN1cHBvcnQgZm9yIGRlY2xhcmF0aXZlIGVsZW1l
bnQgc2VnbWVudHMuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTM4NQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSAweDA0OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFP
cHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBl
bmFibGVkIik7CisgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRh
YmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+
IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkz
MkluaXRFeHByKGluaXRFeHByKSk7CiAKLSAgICAgICAgRWxlbWVudCBlbGVtZW50KHRhYmxlSW5k
ZXgsIG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMpKTsKLSAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNh
cGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENv
dW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOworICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3Vu
dDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50
Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOworICAgICAgICAgICAgQVNT
RVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgICAg
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBFbGVtZW50IHNlY3Rp
b24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsK
LSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRleCA+PSBtX2luZm8t
PmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnRO
dW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBmdW5jdGlvbkluZGV4
LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNpemUgb2YgIiwgbV9p
bmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgICAgICAgICAgRWxlbWVudCBlbGVt
ZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFi
bGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291
bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQg
aW5kaWNlcyIpOwogCi0gICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy51bmNoZWNr
ZWRBcHBlbmQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgdWlu
dDMyX3QgZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxT
KHBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVt
LCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hl
Y2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZv
LT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDU6IHsKKyAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAi
cmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2Vy
dmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIC8vIEFkZCBzdXBwb3J0IGZvciBwYXNzaXZlIGVsZW1l
bnQgc2VnbWVudHMgYW5kIHRhYmxlLmluaXQuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI5NworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDA2OiB7CisgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVy
ZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAKLSAgICAgICAgbV9pbmZvLT5lbGVtZW50cy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICB1aW50MzJfdCB0YWJs
ZUluZGV4OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
dGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgdGFibGUg
aW5kZXgiKTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVF
bGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisgICAgICAgICAgICBPcHRpb25hbDxJMzJJ
bml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxT
KHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKworICAgICAgICAgICAgVHlwZSByZWZUeXBl
OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHJlZlR5cGUp
LCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYocmVmVHlwZSAhPSBGdW5jcmVmLCAicmVmdHlwZSBpbiBlbGVtZW50
IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKworICAgICAgICAgICAgdWludDMyX3QgaW5k
ZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRl
eENvdW50Rm9yRWxlbVNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOworICAgICAgICAg
ICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOworCisgICAgICAgICAgICBF
bGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6QWN0aXZlLCBUYWJsZUVsZW1lbnRUeXBlOjpG
dW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGluaXRFeHByKSk7CisgICAgICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNlcy50cnlSZXNlcnZlQ2FwYWNp
dHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIsIGluZGV4Q291bnQs
ICIgRWxlbWVudCBpbmRpY2VzIik7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICB1aW50
MzJfdCBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMo
cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0aW9uKGZ1bmNJZHgsIGVsZW1lbnROdW0s
IGluZGV4KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5mdW5jdGlvbkluZGljZXMudW5jaGVj
a2VkQXBwZW5kKGZ1bmNJZHgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2luZm8t
PmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwNzogeworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJy
ZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQgcmVzZXJ2
ZWQgYnl0ZSIpOworICAgICAgICAgICAgLy8gQWRkIHN1cHBvcnQgZm9yIGRlY2xhcmF0aXZlIGVs
ZW1lbnQgc2VnbWVudHMuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM4NQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1
ZSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggRWxlbWVudCByZXNlcnZlZCBieXRlIik7
CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4geyB9OwpAQCAtNTEwLDYgKzYxNCw4MCBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50
NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gU2Vj
dGlvblBhcnNlcjo6dmFsaWRhdGVFbGVtZW50VGFibGVJZHgodWludDMyX3QgdGFibGVJbmRleCkg
LT4gUGFydGlhbFJlc3VsdAoreworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodGFibGVJbmRleCA+
PSBtX2luZm8tPnRhYmxlQ291bnQoKSwgIkVsZW1lbnQgc2VjdGlvbiBmb3IgVGFibGUgIiwgdGFi
bGVJbmRleCwgIiBleGNlZWRzIGF2YWlsYWJsZSBUYWJsZSAiLCBtX2luZm8tPnRhYmxlQ291bnQo
KSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XS50
eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgIlRhYmxlICIsIHRhYmxlSW5kZXgs
ICIgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUgYW4gZWxlbWVudCBzZWN0aW9uIik7
CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5p
dEV4cHIoT3B0aW9uYWw8STMySW5pdEV4cHI+JiBpbml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAor
eworICAgIHVpbnQ4X3QgaW5pdE9wY29kZTsKKyAgICB1aW50NjRfdCBpbml0RXhwckJpdHM7Cisg
ICAgVHlwZSBpbml0RXhwclR5cGU7CisgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJz
ZUluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cywgaW5pdEV4cHJUeXBlKSk7CisgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRihpbml0RXhwclR5cGUgIT0gSTMyLCAiRWxlbWVudCBpbml0X2V4
cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiIpOworICAgIGluaXRFeHByID0gbWFrZUkzMkluaXRFeHBy
KGluaXRPcGNvZGUsIGluaXRFeHByQml0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRv
IFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudEtpbmQodWludDhfdCYgcmVzdWx0RWxlbWVudEtp
bmQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90IGVsZW1lbnRLaW5kOworICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgoZWxlbWVudEtpbmQpLCAiY2FuJ3QgZ2V0IGVs
ZW1lbnQga2luZCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoISFlbGVtZW50S2luZCwgImVs
ZW1lbnQga2luZCBtdXN0IGJlIHplcm8iKTsKKyAgICByZXN1bHRFbGVtZW50S2luZCA9IGVsZW1l
bnRLaW5kOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJz
ZUluZGV4Q291bnRGb3JFbGVtU2VjdGlvbih1aW50MzJfdCYgcmVzdWx0SW5kZXhDb3VudCwgY29u
c3QgdW5zaWduZWQgZWxlbWVudE51bSkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQzMl90
IGluZGV4Q291bnQ7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5k
ZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGZvciBF
bGVtZW50IHNlY3Rpb24iKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4Q291bnQgPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCAiRWxlbWVudCBzZWN0aW9uJ3Mg
IiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGlzIHRvbyBiaWcgIiwgaW5kZXhDb3VudCk7
CisgICAgcmVzdWx0SW5kZXhDb3VudCA9IGluZGV4Q291bnQ7CisKKyAgICByZXR1cm4geyB9Owor
fQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2Vj
dGlvbih1aW50MzJfdCYgZnVuY0lkeCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51bSwgY29uc3Qg
dW5zaWduZWQgaW5kZXgpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90IG9wY29kZTsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG9wY29kZSksICJjYW4ndCBnZXQg
b3Bjb2RlIGZvciBleHAgaW4gZWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVs
ZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigo
b3Bjb2RlICE9IFJlZkZ1bmMpICYmIChvcGNvZGUgIT0gUmVmTnVsbCksICJvcGNvZGUgZm9yIGV4
cCBpbiBlbGVtZW50IHNlY3Rpb24ncyBzaG91bGQgYmUgZWl0aGVyIHJlZi5mdW5jIG9yIHJlZi5u
dWxsICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOwor
CisgICAgaWYgKG9wY29kZSA9PSBSZWZGdW5jKSB7CisgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0
aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IEVsZW1lbnQgc2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0
aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCks
ICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4
LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5j
dGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6
ZSgpKTsKKyAgICAgICAgZnVuY0lkeCA9IGZ1bmN0aW9uSW5kZXg7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgVHlwZSB0eXBlT2ZOdWxsOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBmdW5jIHR5cGUg
aW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZU9mTnVs
bCAhPSBGdW5jcmVmLCAicmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRlbiBpbiBlbGVtZW50IHNl
Y3Rpb24ncywgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4
Iik7CisgICAgICAgIGZ1bmNJZHggPSBFbGVtZW50OjpudWxsRnVuY0luZGV4OworICAgIH0KKwor
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgob3Bjb2RlKSwgImNhbid0IGdldCBv
cGNvZGUgZm9yIGV4cCBlbmQgaW4gZWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRo
IGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RihvcGNvZGUgIT0gRW5kLCAibWFsZm9ybWVkIGV4cHIgaW4gZWxlbWVudCBzZWN0aW9uJ3MiLCBl
bGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKKworICAgIHJl
dHVybiB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNl
Y3Rpb24odWludDMyX3QmIGZ1bmNJZHgsIGNvbnN0IHVuc2lnbmVkIGVsZW1lbnROdW0sIGNvbnN0
IHVuc2lnbmVkIGluZGV4KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgdWludDMyX3QgZnVuY3Rp
b25JbmRleDsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlv
bkluZGV4KSwgImNhbid0IGdldCBFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGgg
ZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVt
ZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGgg
aW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBp
bmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsK
KyAgICBmdW5jSWR4ID0gZnVuY3Rpb25JbmRleDsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9i
YWwpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICB1aW50OF90IG11dGFiaWxpdHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA4NmI5ODBh
YzA2OGUzZjc4M2FkODVmZGNkY2VlYjEyOGRlNWRmY2QzLi42NzE3MGE3YTk2ZTQ3YjlmZGRkMDc2
MDY1MzVhMmZhMjNlODQwZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2VjdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmgKQEAgLTY3LDYgKzY3LDEzIEBAIHByaXZhdGU6CiAgICAgUGFydGlh
bFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3Qm
IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiYgbWF4aW11bSwgYm9vbCYgaXNTaGFyZWQsIExp
bWl0c1R5cGUpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW5p
dEV4cHIodWludDhfdCYsIHVpbnQ2NF90JiwgVHlwZSYgaW5pdEV4cHJUeXBlKTsKIAorICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVp
bnQzMl90KTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMklu
aXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHByPiYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIHBhcnNlRWxlbWVudEtpbmQodWludDhfdCYgZWxlbWVudEtpbmQpOworICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW5kZXhDb3VudEZvckVsZW1T
ZWN0aW9uKHVpbnQzMl90JiwgY29uc3QgdW5zaWduZWQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtU2VjdGlvbih1aW50
MzJfdCYsIGNvbnN0IHVuc2lnbmVkLCBjb25zdCB1bnNpZ25lZCk7CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24odWludDMyX3Qm
LCBjb25zdCB1bnNpZ25lZCwgY29uc3QgdW5zaWduZWQpOworCiAgICAgc2l6ZV90IG1fb2Zmc2V0
SW5Tb3VyY2U7CiAgICAgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBtX2luZm87CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCmluZGV4IDIwNjRhNDY2Mjg1NTE2ZDRjYzY4ODRhMmIzMjRiYzZlNjY5N2ViYTcu
LmU4M2I4MjkwY2M4MjI0YTM4OTkyOWZlMDkzMmZhYzM5NTdkZmEyNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKQEAgLTU1NSw5ICs1NTUsMTMgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGlm
ICghZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBlbGVtZW50Lm9mZnNl
dC5pc0dsb2JhbEltcG9ydCgpCi0gICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGVsZW1lbnQub2Zmc2V0Lmds
b2JhbEltcG9ydEluZGV4KCkpKQotICAgICAgICAgICAgICAgIDogZWxlbWVudC5vZmZzZXQuY29u
c3RWYWx1ZSgpOworICAgICAgICAgICAgaWYgKCFlbGVtZW50LmlzQWN0aXZlKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIG9mZnNldCA9ICpl
bGVtZW50Lm9mZnNldElmQWN0aXZlOworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZWxlbWVu
dEluZGV4ID0gb2Zmc2V0LmlzR2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAgICAgICA/IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJMzJHbG9iYWwob2Zm
c2V0Lmdsb2JhbEltcG9ydEluZGV4KCkpKQorICAgICAgICAgICAgICAgIDogb2Zmc2V0LmNvbnN0
VmFsdWUoKTsKIAogICAgICAgICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUluZGV4LCBl
bGVtZW50SW5kZXgpOwogCkBAIC02MDQsMTMgKzYwOCwxOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IGlmIChVTkxJS0VMWShleGNlcHRpb24pKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnZhbHVl
KCk7CiAKLSAgICBmb3JFYWNoRWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1l
bnQsIHVpbnQzMl90IHRhYmxlSW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgIGZv
ckVhY2hFbGVtZW50KFsmXSAoY29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3Qg
dGFibGVJbmRleCwgdWludDMyX3Qgc3RhcnRFbGVtZW50SW5kZXgpIHsKICAgICAgICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBzdGFydEVsZW1lbnRJ
bmRleCArIGk7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gZWxl
bWVudC5mdW5jdGlvbkluZGljZXNbaV07CisgICAgICAgICAgICBpZiAoV2FzbTo6RWxlbWVudDo6
aXNOdWxsRnVuY0luZGV4KGZ1bmN0aW9uSW5kZXgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnN0
YW5jZS0+dGFibGUodGFibGVJbmRleCktPmNsZWFyKGVsZW1lbnRJbmRleCk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGVzc2VudGlhbGx5IG1lYW5zIHdlJ3JlIGV4cG9ydGluZyBhbiBpbXBvcnQuCiAgICAgICAg
ICAgICAvLyBXZSBuZWVkIGEgc3RvcnkgaGVyZS4gV2UgbmVlZCB0byBjcmVhdGUgYSBXZWJBc3Nl
bWJseUZ1bmN0aW9uCiAgICAgICAgICAgICAvLyBmb3IgdGhlIGltcG9ydC4KICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTAKLSAgICAg
ICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlc1tp
XTsKICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9k
dWxlLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KTsK
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbkluZGV4IDwgY29kZUJsb2NrLT5mdW5jdGlvbkltcG9y
dENvdW50KCkpIHsKICAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVj
dD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKQEAgLTYyMSwxMyArNjMxLDExIEBAIEpTVmFsdWUg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUgdGhpcyBjb3VsZCBi
ZSBpcyBXZWJBc3NlbWJseUZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCh3YXNtRnVuY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJs
ZSh0YWJsZUluZGV4KS0+c2V0KGVsZW1lbnRJbmRleCwgd2FzbUZ1bmN0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxl
KHRhYmxlSW5kZXgpLT5zZXQoZWxlbWVudEluZGV4LAogICAgICAgICAgICAgICAgICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBv
cnQsIGZ1bmN0aW9uSW5kZXgsIG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KSk7Ci0g
ICAgICAgICAgICAgICAgKytlbGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKQEAgLTY0MCw5ICs2NDgsNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgy
NQogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJs
eUZ1bmN0aW9uOjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCksIFN0cmluZygpLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9p
bnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKLQogICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5kZXgs
IGZ1bmN0aW9uKTsKLSAgICAgICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICB9CiAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmU1NDVlZGE4MjdmZTkyMWUyYTc3N2Q2ZmQwZTE1ZTlmMzkwN2EyMi4uMDA2YzdkMWY1
ZDg3OWZmMGI5OTQwMjE2NGZmNjNkMDFiYTlkYWFhNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0xMS0z
MCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBhY3RpdmUgbW9kcyBpbiBlbGVtZW50
IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgRml4IGJ1aWxkZXIgZHNsIHRvIHByb2R1Y2UgdGhlIHJpZ2h0IGVsZW1lbnQgc2Vj
dGlvbi4KKyAgICAgICAgSXQgcHJvZHVjZXMgY29ycmVjdCB3YXNtIGNvZGUgZm9yIHRoZSBwcmV2
aW91cyBzcGVjIGFuZCBmb3IgdGhlIHJlZi10eXBlcyBzcGVjIGJlY2F1c2UgdGhlIGNvcmUgc3Bl
YyBpcyBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSByZWYtdHlwZXMuCisgICAgICAgIGh0dHBz
Oi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlvL3JlZmVyZW5jZS10eXBlcy9jb3JlL2JpbmFyeS9tb2R1
bGVzLmh0bWwjZWxlbWVudC1zZWN0aW9uLgorICAgICAgICBBZGRlZCBiYXNpYyB0ZXN0cyBmb3Ig
dGhlIGVsZW1lbnQgc2VjdGlvbi4KKworCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAg
ICAgICAoZXhwb3J0LmRlZmF1bHQuQnVpbGRlci5wcm90b3R5cGUuX3JlZ2lzdGVyU2VjdGlvbkJ1
aWxkZXJzLmNvbnN0LnNlY3Rpb24uaW4uV0FTTS5kZXNjcmlwdGlvbi5zZWN0aW9uLnN3aXRjaC5z
ZWN0aW9uLmNhc2Uuc3RyaW5nX2FwcGVhcmVkX2hlcmUudGhpcy5zZWN0aW9uKToKKyAgICAgICAg
KiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgIChjb25zdC5lbWl0
dGVycy5FbGVtZW50KToKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZf
bnVsbC5qczoKKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2Vs
ZW1lbnRfYWN0aXZlX21vZC5qczogQWRkZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAo
YmFzaWNUZXN0KToKKyAgICAgICAgKHJlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbik6CisgICAg
ICAgICogd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qczoKKyAgICAgICAgKiB3YXNt
L3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qczoKKwogMjAyMC0xMS0zMCAgU2VyZ2V5IFJ1YmFub3Yg
IDxjaGkxODdAZ21haWwuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBp
NjQgc2lnbi1leHRlbnNpb24tb3BzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
QnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGI0ZDcyYjFjNjdiNGUy
NTE0YTE2N2IxYjQzY2QxYjA1OGNmNTgwMzQuLjMyZmZlNmJiYjU2MWE1MzMzODU3ZWQyMzFiMDQ3
YTdmMmFmYmYxMTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pT
VGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC01OTQsOCArNTk0LDggQEAgZXhwb3J0IGRlZmF1bHQg
Y2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRT
ZWN0aW9uKHNlY3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QnVpbGRl
ciA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEVuZDogKCkgPT4gdGhpcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnQ6ICh7dGFibGVJbmRleCA9IDAsIG9mZnNldCwgZnVuY3Rp
b25JbmRpY2VzfSkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNo
KHt0YWJsZUluZGV4LCBvZmZzZXQsIGZ1bmN0aW9uSW5kaWNlc30pOworICAgICAgICAgICAgICAg
ICAgICAgICAgRWxlbWVudDogKHt0YWJsZUluZGV4ID0gMCwgb2Zmc2V0LCBlbGVta2luZCA9IDAs
IGZ1bmN0aW9uSW5kaWNlc30pID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRh
dGEucHVzaCh7dGFibGVJbmRleCwgb2Zmc2V0LCBlbGVta2luZCwgZnVuY3Rpb25JbmRpY2VzfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlG
b3IoZWxlbWVudEJ1aWxkZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1i
bHlCaW5hcnkuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwpp
bmRleCBiMGY0Mzg3ZTBmODdjOTJmNzM2M2RhOWIwMzExZWJiMzQyNDRiNDFkLi4zNThiYjQ4MmQ0
ZTA3MzI2YTIwZTU4OTM0ZTU1MjkyYmI1NTE2MzcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
QnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9X
ZWJBc3NlbWJseUJpbmFyeS5qcwpAQCAtMTk3LDEwICsxOTcsMTMgQEAgY29uc3QgZW1pdHRlcnMg
PSB7CiAgICAgRWxlbWVudDogKHNlY3Rpb24sIGJpbikgPT4gewogICAgICAgICBjb25zdCBkYXRh
ID0gc2VjdGlvbi5kYXRhOwogICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZGF0YS5sZW5n
dGgpOwotICAgICAgICBmb3IgKGNvbnN0IHt0YWJsZUluZGV4LCBvZmZzZXQsIGZ1bmN0aW9uSW5k
aWNlc30gb2YgZGF0YSkgewotICAgICAgICAgICAgaWYgKHRhYmxlSW5kZXggIT0gMCkKLSAgICAg
ICAgICAgICAgICBwdXQoYmluLCAidWludDgiLCAyKTsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2
YXJ1aW50MzIiLCB0YWJsZUluZGV4KTsKKyAgICAgICAgZm9yIChjb25zdCB7dGFibGVJbmRleCwg
b2Zmc2V0LCBlbGVta2luZCwgZnVuY3Rpb25JbmRpY2VzfSBvZiBkYXRhKSB7CisgICAgICAgICAg
ICBsZXQgZmxhZ3MgPSB0YWJsZUluZGV4ID09IDAgPyAwIDogMjsKKyAgICAgICAgICAgIHB1dChi
aW4sICJ1aW50OCIsIGZsYWdzKTsKKworICAgICAgICAgICAgaWYgKGZsYWdzID09IDIpIHsKKyAg
ICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHRhYmxlSW5kZXgpOworICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBsZXQgaW5pdEV4cHI7CiAgICAgICAgICAgICBpZiAodHlwZW9m
IG9mZnNldCA9PT0gIm51bWJlciIpCkBAIC0yMDksNiArMjEyLDEwIEBAIGNvbnN0IGVtaXR0ZXJz
ID0gewogICAgICAgICAgICAgICAgIGluaXRFeHByID0gb2Zmc2V0OwogICAgICAgICAgICAgcHV0
SW5pdEV4cHIoYmluLCBpbml0RXhwcik7CiAKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSAyKSB7
CisgICAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIGVsZW1raW5kKTsKKyAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGZ1bmN0aW9uSW5kaWNlcy5s
ZW5ndGgpOwogICAgICAgICAgICAgZm9yIChjb25zdCBmdW5jdGlvbkluZGV4IG9mIGZ1bmN0aW9u
SW5kaWNlcykKICAgICAgICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZnVuY3Rpb25J
bmRleCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3Jl
Zl9udWxsLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5q
cwppbmRleCA5ZGRhN2FmZmE0MDBhNDQzOGE1MjM2MmU5YjMzYzBiODIzNzEyMGNjLi41MzI1YWJh
YTNhNmZmNzYzYjRmYTA5ZDhiMzgzYWFlZDRiOThlNzA2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9y
ZWZlcmVuY2VzLXNwZWMtdGVzdHMvcmVmX251bGwuanMKQEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rp
b24gbW9kdWxlKGJ5dGVzLCB2YWxpZCA9IHRydWUpIHsKICAgICB0aHJvdyBuZXcgRXJyb3IoIldh
c20gdmFsaWRhdGUgdGhyb3dzIik7CiAgIH0KICAgaWYgKHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsK
LSAgICAvL3Rocm93IG5ldyBFcnJvcigiV2FzbSB2YWxpZGF0ZSBmYWlsdXJlIiArICh2YWxpZCA/
ICIiIDogIiBleHBlY3RlZCIpKTsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUg
ZmFpbHVyZSIgKyAodmFsaWQgPyAiIiA6ICIgZXhwZWN0ZWQiKSk7CiAgIH0KICAgcmV0dXJuIG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL2VsZW1lbnRfYWN0aXZlX21vZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTcwODQwMDY4MzRkMzdlZTYz
YjcyZWI5OWZhZjM5YjdjZjAzOWNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3Jl
ZmVyZW5jZXMvZWxlbWVudF9hY3RpdmVfbW9kLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8vQCBydW5X
ZWJBc3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcz10cnVlIikKK2ltcG9y
dCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCitmdW5jdGlvbiBtb2R1bGUoYnl0
ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVz
Lmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5j
aGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZl
cik7Cit9CisKK2Z1bmN0aW9uIGJhc2ljVGVzdCgpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgIChm
dW5jICRmIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5jb25zdCAzNykKKyAgICApCisgICAgKGZ1
bmMgJGcgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmNvbnN0IDQyKQorICAgICkKKyAgICAodGFi
bGUgJHQxIDEwIGZ1bmNyZWYpCisgICAgKHRhYmxlICR0MiAyMCBmdW5jcmVmKQorICAgIChlbGVt
IChpMzIuY29uc3QgMykgZnVuY3JlZiAocmVmLmZ1bmMgJGcpIChyZWYubnVsbCBmdW5jKSAocmVm
LmZ1bmMgJGYpIChyZWYubnVsbCBmdW5jKSkKKyAgICAoZWxlbSAodGFibGUgJHQyKSAoaTMyLmNv
bnN0IDcpIGZ1bmNyZWYgKHJlZi5mdW5jICRmKSAocmVmLm51bGwgZnVuYykgKHJlZi5mdW5jICRn
KSkKKyAgICAoZnVuYyAoZXhwb3J0ICJnZXRfdGJsMSIpIChwYXJhbSAkaWR4IGkzMikgKHJlc3Vs
dCBmdW5jcmVmKQorICAgICAgKHRhYmxlLmdldCAkdDEgKGxvY2FsLmdldCAkaWR4KSkKKyAgICAp
CisgICAgKGZ1bmMgKGV4cG9ydCAiZ2V0X3RibDIiKSAocGFyYW0gJGlkeCBpMzIpIChyZXN1bHQg
ZnVuY3JlZikKKyAgICAgICh0YWJsZS5nZXQgJHQyIChsb2NhbC5nZXQgJGlkeCkpCisgICAgKQor
ICApCisgICovCisgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBc
eDAxXHg3Zlx4NjBceDAxXHg3Zlx4MDFceDcwXHgwM1x4MDVceDA0XHgwMFx4MDBceDAxXHgwMVx4
MDRceDA3XHgwMlx4NzBceDAwXHgwYVx4NzBceDAwXHgxNFx4MDdceDE3XHgwMlx4MDhceDY3XHg2
NVx4NzRceDVmXHg3NFx4NjJceDZjXHgzMVx4MDBceDAyXHgwOFx4NjdceDY1XHg3NFx4NWZceDc0
XHg2Mlx4NmNceDMyXHgwMFx4MDNceDA5XHgyMlx4MDJceDA0XHg0MVx4MDNceDBiXHgwNFx4ZDJc
eDAxXHgwYlx4ZDBceDcwXHgwYlx4ZDJceDAwXHgwYlx4ZDBceDcwXHgwYlx4MDZceDAxXHg0MVx4
MDdceDBiXHg3MFx4MDNceGQyXHgwMFx4MGJceGQwXHg3MFx4MGJceGQyXHgwMVx4MGJceDBhXHgx
OVx4MDRceDA0XHgwMFx4NDFceDI1XHgwYlx4MDRceDAwXHg0MVx4MmFceDBiXHgwNlx4MDBceDIw
XHgwMFx4MjVceDAwXHgwYlx4MDZceDAwXHgyMFx4MDBceDI1XHgwMVx4MGIiKSk7CisKKyAgYXNz
ZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDEoMykoKSwgNDIpOworICBhc3NlcnQuZXEo
aW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMSg0KSwgbnVsbCk7CisgIGFzc2VydC5lcShpbnN0YW5j
ZS5leHBvcnRzLmdldF90YmwxKDUpKCksIDM3KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9y
dHMuZ2V0X3RibDEoNiksIG51bGwpOworCisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdl
dF90YmwyKDcpKCksIDM3KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIo
OCksIG51bGwpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMig5KSgpLCA0
Mik7Cit9CisKK2Z1bmN0aW9uIHJlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbigpIHsKKyAgLyoK
KyAgKG1vZHVsZQorICAgICh0YWJsZSAkdCAxMCBmdW5jcmVmKQorICAgIChlbGVtIChpMzIuY29u
c3QgMykgZnVuY3JlZiAocmVmLm51bGwgZXh0ZXJuKSkKKyAgKQorICAqLworICBhc3NlcnQudGhy
b3dzKCgpID0+IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDA0XHgw
NFx4MDFceDcwXHgwMFx4MGFceDA5XHgwOVx4MDFceDA0XHg0MVx4MDNceDBiXHgwMVx4ZDBceDZm
XHgwYiIpLAorICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICJXZWJBc3NlbWJseS5Nb2R1
bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDI0OiByZWYubnVsbCBleHRlcm4gaXMgZm9yYmlkZGVu
IGluIGVsZW1lbnQgc2VjdGlvbidzLCAwdGggZWxlbWVudCdzIDB0aCBpbmRleCAoZXZhbHVhdGlu
ZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiKTsKK30KKworYmFzaWNUZXN0KCk7
CityZWZOdWxsRXh0ZXJuSW5FbGVtc1NlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2Vz
L2VsZW1lbnRfcGFyc2luZy5qcwppbmRleCA5M2JlMWZkNjU3NjJkNDQ1NWFhZTkzNWQzMmU3YzZk
MzY0MDhjYTAxLi4wMWY4OTAyNDgyYzZiMmZiMDc0NzgyNGE1NzM2YjI3MzJkZTBmYWY3IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMKKysrIGIv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCkBAIC0yMyw0ICsyMyw0
IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDk3XHg4MFx4ODBceDgwCiAvLyAgKyAiXHgwMiIKICAgICArICJceDAxIgog
ICAgICsgIlx4NDFceDAxXHgwYlx4MDFceDAyXHgwYVx4ZDRceDgwXHg4MFx4ODBceDAwXHgwN1x4
ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHhkMVx4MGJceDg1XHg4MFx4ODBceDgwXHgw
MFx4MDBceDIwXHgwMFx4ZDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODhceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgyMFx4MDBceDI2XHgwMFx4MGJceDhjXHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMVx4ZDBceDI2XHgwMFx4NDFceDAxXHhkMFx4MjZceDAxXHgwYlx4
ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgyNVx4MDBceDEwXHgwMFx4MGJceDg4XHg4
MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4MjVceDAxXHgxMFx4MDFceDBiIiksCi0gICAgRXJy
b3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE0MzogY2FuJ3Qg
Z2V0IDB0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgw
MCBvciAweDAyIGZvbGxvd2VkIGJ5IGEgdGFibGUgaW5kZXggKGV2YWx1YXRpbmcgJ25ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYnVmZmVyKScpIik7CisgICAgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1
bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE0MzogdW5zdXBwb3J0ZWQgMHRoIEVsZW1lbnQgcmVz
ZXJ2ZWQgYnl0ZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJyki
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMgYi9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9tdWx0aXRhYmxlLmpzCmluZGV4IDQ4YTg1NjBjMGM2MDMy
MGU1Njc2MjA0ZDIwNjMyMTEyMDJiMDJiMjQuLjEwMDcwMTVjMmI4YjE1YmMwYmI3MzcxNGI3NDY1
YTk5ZTMzZjgwNWUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFi
bGUuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwpAQCAtMzA0
LDcgKzMwNCw3IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyCiAgICAgICAgICAgICAuRnVuY3Rp
b24oInJldDQyIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCiAgICAgICAgICAgICAgIC5J
MzJDb25zdCg0MikKICAgICAgICAgICAgIC5FbmQoKQotICAgICAgICAgIC5FbmQoKS5XZWJBc3Nl
bWJseSgpLmdldCgpKSksIEVycm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2Ug
YXQgYnl0ZSA0MTogVGFibGUgMCBtdXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBl
bGVtZW50IHNlY3Rpb24gKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisg
ICAgICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDQyOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBl
ICdmdW5jcmVmJyB0byBoYXZlIGFuIGVsZW1lbnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZScpIikKIAogYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAg
ICAgICAuVHlwZSgpLkVuZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415195</attachid>
            <date>2020-12-01 23:34:54 -0800</date>
            <delta_ts>2020-12-02 04:00:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219192-20201202143452.patch</filename>
            <type>text/plain</type>
            <size>32605</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjRjNGUxNTQ4Yzk2NzkwZDBlYTc5ZjNmMDFkMmZiZWQxYzViOGNlLi5jZjRiMTQ2NTFhODE4NzMy
NTExNzYwOTY0M2Y3MzY2NGUyOWJlYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0xMS0zMCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciBh
Y3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRqdXN0IHdhc20gcGFyc2VyIHRvIHBhcnNl
IG5ldyBmb3JtIG9mIGVsZW1lbnQgc2VjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly93ZWJhc3NlbWJs
eS5naXRodWIuaW8vcmVmZXJlbmNlLXR5cGVzL2NvcmUvYmluYXJ5L21vZHVsZXMuaHRtbCNlbGVt
ZW50LXNlY3Rpb24uCisKKyAgICAgICAgKiB3YXNtL1dhc21FbnRyeVBsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpFbnRyeVBsYW46OnByZXBhcmUpOgorICAgICAgICAqIHdhc20vV2FzbUZv
cm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjpFbGVtZW50OjpFbGVtZW50KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6RWxlbWVudDo6YWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFy
c2VFbGVtZW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6dmFsaWRhdGVF
bGVtZW50VGFibGVJZHgpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJz
ZUkzMkluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VF
bGVtS2luZCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5kZXhD
b3VudEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6
cGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1TZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbVNlY3Rpb24pOgorICAgICAgICAq
IHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKToKKwogMjAyMC0xMS0zMCAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBpNjQgc2lnbi1leHRlbnNp
b24tb3BzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBs
YW4uY3BwCmluZGV4IDBhOWNmMDU0M2E0ZmE5YThmYjY2ZGVmM2IwNzEyOWE2MzRhYzM3NTMuLjk0
M2M0ZGExNDBhMDU3N2I3YzBhYmM5Y2RlOGI5YWM1NTUwNzUxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC0xNDMsOSArMTQzLDkgQEAgdm9p
ZCBFbnRyeVBsYW46OnByZXBhcmUoKQogICAgIH0KIAogICAgIGZvciAoY29uc3QgYXV0byYgZWxl
bWVudCA6IG1fbW9kdWxlSW5mb3JtYXRpb24tPmVsZW1lbnRzKSB7Ci0gICAgICAgIGZvciAoY29u
c3QgdWludDMyX3QgZWxlbWVudEluZGV4IDogZWxlbWVudC5mdW5jdGlvbkluZGljZXMpIHsKLSAg
ICAgICAgICAgIGlmIChlbGVtZW50SW5kZXggPj0gaW1wb3J0RnVuY3Rpb25Db3VudCkKLSAgICAg
ICAgICAgICAgICBtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmFkZChlbGVtZW50SW5kZXggLSBp
bXBvcnRGdW5jdGlvbkNvdW50KTsKKyAgICAgICAgZm9yIChjb25zdCB1aW50MzJfdCBmdW5jdGlv
bkluZGV4IDogZWxlbWVudC5mdW5jdGlvbkluZGljZXMpIHsKKyAgICAgICAgICAgIGlmICghRWxl
bWVudDo6aXNOdWxsRnVuY0luZGV4KGZ1bmN0aW9uSW5kZXgpICYmIGZ1bmN0aW9uSW5kZXggPj0g
aW1wb3J0RnVuY3Rpb25Db3VudCkKKyAgICAgICAgICAgICAgICBtX2V4cG9ydGVkRnVuY3Rpb25J
bmRpY2VzLmFkZChmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25Db3VudCk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
b3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCAx
ZmNmZGYyYmEyMDBjNDUyYjVmYTM2MzEzZGE0YTQ3NTM0YzQ3NWM2Li4xYzdlYzQ3ZTgyM2E4MTI5
MGYxNTVjYzRhZjkzM2ZiZTdmOWU3MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1
ZGUgIldhc21QYWdlQ291bnQuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCisjaW5jbHVk
ZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMjI2LDEzICsyMjcsMzQgQEAgc3RydWN0IFNlZ21lbnQg
ewogCiBzdHJ1Y3QgRWxlbWVudCB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwotICAgIEVsZW1lbnQodWludDMyX3QgdGFibGVJbmRleCwgSTMySW5pdEV4cHIgb2Zmc2V0KQot
ICAgICAgICA6IHRhYmxlSW5kZXgodGFibGVJbmRleCkKLSAgICAgICAgLCBvZmZzZXQob2Zmc2V0
KQorCisgICAgLy8gbnVsbEZ1bmNJbmRleCByZXByZXNlbnRzIHRoZSBjYXNlIHdoZW4gYW4gZWxl
bWVudCBzZWdtZW50IChvZiB0eXBlIGZ1bmNyZWYpCisgICAgLy8gY29udGFpbnMgYSBudWxsIGVs
ZW1lbnQuCisgICAgY29uc3RleHByIHN0YXRpYyB1aW50MzJfdCBudWxsRnVuY0luZGV4ID0gVUlO
VDMyX01BWDsKKworICAgIGVudW0gY2xhc3MgS2luZCA6IHVpbnQ4X3QgeworICAgICAgICBBY3Rp
dmUsCisgICAgICAgIFBhc3NpdmUsCisgICAgICAgIERlY2xhcmVkLAorICAgIH07CisKKyAgICBF
bGVtZW50KEVsZW1lbnQ6OktpbmQga2luZCwgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZSwg
dWludDMyX3QgdGFibGVJbmRleCwgT3B0aW9uYWw8STMySW5pdEV4cHI+IGluaXRFeHByKQorICAg
ICAgICA6IGtpbmQoa2luZCkKKyAgICAgICAgLCBlbGVtZW50VHlwZShlbGVtZW50VHlwZSkKKyAg
ICAgICAgLCB0YWJsZUluZGV4KHRhYmxlSW5kZXgpCisgICAgICAgICwgb2Zmc2V0SWZBY3RpdmUo
aW5pdEV4cHIpCiAgICAgeyB9CiAKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
a2luZCA9PSBLaW5kOjpBY3RpdmU7IH0KKworICAgIHN0YXRpYyBib29sIGlzTnVsbEZ1bmNJbmRl
eCh1aW50MzJfdCBpZHgpIHsgcmV0dXJuIGlkeCA9PSBudWxsRnVuY0luZGV4OyB9CisKKyAgICBL
aW5kIGtpbmQ7CisgICAgVGFibGVFbGVtZW50VHlwZSBlbGVtZW50VHlwZTsKICAgICB1aW50MzJf
dCB0YWJsZUluZGV4OwotICAgIEkzMkluaXRFeHByIG9mZnNldDsKKyAgICBPcHRpb25hbDxJMzJJ
bml0RXhwcj4gb2Zmc2V0SWZBY3RpdmU7CisKKyAgICAvLyBJbmRleCBtYXkgYmUgbnVsbEZ1bmNJ
bmRleC4KICAgICBWZWN0b3I8dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCBm
NjUzZTI5MTIzYWUyZmM0N2I1MWU0YTBjOThiMDY0Y2U0OTNjZmM1Li5kNWFkM2QwMWM3MzZjZTY2
MmJlMDU3NGEzNjRhZDY2MGRhOTBjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0zODQsNDEgKzM4NCwxNDUgQEAgYXV0byBT
ZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihlbGVtZW50Q291bnQgPiBtYXhUYWJsZUVudHJpZXMsICJFbGVtZW50IHNl
Y3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGVsZW1lbnRDb3VudCwgIiBtYXhpbXVtICIsIG1h
eFRhYmxlRW50cmllcyk7CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9pbmZvLT5lbGVtZW50
cy50cnlSZXNlcnZlQ2FwYWNpdHkoZWxlbWVudENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1lbW9y
eSBmb3IgIiwgZWxlbWVudENvdW50LCAiIEVsZW1lbnRzIik7CiAgICAgZm9yICh1bnNpZ25lZCBl
bGVtZW50TnVtID0gMDsgZWxlbWVudE51bSA8IGVsZW1lbnRDb3VudDsgKytlbGVtZW50TnVtKSB7
Ci0gICAgICAgIHVpbnQzMl90IHRhYmxlSW5kZXg7Ci0gICAgICAgIHVpbnQ2NF90IGluaXRFeHBy
Qml0czsKLSAgICAgICAgdWludDhfdCBpbml0T3Bjb2RlOwotICAgICAgICB1aW50MzJfdCBpbmRl
eENvdW50OworICAgICAgICB1aW50OF90IGVsZW1lbnRGbGFnczsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VVSW50OChlbGVtZW50RmxhZ3MpLCAiY2FuJ3QgZ2V0ICIsIGVsZW1l
bnROdW0sICJ0aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlbGVtZW50
IGZsYWdzIik7CisKKyAgICAgICAgc3dpdGNoIChlbGVtZW50RmxhZ3MpIHsKKyAgICAgICAgY2Fz
ZSAweDAwOiB7CisgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJbmRleCA9IDA7
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRlRWxlbWVudFRh
YmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMySW5pdEV4cHI+
IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkz
MkluaXRFeHByKGluaXRFeHByKSk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7
CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZv
ckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKKyAgICAgICAgICAgIEFT
U0VSVCghIW1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdKTsKIAotICAgICAgICB1aW50OF90IG1h
Z2ljOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG1hZ2ljKSB8fCAo
bWFnaWMgJiYgbWFnaWMgIT0gMiksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1l
bnQgcmVzZXJ2ZWQgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIGVpdGhlciAweDAwIG9yIDB4MDIgZm9s
bG93ZWQgYnkgYSB0YWJsZSBpbmRleCIpOworICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50KEVs
ZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwgdGFibGVJbmRl
eCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
ZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAi
Y2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNl
cyIpOwogCi0gICAgICAgIGlmIChtYWdpYyA9PSAyKQorICAgICAgICAgICAgZm9yICh1aW50MzJf
dCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JFbGVtZW50U2VjdGlvbihmdW5jSWR4LCBlbGVtZW50TnVt
LCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnVuY2hl
Y2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pbmZv
LT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDE6IHsKKyAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAi
cmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0aCBFbGVtZW50IHJlc2Vy
dmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIC8vIEFkZCBzdXBwb3J0IGZvciBwYXNzaXZlIGVsZW1l
bnQgc2VnbWVudHMgYW5kIHRhYmxlLmluaXQuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI5NworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDAyOiB7CisgICAgICAgICAgICB1aW50MzJf
dCB0YWJsZUluZGV4OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJV
SW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQg
dGFibGUgaW5kZXgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGFibGVJbmRleCA9IDA7
Ci0gICAgICAgIAotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRhYmxlSW5kZXggPj0gbV9p
bmZvLT50YWJsZUNvdW50KCksICJFbGVtZW50IHNlY3Rpb24gZm9yIFRhYmxlICIsIHRhYmxlSW5k
ZXgsICIgZXhjZWVkcyBhdmFpbGFibGUgVGFibGUgIiwgbV9pbmZvLT50YWJsZUNvdW50KCkpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby0+dGFibGVzW3RhYmxlSW5kZXhdLnR5
cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiVGFibGUgIiwgdGFibGVJbmRleCwg
IiBtdXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24iKTsK
LSAgICAgICAgVHlwZSBpbml0RXhwclR5cGU7Ci0gICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJf
RkFJTFMocGFyc2VJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMsIGluaXRFeHByVHlw
ZSkpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluaXRFeHByVHlwZSAhPSBJMzIsICJF
bGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIik7Ci0gICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4Q291bnQpLCAiY2FuJ3QgZ2V0ICIsIGVs
ZW1lbnROdW0sICJ0aCBpbmRleCBjb3VudCBmb3IgRWxlbWVudCBzZWN0aW9uIik7Ci0gICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXhDb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggaW5k
ZXggY291bnQgaXMgdG9vIGJpZyAiLCBpbmRleENvdW50KTsKKyAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOwor
CisgICAgICAgICAgICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAg
ICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsK
KworICAgICAgICAgICAgdWludDhfdCBlbGVtZW50S2luZDsKKyAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VFbGVtZW50S2luZChlbGVtZW50S2luZCkpOworCisgICAg
ICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtZW50U2VjdGlvbihpbmRleENvdW50LCBl
bGVtZW50TnVtKSk7CisgICAgICAgICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUlu
ZGV4XSk7CisKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudChFbGVtZW50OjpLaW5kOjpBY3Rp
dmUsIFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsIHRhYmxlSW5kZXgsIFdURk1vdmUoaW5pdEV4
cHIpKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWVsZW1lbnQuZnVuY3Rpb25J
bmRpY2VzLnRyeVJlc2VydmVDYXBhY2l0eShpbmRleENvdW50KSwgImNhbid0IGFsbG9jYXRlIG1l
bW9yeSBmb3IgIiwgaW5kZXhDb3VudCwgIiBFbGVtZW50IGluZGljZXMiKTsKKworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgaW5kZXhDb3VudDsgKytpbmRleCkg
eworICAgICAgICAgICAgICAgIHVpbnQzMl90IGZ1bmNJZHg7CisgICAgICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmNJZHhGb3JFbGVtZW50U2VjdGlvbihmdW5j
SWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rp
b25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KIAotICAg
ICAgICBBU1NFUlQoISFtX2luZm8tPnRhYmxlc1t0YWJsZUluZGV4XSk7CisgICAgICAgICAgICBt
X2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgwMzogeworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2Vz
KCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51bSwgInRoIEVsZW1lbnQg
cmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgLy8gQWRkIHN1cHBvcnQgZm9yIGRlY2xhcmF0
aXZlIGVsZW1lbnQgc2VnbWVudHMuCisgICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM4NQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSAweDA0OiB7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMg
YXJlIG5vdCBlbmFibGVkIik7CisgICAgICAgICAgICBjb25zdGV4cHIgdWludDMyX3QgdGFibGVJ
bmRleCA9IDA7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRl
RWxlbWVudFRhYmxlSWR4KHRhYmxlSW5kZXgpKTsKKworICAgICAgICAgICAgT3B0aW9uYWw8STMy
SW5pdEV4cHI+IGluaXRFeHByOworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlM
UyhwYXJzZUkzMkluaXRFeHByKGluaXRFeHByKSk7CiAKLSAgICAgICAgRWxlbWVudCBlbGVtZW50
KHRhYmxlSW5kZXgsIG1ha2VJMzJJbml0RXhwcihpbml0T3Bjb2RlLCBpbml0RXhwckJpdHMpKTsK
LSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5
UmVzZXJ2ZUNhcGFjaXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAi
LCBpbmRleENvdW50LCAiIEVsZW1lbnQgaW5kaWNlcyIpOworICAgICAgICAgICAgdWludDMyX3Qg
aW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJ
bmRleENvdW50Rm9yRWxlbWVudFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOworICAg
ICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0pOwogCi0gICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsK
LSAgICAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBF
bGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAi
dGggaW5kZXgiKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRl
eCA+PSBtX2luZm8tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSwgIkVsZW1lbnQgc2VjdGlvbidz
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCBpcyAiLCBm
dW5jdGlvbkluZGV4LCAiIHdoaWNoIGV4Y2VlZHMgdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlIHNp
emUgb2YgIiwgbV9pbmZvLT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOworICAgICAgICAgICAg
RWxlbWVudCBlbGVtZW50KEVsZW1lbnQ6OktpbmQ6OkFjdGl2ZSwgVGFibGVFbGVtZW50VHlwZTo6
RnVuY3JlZiwgdGFibGVJbmRleCwgV1RGTW92ZShpbml0RXhwcikpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighZWxlbWVudC5mdW5jdGlvbkluZGljZXMudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGluZGV4Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiLCBpbmRleENvdW50
LCAiIEVsZW1lbnQgaW5kaWNlcyIpOwogCi0gICAgICAgICAgICBlbGVtZW50LmZ1bmN0aW9uSW5k
aWNlcy51bmNoZWNrZWRBcHBlbmQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBpbmRleENvdW50OyArK2luZGV4KSB7CisgICAgICAg
ICAgICAgICAgdWludDMyX3QgZnVuY0lkeDsKKyAgICAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlRnVuY0lkeEZyb21SZWZFeHBGb3JFbGVtZW50U2VjdGlvbihmdW5j
SWR4LCBlbGVtZW50TnVtLCBpbmRleCkpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuZnVuY3Rp
b25JbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChmdW5jSWR4KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbV9pbmZvLT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDB4MDU6IHsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKKyAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgInVuc3VwcG9ydGVkICIsIGVsZW1lbnROdW0sICJ0
aCBFbGVtZW50IHJlc2VydmVkIGJ5dGUiKTsKKyAgICAgICAgICAgIC8vIEFkZCBzdXBwb3J0IGZv
ciBwYXNzaXZlIGVsZW1lbnQgc2VnbWVudHMgYW5kIHRhYmxlLmluaXQuCisgICAgICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTI5Nwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSAweDA2OiB7CisgICAg
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVy
ZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAKLSAgICAgICAgbV9pbmZv
LT5lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CisgICAgICAgICAg
ICB1aW50MzJfdCB0YWJsZUluZGV4OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VWYXJVSW50MzIodGFibGVJbmRleCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51bSwgInRo
IEVsZW1lbnQgdGFibGUgaW5kZXgiKTsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJf
RkFJTFModmFsaWRhdGVFbGVtZW50VGFibGVJZHgodGFibGVJbmRleCkpOworCisgICAgICAgICAg
ICBPcHRpb25hbDxJMzJJbml0RXhwcj4gaW5pdEV4cHI7CisgICAgICAgICAgICBXQVNNX0ZBSUxf
SUZfSEVMUEVSX0ZBSUxTKHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIpKTsKKworICAgICAgICAg
ICAgVHlwZSByZWZUeXBlOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VS
ZWZUeXBlKHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocmVmVHlwZSAhPSBGdW5jcmVmLCAicmVm
dHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKworICAgICAgICAg
ICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJf
RkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbWVudFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVu
dE51bSkpOworICAgICAgICAgICAgQVNTRVJUKCEhbV9pbmZvLT50YWJsZXNbdGFibGVJbmRleF0p
OworCisgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQoRWxlbWVudDo6S2luZDo6QWN0aXZlLCBU
YWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCB0YWJsZUluZGV4LCBXVEZNb3ZlKGluaXRFeHByKSk7
CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFlbGVtZW50LmZ1bmN0aW9uSW5kaWNl
cy50cnlSZXNlcnZlQ2FwYWNpdHkoaW5kZXhDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yICIsIGluZGV4Q291bnQsICIgRWxlbWVudCBpbmRpY2VzIik7CisKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGluZGV4Q291bnQ7ICsraW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICB1aW50MzJfdCBmdW5jSWR4OworICAgICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jSWR4RnJvbVJlZkV4cEZvckVsZW1lbnRTZWN0aW9u
KGZ1bmNJZHgsIGVsZW1lbnROdW0sIGluZGV4KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5m
dW5jdGlvbkluZGljZXMudW5jaGVja2VkQXBwZW5kKGZ1bmNJZHgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2luZm8tPmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVs
ZW1lbnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMHgw
NzogeworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0cnVlLCAidW5zdXBwb3J0ZWQgIiwgZWxlbWVudE51
bSwgInRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSIpOworICAgICAgICAgICAgLy8gQWRkIHN1cHBv
cnQgZm9yIGRlY2xhcmF0aXZlIGVsZW1lbnQgc2VnbWVudHMuCisgICAgICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTM4NQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYodHJ1ZSwgImNhbid0IGdldCAiLCBlbGVtZW50TnVtLCAidGggRWxl
bWVudCByZXNlcnZlZCBieXRlIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4geyB9
OwpAQCAtNTEwLDYgKzYxNCw4MCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIo
dWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgIHJldHVy
biB7IH07CiB9CiAKK2F1dG8gU2VjdGlvblBhcnNlcjo6dmFsaWRhdGVFbGVtZW50VGFibGVJZHgo
dWludDMyX3QgdGFibGVJbmRleCkgLT4gUGFydGlhbFJlc3VsdAoreworICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYodGFibGVJbmRleCA+PSBtX2luZm8tPnRhYmxlQ291bnQoKSwgIkVsZW1lbnQgc2Vj
dGlvbiBmb3IgVGFibGUgIiwgdGFibGVJbmRleCwgIiBleGNlZWRzIGF2YWlsYWJsZSBUYWJsZSAi
LCBtX2luZm8tPnRhYmxlQ291bnQoKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8t
PnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgIT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZiwg
IlRhYmxlICIsIHRhYmxlSW5kZXgsICIgbXVzdCBoYXZlIHR5cGUgJ2Z1bmNyZWYnIHRvIGhhdmUg
YW4gZWxlbWVudCBzZWN0aW9uIik7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHIoT3B0aW9uYWw8STMySW5pdEV4cHI+JiBpbml0RXhw
cikgLT4gUGFydGlhbFJlc3VsdAoreworICAgIHVpbnQ4X3QgaW5pdE9wY29kZTsKKyAgICB1aW50
NjRfdCBpbml0RXhwckJpdHM7CisgICAgVHlwZSBpbml0RXhwclR5cGU7CisgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cywg
aW5pdEV4cHJUeXBlKSk7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbml0RXhwclR5cGUgIT0g
STMyLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiIpOworICAgIGluaXRF
eHByID0gbWFrZUkzMkluaXRFeHByKGluaXRPcGNvZGUsIGluaXRFeHByQml0cyk7CisKKyAgICBy
ZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudEtpbmQodWlu
dDhfdCYgcmVzdWx0RWxlbWVudEtpbmQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICB1aW50OF90
IGVsZW1lbnRLaW5kOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDgoZWxlbWVu
dEtpbmQpLCAiY2FuJ3QgZ2V0IGVsZW1lbnQga2luZCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoISFlbGVtZW50S2luZCwgImVsZW1lbnQga2luZCBtdXN0IGJlIHplcm8iKTsKKyAgICByZXN1
bHRFbGVtZW50S2luZCA9IGVsZW1lbnRLaW5kOworCisgICAgcmV0dXJuIHsgfTsKK30KKworYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluZGV4Q291bnRGb3JFbGVtZW50U2VjdGlvbih1aW50MzJf
dCYgcmVzdWx0SW5kZXhDb3VudCwgY29uc3QgdW5zaWduZWQgZWxlbWVudE51bSkgLT4gUGFydGlh
bFJlc3VsdAoreworICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXhDb3VudCksICJjYW4ndCBnZXQgIiwgZWxlbWVudE51
bSwgInRoIGluZGV4IGNvdW50IGZvciBFbGVtZW50IHNlY3Rpb24iKTsKKyAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKGluZGV4Q291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpLCAiRWxlbWVudCBzZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGluZGV4IGNvdW50IGlz
IHRvbyBiaWcgIiwgaW5kZXhDb3VudCk7CisgICAgcmVzdWx0SW5kZXhDb3VudCA9IGluZGV4Q291
bnQ7CisKKyAgICByZXR1cm4geyB9OworfQorCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y0lkeEZyb21SZWZFeHBGb3JFbGVtZW50U2VjdGlvbih1aW50MzJfdCYgZnVuY0lkeCwgY29uc3Qg
dW5zaWduZWQgZWxlbWVudE51bSwgY29uc3QgdW5zaWduZWQgaW5kZXgpIC0+IFBhcnRpYWxSZXN1
bHQKK3sKKyAgICB1aW50OF90IG9wY29kZTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVVJbnQ4KG9wY29kZSksICJjYW4ndCBnZXQgb3Bjb2RlIGZvciBleHAgaW4gZWxlbWVudCBzZWN0
aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7
CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigob3Bjb2RlICE9IFJlZkZ1bmMpICYmIChvcGNvZGUg
IT0gUmVmTnVsbCksICJvcGNvZGUgZm9yIGV4cCBpbiBlbGVtZW50IHNlY3Rpb24ncyBzaG91bGQg
YmUgZWl0aGVyIHJlZi5mdW5jIG9yIHJlZi5udWxsICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50
J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOworCisgICAgaWYgKG9wY29kZSA9PSBSZWZGdW5jKSB7
CisgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IEVsZW1lbnQg
c2VjdGlvbidzICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRl
eCIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZv
LT5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50
TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRl
eCwgIiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1f
aW5mby0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICAgICAgZnVuY0lkeCA9IGZ1bmN0
aW9uSW5kZXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOworICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVs
bCB0eXBlIG11c3QgYmUgYSBmdW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYodHlwZU9mTnVsbCAhPSBGdW5jcmVmLCAicmVmLm51bGwgZXh0ZXJu
IGlzIGZvcmJpZGRlbiBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVudE51bSwgInRoIGVs
ZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4Iik7CisgICAgICAgIGZ1bmNJZHggPSBFbGVtZW50
OjpudWxsRnVuY0luZGV4OworICAgIH0KKworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
VUludDgob3Bjb2RlKSwgImNhbid0IGdldCBvcGNvZGUgZm9yIGV4cCBlbmQgaW4gZWxlbWVudCBz
ZWN0aW9uJ3MgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBpbmRleCwgInRoIGluZGV4
Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihvcGNvZGUgIT0gRW5kLCAibWFsZm9ybWVkIGV4
cHIgaW4gZWxlbWVudCBzZWN0aW9uJ3MiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGlu
ZGV4LCAidGggaW5kZXgiKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK2F1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VGdW5jSWR4Rm9yRWxlbWVudFNlY3Rpb24odWludDMyX3QmIGZ1bmNJZHgsIGNv
bnN0IHVuc2lnbmVkIGVsZW1lbnROdW0sIGNvbnN0IHVuc2lnbmVkIGluZGV4KSAtPiBQYXJ0aWFs
UmVzdWx0Cit7CisgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCBFbGVtZW50
IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5k
ZXgiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5m
dW5jdGlvbkluZGV4U3BhY2VTaXplKCksICJFbGVtZW50IHNlY3Rpb24ncyAiLCBlbGVtZW50TnVt
LCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXggaXMgIiwgZnVuY3Rpb25JbmRleCwg
IiB3aGljaCBleGNlZWRzIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSBzaXplIG9mICIsIG1faW5m
by0+ZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKKyAgICBmdW5jSWR4ID0gZnVuY3Rpb25JbmRl
eDsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VHbG9i
YWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICB1aW50OF90IG11dGFiaWxpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2VjdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNlY3Rpb25QYXJzZXIuaAppbmRleCA4NmI5ODBhYzA2OGUzZjc4M2FkODVmZGNkY2VlYjEyOGRl
NWRmY2QzLi4wM2E3ZWVjOWIxODFkN2FjZDY2OGU3ZDM5NmQzNjkzYjA4OTkwYjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAgLTY3LDYg
KzY3LDEzIEBAIHByaXZhdGU6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VSZXNpemFibGVMaW1pdHModWludDMyX3QmIGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90
PiYgbWF4aW11bSwgYm9vbCYgaXNTaGFyZWQsIExpbWl0c1R5cGUpOwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlSW5pdEV4cHIodWludDhfdCYsIHVpbnQ2NF90Jiwg
VHlwZSYgaW5pdEV4cHJUeXBlKTsKIAorICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByKE9wdGlvbmFsPEkzMkluaXRFeHBy
PiYpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRWxlbWVudEtp
bmQodWludDhfdCYgZWxlbWVudEtpbmQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlSW5kZXhDb3VudEZvckVsZW1lbnRTZWN0aW9uKHVpbnQzMl90JiwgY29uc3Qg
dW5zaWduZWQpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVu
Y0lkeEZyb21SZWZFeHBGb3JFbGVtZW50U2VjdGlvbih1aW50MzJfdCYsIGNvbnN0IHVuc2lnbmVk
LCBjb25zdCB1bnNpZ25lZCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VGdW5jSWR4Rm9yRWxlbWVudFNlY3Rpb24odWludDMyX3QmLCBjb25zdCB1bnNpZ25lZCwg
Y29uc3QgdW5zaWduZWQpOworCiAgICAgc2l6ZV90IG1fb2Zmc2V0SW5Tb3VyY2U7CiAgICAgUmVm
PE1vZHVsZUluZm9ybWF0aW9uPiBtX2luZm87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDIw
NjRhNDY2Mjg1NTE2ZDRjYzY4ODRhMmIzMjRiYzZlNjY5N2ViYTcuLmU4M2I4MjkwY2M4MjI0YTM4
OTkyOWZlMDkzMmZhYzM5NTdkZmEyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTU1NSw5ICs1
NTUsMTMgQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGlmICghZWxlbWVudC5mdW5jdGlv
bkluZGljZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBlbGVtZW50Lm9mZnNldC5pc0dsb2JhbEltcG9ydCgp
Ci0gICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5sb2FkSTMyR2xvYmFsKGVsZW1lbnQub2Zmc2V0Lmdsb2JhbEltcG9ydEluZGV4KCkp
KQotICAgICAgICAgICAgICAgIDogZWxlbWVudC5vZmZzZXQuY29uc3RWYWx1ZSgpOworICAgICAg
ICAgICAgaWYgKCFlbGVtZW50LmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIG9mZnNldCA9ICplbGVtZW50Lm9mZnNldElmQWN0
aXZlOworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZWxlbWVudEluZGV4ID0gb2Zmc2V0Lmlz
R2xvYmFsSW1wb3J0KCkKKyAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJMzJHbG9iYWwob2Zmc2V0Lmdsb2JhbEltcG9ydElu
ZGV4KCkpKQorICAgICAgICAgICAgICAgIDogb2Zmc2V0LmNvbnN0VmFsdWUoKTsKIAogICAgICAg
ICAgICAgZm4oZWxlbWVudCwgZWxlbWVudC50YWJsZUluZGV4LCBlbGVtZW50SW5kZXgpOwogCkBA
IC02MDQsMTMgKzYwOCwxOSBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGlmIChVTkxJS0VMWShleGNl
cHRpb24pKQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnZhbHVlKCk7CiAKLSAgICBmb3JFYWNo
RWxlbWVudChbJl0gKGNvbnN0IFdhc206OkVsZW1lbnQmIGVsZW1lbnQsIHVpbnQzMl90IHRhYmxl
SW5kZXgsIHVpbnQzMl90IGVsZW1lbnRJbmRleCkgeworICAgIGZvckVhY2hFbGVtZW50KFsmXSAo
Y29uc3QgV2FzbTo6RWxlbWVudCYgZWxlbWVudCwgdWludDMyX3QgdGFibGVJbmRleCwgdWludDMy
X3Qgc3RhcnRFbGVtZW50SW5kZXgpIHsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25z
dCB1aW50MzJfdCBlbGVtZW50SW5kZXggPSBzdGFydEVsZW1lbnRJbmRleCArIGk7CisgICAgICAg
ICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gZWxlbWVudC5mdW5jdGlvbkluZGlj
ZXNbaV07CisgICAgICAgICAgICBpZiAoV2FzbTo6RWxlbWVudDo6aXNOdWxsRnVuY0luZGV4KGZ1
bmN0aW9uSW5kZXgpKSB7CisgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+dGFibGUodGFibGVJ
bmRleCktPmNsZWFyKGVsZW1lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGVzc2VudGlhbGx5IG1l
YW5zIHdlJ3JlIGV4cG9ydGluZyBhbiBpbXBvcnQuCiAgICAgICAgICAgICAvLyBXZSBuZWVkIGEg
c3RvcnkgaGVyZS4gV2UgbmVlZCB0byBjcmVhdGUgYSBXZWJBc3NlbWJseUZ1bmN0aW9uCiAgICAg
ICAgICAgICAvLyBmb3IgdGhlIGltcG9ydC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTAKLSAgICAgICAgICAgIHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXggPSBlbGVtZW50LmZ1bmN0aW9uSW5kaWNlc1tpXTsKICAgICAgICAgICAgIFdh
c206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLnNpZ25hdHVyZUluZGV4
RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbkluZGV4IDwgY29kZUJsb2NrLT5mdW5jdGlvbkltcG9ydENvdW50KCkpIHsKICAgICAg
ICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLmltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgp
LT5nZXQoKTsKQEAgLTYyMSwxMyArNjMxLDExIEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZSBvbmx5IHR5cGUgdGhpcyBjb3VsZCBiZSBpcyBXZWJBc3NlbWJseUZ1
bmN0aW9uLgogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh3YXNtRnVuY3Rpb24p
OwogICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+c2V0
KGVsZW1lbnRJbmRleCwgd2FzbUZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgKytlbGVt
ZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5zZXQo
ZWxlbWVudEluZGV4LAogICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgs
IG1faW5zdGFuY2UuZ2V0KCksIHNpZ25hdHVyZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgKytl
bGVtZW50SW5kZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAK
QEAgLTY0MCw5ICs2NDgsNyBAQCBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgyNQogICAgICAgICAgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUo
CiAgICAgICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseUZ1bmN0aW9uU3RydWN0dXJlKCksIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmlu
ZygpLCBtX2luc3RhbmNlLmdldCgpLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9p
bnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUluZGV4KTsKLQogICAgICAgICAgICAgbV9pbnN0YW5j
ZS0+dGFibGUodGFibGVJbmRleCktPnNldChlbGVtZW50SW5kZXgsIGZ1bmN0aW9uKTsKLSAgICAg
ICAgICAgICsrZWxlbWVudEluZGV4OwogICAgICAgICB9CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmU1NDVlZGE4Mjdm
ZTkyMWUyYTc3N2Q2ZmQwZTE1ZTlmMzkwN2EyMi4uMDA2YzdkMWY1ZDg3OWZmMGI5OTQwMjE2NGZm
NjNkMDFiYTlkYWFhNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0xMS0zMCAgRG1pdHJ5IEJlemhldHNr
b3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNd
IEFkZCBzdXBwb3J0IGZvciBhY3RpdmUgbW9kcyBpbiBlbGVtZW50IHNlY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRml4IGJ1aWxk
ZXIgZHNsIHRvIHByb2R1Y2UgdGhlIHJpZ2h0IGVsZW1lbnQgc2VjdGlvbi4KKyAgICAgICAgSXQg
cHJvZHVjZXMgY29ycmVjdCB3YXNtIGNvZGUgZm9yIHRoZSBwcmV2aW91cyBzcGVjIGFuZCBmb3Ig
dGhlIHJlZi10eXBlcyBzcGVjIGJlY2F1c2UgdGhlIGNvcmUgc3BlYyBpcyBiaW5hcnkgY29tcGF0
aWJsZSB3aXRoIHRoZSByZWYtdHlwZXMuCisgICAgICAgIGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0
aHViLmlvL3JlZmVyZW5jZS10eXBlcy9jb3JlL2JpbmFyeS9tb2R1bGVzLmh0bWwjZWxlbWVudC1z
ZWN0aW9uLgorICAgICAgICBBZGRlZCBiYXNpYyB0ZXN0cyBmb3IgdGhlIGVsZW1lbnQgc2VjdGlv
bi4KKworCisgICAgICAgICogd2FzbS9CdWlsZGVyLmpzOgorICAgICAgICAoZXhwb3J0LmRlZmF1
bHQuQnVpbGRlci5wcm90b3R5cGUuX3JlZ2lzdGVyU2VjdGlvbkJ1aWxkZXJzLmNvbnN0LnNlY3Rp
b24uaW4uV0FTTS5kZXNjcmlwdGlvbi5zZWN0aW9uLnN3aXRjaC5zZWN0aW9uLmNhc2Uuc3RyaW5n
X2FwcGVhcmVkX2hlcmUudGhpcy5zZWN0aW9uKToKKyAgICAgICAgKiB3YXNtL0J1aWxkZXJfV2Vi
QXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgIChjb25zdC5lbWl0dGVycy5FbGVtZW50KToKKyAg
ICAgICAgKiB3YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qczoKKyAgICAgICAg
KG1vZHVsZSk6CisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZlX21vZC5q
czogQWRkZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAoYmFzaWNUZXN0KToKKyAgICAg
ICAgKHJlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbik6CisgICAgICAgICogd2FzbS9yZWZlcmVu
Y2VzL2VsZW1lbnRfcGFyc2luZy5qczoKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvbXVsdGl0
YWJsZS5qczoKKwogMjAyMC0xMS0zMCAgU2VyZ2V5IFJ1YmFub3YgIDxjaGkxODdAZ21haWwuY29t
PgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBpNjQgc2lnbi1leHRlbnNpb24t
b3BzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGI0ZDcyYjFjNjdiNGUyNTE0YTE2N2IxYjQzY2QxYjA1
OGNmNTgwMzQuLjMyZmZlNmJiYjU2MWE1MzMzODU3ZWQyMzFiMDQ3YTdmMmFmYmYxMTUgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVy
LmpzCkBAIC01OTQsOCArNTk0LDggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QnVpbGRlciA9IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEVuZDogKCkgPT4gdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgIEVs
ZW1lbnQ6ICh7dGFibGVJbmRleCA9IDAsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2VzfSkgPT4gewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHt0YWJsZUluZGV4LCBvZmZz
ZXQsIGZ1bmN0aW9uSW5kaWNlc30pOworICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudDog
KHt0YWJsZUluZGV4ID0gMCwgb2Zmc2V0LCBlbGVta2luZCA9IDAsIGZ1bmN0aW9uSW5kaWNlc30p
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaCh7dGFibGVJbmRl
eCwgb2Zmc2V0LCBlbGVta2luZCwgZnVuY3Rpb25JbmRpY2VzfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZWxlbWVudEJ1aWxkZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9OwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMgYi9KU1Rl
c3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCBiMGY0Mzg3ZTBmODdj
OTJmNzM2M2RhOWIwMzExZWJiMzQyNDRiNDFkLi4zNThiYjQ4MmQ0ZTA3MzI2YTIwZTU4OTM0ZTU1
MjkyYmI1NTE2MzcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJs
eUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5q
cwpAQCAtMTk3LDEwICsxOTcsMTMgQEAgY29uc3QgZW1pdHRlcnMgPSB7CiAgICAgRWxlbWVudDog
KHNlY3Rpb24sIGJpbikgPT4gewogICAgICAgICBjb25zdCBkYXRhID0gc2VjdGlvbi5kYXRhOwog
ICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZGF0YS5sZW5ndGgpOwotICAgICAgICBmb3Ig
KGNvbnN0IHt0YWJsZUluZGV4LCBvZmZzZXQsIGZ1bmN0aW9uSW5kaWNlc30gb2YgZGF0YSkgewot
ICAgICAgICAgICAgaWYgKHRhYmxlSW5kZXggIT0gMCkKLSAgICAgICAgICAgICAgICBwdXQoYmlu
LCAidWludDgiLCAyKTsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCB0YWJsZUlu
ZGV4KTsKKyAgICAgICAgZm9yIChjb25zdCB7dGFibGVJbmRleCwgb2Zmc2V0LCBlbGVta2luZCwg
ZnVuY3Rpb25JbmRpY2VzfSBvZiBkYXRhKSB7CisgICAgICAgICAgICBsZXQgZmxhZ3MgPSB0YWJs
ZUluZGV4ID09IDAgPyAwIDogMjsKKyAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIGZsYWdz
KTsKKworICAgICAgICAgICAgaWYgKGZsYWdzID09IDIpIHsKKyAgICAgICAgICAgICAgcHV0KGJp
biwgInZhcnVpbnQzMiIsIHRhYmxlSW5kZXgpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBsZXQgaW5pdEV4cHI7CiAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gIm51bWJl
ciIpCkBAIC0yMDksNiArMjEyLDEwIEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICAgICAg
ICAgIGluaXRFeHByID0gb2Zmc2V0OwogICAgICAgICAgICAgcHV0SW5pdEV4cHIoYmluLCBpbml0
RXhwcik7CiAKKyAgICAgICAgICAgIGlmIChmbGFncyA9PSAyKSB7CisgICAgICAgICAgICAgIHB1
dChiaW4sICJ1aW50OCIsIGVsZW1raW5kKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
cHV0KGJpbiwgInZhcnVpbnQzMiIsIGZ1bmN0aW9uSW5kaWNlcy5sZW5ndGgpOwogICAgICAgICAg
ICAgZm9yIChjb25zdCBmdW5jdGlvbkluZGV4IG9mIGZ1bmN0aW9uSW5kaWNlcykKICAgICAgICAg
ICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgZnVuY3Rpb25JbmRleCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy1zcGVjLXRlc3RzL3JlZl9udWxsLmpzIGIvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMtc3BlYy10ZXN0cy9yZWZfbnVsbC5qcwppbmRleCA5ZGRhN2FmZmE0
MDBhNDQzOGE1MjM2MmU5YjMzYzBiODIzNzEyMGNjLi41MzI1YWJhYTNhNmZmNzYzYjRmYTA5ZDhi
MzgzYWFlZDRiOThlNzA2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy1zcGVj
LXRlc3RzL3JlZl9udWxsLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzLXNwZWMtdGVz
dHMvcmVmX251bGwuanMKQEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2
YWxpZCA9IHRydWUpIHsKICAgICB0aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUgdGhyb3dz
Iik7CiAgIH0KICAgaWYgKHZhbGlkYXRlZCAhPT0gdmFsaWQpIHsKLSAgICAvL3Rocm93IG5ldyBF
cnJvcigiV2FzbSB2YWxpZGF0ZSBmYWlsdXJlIiArICh2YWxpZCA/ICIiIDogIiBleHBlY3RlZCIp
KTsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIldhc20gdmFsaWRhdGUgZmFpbHVyZSIgKyAodmFsaWQg
PyAiIiA6ICIgZXhwZWN0ZWQiKSk7CiAgIH0KICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1l
bnRfYWN0aXZlX21vZC5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfYWN0aXZl
X21vZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMTcwODQwMDY4MzRkMzdlZTYzYjcyZWI5OWZhZjM5YjdjZjAz
OWNiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZWxlbWVudF9h
Y3RpdmVfbW9kLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCIt
LXVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9t
ICcuLi9hc3NlcnQuanMnOworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkg
eworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRl
cy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9
CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9u
IGJhc2ljVGVzdCgpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgIChmdW5jICRmIChyZXN1bHQgaTMy
KQorICAgICAgKGkzMi5jb25zdCAzNykKKyAgICApCisgICAgKGZ1bmMgJGcgKHJlc3VsdCBpMzIp
CisgICAgICAoaTMyLmNvbnN0IDQyKQorICAgICkKKyAgICAodGFibGUgJHQxIDEwIGZ1bmNyZWYp
CisgICAgKHRhYmxlICR0MiAyMCBmdW5jcmVmKQorICAgIChlbGVtIChpMzIuY29uc3QgMykgZnVu
Y3JlZiAocmVmLmZ1bmMgJGcpIChyZWYubnVsbCBmdW5jKSAocmVmLmZ1bmMgJGYpIChyZWYubnVs
bCBmdW5jKSkKKyAgICAoZWxlbSAodGFibGUgJHQyKSAoaTMyLmNvbnN0IDcpIGZ1bmNyZWYgKHJl
Zi5mdW5jICRmKSAocmVmLm51bGwgZnVuYykgKHJlZi5mdW5jICRnKSkKKyAgICAoZnVuYyAoZXhw
b3J0ICJnZXRfdGJsMSIpIChwYXJhbSAkaWR4IGkzMikgKHJlc3VsdCBmdW5jcmVmKQorICAgICAg
KHRhYmxlLmdldCAkdDEgKGxvY2FsLmdldCAkaWR4KSkKKyAgICApCisgICAgKGZ1bmMgKGV4cG9y
dCAiZ2V0X3RibDIiKSAocGFyYW0gJGlkeCBpMzIpIChyZXN1bHQgZnVuY3JlZikKKyAgICAgICh0
YWJsZS5nZXQgJHQyIChsb2NhbC5nZXQgJGlkeCkpCisgICAgKQorICApCisgICovCisgIGxldCBp
bnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDBceDAxXHg3Zlx4NjBceDAxXHg3
Zlx4MDFceDcwXHgwM1x4MDVceDA0XHgwMFx4MDBceDAxXHgwMVx4MDRceDA3XHgwMlx4NzBceDAw
XHgwYVx4NzBceDAwXHgxNFx4MDdceDE3XHgwMlx4MDhceDY3XHg2NVx4NzRceDVmXHg3NFx4NjJc
eDZjXHgzMVx4MDBceDAyXHgwOFx4NjdceDY1XHg3NFx4NWZceDc0XHg2Mlx4NmNceDMyXHgwMFx4
MDNceDA5XHgyMlx4MDJceDA0XHg0MVx4MDNceDBiXHgwNFx4ZDJceDAxXHgwYlx4ZDBceDcwXHgw
Ylx4ZDJceDAwXHgwYlx4ZDBceDcwXHgwYlx4MDZceDAxXHg0MVx4MDdceDBiXHg3MFx4MDNceGQy
XHgwMFx4MGJceGQwXHg3MFx4MGJceGQyXHgwMVx4MGJceDBhXHgxOVx4MDRceDA0XHgwMFx4NDFc
eDI1XHgwYlx4MDRceDAwXHg0MVx4MmFceDBiXHgwNlx4MDBceDIwXHgwMFx4MjVceDAwXHgwYlx4
MDZceDAwXHgyMFx4MDBceDI1XHgwMVx4MGIiKSk7CisKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4
cG9ydHMuZ2V0X3RibDEoMykoKSwgNDIpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5n
ZXRfdGJsMSg0KSwgbnVsbCk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90Ymwx
KDUpKCksIDM3KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDEoNiksIG51
bGwpOworCisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLmdldF90YmwyKDcpKCksIDM3KTsK
KyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMuZ2V0X3RibDIoOCksIG51bGwpOworICBhc3Nl
cnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5nZXRfdGJsMig5KSgpLCA0Mik7Cit9CisKK2Z1bmN0aW9u
IHJlZk51bGxFeHRlcm5JbkVsZW1zU2VjdGlvbigpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgICh0
YWJsZSAkdCAxMCBmdW5jcmVmKQorICAgIChlbGVtIChpMzIuY29uc3QgMykgZnVuY3JlZiAocmVm
Lm51bGwgZXh0ZXJuKSkKKyAgKQorICAqLworICBhc3NlcnQudGhyb3dzKCgpID0+IG1vZHVsZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDA0XHgwNFx4MDFceDcwXHgwMFx4MGFc
eDA5XHgwOVx4MDFceDA0XHg0MVx4MDNceDBiXHgwMVx4ZDBceDZmXHgwYiIpLAorICBXZWJBc3Nl
bWJseS5Db21waWxlRXJyb3IsCisgICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBh
dCBieXRlIDI0OiByZWYubnVsbCBleHRlcm4gaXMgZm9yYmlkZGVuIGluIGVsZW1lbnQgc2VjdGlv
bidzLCAwdGggZWxlbWVudCdzIDB0aCBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShidWZmZXIpJykiKTsKK30KKworYmFzaWNUZXN0KCk7CityZWZOdWxsRXh0ZXJuSW5F
bGVtc1NlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1l
bnRfcGFyc2luZy5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2VsZW1lbnRfcGFyc2luZy5q
cwppbmRleCA5M2JlMWZkNjU3NjJkNDQ1NWFhZTkzNWQzMmU3YzZkMzY0MDhjYTAxLi4wMWY4OTAy
NDgyYzZiMmZiMDc0NzgyNGE1NzM2YjI3MzJkZTBmYWY3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9lbGVtZW50X3BhcnNpbmcuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVy
ZW5jZXMvZWxlbWVudF9wYXJzaW5nLmpzCkBAIC0yMyw0ICsyMyw0IEBAIGFzc2VydC50aHJvd3Mo
KCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDk3XHg4
MFx4ODBceDgwCiAvLyAgKyAiXHgwMiIKICAgICArICJceDAxIgogICAgICsgIlx4NDFceDAxXHgw
Ylx4MDFceDAyXHgwYVx4ZDRceDgwXHg4MFx4ODBceDAwXHgwN1x4ODVceDgwXHg4MFx4ODBceDAw
XHgwMFx4MjBceDAwXHhkMVx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4ZDFc
eDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4
NDFceDAxXHgyMFx4MDBceDI2XHgwMFx4MGJceDhjXHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHgw
MVx4ZDBceDI2XHgwMFx4NDFceDAxXHhkMFx4MjZceDAxXHgwYlx4ODhceDgwXHg4MFx4ODBceDAw
XHgwMFx4MjBceDAwXHgyNVx4MDBceDEwXHgwMFx4MGJceDg4XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDIwXHgwMFx4MjVceDAxXHgxMFx4MDFceDBiIiksCi0gICAgRXJyb3IsICJXZWJBc3NlbWJseS5N
b2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDE0MzogY2FuJ3QgZ2V0IDB0aCBFbGVtZW50IHJl
c2VydmVkIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgMHgwMCBvciAweDAyIGZvbGxvd2Vk
IGJ5IGEgdGFibGUgaW5kZXggKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVm
ZmVyKScpIik7CisgICAgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBh
dCBieXRlIDE0MzogdW5zdXBwb3J0ZWQgMHRoIEVsZW1lbnQgcmVzZXJ2ZWQgYnl0ZSAoZXZhbHVh
dGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpJykiKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9tdWx0aXRhYmxlLmpzCmluZGV4IDQ4YTg1NjBjMGM2MDMyMGU1Njc2MjA0ZDIwNjMyMTEy
MDJiMDJiMjQuLjEwMDcwMTVjMmI4YjE1YmMwYmI3MzcxNGI3NDY1YTk5ZTMzZjgwNWUgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL211bHRpdGFibGUuanMKKysrIGIvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvbXVsdGl0YWJsZS5qcwpAQCAtMzA0LDcgKzMwNCw3IEBAIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyCiAgICAgICAgICAgICAuRnVuY3Rpb24oInJldDQyIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJpMzIiIH0pCiAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKICAgICAg
ICAgICAgIC5FbmQoKQotICAgICAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdldCgpKSksIEVy
cm9yLCAiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA0MTogVGFibGUg
MCBtdXN0IGhhdmUgdHlwZSAnZnVuY3JlZicgdG8gaGF2ZSBhbiBlbGVtZW50IHNlY3Rpb24gKGV2
YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5Nb2R1bGUnKSIpCisgICAgICAgICAgLkVuZCgpLldl
YkFzc2VtYmx5KCkuZ2V0KCkpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBw
YXJzZSBhdCBieXRlIDQyOiBUYWJsZSAwIG11c3QgaGF2ZSB0eXBlICdmdW5jcmVmJyB0byBoYXZl
IGFuIGVsZW1lbnQgc2VjdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZScp
IikKIAogYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKICAgICAgICAgICAuVHlwZSgpLkVuZCgp
Cg==
</data>
<flag name="commit-queue"
          id="432354"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>