<?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>187850</bug_id>
          
          <creation_ts>2018-07-20 02:21:08 -0700</creation_ts>
          <short_desc>[MediaCapabilities] Platform integration</short_desc>
          <delta_ts>2018-08-05 02:27:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>
          
          <blocked>186391</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1443725</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-07-20 02:21:08 -0700</bug_when>
    <thetext>The current implementation of MediaCapabilities::decodingInfo() and MediaCapabilities::encodingInfo() are incomplete.
I wonder if the platform probing should be done by extending MediaPlayer with new static functions, would that be acceptable or should I implement a new platform abstraction for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443773</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-07-20 09:23:10 -0700</bug_when>
    <thetext>@Philippe, we&apos;ve introduced new platform abstractions, even for MediaPlayer-like capabilities, for Modern EME. I think it would be acceptable to introduce a new abstraction rather than re-use MediaPlayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443780</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-07-20 09:37:28 -0700</bug_when>
    <thetext>Ok Jer, that totally makes sense indeed. I&apos;ll work on a patch in that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445004</commentid>
    <comment_count>3</comment_count>
      <attachid>345754</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-07-25 05:26:26 -0700</bug_when>
    <thetext>Created attachment 345754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445005</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-07-25 05:27:30 -0700</bug_when>
    <thetext>This is my current WIP patch which has a decodingInfo() platform integration and a mock test. Before going further I&apos;d like to gather some initial feedback on the approach taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445037</commentid>
    <comment_count>5</comment_count>
      <attachid>345754</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-07-25 09:03:15 -0700</bug_when>
    <thetext>Comment on attachment 345754
Patch

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

&gt; Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp:203
&gt; +        auto info = MediaCapabilitiesInfo::create();
&gt; +        auto engineConfiguration = MediaEngineConfigurationFactory::createDecodingConfiguration(configuration);

Nit: I wonder if it would be better to pass a lambda to createDecodingConfiguration in case a platform isn&apos;t able to get the platform capabilities synchronously?

&gt; Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp:42
&gt; +    if (ok)
&gt; +        return;

Shouldn&apos;t this be &quot;if (!ok)&quot;?

&gt; Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp:60
&gt; +    double numerator = frameratePieces[0].toDouble(&amp;ok);
&gt; +    if (!ok)
&gt; +        return;
&gt; +
&gt; +    double denominator = frameratePieces[1].toDouble(&amp;ok);
&gt; +    if (!ok)
&gt; +        return;
&gt; +
&gt; +    if (!std::isfinite(numerator) || !std::isfinite(denominator))
&gt; +        return;
&gt; +
&gt; +    m_framerate = numerator / denominator;

Nit: I think it would be better to store the numerator and denominator in case a platform can use a rational number. You can always keep the frameRate() method and do the division there.

&gt; Source/WebCore/testing/Internals.cpp:512
&gt; +    MediaEngineConfigurationFactory::disableMock();

This will leave GStreamer and AVFoundation disabled.

&gt; Source/WebCore/testing/Internals.cpp:3447
&gt; +#if USE(AVFOUNDATION)
&gt; +    WebCore::DeprecatedGlobalSettings::setAVFoundationEnabled(false);
&gt; +#endif
&gt; +#if USE(GSTREAMER)
&gt; +    WebCore::DeprecatedGlobalSettings::setGStreamerEnabled(false);
&gt; +#endif

Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445055</commentid>
    <comment_count>6</comment_count>
      <attachid>345754</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-07-25 09:41:15 -0700</bug_when>
    <thetext>Comment on attachment 345754
Patch

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

Thanks for the early feedback Eric. I&apos;ll update the patch, add audio support to the decoding config, add a mock implementation for the encoding side, add a few more tests and fix EWS

&gt;&gt; Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp:203
&gt;&gt; +        auto engineConfiguration = MediaEngineConfigurationFactory::createDecodingConfiguration(configuration);
&gt; 
&gt; Nit: I wonder if it would be better to pass a lambda to createDecodingConfiguration in case a platform isn&apos;t able to get the platform capabilities synchronously?

Good point! The GStreamer implementation shouldn&apos;t need this but I can change the code already if the AVF backend will require it.

&gt;&gt; Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp:42
&gt;&gt; +        return;
&gt; 
&gt; Shouldn&apos;t this be &quot;if (!ok)&quot;?

Oh, indeed :)

&gt;&gt; Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp:60
&gt;&gt; +    m_framerate = numerator / denominator;
&gt; 
&gt; Nit: I think it would be better to store the numerator and denominator in case a platform can use a rational number. You can always keep the frameRate() method and do the division there.

Makes sense!

&gt;&gt; Source/WebCore/testing/Internals.cpp:512
&gt;&gt; +    MediaEngineConfigurationFactory::disableMock();
&gt; 
&gt; This will leave GStreamer and AVFoundation disabled.

Right, but the code below should be removed, as you hinted already.

&gt;&gt; Source/WebCore/testing/Internals.cpp:3447
&gt;&gt; +#endif
&gt; 
&gt; Why is this necessary?

Ah no, it isn&apos;t, because the factory checks the mock case first anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447601</commentid>
    <comment_count>7</comment_count>
      <attachid>346480</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 07:09:41 -0700</bug_when>
    <thetext>Created attachment 346480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447608</commentid>
    <comment_count>8</comment_count>
      <attachid>346480</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-03 07:27:58 -0700</bug_when>
    <thetext>Comment on attachment 346480
Patch

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

&gt; Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp:202
&gt; +        MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise)] (RefPtr&lt;MediaEngineDecodingConfiguration&gt; engineConfiguration) mutable {

Nit: I think you can use &quot;auto&quot; here.

&gt; Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp:252
&gt; +        MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise)] (RefPtr&lt;MediaEngineEncodingConfiguration&gt; engineConfiguration) mutable {

Ditto.

&gt; Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp:56
&gt; +    double numerator = frameratePieces[0].toDouble(&amp;ok);
&gt; +    if (!ok)
&gt; +        return;
&gt; +
&gt; +    double denominator = frameratePieces[1].toDouble(&amp;ok);
&gt; +    if (!ok)
&gt; +        return;

You should also fail if numerator or denominator is zero.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:43
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();

Nit: you can use &quot;auto&quot; here.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:51
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:60
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:66
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:75
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp:81
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:43
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:51
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:60
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();

Ditto.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:62
&gt; +    if (videoConfig) {
&gt; +        if (videoConfig-&gt;framerate() &gt; 30)

Nit: these two lines can be collapsed.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:66
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

&quot;auto&quot;.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:77
&gt; +    RefPtr&lt;MediaEngineVideoConfiguration&gt; videoConfig = videoConfiguration();
&gt; +    if (videoConfig) {
&gt; +        if (videoConfig-&gt;contentType().containerType() != &quot;video/mp4&quot;)

Ditto the above.

&gt; Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp:81
&gt; +    RefPtr&lt;MediaEngineAudioConfiguration&gt; audioConfig = audioConfiguration();

&quot;auto&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447609</commentid>
    <comment_count>9</comment_count>
      <attachid>346481</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 07:31:54 -0700</bug_when>
    <thetext>Created attachment 346481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447610</commentid>
    <comment_count>10</comment_count>
      <attachid>346481</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 07:33:24 -0700</bug_when>
    <thetext>Comment on attachment 346481
Patch

Ah, sorry I didn&apos;t notice your review. This patch was a win EWS build fix attempt. Will update the patch again taking into account your review :) Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447614</commentid>
    <comment_count>11</comment_count>
      <attachid>346484</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 07:58:33 -0700</bug_when>
    <thetext>Created attachment 346484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447644</commentid>
    <comment_count>12</comment_count>
      <attachid>346492</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 08:56:33 -0700</bug_when>
    <thetext>Created attachment 346492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447659</commentid>
    <comment_count>13</comment_count>
      <attachid>346498</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 09:32:01 -0700</bug_when>
    <thetext>Created attachment 346498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447672</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-03 10:29:27 -0700</bug_when>
    <thetext>No idea what&apos;s wrong now with the win EWS... Welp :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447697</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-03 11:02:47 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #14)
&gt; No idea what&apos;s wrong now with the win EWS... Welp :)

Not likely your fault: &quot;Unable to build without patch&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447984</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-05 02:26:30 -0700</bug_when>
    <thetext>Committed r234582: &lt;https://trac.webkit.org/changeset/234582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447985</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-05 02:27:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/42943258&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345754</attachid>
            <date>2018-07-25 05:26:26 -0700</date>
            <delta_ts>2018-08-03 07:09:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180725142625.patch</filename>
            <type>text/plain</type>
            <size>39557</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IGZkZmI2ZGY3NmI5OWIyMDM1ZTA1MjcyNzc3OTI4NDAzYWI0MzhjYTQuLjNjMmI2ZTI2Yzlh
Nzk4MTQzMTU2YTZhYzNhM2NmOTNlNWJjODExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzLmgiCiAK
ICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvLmgiCiAjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xOTUsOCArMTk3LDMzIEBAIHZvaWQgTWVkaWFDYXBhYmlsaXRpZXM6
OmRlY29kaW5nSW5mbyhNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24s
CiAgICAgLy8gNS4gSW4gcGFyYWxsZWwsIHJ1biB0aGUgY3JlYXRlIGEgTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvIGFsZ29yaXRobSB3aXRoIGNvbmZpZ3VyYXRpb24gYW5kIHJlc29sdmUgcCB3aXRoIGl0
cyByZXN1bHQuCiAgICAgLy8gNi4gUmV0dXJuIHAuCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRh
c2soW2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShjb25maWd1
cmF0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHByb21pc2UpOworICAgICAgICAvLyAyLjIu
MyBJZiBjb25maWd1cmF0aW9uIGlzIG9mIHR5cGUgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24s
IHJ1biB0aGUgZm9sbG93aW5nIHN1YnN0ZXBzOgorCisgICAgICAgIGF1dG8gaW5mbyA9IE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisgICAgICAgIGF1dG8gZW5naW5lQ29uZmlndXJh
dGlvbiA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmNyZWF0ZURlY29kaW5nQ29u
ZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKKworICAgICAgICBpZiAoZW5naW5lQ29uZmlndXJh
dGlvbikgeworICAgICAgICAgICAgLy8gMS4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBk
ZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAvLyBjb25maWd1cmF0
aW9uLCBzZXQgc3VwcG9ydGVkIHRvIHRydWUuIE90aGVyd2lzZSBzZXQgaXQgdG8gZmFsc2UuCisg
ICAgICAgICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuRGVj
b2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgIGlmIChpbmZvLT5zdXBwb3J0ZWQoKSkgeworICAg
ICAgICAgICAgICAgIC8vIDIuIElmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gZGVjb2RlIHRo
ZSBtZWRpYSByZXByZXNlbnRlZCBieQorICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24g
YXQgYSBwYWNlIHRoYXQgYWxsb3dzIGEgc21vb3RoIHBsYXliYWNrLCBzZXQgc21vb3RoIHRvCisg
ICAgICAgICAgICAgICAgLy8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAg
ICAgICAgICAgICBpbmZvLT5zZXRTbW9vdGgoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuU21vb3Ro
bHlEZWNvZGVNZWRpYSgpKTsKKworICAgICAgICAgICAgICAgIC8vIDMuIElmIHRoZSB1c2VyIGFn
ZW50IGlzIGFibGUgdG8gZGVjb2RlIHRoZSBtZWRpYSByZXByZXNlbnRlZCBieQorICAgICAgICAg
ICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2llbnQgbWFubmVyLCBzZXQg
cG93ZXJFZmZpY2llbnQgdG8KKyAgICAgICAgICAgICAgICAvLyB0cnVlLiBPdGhlcndpc2Ugc2V0
IGl0IHRvIGZhbHNlLiBUaGUgdXNlciBhZ2VudCBTSE9VTEQgTk9UIHRha2UgaW50bworICAgICAg
ICAgICAgICAgIC8vIGNvbnNpZGVyYXRpb24gdGhlIGN1cnJlbnQgcG93ZXIgc291cmNlIGluIG9y
ZGVyIHRvIGRldGVybWluZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBkZWNvZGluZyBwb3dlciBl
ZmZpY2llbmN5IHVubGVzcyB0aGUgZGV2aWNl4oCZcyBwb3dlciBzb3VyY2UgaGFzIHNpZGUKKyAg
ICAgICAgICAgICAgICAvLyBlZmZlY3RzIHN1Y2ggYXMgZW5hYmxpbmcgZGlmZmVyZW50IGRlY29k
aW5nIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgaW5mby0+c2V0UG93ZXJFZmZpY2llbnQoZW5n
aW5lQ29uZmlndXJhdGlvbi0+Y2FuUG93ZXJFZmZpY2llbnRseURlY29kZU1lZGlhKCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXds
eUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4+KFdURk1vdmUoaW5m
bykpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRleCAx
MTlhMTI3YTU1OTA0NjVmYTJmZDdhY2UxMjRmNWUzZmM3NDFmYTRlLi5hZjdhZGI4ZmM4NzhlYTJi
N2Y4ZDY3MjA4MWJlN2NlMDYwMTlhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXNJbmZv
LmgKQEAgLTMxLDYgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFD
YXBhYmlsaXRpZXNJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDYXBhYmlsaXRpZXNJbmZv
PiB7CiBwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbygpKTsKKyAgICB9CisKKyAgICB+TWVkaWFDYXBhYmlsaXRpZXNJbmZvKCkgPSBkZWZh
dWx0OworCiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZDsg
fQogICAgIHZvaWQgc2V0U3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7IG1fc3VwcG9ydGVkID0g
c3VwcG9ydGVkOyB9CiAKQEAgLTQxLDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG93
ZXJFZmZpY2llbnQoYm9vbCBwb3dlckVmZmljaWVudCkgeyBtX3Bvd2VyRWZmaWNpZW50ID0gcG93
ZXJFZmZpY2llbnQ7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYUNhcGFiaWxpdGllc0luZm8oKSA9
IGRlZmF1bHQ7CisKICAgICBib29sIG1fc3VwcG9ydGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
c21vb3RoIHsgZmFsc2UgfTsKICAgICBib29sIG1fcG93ZXJFZmZpY2llbnQgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlZTVmMWJiNzM5MzlkOTVkMmUwYTE3ZmUwMThj
YjIxN2E2M2JjZTljLi4zYTU3YTQyNTFlNzZjMzUwNTRhNDQ4YTFiNmZkZDliOGIzNjhhZGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAsNiArMzAsOCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L3dheWxhbmQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCisgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL2dzdHJlYW1lciIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3RrIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIzMGEwMGM1ZTA3OWIz
YjA1ODlmNTA5NDA2OThjMzJiZmRjYjA0ODAuLmQ3YzFhOGRkZmVjZmRhMDA5MGYxMjc0ZTRlYTg2
NjY1MzRjNzVmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzIxLDYgKzE3MjEsOSBAQCBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAogCitwbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwCitwbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcAorCiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAKQEAgLTE3NDEsNiArMTc0NCw3IEBAIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKIAogcGxhdGZvcm0v
bW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKK3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmNwcAogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAKIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR1N0cmVhbWVyLmNtYWtlCmluZGV4IDhlZGUxNzU4Y2NiMzkxZjBjODAzZmE5MDg5ZDk5
ZmY4MTcxMzQ0ZjkuLmEyNjc5Yjk4YTc4MTQzNTcyZTNiYmY5YTAzYzEwY2I5NGVjYmMzOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKQEAgLTMzLDYgKzMzLDggQEAg
aWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VH
U3RyZWFtZXIuY3BwCiAKKyAgICAgICAgcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvZ3N0cmVh
bWVyL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLmNwcAorCiAgICAg
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJG
YWN0b3J5LmNwcAogICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVh
bWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1MDY1NTUwYjFmYWY5OGJhZTAxNzM4
NmZiYTM0ZjViODNhN2Y5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01l
ZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlv
bihWaWRlb0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisgICAgOiBtX3R5cGUoY29uZmlnLmNvbnRl
bnRUeXBlKQorICAgICwgbV93aWR0aChjb25maWcud2lkdGgpCisgICAgLCBtX2hlaWdodChjb25m
aWcuaGVpZ2h0KQorICAgICwgbV9iaXRyYXRlKGNvbmZpZy5iaXRyYXRlKQoreworICAgIGJvb2wg
b2sgPSBmYWxzZTsKKyAgICBtX2ZyYW1lcmF0ZSA9IGNvbmZpZy5mcmFtZXJhdGUudG9Eb3VibGUo
Jm9rKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVyYXRlID0g
MDsKKyAgICBhdXRvIGZyYW1lcmF0ZVBpZWNlcyA9IGNvbmZpZy5mcmFtZXJhdGUuc3BsaXQoJy8n
KTsKKyAgICBpZiAoZnJhbWVyYXRlUGllY2VzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm47
CisKKyAgICBkb3VibGUgbnVtZXJhdG9yID0gZnJhbWVyYXRlUGllY2VzWzBdLnRvRG91YmxlKCZv
ayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGRlbm9taW5h
dG9yID0gZnJhbWVyYXRlUGllY2VzWzFdLnRvRG91YmxlKCZvayk7CisgICAgaWYgKCFvaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG51bWVyYXRvcikgfHwgIXN0
ZDo6aXNmaW5pdGUoZGVub21pbmF0b3IpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyYW1l
cmF0ZSA9IG51bWVyYXRvciAvIGRlbm9taW5hdG9yOworfQorCitNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRpb24mJiBjb25m
aWcpCit7CisgICAgaWYgKGNvbmZpZy52aWRlbykKKyAgICAgICAgbV92aWRlb0NvbmZpZ3VyYXRp
b24gPSBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKGNvbmZpZy52aWRlby52
YWx1ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTVlMGFkOWQ0NmNkZWEyMTk4OTg3ZTc1
NDAyNGNhNzk0MzgyNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb250ZW50
VHlwZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJNZWRpYUNvbmZpZ3VyYXRp
b24uaCIKKyNpbmNsdWRlICJWaWRlb0NvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbjsKKworY2xhc3MgTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IGNyZWF0ZShWaWRlb0Nv
bmZpZ3VyYXRpb24mIGNvbmZpZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlnKSkpOworICAgIH07
CisKKyAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fTsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fd2lkdGgsIG1f
aGVpZ2h0KTsgfTsKKyAgICB1aW50NjRfdCBiaXRyYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRy
YXRlOyB9OworICAgIGRvdWJsZSBmcmFtZXJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lcmF0
ZTsgfTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbihWaWRl
b0NvbmZpZ3VyYXRpb24mJik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5cGU7CisgICAgdWludDMy
X3QgbV93aWR0aDsKKyAgICB1aW50MzJfdCBtX2hlaWdodDsKKyAgICB1aW50NjRfdCBtX2JpdHJh
dGU7CisgICAgZG91YmxlIG1fZnJhbWVyYXRlOworfTsKKworY2xhc3MgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uPiB7
CitwdWJsaWM6CisgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uKE1lZGlhQ29uZmlndXJhdGlv
biYmKTsKKyAgICB2aXJ0dWFsIH5NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7
CisKKyAgICBlbnVtIGNsYXNzIEltcGxlbWVudGF0aW9uVHlwZSB7CisgICAgICAgIEVtcHR5LAor
ICAgICAgICBHU3RyZWFtZXIsCisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIHZpcnR1YWwg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIElt
cGxlbWVudGF0aW9uVHlwZTo6RW1wdHk7IH07CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRl
b0NvbmZpZ3VyYXRpb24+IHZpZGVvQ29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmlk
ZW9Db25maWd1cmF0aW9uOyB9OworCitwcml2YXRlOgorICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZp
ZGVvQ29uZmlndXJhdGlvbj4gbV92aWRlb0NvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19NRURJQV9FTkdJ
TkVfQ09ORklHVVJBVElPTihUb1ZhbHVlVHlwZU5hbWUsIEltcGxlbWVudGF0aW9uVHlwZU5hbWUp
IFwKKyAgICBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uJiBjb25maWcpIHsgcmV0dXJuIGNvbmZpZy5pbXBs
ZW1lbnRhdGlvblR5cGUoKSA9PSBJbXBsZW1lbnRhdGlvblR5cGVOYW1lOyB9IFwKKyAgICBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MmMxN2RiMTM1NWZhZjVjYmQ5
MWNjNzVhYjNkNmZkZmY4YzQ3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgorCisjaW5jbHVk
ZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbk1vY2suaCIKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIk1lZGlhRW5naW5l
RGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgYm9vbCYgbW9ja0VuYWJsZWQoKQoreworICAgIHN0YXRpYyBib29s
IGVuYWJsZWQ7CisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9CisKK1JlZlB0cjxNZWRpYUVuZ2luZURl
Y29kaW5nQ29uZmlndXJhdGlvbj4gTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3Jl
YXRlRGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25m
aWcpCit7CisgICAgaWYgKG1vY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNyZWF0ZShjb25maWcpOworCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBpZiAoRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjppc0dTdHJlYW1lckVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
R1N0cmVhbWVyOjpjcmVhdGUoY29uZmlnKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygp
Cit7CisgICAgbW9ja0VuYWJsZWQoKSA9IHRydWU7Cit9CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6ZGlzYWJsZU1vY2soKQoreworICAgIG1vY2tFbmFibGVkKCkgPSBm
YWxzZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMzI1MTYwMWY4MThlZmI4YjI5NTRjMjYxZGQ2MDVhNjUx
OTI1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYURlY29k
aW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uPiBjcmVhdGVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZU1vY2soKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBkaXNhYmxlTW9jaygpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2RhYzEwNTQwMWFlMmZjNmFlYWMzNTdhZTQ5Y2RiNTllMDhlOWU0NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIgorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb24geworcHVibGljOgorICAgIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
KE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlnKQorICAgICAgICA6IE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbihyZWludGVycHJldF9jYXN0PE1lZGlhQ29uZmlndXJhdGlvbiYmPihj
b25maWcpKQorICAgICAgICAsIG1fZGVjb2RpbmdUeXBlKGNvbmZpZy50eXBlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbigpID0g
ZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5EZWNvZGVNZWRpYSgpIHsgcmV0dXJuIGZh
bHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBjYW5TbW9vdGhseURlY29kZU1lZGlhKCkgeyByZXR1
cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVN
ZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworCisgICAgTWVkaWFEZWNvZGluZ1R5cGUgZGVjb2Rp
bmdUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGluZ1R5cGU7IH07CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFEZWNvZGluZ1R5cGUgbV9kZWNvZGluZ1R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvZ3N0cmVh
bWVyL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNWQ5MGIyOGRhMDcwNDU2Y2ZlMjBiNzY0OGQxYjU5YjE4ZmM2OThiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvZ3N0cmVh
bWVyL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIuaCIKKworI2luY2x1ZGUg
IkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBNZWRpYUVuZ2luZURlY29k
aW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcjo6Y2FuRGVjb2RlTWVkaWEoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXI6OmNhblNtb290aGx5RGVjb2RlTWVkaWEoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFF
bmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXI6OmNhblBvd2VyRWZmaWNpZW50bHlE
ZWNvZGVNZWRpYSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvZ3N0cmVhbWVyL01lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3Ry
ZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNzhhYzcwMjdjNmE5ZTg1OGIyZjQ3ZGM3NzI1Yjc4OGFhZDJi
MmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvZ3N0cmVhbWVyL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVh
bWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5n
aW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
IGNvbmZpZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFFbmdpbmVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoV1RGTW92ZShjb25maWcpKSk7CisgICAgfTsK
KworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkdTdHJlYW1lcjsgfQorCisgICAgYm9vbCBj
YW5EZWNvZGVNZWRpYSgpIGZpbmFsOworICAgIGJvb2wgY2FuU21vb3RobHlEZWNvZGVNZWRpYSgp
IGZpbmFsOworICAgIGJvb2wgY2FuUG93ZXJFZmZpY2llbnRseURlY29kZU1lZGlhKCkgZmluYWw7
CisKK3ByaXZhdGU6CisgICAgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFt
ZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisgICAgICAgIDogTWVkaWFF
bmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSB7IH07Cit9OworCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04oV2Vi
Q29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIsIFdlYkNvcmU6
Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uOjpJbXBsZW1lbnRhdGlvblR5cGU6OkdT
dHJlYW1lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDUyZDdiNTNlNDQ0N2E4OWI4NDllYjhmNWFiZTJjZWUyYjQ4ZDM4NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGlu
Z0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb25Nb2NrLmgiCisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIE1lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2RlTWVkaWEoKQoreworICAgIC8vIFRoZSBtb2NrIGlt
cGxlbWVudGF0aW9uIHN1cHBvcnRzIG9ubHkgbG9jYWwgZmlsZSBwbGF5YmFjay4KKyAgICBpZiAo
ZGVjb2RpbmdUeXBlKCkgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGRlY29kaW5nIHN1cHBv
cnQgYXQgNzIwUC4KKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IHZp
ZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7
CisgICAgICAgIEludFNpemUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAgICAgIGlm
IChzaXplLndpZHRoKCkgPiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlh
KCkKK3sKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IHZpZGVvQ29u
ZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAg
ICAgIGlmICh2aWRlb0NvbmZpZy0+ZnJhbWVyYXRlKCkgPiAzMCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEo
KQoreworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25m
aWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAg
ICAgaWYgKHZpZGVvQ29uZmlnLT5jb250ZW50VHlwZSgpLmNvbnRhaW5lclR5cGUoKSAhPSAidmlk
ZW8vbXA0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ZGFlMDQxZjQzZjk1YWNkNDc4NGYzOTEyM2U2MGMx
NWU3YWU1YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlv
bi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2sgZmluYWwgOiBwdWJs
aWMgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIHN0YXRp
YyBSZWZQdHI8TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrPiBjcmVhdGUoTWVk
aWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1vdmUo
Y29uZmlnKSkpOworICAgIH07CisKKyAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9
CisgICAgYm9vbCBjYW5EZWNvZGVNZWRpYSgpIGZpbmFsOworICAgIGJvb2wgY2FuU21vb3RobHlE
ZWNvZGVNZWRpYSgpIGZpbmFsOworICAgIGJvb2wgY2FuUG93ZXJFZmZpY2llbnRseURlY29kZU1l
ZGlhKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFFbmdpbmVEZWNvZGlu
Z0NvbmZpZ3VyYXRpb25Nb2NrKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlnKQor
ICAgICAgICA6IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmln
KSkgeyB9OworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX01FRElBX0VOR0lORV9D
T05GSUdVUkFUSU9OKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9j
aywgV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OkltcGxlbWVudGF0
aW9uVHlwZTo6TW9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTRk
MTU1MDA5ZWZmYjcyMjQ3NjVjYWE5ZmIzMjk3MmVlMjg2NzIyNS4uMDM4ZGIxYTg2YjRmYWUyOTFj
MDRiNzMwZjY1YWMxMGI3YjY4OWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIK
KyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTWVk
aWFSZXNvdXJjZUxvYWRlci5oIgpAQCAtNTA3LDYgKzUwOCw4IEBAIHZvaWQgSW50ZXJuYWxzOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRGdWxsc2NyZWVu
QXV0b0hpZGVEdXJhdGlvbigwX3MpOwogICAgIHBhZ2Uuc2V0RnVsbHNjcmVlbkluc2V0cyh7IH0p
OwogICAgIHBhZ2Uuc2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGZhbHNlKTsKKworICAgIE1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmRpc2FibGVNb2NrKCk7CiB9CiAKIEludGVy
bmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTM0MzQsNiArMzQzNywxNyBA
QCB2b2lkIEludGVybmFsczo6c2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKFNvdXJjZUJ1ZmZl
ciYgYnVmZmVyLCBib29sIGZsYWcpCiAKICNlbmRpZgogCit2b2lkIEludGVybmFsczo6ZW5hYmxl
TW9ja01lZGlhQ2FwYWJpbGl0aWVzKCkKK3sKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIFdl
YkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QVZGb3VuZGF0aW9uRW5hYmxlZChm
YWxzZSk7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIFdlYkNvcmU6OkRlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6c2V0R1N0cmVhbWVyRW5hYmxlZChmYWxzZSk7CisjZW5kaWYKKyAg
ICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjplbmFibGVNb2NrKCk7Cit9CisKICNp
ZiBFTkFCTEUoVklERU8pCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6YmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3QgU3RyaW5nJiBpbnRlcnJ1cHRpb25TdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBmZWI2ZjcxYjUyOTNmNTg0NmI3ZGFiZTJj
NTBhZDUyOWIwNzY5MDU5Li45YWZjZmMxMmE3OTgxZGRlNDBmODZiOTVhYjA0YzlmMzBiYTUwZWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ3MCw2ICs0NzAsOCBAQCBwdWJs
aWM6CiAgICAgUmVmPE1vY2tDRE1GYWN0b3J5PiByZWdpc3Rlck1vY2tDRE0oKTsKICNlbmRpZgog
CisgICAgdm9pZCBlbmFibGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKTsKKwogI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQogICAgIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0MWU1NDIzNTJh
MzVjNmRmYjk2MmQ1OWY1YzUzM2VkN2I1YWIwNzU0Li45YjdjODE2NTljZWJiODI4MDZhMjM0ZWZk
YzViYmJjY2ZjYWMxZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC00
NzEsNiArNDcxLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAKICAgICBbQ29u
ZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQV0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgp
OwogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFdIE1vY2tDRE1GYWN0b3J5IHJlZ2lz
dGVyTW9ja0NETSgpOworICAgIHZvaWQgZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCk7CiAK
ICAgICBbQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJU10gdm9pZCBlbmFibGVNb2NrU3BlZWNo
U3ludGhlc2l6ZXIoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBh
YmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc1OTE3ZTIxNzIwNjMzZjhiZjM5ZTE2Mzc3YWE0YmM2MGI4MDM0MDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29k
aW5nSW5mby1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorUlVOKGludGVybmFscy5lbmFi
bGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKSkKKworU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQg
NzIwUCBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2
aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lk
dGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZv
LnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2Vy
RWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBi
dXQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVv
OiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAs
IGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYwIH0gfSk7KQorUHJvbWlz
ZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0g
ZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitVbnN1cHBvcnRlZCBw
cm90b2NvbDogTVNFCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5k
ZWNvZGluZ0luZm8oeyB0eXBlOiAnbWVkaWEtc291cmNlJywgdmlkZW86IHsgY29udGVudFR5cGU6
ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwg
d2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitp
bmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8u
cG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworVW5zdXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlv
bjogMTA4MFAKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29k
aW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7
IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDEwODAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxOTIw
LCBmcmFtZXJhdGU6IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0
ZWQgPT0gZmFsc2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNp
ZW50ID09IGZhbHNlIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zY2E5ZGRjYTA5MjdjZmY3ODQ0ZTYwNTU1MzA4MDc3YWUwYWU2ZWFhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGlu
Z0luZm8uaHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIHByb21pc2U7CisKKyAgICBmdW5j
dGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgICAgICBmYWlsVGVzdCgiSW50ZXJuYWxzIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3Qu
IikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICBydW4oJ2ludGVy
bmFscy5lbmFibGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKScpOworICAgICAgICAgbmV4dCgpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0
aCkgeworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgY29u
c29sZVdyaXRlKCcnKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICB0ZXN0cyA9
IFsKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21v
b3RoIGFuZCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAg
ICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZv
KHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNz
PVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFt
ZXJhdGU6IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50
aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKGluZm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3RoICh0b28gaGlnaCBmcmFtZXJh
dGUpIGJ1dCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAg
ICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZv
KHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNz
PVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFt
ZXJhdGU6IDYwIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50
aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKGluZm8sIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOwor
ICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IE1TRScp
OworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGll
cy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnbWVkaWEtc291cmNlJywgdmlkZW86IHsgY29udGVudFR5
cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAx
MDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAgICAgICAgIHNo
b3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBj
aGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAg
fSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5z
dXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlvbjogMTA4MFAnKTsKKyAgICAgICAgICAgICBydW4oInBy
b21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTog
J2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwi
JywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAy
NCB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5m
bykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZv
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICBdOworICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCmluZGV4IGRiOGU0MTk4ZDYw
MjcwZDAzZmFmYzJhNzkzZmVmNWQ4YzQ1ODI3ZDUuLjJjM2FjYzVmYzY1NGYzNTYxMDViMmU4MzZh
NDZmYWZiMTFjNDI0YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3Qu
anMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwpAQCAtNDg3LDMgKzQ4Nyw5
IEBAIGZ1bmN0aW9uIGhhbmRsZVByb21pc2UocHJvbWlzZSkgewogICAgIGZ1bmN0aW9uIGhhbmRs
ZSgpIHsgfQogICAgIHJldHVybiBwcm9taXNlLnRoZW4oaGFuZGxlLCBoYW5kbGUpOwogfQorCitm
dW5jdGlvbiBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBleHBlY3RlZFN1cHBvcnRl
ZCwgZXhwZWN0ZWRTbW9vdGgsIGV4cGVjdGVkUG93ZXJFZmZpY2llbnQpIHsKKyAgICBsb2dSZXN1
bHQoaW5mby5zdXBwb3J0ZWQgPT0gZXhwZWN0ZWRTdXBwb3J0ZWQsICJpbmZvLnN1cHBvcnRlZCA9
PSAiICsgZXhwZWN0ZWRTdXBwb3J0ZWQpOworICAgIGxvZ1Jlc3VsdChpbmZvLnNtb290aCA9PSBl
eHBlY3RlZFNtb290aCwgImluZm8uc21vb3RoID09ICIgKyBleHBlY3RlZFNtb290aCk7CisgICAg
bG9nUmVzdWx0KGluZm8ucG93ZXJFZmZpY2llbnQgPT0gZXhwZWN0ZWRQb3dlckVmZmljaWVudCwg
ImluZm8ucG93ZXJFZmZpY2llbnQgPT0gIiArIGV4cGVjdGVkUG93ZXJFZmZpY2llbnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346480</attachid>
            <date>2018-08-03 07:09:41 -0700</date>
            <delta_ts>2018-08-03 07:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180803160939.patch</filename>
            <type>text/plain</type>
            <size>73728</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5ODJjZjVhZWFmOWFh
Yzg2Zjk2MjBiODQxNDA3ZmIzZGI1NjQ5MC4uZGZhZTNlNDc4YTM4YjY2OGI0ODg5MGI1NGQ5ZGY5
OTllNDMxMzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA4LTAzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBh
YmlsaXRpZXNdIFBsYXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb2NrIHBsYXRmb3JtIHN1cHBvcnQgZm9yIHRoZSBNZWRp
YUNhcGFiaWxpdGllcyBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRlc3Q6IG1lZGlhL21lZGlh
Y2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWwKKyAgICAgICAgICAgICAgbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNhcGFiaWxpdGllczo6ZGVjb2RpbmdJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGluZ0luZm8pOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNhcGFiaWxpdGllc0luZm86OmNyZWF0ZSk6CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1XUEUuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lVmlkZW9Db25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0
aW9uOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJh
dGlvbjo6Y29udGVudFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVW
aWRlb0NvbmZpZ3VyYXRpb246OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFF
bmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmJpdHJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmZyYW1lcmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uOjpjb250ZW50VHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0Nv
bmZpZ3VyYXRpb246OmJpdHJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVBdWRpb0NvbmZpZ3VyYXRpb246OnNhbXBsZXJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOjphdWRpb0NvbmZpZ3VyYXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOjp2aWRlb0NvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1vY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3Rvcnk6OmNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eTo6ZW5hYmxlTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5OjpkaXNhYmxlTW9jayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6Y2FuRGVjb2RlTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmNh
blNtb290aGx5RGVjb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb246OmNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVNZWRpYSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6ZGVjb2RpbmdU
eXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbjo6Y2FuRW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb246OmNhblNtb290aGx5RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb246OmNhblBvd2VyRWZmaWNpZW50
bHlFbmNvZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbjo6ZW5jb2RpbmdUeXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5EZWNv
ZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbk1vY2s6OmNhblNtb290aGx5RGVjb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RGVj
b2RlTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhbkVuY29kZU1lZGlh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9j
azo6Y2FuU21vb3RobHlFbmNvZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2lu
ZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRp
YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbk1vY2suaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxOC0wOC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZWxlYXNlIGFzc2VydCB3aGVuIHRocm93aW5nIGV4Y2VwdGlvbnMgaW4gY3VzdG9t
IGVsZW1lbnQgcmVhY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGZkZmI2
ZGY3NmI5OWIyMDM1ZTA1MjcyNzc3OTI4NDAzYWI0MzhjYTQuLjg4YjMzODNkYTczNzQyZDgyYTNj
ZjhhMGJiZDJmOTgyNTdkNzUzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0y
Nyw4ICsyNywxMCBAQAogI2luY2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzLmgiCiAKICNpbmNsdWRl
ICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCiAj
aW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xOTUsOCArMTk3LDM2IEBAIHZvaWQgTWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5n
SW5mbyhNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sCiAgICAgLy8g
NS4gSW4gcGFyYWxsZWwsIHJ1biB0aGUgY3JlYXRlIGEgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGFs
Z29yaXRobSB3aXRoIGNvbmZpZ3VyYXRpb24gYW5kIHJlc29sdmUgcCB3aXRoIGl0cyByZXN1bHQu
CiAgICAgLy8gNi4gUmV0dXJuIHAuCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW2NvbmZp
Z3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsK
LSAgICAgICAgVU5VU0VEX1BBUkFNKHByb21pc2UpOworCisgICAgICAgIC8vIDIuMi4zIElmIGNv
bmZpZ3VyYXRpb24gaXMgb2YgdHlwZSBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiwgcnVuIHRo
ZSBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3Rvcnk6OkRlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmUHRyPE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uPiBlbmdpbmVDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gaW5m
byA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChl
bmdpbmVDb25maWd1cmF0aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gMi4yLjMuMS4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5Cisg
ICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2V0IHN1cHBvcnRlZCB0byB0cnVlLiBP
dGhlcndpc2Ugc2V0IGl0IHRvIGZhbHNlLgorICAgICAgICAgICAgICAgIGluZm8tPnNldFN1cHBv
cnRlZChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5EZWNvZGVNZWRpYSgpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChpbmZvLT5zdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyAy
LjIuMy4yLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGRlY29kZSB0aGUgbWVkaWEgcmVw
cmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhdCBhIHBh
Y2UgdGhhdCBhbGxvd3MgYSBzbW9vdGggcGxheWJhY2ssIHNldCBzbW9vdGggdG8KKyAgICAgICAg
ICAgICAgICAgICAgLy8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RGVjb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjMuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5
CisgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQgcG93ZXJFZmZpY2llbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQgU0hPVUxEIE5P
VCB0YWtlIGludG8KKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUgZGV2aWNl4oCZ
cyBwb3dlciBzb3VyY2UgaGFzIHNpZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudCBkZWNvZGluZyBtb2R1bGVzLgorICAgICAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5Q
b3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRl
RGVjb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKICAgICB9KTsK
IH0KIApAQCAtMjE3LDggKzI0Nyw0MCBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGlu
Z0luZm8oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLAogICAgIC8v
IDUuIEluIHBhcmFsbGVsLCBydW4gdGhlIGNyZWF0ZSBhIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBh
bGdvcml0aG0gd2l0aCBjb25maWd1cmF0aW9uIGFuZCByZXNvbHZlIHAgd2l0aCBpdHMgcmVzdWx0
LgogICAgIC8vIDYuIFJldHVybiBwLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtjb25m
aWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldICgpIG11dGFibGUgewotICAgICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwcm9taXNlKTsKKworICAgICAgICAvLyAyLjIuNC4gSWYg
Y29uZmlndXJhdGlvbiBpcyBvZiB0eXBlIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLCBydW4g
dGhlIGZvbGxvd2luZyBzdWJzdGVwczoKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChSZWZQdHI8TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24+IGVuZ2luZUNvbmZpZ3VyYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBp
bmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgaWYg
KGVuZ2luZUNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgICAgICAvLyAyLjIuNC4xLiBJZiB0
aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGVuY29kZSB0aGUgbWVkaWEKKyAgICAgICAgICAgICAg
ICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9uLCBzZXQgc3VwcG9ydGVkIHRvIHRydWUu
IE90aGVyd2lzZQorICAgICAgICAgICAgICAgIC8vIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuRW5jb2Rl
TWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW5mby0+c3VwcG9ydGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMi4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0
byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5
IGNvbmZpZ3VyYXRpb24gYXQgYSBwYWNlIHRoYXQgYWxsb3dzIGVuY29kaW5nCisgICAgICAgICAg
ICAgICAgICAgIC8vIGZyYW1lcyBhdCB0aGUgc2FtZSBwYWNlIGFzIHRoZXkgYXJlIHNlbnQgdG8g
dGhlIGVuY29kZXIsIHNldAorICAgICAgICAgICAgICAgICAgICAvLyBzbW9vdGggdG8gdHJ1ZS4g
T3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICAgICAgaW5mby0+c2V0
U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290aGx5RW5jb2RlTWVkaWEoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMy4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJs
ZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGVk
IGJ5IGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2llbnQgbWFubmVyLCBzZXQKKyAgICAg
ICAgICAgICAgICAgICAgLy8gcG93ZXJFZmZpY2llbnQgdG8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBp
dCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gU0hPVUxE
IE5PVCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgY3VycmVudCBwb3dlciBzb3VyY2UgaW4K
KyAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBlbmNvZGluZyBw
b3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZGV2aWNl
4oCZcyBwb3dlciBzb3VyY2UgaGFzIHNpZGUgZWZmZWN0cyBzdWNoIGFzIGVuYWJsaW5nIGRpZmZl
cmVudAorICAgICAgICAgICAgICAgICAgICAvLyBlbmNvZGluZyBtb2R1bGVzLgorICAgICAgICAg
ICAgICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5j
YW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRl
ZDxJRExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3Jl
YXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKKwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRleCAxMTlhMTI3YTU1
OTA0NjVmYTJmZDdhY2UxMjRmNWUzZmM3NDFmYTRlLi5hZjdhZGI4ZmM4NzhlYTJiN2Y4ZDY3MjA4
MWJlN2NlMDYwMTlhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgKQEAgLTMx
LDYgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB7CiBwdWJs
aWM6CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbygp
KTsKKyAgICB9CisKKyAgICB+TWVkaWFDYXBhYmlsaXRpZXNJbmZvKCkgPSBkZWZhdWx0OworCiAg
ICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZDsgfQogICAgIHZv
aWQgc2V0U3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7IG1fc3VwcG9ydGVkID0gc3VwcG9ydGVk
OyB9CiAKQEAgLTQxLDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG93ZXJFZmZpY2ll
bnQoYm9vbCBwb3dlckVmZmljaWVudCkgeyBtX3Bvd2VyRWZmaWNpZW50ID0gcG93ZXJFZmZpY2ll
bnQ7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYUNhcGFiaWxpdGllc0luZm8oKSA9IGRlZmF1bHQ7
CisKICAgICBib29sIG1fc3VwcG9ydGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc21vb3RoIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcG93ZXJFZmZpY2llbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBlZTVmMWJiNzM5MzlkOTVkMmUwYTE3ZmUwMThjYjIxN2E2M2Jj
ZTljLi5lMTRlZDRhZGNlYzA5MmNkODgzMDc0NWY0MzJjNzM3YzFlNDBkZmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAsNiArMzAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1ZGZlNzRjNzliNTIz
MTAwZDRlYzdiOGI0YmRmNWQ4MzVmODZmMjkxLi5lMmY5NWI0MjYzNWIxYmU4MmE4OWQ2OTU1Yzc1
OTQ2Yzg5MmFhMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtOTksNiArOTksNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21hYyIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9jb2NvYSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0
d29yay9jZiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZWFhODkxMjRmZWRhYjU3MWNj
NWY3OGY4NmVmYWJiY2FhODY5NDc3OC4uMWUzODhmMmMwNDZkOTU1MDM2M2FhZWZlMGNmMWFlNGRj
YWE0ZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTI3LDYgKzI3LDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL3dwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lciIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS90ZXh0L2ljdSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk5NmQyNzM5NjdhNTY4NWM1
MDk5NWJlODRmMTczODFkZjA0YjU3Ny4uODUwMmVjNjk1MzE1MWI5NWMyNWQ1YTUyMmMyNDVkZWE0
NTdlZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MjEsNiArMTcyMSw5IEBAIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKK3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAKK3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCisKIHBsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRDb25maWd1cmF0aW9uLmNwcApAQCAtMTc0MSw2ICsxNzQ0LDggQEAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAogCiBwbGF0Zm9ybS9tb2Nr
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKIHBsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcAorcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbk1vY2suY3BwCitwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1
cmF0aW9uTW9jay5jcHAKIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3Bw
CiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NTI4OGNkNDc0OGJiZmU0
NzdhMTZmNmI4ODg0MDhlMWZiMzg0ZjQ0Li4wYzc4N2VmNDk1Y2Q1ZmMyNDkxZmE4YjFmMmJkYzY5
MzhjMjY4MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMDgxOSw2ICsxMDgxOSwxNiBAQAogCQk5QTUyOEU4MjE3RDdGNTJG
MDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZsb2F0aW5nT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QUIxRjM3RTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdGMThFMjQ4OUEwMDUzNDc0
MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyMTIxMTQ4RjUwMDBDQkRBMDYgLyogTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5QUM2RjAyMjIxMTQ4RjUxMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDsgcGF0aCA9IG1lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QUM2RjAyMzIxMTQ4RjUyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDI0MjExNDhGNTMwMENCREEw
NiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oOyBwYXRo
ID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMjUyMTE0OEY1NDAwQ0JEQTA2IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBwYXRoID0gbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyNjIxMTQ4RjU1MDBDQkRBMDYgLyogTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDsgcGF0aCA9IG1lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDJEMjExNDhGOUYwMENCREEwNiAvKiBNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMkUyMTE0OEZBMTAwQ0JEQTA2IC8qIE1l
ZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyRjIxMTQ4RkEyMDBDQkRB
MDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAzMDIxMTQ4RkE0MDBDQkRB
MDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzNG
NjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEM5
IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVpbHRp
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODA1LDYgKzE4ODE1LDEwIEBA
CiAJCTU5Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5QUM2RjAyRDIxMTQ4RjlGMDBDQkRBMDYgLyog
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCAqLywKKwkJCQk5QUM2RjAy
RjIxMTQ4RkEyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LmggKi8sCisJCQkJOUFDNkYwMkUyMTE0OEZBMTAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8sCisJCQkJOUFDNkYwMzAyMTE0OEZBNDAwQ0JEQTA2
IC8qIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5oICovLAogCQkJCUNERjJC
MDA1MTgyMDUzREYwMEYyQjQyNCAvKiBtZWRpYXNvdXJjZSAqLywKIAkJCQk1OTMwOUExMDExRjRB
RTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywKIAkJCQk1
OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgg
Ki8sCkBAIC0yMTI4OCw2ICsyMTMwMiwxOSBAQAogCQkJcGF0aCA9IHJlcGxheTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTlBQzZGMDIwMjExNDhGMUUwMENCREEwNiAvKiBt
ZWRpYWNhcGFiaWxpdGllcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJOUFDNkYwMjEyMTE0OEY1MDAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbi5jcHAgKi8sCisJCQkJOUFDNkYwMjMyMTE0OEY1MjAwQ0JEQTA2IC8qIE1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTlBQzZGMDIyMjExNDhGNTEwMENCREEwNiAvKiBNZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcCAqLywKKwkJCQk5QUM2RjAyNTIxMTQ4RjU0
MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oICovLAorCQkJCTlB
QzZGMDI0MjExNDhGNTMwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlv
bi5oICovLAorCQkJCTlBQzZGMDI2MjExNDhGNTUwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29k
aW5nQ29uZmlndXJhdGlvbi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBtZWRpYWNhcGFiaWxpdGll
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUExNDgzMjhCMTg3RjUwNjgw
MERBNjNBNiAvKiB3YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMjQ0MTIsNiArMjQ0MzksNyBAQAogCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyog
cGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTlBQzZGMDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLywKIAkJCQk0
OUU5MTJBNDBFRkFDOEU2MDA5RDBDQUYgLyogYW5pbWF0aW9uICovLAogCQkJCUZEMzE2MDQwMTJC
MDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQg
LyogY2YgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41N2Y0YzVkZTZhOTJhN2Y3OWQ0YTA0NjMzNTQxYzE3NDFhNzdhZmQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uKFZpZGVvQ29uZmlndXJhdGlvbiYmIGNv
bmZpZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisgICAgLCBtX3dpZHRoKGNv
bmZpZy53aWR0aCkKKyAgICAsIG1faGVpZ2h0KGNvbmZpZy5oZWlnaHQpCisgICAgLCBtX2JpdHJh
dGUoY29uZmlnLmJpdHJhdGUpCisgICAgLCBtX2ZyYW1lUmF0ZU51bWVyYXRvcigwKQorICAgICwg
bV9mcmFtZVJhdGVEZW5vbWluYXRvcigxKQoreworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBt
X2ZyYW1lUmF0ZU51bWVyYXRvciA9IGNvbmZpZy5mcmFtZXJhdGUudG9Eb3VibGUoJm9rKTsKKyAg
ICBpZiAob2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWVyYXRlUGllY2VzID0g
Y29uZmlnLmZyYW1lcmF0ZS5zcGxpdCgnLycpOworICAgIGlmIChmcmFtZXJhdGVQaWVjZXMuc2l6
ZSgpICE9IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBudW1lcmF0b3IgPSBmcmFt
ZXJhdGVQaWVjZXNbMF0udG9Eb3VibGUoJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1
cm47CisKKyAgICBkb3VibGUgZGVub21pbmF0b3IgPSBmcmFtZXJhdGVQaWVjZXNbMV0udG9Eb3Vi
bGUoJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUobnVtZXJhdG9yKSB8fCAhc3RkOjppc2Zpbml0ZShkZW5vbWluYXRvcikpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZnJhbWVSYXRlTnVtZXJhdG9yID0gbnVtZXJhdG9yOworICAg
IG1fZnJhbWVSYXRlRGVub21pbmF0b3IgPSBkZW5vbWluYXRvcjsKK30KKworTWVkaWFFbmdpbmVB
dWRpb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uKEF1ZGlvQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisg
ICAgLCBtX2NoYW5uZWxzKGNvbmZpZy5jaGFubmVscykKKyAgICAsIG1fYml0cmF0ZSgwKQorICAg
ICwgbV9zYW1wbGVyYXRlKDApCit7CisgICAgaWYgKGNvbmZpZy5iaXRyYXRlKQorICAgICAgICBt
X2JpdHJhdGUgPSBjb25maWcuYml0cmF0ZS52YWx1ZSgpOworCisgICAgaWYgKGNvbmZpZy5zYW1w
bGVyYXRlKQorICAgICAgICBtX3NhbXBsZXJhdGUgPSBjb25maWcuc2FtcGxlcmF0ZS52YWx1ZSgp
OworfQorCitNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bihNZWRpYUNvbmZpZ3VyYXRpb24mJiBjb25maWcpCit7CisgICAgaWYgKGNvbmZpZy5hdWRpbykK
KyAgICAgICAgbV9hdWRpb0NvbmZpZ3VyYXRpb24gPSBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKGNvbmZpZy5hdWRpby52YWx1ZSgpKTsKKworICAgIGlmIChjb25maWcudmlk
ZW8pCisgICAgICAgIG1fdmlkZW9Db25maWd1cmF0aW9uID0gTWVkaWFFbmdpbmVWaWRlb0NvbmZp
Z3VyYXRpb246OmNyZWF0ZShjb25maWcudmlkZW8udmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWEzNDc3ZTYyZDg5MDg1NzM5MDRiMDczMGQ5MTJjMDYwMmIwMWE5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RW5naW5lQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkF1ZGlvQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlZpZGVvQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uOworCitjbGFzcyBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gY3JlYXRl
KFZpZGVvQ29uZmlndXJhdGlvbiYgY29uZmlnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSk7
CisgICAgfTsKKworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV93
aWR0aCwgbV9oZWlnaHQpOyB9OworICAgIHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJldHVy
biBtX2JpdHJhdGU7IH07CisgICAgZG91YmxlIGZyYW1lcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVSYXRlTnVtZXJhdG9yIC8gbV9mcmFtZVJhdGVEZW5vbWluYXRvcjsgfTsKKworcHJpdmF0
ZToKKyAgICBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbihWaWRlb0NvbmZpZ3VyYXRpb24m
Jik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5cGU7CisgICAgdWludDMyX3QgbV93aWR0aDsKKyAg
ICB1aW50MzJfdCBtX2hlaWdodDsKKyAgICB1aW50NjRfdCBtX2JpdHJhdGU7CisgICAgZG91Ymxl
IG1fZnJhbWVSYXRlTnVtZXJhdG9yOworICAgIGRvdWJsZSBtX2ZyYW1lUmF0ZURlbm9taW5hdG9y
OworfTsKKworY2xhc3MgTWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGNyZWF0ZShBdWRpb0NvbmZp
Z3VyYXRpb24mIGNvbmZpZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlnKSkpOworICAgIH07CisK
KyAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfTsK
KyAgICBTdHJpbmcgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9OworICAg
IHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHJhdGU7IH07CisgICAgdWlu
dDMyX3Qgc2FtcGxlcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlcmF0ZTsgfTsKKworcHJp
dmF0ZToKKyAgICBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbihBdWRpb0NvbmZpZ3VyYXRp
b24mJik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fY2hhbm5lbHM7
CisgICAgdWludDY0X3QgbV9iaXRyYXRlOworICAgIHVpbnQzMl90IG1fc2FtcGxlcmF0ZTsKK307
CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAgIE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+TWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRhdGlv
blR5cGUgeworICAgICAgICBNb2NrLAorICAgIH07CisKKyAgICB2aXJ0dWFsIEltcGxlbWVudGF0
aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBSZWZQdHI8TWVk
aWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlndXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Db25maWd1cmF0aW9uOyB9OworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZp
ZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0NvbmZpZ3VyYXRpb247IH07CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1lZGlhRW5naW5l
QXVkaW9Db25maWd1cmF0aW9uPiBtX2F1ZGlvQ29uZmlndXJhdGlvbjsKKyAgICBSZWZQdHI8TWVk
aWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IG1fdmlkZW9Db25maWd1cmF0aW9uOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
TUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBJbXBsZW1lbnRhdGlv
blR5cGVOYW1lKSBcCisgICAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlw
ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbiYgY29uZmlnKSB7IHJldHVybiBj
b25maWcuaW1wbGVtZW50YXRpb25UeXBlKCkgPT0gSW1wbGVtZW50YXRpb25UeXBlTmFtZTsgfSBc
CisgICAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTUzODg1NzNk
NGFkOGQwNzI0ZWMyOTllMThhMThlYzBjMjg3YWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeS5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIK
KworI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgorI2luY2x1ZGUgIk1lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0Nv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCYgbW9ja0VuYWJs
ZWQoKQoreworICAgIHN0YXRpYyBib29sIGVuYWJsZWQ7CisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9
CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRGVjb2RpbmdD
b25maWd1cmF0aW9uKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25maWcsIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkRlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAobW9ja0VuYWJsZWQoKSkgeworICAgICAgICBNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNyZWF0ZShjb25maWcsIGNhbGxiYWNrKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9pZCBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRp
b24oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQor
eworICAgIGlmIChtb2NrRW5hYmxlZCgpKSB7CisgICAgICAgIE1lZGlhRW5naW5lRW5jb2RpbmdD
b25maWd1cmF0aW9uTW9jazo6Y3JlYXRlKGNvbmZpZywgY2FsbGJhY2spOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhbGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIE1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3Rvcnk6OmVuYWJsZU1vY2soKQoreworICAgIG1vY2tFbmFibGVkKCkg
PSB0cnVlOworfQorCit2b2lkIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmRpc2Fi
bGVNb2NrKCkKK3sKKyAgICBtb2NrRW5hYmxlZCgpID0gZmFsc2U7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZWVjYjYzNjVjNTBmOGY3NzgyNzY5MjUxNzMyNmNiMDZmZWZjYTk1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJN
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkgeworcHVibGljOgorICAg
IHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZlB0cjxNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBF
bmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8
TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24+KT47CisKKyAgICBzdGF0aWMgdm9pZCBj
cmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mLCBE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUVu
Y29kaW5nQ29uZmlndXJhdGlvbihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYsIEVuY29kaW5n
Q29uZmlndXJhdGlvbkNhbGxiYWNrJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBlbmFibGVNb2NrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzYWJsZU1v
Y2soKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWMxMDU0MDFh
ZTJmYzZhZWFjMzU3YWU0OWNkYjU5ZTA4ZTllNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29u
ZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24gOiBwdWJsaWMgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBN
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24ocmVpbnRlcnBy
ZXRfY2FzdDxNZWRpYUNvbmZpZ3VyYXRpb24mJj4oY29uZmlnKSkKKyAgICAgICAgLCBtX2RlY29k
aW5nVHlwZShjb25maWcudHlwZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TWVkaWFF
bmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuRGVjb2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuU21vb3RobHlEZWNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsgfTsK
KworICAgIE1lZGlhRGVjb2RpbmdUeXBlIGRlY29kaW5nVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVjb2RpbmdUeXBlOyB9OworCitwcml2YXRlOgorICAgIE1lZGlhRGVjb2RpbmdUeXBlIG1fZGVj
b2RpbmdUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3NjNh
YTc1ZjE3NjFmYWM4N2Q2ZDhjMDdlN2RiMGM0YTI3ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbiA6IHB1YmxpYyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24geworcHVibGljOgor
ICAgIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uJiYgY29uZmlnKQorICAgICAgICA6IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihyZWlu
dGVycHJldF9jYXN0PE1lZGlhQ29uZmlndXJhdGlvbiYmPihjb25maWcpKQorICAgICAgICAsIG1f
ZW5jb2RpbmdUeXBlKGNvbmZpZy50eXBlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5N
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1
YWwgYm9vbCBjYW5FbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBjYW5TbW9vdGhseUVuY29kZU1lZGlhKCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmly
dHVhbCBib29sIGNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNl
OyB9OworCisgICAgTWVkaWFFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGluZ1R5cGU7IH07CisKK3ByaXZhdGU6CisgICAgTWVkaWFFbmNvZGluZ1R5cGUg
bV9lbmNvZGluZ1R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5l
RGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY2MTVmYmU2Y2RiNjlh
YzlkNDZhNDJlZTUwMWIyNDExODZkYWI0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNw
cApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisKKyNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2Fu
RGVjb2RlTWVkaWEoKQoreworICAgIC8vIFRoZSBtb2NrIGltcGxlbWVudGF0aW9uIHN1cHBvcnRz
IG9ubHkgbG9jYWwgZmlsZSBwbGF5YmFjay4KKyAgICBpZiAoZGVjb2RpbmdUeXBlKCkgPT0gTWVk
aWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBNYXhpbmcgb3V0IHZpZGVvIGRlY29kaW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBSZWZQ
dHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IHZpZGVvQ29uZmlnID0gdmlkZW9Db25m
aWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6
ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgw
ICYmIHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gQXVkaW8gZGVjb2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4K
KyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0g
YXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1
cm4gYXVkaW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFpbmVyVHlwZSgpID09ICJhdWRpby9t
cDQiOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlhKCkKK3sKKyAgICBSZWZQdHI8
TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1
cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIGlmICh2aWRlb0NvbmZp
Zy0+ZnJhbWVyYXRlKCkgPiAzMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0g
YXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1
cm4gYXVkaW9Db25maWctPmNoYW5uZWxzKCkgPT0gIjIiOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVm
ZmljaWVudGx5RGVjb2RlTWVkaWEoKQoreworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29u
ZmlndXJhdGlvbj4gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAo
dmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5jb250ZW50VHlwZSgpLmNv
bnRhaW5lclR5cGUoKSAhPSAidmlkZW8vbXA0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlv
Q29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAg
ICAgICByZXR1cm4gYXVkaW9Db25maWctPmJpdHJhdGUoKSA8PSAxMDAwOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZjM4Mjk4ZmMwMGUyNTczMzViZGQ2YmYyNGJi
MTMxM2VmNDQ1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5LmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKwor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrIGZpbmFsIDogcHVibGljIE1lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBj
cmVhdGUoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgYXV0byBtb2NrQ29uZmlnID0gYWRvcHRSZWYobmV3IE1lZGlhRW5n
aW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jayhXVEZNb3ZlKGNvbmZpZykpKTsKKyAgICAgICAg
Y2FsbGJhY2sobW9ja0NvbmZpZyk7CisgICAgfTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6Ok1vY2s7IH0KKyAgICBib29sIGNhbkRlY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBj
YW5TbW9vdGhseURlY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5Qb3dlckVmZmljaWVu
dGx5RGVjb2RlTWVkaWEoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUVu
Z2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2soTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
JiBjb25maWcpCisgICAgICAgIDogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWcpKSB7IH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVE
SUFfRU5HSU5FX0NPTkZJR1VSQVRJT04oV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZp
Z3VyYXRpb25Nb2NrLCBXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6
SW1wbGVtZW50YXRpb25UeXBlOjpNb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQ3NmRhMzIxZDgxNWVkYzZhM2YyYTBhOWJjODhlNGFh
Njk5N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2lu
ZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgi
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSgpCit7Cisg
ICAgLy8gVGhlIG1vY2sgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSBsb2NhbCBmaWxlIHBs
YXliYWNrLgorICAgIGlmIChlbmNvZGluZ1R5cGUoKSA9PSBNZWRpYUVuY29kaW5nVHlwZTo6UmVj
b3JkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGVu
Y29kaW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZp
Z3VyYXRpb24+IHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZp
ZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7
CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3MjAp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQXVkaW8gZW5jb2Rp
bmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4KKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVB
dWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7Cisg
ICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmNvbnRlbnRU
eXBlKCkuY29udGFpbmVyVHlwZSgpID09ICJhdWRpby9tcDQiOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5TbW9v
dGhseUVuY29kZU1lZGlhKCkKK3sKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3Vy
YXRpb24+IHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVv
Q29uZmlnKSB7CisgICAgICAgIGlmICh2aWRlb0NvbmZpZy0+ZnJhbWVyYXRlKCkgPiAzMCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVB
dWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7Cisg
ICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmNoYW5uZWxz
KCkgPT0gIjIiOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKQor
eworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25maWcg
PSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAg
aWYgKHZpZGVvQ29uZmlnLT5jb250ZW50VHlwZSgpLmNvbnRhaW5lclR5cGUoKSAhPSAidmlkZW8v
bXA0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVk
aWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0
aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWct
PmJpdHJhdGUoKSA8PSAxMDAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhjNDA1YWZmNzhkNjUxZTNkNzI0MjI1M2Y2MGIyYjMwYTEyMmEzN2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdD
b25maWd1cmF0aW9uTW9jay5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCisjaW5jbHVkZSAiTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb25Nb2NrIGZpbmFsIDogcHVibGljIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0
aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGUoTWVkaWFFbmNvZGluZ0NvbmZp
Z3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RW5jb2Rp
bmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgYXV0byBt
b2NrQ29uZmlnID0gYWRvcHRSZWYobmV3IE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9u
TW9jayhXVEZNb3ZlKGNvbmZpZykpKTsKKyAgICAgICAgY2FsbGJhY2sobW9ja0NvbmZpZyk7Cisg
ICAgfTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KKyAgICBib29sIGNh
bkVuY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5TbW9vdGhseUVuY29kZU1lZGlhKCkg
ZmluYWw7CisgICAgYm9vbCBjYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKSBmaW5hbDsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2soTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisgICAgICAgIDogTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSB7IH07Cit9Owor
Cit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04o
V2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLCBXZWJDb3JlOjpN
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbjo6SW1wbGVtZW50YXRpb25UeXBlOjpNb2Nr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhM2U5NmVkOTY1MWRkYTdi
YWE1NTllZDEzOWY3NmRlMzM1YTliOGQ1Li4wYjM0OGU4MDE5OWE2OGFiODlkMzA3YzBmZTllNDYy
ZGZkOTQzM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMDAsNiAr
MTAwLDcgQEAKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIk1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9h
ZGVyLmgiCkBAIC01MDUsNiArNTA2LDggQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0
ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0
aW9uKDBfcyk7CiAgICAgcGFnZS5zZXRGdWxsc2NyZWVuSW5zZXRzKHsgfSk7CiAgICAgcGFnZS5z
ZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oZmFsc2UpOworCisgICAgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6ZGlzYWJsZU1vY2soKTsKIH0KIAogSW50ZXJuYWxzOjpJbnRlcm5h
bHMoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMzQ2NCw2ICszNDY3LDExIEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoU291cmNlQnVmZmVyJiBidWZmZXIsIGJv
b2wgZmxhZykKIAogI2VuZGlmCiAKK3ZvaWQgSW50ZXJuYWxzOjplbmFibGVNb2NrTWVkaWFDYXBh
YmlsaXRpZXMoKQoreworICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmVuYWJs
ZU1vY2soKTsKK30KKwogI2lmIEVOQUJMRShWSURFTykKIAogRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpiZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmIGludGVy
cnVwdGlvblN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDBhYjU3MGJh
NDM5YTE4ZDJmYzQ0MTg5ZmJkNzdmMDA1NzZhZTQ4M2UuLjM4ODRlZmRlMTdjZGJkMjZhZjA3Zjk2
ZjU4YTEzNDE0NWRiNWQwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDc0
LDYgKzQ3NCw4IEBAIHB1YmxpYzoKICAgICBSZWY8TW9ja0NETUZhY3Rvcnk+IHJlZ2lzdGVyTW9j
a0NETSgpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygp
OworCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAgICAgdm9pZCBlbmFibGVNb2NrU3Bl
ZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CmluZGV4IDIzYWE5Mjk1MzY4ODhmYzAwODYxM2Q5MjcwMzQyYzY0ZWZlZDRhYmMuLjc1MGM2Zjk1
MTlkYWZiZjkxNzdiZDU2N2YyMTMzYmVmNmVlMjg4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKQEAgLTQ3OCw2ICs0NzgsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsK
IAogICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBXSB2b2lkIGluaXRpYWxp
emVNb2NrQ0RNKCk7CiAgICAgW0NvbmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV0gTW9ja0NETUZh
Y3RvcnkgcmVnaXN0ZXJNb2NrQ0RNKCk7CisgICAgdm9pZCBlbmFibGVNb2NrTWVkaWFDYXBhYmls
aXRpZXMoKTsKIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJs
ZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmVhODMwZTZmMTY2OGIxNTU3NjU0
YzQzYWY1YmNjNjA4NTk4YzMzMi4uZmIyOWRmNjRjZGU3OTk5ZTllNWYyMTJhZTJiYmZkYmE2NWMw
NmJjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA4LTAzICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBhYmlsaXRpZXNdIFBs
YXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb2NrIHRlc3RzIGZvciB0aGUgTWVkaWFDYXBhYmlsaXRpZXMgc3BlY2lmaWNh
dGlvbi4KKyAgICAgICAgCisgICAgICAgICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1k
ZWNvZGluZ0luZm8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRlc3QuanM6CisgICAgICAgIChjaGVj
a01lZGlhQ2FwYWJpbGl0aWVzSW5mbyk6CisKIDIwMTgtMDgtMDIgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVsZWFzZSBhc3NlcnQgd2hlbiB0aHJvd2luZyBl
eGNlcHRpb25zIGluIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0lu
Zm8tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNWI3YWU5NWVmOGQ5OTJlZjlmMjYwZTM1ODBi
NzRjM2E0ZGNkMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2NiBA
QAorUlVOKGludGVybmFscy5lbmFibGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKSkKKworU21vb3Ro
IGFuZCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlk
ZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcy
MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQuNSB9IH0pOykKK1By
b21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3Ro
ID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitOb3Qgc21vb3Ro
ICh0b28gaGlnaCBmcmFtZXJhdGUpIGJ1dCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2Rp
bmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5m
byh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVj
cz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1l
cmF0ZTogNjAuNC8yIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQg
PT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQg
PT0gdHJ1ZSBPSworCitVbnN1cHBvcnRlZCBwcm90b2NvbDogTVNFCitSVU4ocHJvbWlzZSA9IG5h
dmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnbWVkaWEtc291
cmNlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBo
ZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9
KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5m
by5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKwor
VW5zdXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlvbjogMTA4MFAKK1JVTihwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86
IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDEwODAs
IGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxOTIwLCBmcmFtZXJhdGU6IDI0IH0gfSk7KQorUHJvbWlz
ZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2UgT0sKK2luZm8uc21vb3RoID09
IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK1Ntb290aCBhbmQg
cG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzog
eyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6
ICcyJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJl
c29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVl
IE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworU21vb3RoIGJ1dCBwb3dlciBp
bmVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29u
dGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnMics
IGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZl
ZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gdHJ1ZSBPSwor
aW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitOb3Qgc21vb3RoIGJ1dCBwb3dlciBl
ZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRp
YUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRl
bnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzUuMScs
IGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZl
ZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sK
K2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitOb3Qgc21vb3RoIGFuZCBwb3dlciBp
bmVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29u
dGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnNS4x
JywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29s
dmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBP
SworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCBhdWRpbyBj
b2RlYzogb2dnIHZvcmJpcworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRp
ZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1
ZGlvL29nZzsgY29kZWNzPSJ2b3JiaXMiJywgY2hhbm5lbHM6ICcyJyB9IH0pOykKK1Byb21pc2Ug
cmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBm
YWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworRU5EIE9GIFRFU1QKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNv
ZGluZ0luZm8uaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2st
ZGVjb2RpbmdJbmZvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc0MzkwMDE5NDJhZjU3MjUzYWU2ZTY1YTZm
MGQyNmRiMTQ5NjIxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
Y2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICB2YXIgcHJvbWlzZTsKKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAgICAgICBp
ZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgIGZhaWxUZXN0KCJJbnRlcm5hbHMg
aXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgIHJ1bignaW50ZXJuYWxzLmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGll
cygpJyk7CisgICAgICAgICBuZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbmV4dCgpIHsK
KyAgICAgICAgIGlmICghdGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgbmV4dFRlc3QgPSB0
ZXN0cy5zaGlmdCgpOworICAgICAgICBjb25zb2xlV3JpdGUoJycpOworICAgICAgICBuZXh0VGVz
dCgpOworICAgIH0KKworICAgIHRlc3RzID0gWworICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCA3MjBQIE1Q
NCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRp
YUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRl
bnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcyMCwgYml0cmF0
ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQuNSB9IH0pOyIpOworICAgICAgICAg
ICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAg
ICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCB0cnVlLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAg
ICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
Tm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBidXQgcG93ZXIgZWZmaWNpZW50IDcyMFAg
TVA0IGRlY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29u
dGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRy
YXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTsiKTsKKyAgICAg
ICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAg
ICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7Cisg
ICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdVbnN1cHBvcnRlZCBwcm90b2NvbDogTVNFJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9t
aXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdt
ZWRpYS1zb3VyY2UnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwi
YXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJh
dGU6IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVu
KChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZv
KGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9u
OiAxMDgwUCcpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNh
cGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRU
eXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDEwODAsIGJpdHJhdGU6
IDEwMDAsIHdpZHRoOiAxOTIwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAg
c2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAg
IGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAg
ICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdT
bW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAg
ICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJ
bmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29k
ZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVy
YXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2Up
LnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGll
c0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBidXQgcG93ZXIgaW5lZmZpY2ll
bnQgYXVkaW8gTVA0IGRlY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVk
aW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hh
bm5lbHM6ICcyJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7Cisg
ICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAg
ICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQp
OworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgnTm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGlu
ZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAn
YXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0
ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNr
TWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAg
ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnTm90IHNtb290
aCBhbmQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nJyk7CisgICAgICAgICAg
ICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5m
byh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVj
cz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVy
YXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2Up
LnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGll
c0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgYXVkaW8gY29kZWM6
IG9nZyB2b3JiaXMnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVk
aWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250
ZW50VHlwZTogJ2F1ZGlvL29nZzsgY29kZWNzPVwidm9yYmlzXCInLCBjaGFubmVsczogJzInIH0g
fSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9
PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgIF07CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIiAvPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0lu
Zm8tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NDI3NDE4OTYzZDEwMGM2OGEyMGI1ZGMyZGQx
NjM2OWZkMDBlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2NiBA
QAorUlVOKGludGVybmFscy5lbmFibGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKSkKKworU21vb3Ro
IGFuZCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Np
b24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhl
aWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNC41IH0g
fSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5m
by5zbW9vdGggPT0gdHJ1ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK05v
dCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBvd2VyIGVmZmljaWVudCA3MjBQIE1Q
NCBlbmNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5j
b2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAn
dmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdp
ZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYwLjQvMiB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sK
K2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZv
LnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IFJlY29y
ZAorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZv
KHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2Rl
Y3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFt
ZXJhdGU6IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0g
ZmFsc2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09
IGZhbHNlIE9LCisKK1Vuc3VwcG9ydGVkIHZpZGVvIHJlc29sdXRpb246IDEwODBQCitSVU4ocHJv
bWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAn
dHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0i
YXZjMSInLCBoZWlnaHQ6IDEwODAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxOTIwLCBmcmFtZXJh
dGU6IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFs
c2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZh
bHNlIE9LCisKK1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZwor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsg
dHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBj
b2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVy
YXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09
IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0g
dHJ1ZSBPSworCitTbW9vdGggYnV0IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGlu
ZworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZv
KHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0
OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAyMDAwLCBzYW1w
bGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQg
PT0gZmFsc2UgT0sKKworTm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBl
bmNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2Rp
bmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVk
aW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzUuMScsIGJpdHJhdGU6IDEw
MDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5z
dXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJF
ZmZpY2llbnQgPT0gdHJ1ZSBPSworCitOb3Qgc21vb3RoIGFuZCBwb3dlciBpbmVmZmljaWVudCBh
dWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50
VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICc1LjEnLCBi
aXRyYXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQg
T0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitp
bmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK1Vuc3VwcG9ydGVkIGF1ZGlvIGNvZGVj
OiBvZ2cgdm9yYmlzCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5l
bmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6
ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicsIGNoYW5uZWxzOiAnMicgfSB9KTspCitQcm9t
aXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9vdGgg
PT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKK0VORCBPRiBURVNU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2st
ZW5jb2RpbmdJbmZvLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9t
b2NrLWVuY29kaW5nSW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3MjRhZjZkODNhZGJhMzEwMGU3Njgw
N2Y3NGE0NjhjMTQ2OTA0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby5odG1sCkBAIC0wLDAgKzEsMTA3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Li4vdmlk
ZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgdmFyIHByb21pc2U7CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAg
ICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBmYWlsVGVzdCgiSW50ZXJu
YWxzIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgICBydW4oJ2ludGVybmFscy5lbmFibGVNb2NrTWVkaWFDYXBhYmls
aXRpZXMoKScpOworICAgICAgICAgbmV4dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHQo
KSB7CisgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0
ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgbmV4
dFRlc3QoKTsKKyAgICB9CisKKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgNzIw
UCBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3Iu
bWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZp
ZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6
IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQuNSB9IH0pOyIp
OworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4gewor
ICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCB0
cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5l
eHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgnTm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBidXQgcG93ZXIgZWZm
aWNpZW50IDcyMFAgTVA0IGVuY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21p
c3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwi
JywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYw
LjQvMiB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigo
aW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhp
bmZvLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIHByb3RvY29sOiBSZWNvcmQnKTsK
KyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMu
ZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lk
dGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNv
bHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRp
YUNhcGFiaWxpdGllc0luZm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAg
ICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVk
IHZpZGVvIHJlc29sdXRpb246IDEwODBQJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21p
c3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwi
JywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAy
NCB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5m
bykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZv
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgYXVkaW8g
TVA0IGVuY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRp
bzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFu
bmVsczogJzInLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAg
ICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAg
ICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsK
KyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ1Ntb290aCBidXQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGVuY29kaW5nJyk7
CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVz
LmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlw
ZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzInLCBiaXRy
YXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91
bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hl
Y2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAor
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21v
b3RoIGJ1dCBwb3dlciBlZmZpY2llbnQgYXVkaW8gTVA0IGVuY29kaW5nJyk7CisgICAgICAgICAg
ICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5m
byh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21w
NDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzUuMScsIGJpdHJhdGU6IDEwMDAs
IHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUo
cHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2Fw
YWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggYW5kIHBv
d2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigi
cHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBl
OiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVj
cz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVy
YXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2Up
LnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGll
c0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgYXVkaW8gY29kZWM6
IG9nZyB2b3JiaXMnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVk
aWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlv
OiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9XCJ2b3JiaXNcIicsIGNoYW5uZWxz
OiAnMicgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4o
KGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8o
aW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgXTsKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiIC8+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tdGVzdC5qcwppbmRleCBkYjhlNDE5OGQ2MDI3MGQwM2ZhZmMyYTc5M2ZlZjVkOGM0NTgyN2Q1
Li4yYzNhY2M1ZmM2NTRmMzU2MTA1YjJlODM2YTQ2ZmFmYjExYzQyNGI1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXRlc3QuanMKQEAgLTQ4NywzICs0ODcsOSBAQCBmdW5jdGlvbiBoYW5kbGVQcm9taXNlKHBy
b21pc2UpIHsKICAgICBmdW5jdGlvbiBoYW5kbGUoKSB7IH0KICAgICByZXR1cm4gcHJvbWlzZS50
aGVuKGhhbmRsZSwgaGFuZGxlKTsKIH0KKworZnVuY3Rpb24gY2hlY2tNZWRpYUNhcGFiaWxpdGll
c0luZm8oaW5mbywgZXhwZWN0ZWRTdXBwb3J0ZWQsIGV4cGVjdGVkU21vb3RoLCBleHBlY3RlZFBv
d2VyRWZmaWNpZW50KSB7CisgICAgbG9nUmVzdWx0KGluZm8uc3VwcG9ydGVkID09IGV4cGVjdGVk
U3VwcG9ydGVkLCAiaW5mby5zdXBwb3J0ZWQgPT0gIiArIGV4cGVjdGVkU3VwcG9ydGVkKTsKKyAg
ICBsb2dSZXN1bHQoaW5mby5zbW9vdGggPT0gZXhwZWN0ZWRTbW9vdGgsICJpbmZvLnNtb290aCA9
PSAiICsgZXhwZWN0ZWRTbW9vdGgpOworICAgIGxvZ1Jlc3VsdChpbmZvLnBvd2VyRWZmaWNpZW50
ID09IGV4cGVjdGVkUG93ZXJFZmZpY2llbnQsICJpbmZvLnBvd2VyRWZmaWNpZW50ID09ICIgKyBl
eHBlY3RlZFBvd2VyRWZmaWNpZW50KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346481</attachid>
            <date>2018-08-03 07:31:54 -0700</date>
            <delta_ts>2018-08-03 07:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180803163152.patch</filename>
            <type>text/plain</type>
            <size>76310</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5ODJjZjVhZWFmOWFh
Yzg2Zjk2MjBiODQxNDA3ZmIzZGI1NjQ5MC4uZGZhZTNlNDc4YTM4YjY2OGI0ODg5MGI1NGQ5ZGY5
OTllNDMxMzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA4LTAzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBh
YmlsaXRpZXNdIFBsYXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb2NrIHBsYXRmb3JtIHN1cHBvcnQgZm9yIHRoZSBNZWRp
YUNhcGFiaWxpdGllcyBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRlc3Q6IG1lZGlhL21lZGlh
Y2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWwKKyAgICAgICAgICAgICAgbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbAorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNhcGFiaWxpdGllczo6ZGVjb2RpbmdJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGluZ0luZm8pOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNhcGFiaWxpdGllc0luZm86OmNyZWF0ZSk6CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZv
cm1XUEUuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lVmlkZW9Db25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0
aW9uOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJh
dGlvbjo6Y29udGVudFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVW
aWRlb0NvbmZpZ3VyYXRpb246OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFF
bmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmJpdHJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmZyYW1lcmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uOjpjb250ZW50VHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bjo6Y2hhbm5lbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0Nv
bmZpZ3VyYXRpb246OmJpdHJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdp
bmVBdWRpb0NvbmZpZ3VyYXRpb246OnNhbXBsZXJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOjphdWRpb0NvbmZpZ3VyYXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOjp2aWRlb0NvbmZpZ3Vy
YXRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1vY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3Rvcnk6OmNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eTo6ZW5hYmxlTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5OjpkaXNhYmxlTW9jayk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6Y2FuRGVjb2RlTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmNh
blNtb290aGx5RGVjb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb246OmNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVNZWRpYSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6ZGVjb2RpbmdU
eXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbjo6Y2FuRW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb246OmNhblNtb290aGx5RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb246OmNhblBvd2VyRWZmaWNpZW50
bHlFbmNvZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbjo6ZW5jb2RpbmdUeXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5EZWNv
ZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbk1vY2s6OmNhblNtb290aGx5RGVjb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RGVj
b2RlTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhbkVuY29kZU1lZGlh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9j
azo6Y2FuU21vb3RobHlFbmNvZGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2lu
ZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRp
YSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbk1vY2suaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxOC0wOC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZWxlYXNlIGFzc2VydCB3aGVuIHRocm93aW5nIGV4Y2VwdGlvbnMgaW4gY3VzdG9t
IGVsZW1lbnQgcmVhY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGZkZmI2
ZGY3NmI5OWIyMDM1ZTA1MjcyNzc3OTI4NDAzYWI0MzhjYTQuLjg4YjMzODNkYTczNzQyZDgyYTNj
ZjhhMGJiZDJmOTgyNTdkNzUzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0y
Nyw4ICsyNywxMCBAQAogI2luY2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzLmgiCiAKICNpbmNsdWRl
ICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCiAj
aW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xOTUsOCArMTk3LDM2IEBAIHZvaWQgTWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5n
SW5mbyhNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sCiAgICAgLy8g
NS4gSW4gcGFyYWxsZWwsIHJ1biB0aGUgY3JlYXRlIGEgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGFs
Z29yaXRobSB3aXRoIGNvbmZpZ3VyYXRpb24gYW5kIHJlc29sdmUgcCB3aXRoIGl0cyByZXN1bHQu
CiAgICAgLy8gNi4gUmV0dXJuIHAuCiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW2NvbmZp
Z3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsK
LSAgICAgICAgVU5VU0VEX1BBUkFNKHByb21pc2UpOworCisgICAgICAgIC8vIDIuMi4zIElmIGNv
bmZpZ3VyYXRpb24gaXMgb2YgdHlwZSBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiwgcnVuIHRo
ZSBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3Rvcnk6OkRlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmUHRyPE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uPiBlbmdpbmVDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gaW5m
byA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChl
bmdpbmVDb25maWd1cmF0aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gMi4yLjMuMS4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5Cisg
ICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2V0IHN1cHBvcnRlZCB0byB0cnVlLiBP
dGhlcndpc2Ugc2V0IGl0IHRvIGZhbHNlLgorICAgICAgICAgICAgICAgIGluZm8tPnNldFN1cHBv
cnRlZChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5EZWNvZGVNZWRpYSgpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChpbmZvLT5zdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyAy
LjIuMy4yLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGRlY29kZSB0aGUgbWVkaWEgcmVw
cmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhdCBhIHBh
Y2UgdGhhdCBhbGxvd3MgYSBzbW9vdGggcGxheWJhY2ssIHNldCBzbW9vdGggdG8KKyAgICAgICAg
ICAgICAgICAgICAgLy8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RGVjb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjMuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5
CisgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQgcG93ZXJFZmZpY2llbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQgU0hPVUxEIE5P
VCB0YWtlIGludG8KKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUgZGV2aWNl4oCZ
cyBwb3dlciBzb3VyY2UgaGFzIHNpZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudCBkZWNvZGluZyBtb2R1bGVzLgorICAgICAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5Q
b3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRl
RGVjb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKICAgICB9KTsK
IH0KIApAQCAtMjE3LDggKzI0Nyw0MCBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGlu
Z0luZm8oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLAogICAgIC8v
IDUuIEluIHBhcmFsbGVsLCBydW4gdGhlIGNyZWF0ZSBhIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBh
bGdvcml0aG0gd2l0aCBjb25maWd1cmF0aW9uIGFuZCByZXNvbHZlIHAgd2l0aCBpdHMgcmVzdWx0
LgogICAgIC8vIDYuIFJldHVybiBwLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtjb25m
aWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldICgpIG11dGFibGUgewotICAgICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwcm9taXNlKTsKKworICAgICAgICAvLyAyLjIuNC4gSWYg
Y29uZmlndXJhdGlvbiBpcyBvZiB0eXBlIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLCBydW4g
dGhlIGZvbGxvd2luZyBzdWJzdGVwczoKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChSZWZQdHI8TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24+IGVuZ2luZUNvbmZpZ3VyYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBp
bmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgaWYg
KGVuZ2luZUNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgICAgICAvLyAyLjIuNC4xLiBJZiB0
aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGVuY29kZSB0aGUgbWVkaWEKKyAgICAgICAgICAgICAg
ICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9uLCBzZXQgc3VwcG9ydGVkIHRvIHRydWUu
IE90aGVyd2lzZQorICAgICAgICAgICAgICAgIC8vIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuRW5jb2Rl
TWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW5mby0+c3VwcG9ydGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMi4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0
byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5
IGNvbmZpZ3VyYXRpb24gYXQgYSBwYWNlIHRoYXQgYWxsb3dzIGVuY29kaW5nCisgICAgICAgICAg
ICAgICAgICAgIC8vIGZyYW1lcyBhdCB0aGUgc2FtZSBwYWNlIGFzIHRoZXkgYXJlIHNlbnQgdG8g
dGhlIGVuY29kZXIsIHNldAorICAgICAgICAgICAgICAgICAgICAvLyBzbW9vdGggdG8gdHJ1ZS4g
T3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICAgICAgaW5mby0+c2V0
U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290aGx5RW5jb2RlTWVkaWEoKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMy4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJs
ZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGVk
IGJ5IGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2llbnQgbWFubmVyLCBzZXQKKyAgICAg
ICAgICAgICAgICAgICAgLy8gcG93ZXJFZmZpY2llbnQgdG8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBp
dCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gU0hPVUxE
IE5PVCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgY3VycmVudCBwb3dlciBzb3VyY2UgaW4K
KyAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBlbmNvZGluZyBw
b3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZGV2aWNl
4oCZcyBwb3dlciBzb3VyY2UgaGFzIHNpZGUgZWZmZWN0cyBzdWNoIGFzIGVuYWJsaW5nIGRpZmZl
cmVudAorICAgICAgICAgICAgICAgICAgICAvLyBlbmNvZGluZyBtb2R1bGVzLgorICAgICAgICAg
ICAgICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5j
YW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRl
ZDxJRExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3Jl
YXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKKwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRleCAxMTlhMTI3YTU1
OTA0NjVmYTJmZDdhY2UxMjRmNWUzZmM3NDFmYTRlLi5hZjdhZGI4ZmM4NzhlYTJiN2Y4ZDY3MjA4
MWJlN2NlMDYwMTlhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgKQEAgLTMx
LDYgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB7CiBwdWJs
aWM6CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbygp
KTsKKyAgICB9CisKKyAgICB+TWVkaWFDYXBhYmlsaXRpZXNJbmZvKCkgPSBkZWZhdWx0OworCiAg
ICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZDsgfQogICAgIHZv
aWQgc2V0U3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7IG1fc3VwcG9ydGVkID0gc3VwcG9ydGVk
OyB9CiAKQEAgLTQxLDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG93ZXJFZmZpY2ll
bnQoYm9vbCBwb3dlckVmZmljaWVudCkgeyBtX3Bvd2VyRWZmaWNpZW50ID0gcG93ZXJFZmZpY2ll
bnQ7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYUNhcGFiaWxpdGllc0luZm8oKSA9IGRlZmF1bHQ7
CisKICAgICBib29sIG1fc3VwcG9ydGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc21vb3RoIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcG93ZXJFZmZpY2llbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBlZTVmMWJiNzM5MzlkOTVkMmUwYTE3ZmUwMThjYjIxN2E2M2Jj
ZTljLi5lMTRlZDRhZGNlYzA5MmNkODgzMDc0NWY0MzJjNzM3YzFlNDBkZmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAsNiArMzAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1ZGZlNzRjNzliNTIz
MTAwZDRlYzdiOGI0YmRmNWQ4MzVmODZmMjkxLi5lMmY5NWI0MjYzNWIxYmU4MmE4OWQ2OTU1Yzc1
OTQ2Yzg5MmFhMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtOTksNiArOTksNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21hYyIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9jb2NvYSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0
d29yay9jZiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZWFhODkxMjRmZWRhYjU3MWNj
NWY3OGY4NmVmYWJiY2FhODY5NDc3OC4uMWUzODhmMmMwNDZkOTU1MDM2M2FhZWZlMGNmMWFlNGRj
YWE0ZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTI3LDYgKzI3LDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL3dwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lciIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS90ZXh0L2ljdSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMmZlYTRl
NGQ4NzkwZjI5ZGRkNGFlNzk0ZjRiNjJlNWUzNjdjNGZmMy4uZDI5OTFiY2VlNzAwNzE0ZGYwMDlm
NTk1ZjBiZGQwYThjOTA3MzY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTE5Myw2
ICsxOTMsNyBAQCBzZXQoV2ViQ29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAg
ICBwbGF0Zm9ybS9hbmltYXRpb24KICAgICBwbGF0Zm9ybS9hdWRpbwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzCisgICAgcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMKICAgICBwbGF0Zm9ybS9tb2Nr
CiAgICAgcGxhdGZvcm0vbmV0d29yawogICAgIHBsYXRmb3JtL3NxbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBmOTk2ZDI3Mzk2N2E1Njg1YzUwOTk1YmU4NGYxNzM4MWRmMDRiNTc3Li44NTAyZWM2OTUzMTUx
Yjk1YzI1ZDVhNTIyYzI0NWRlYTQ1N2VlZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcyMSw2ICsx
NzIxLDkgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAKIAorcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmNwcAorcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeS5jcHAKKwogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwCkBAIC0xNzQxLDYgKzE3
NDQsOCBAQCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCiAKIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCitwbGF0Zm9ybS9tb2NrL01lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKK3BsYXRmb3JtL21vY2svTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcAogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHAKIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg1Mjg4Y2Q0NzQ4YmJmZTQ3N2ExNmY2Yjg4ODQwOGUxZmIzODRmNDQuLmYwYjMwNzg5NjZh
MWY1MTljMWExMWFhMWJmNDU5NGU4ZDdiOWE5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwODE5LDYgKzEwODE5LDE2IEBA
CiAJCTlBNTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdPYmplY3RzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUFC
MUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDIxMjExNDhGNTAw
MENCREEwNiAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcDsgcGF0aCA9
IG1lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDIyMjExNDhGNTEwMENCREEwNiAvKiBNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOyBwYXRoID0gbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDIzMjExNDhGNTIwMENCREEwNiAvKiBNZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmg7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFD
NkYwMjQyMTE0OEY1MzAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uLmg7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29k
aW5nQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAy
NTIxMTQ4RjU0MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5Lmg7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDI2MjExNDhG
NTUwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMkQyMTE0OEY5RjAw
Q0JEQTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbk1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyRTIx
MTQ4RkExMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlB
QzZGMDJGMjExNDhGQTIwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlv
bk1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlB
QzZGMDMwMjExNDhGQTQwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAz
RDgwNjFCQjMxMTBEMDBCNzY0QzkgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY1MzEsNiArMTY1NDEsNyBAQAogCQkJCUE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLywKIAkJCQkyOTgxQ0FBNjEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJMjlBODEyMUIw
RkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCAqLywKKwkJCQlB
OUVFNDQ4RjIxMEZENjlBMDBCNkVBRTYgLyogQWNjZXNzaWJpbGl0eVJvbGUuaWRsICovLAogCQkJ
CTI5ODFDQUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCAq
LywKIAkJCQk5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJh
ci5oICovLAogCQkJCTI5ODFDQUE4MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHAgKi8sCkBAIC0xNjU2MCw3ICsxNjU3MSw2IEBACiAJCQkJQTlGMkUwRTcyMDQ3
NUNEQzAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmNwcCAqLywKIAkJCQlBOUYy
RTBFODIwNDc1Q0RDMDA1MTI4NTUgLyogQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuaCAqLywKIAkJ
CQlBOUYyRTBFOTIwNDc1Q0RFMDA1MTI4NTUgLyogQWNjZXNzaWJsZVNldFZhbHVlRXZlbnQuaWRs
ICovLAotCQkJCUE5RUU0NDhGMjEwRkQ2OUEwMEI2RUFFNiAvKiBBY2Nlc3NpYmlsaXR5Um9sZS5p
ZGwgKi8sCiAJCQkJQTlFRTQ0OEMyMTBGQzlBRDAwQjZFQUU2IC8qIEFyaWFBdHRyaWJ1dGVzLmlk
bCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAg
Ki8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywK
QEAgLTE4ODA4LDYgKzE4ODE4LDEwIEBACiAJCQkJQ0RGMkIwMDUxODIwNTNERjAwRjJCNDI0IC8q
IG1lZGlhc291cmNlICovLAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKKwkJCQk5QUM2RjAyRDIxMTQ4
RjlGMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCAq
LywKKwkJCQk5QUM2RjAyRjIxMTQ4RkEyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmggKi8sCisJCQkJOUFDNkYwMkUyMTE0OEZBMTAwQ0JEQTA2IC8qIE1l
ZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8sCisJCQkJOUFDNkYwMzAy
MTE0OEZBNDAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5o
ICovLAogCQkJCTA3N0I2NDE0MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5jcHAgKi8sCiAJCQkJMDc3QjY0MTUxQjk1RjcwMzAwM0U5QUQ1IC8qIE1lZGlhUGxheWJh
Y2tUYXJnZXRNb2NrLmggKi8sCiAJCQkJMDc3QjY0MTAxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCAqLywKQEAgLTIxMjg4LDYgKzIxMzAyLDE5IEBA
CiAJCQlwYXRoID0gcmVwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
OUFDNkYwMjAyMTE0OEYxRTAwQ0JEQTA2IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5QUM2RjAyMTIxMTQ4RjUwMDBD
QkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcCAqLywKKwkJCQk5QUM2RjAyMzIx
MTQ4RjUyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmggKi8sCisJCQkJOUFD
NkYwMjIyMTE0OEY1MTAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnku
Y3BwICovLAorCQkJCTlBQzZGMDI1MjExNDhGNTQwMENCREEwNiAvKiBNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmggKi8sCisJCQkJOUFDNkYwMjQyMTE0OEY1MzAwQ0JEQTA2IC8qIE1l
ZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmggKi8sCisJCQkJOUFDNkYwMjYyMTE0OEY1
NTAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmggKi8sCisJCQkp
OworCQkJbmFtZSA9IG1lZGlhY2FwYWJpbGl0aWVzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdhayAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNDQyMSw2ICsyNDQ0OCw3IEBACiAJ
CQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovLAogCQkJCUE1OUUzQzFC
MTE1ODBGMzQwMDcyOTI4RSAvKiBpb3MgKi8sCiAJCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZE
IC8qIG1hYyAqLywKKwkJCQk5QUM2RjAyMDIxMTQ4RjFFMDBDQkRBMDYgLyogbWVkaWFjYXBhYmls
aXRpZXMgKi8sCiAJCQkJQzk2RjVFQkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAq
LywKIAkJCQkwNzIyMUI5MjE3Q0YwQUQ0MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8sCiAJCQkJ
NTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8sCkBAIC0yNzg3MCw3ICsyNzg5OCw2
IEBACiAJCQkJODM3MUFDM0IxRjUwOUJFNDAwRkJGMjg0IC8qIEVycm9yQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0MjBBNDRFRkM3MDBGOTkyRTAgLyogRXZlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCUNEMjI3RTNBMjExM0M4NjIwMEQyODVBRiAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzhEMzM1MTI0NDA1NDgwMDMy
M0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEEwNkQwMTMzQzA0
RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzA5
QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
Mjk0NTIsNiArMjk0NzksNyBAQAogCQkJCUM5NkY1RUM4MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzk2RjVF
QzUxQjU4NzIyNjAwOTFFQTlEIC8qIE1lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDOTBGNjU1NjFCMjI1M0JFMDAyMTYzQTEgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyMjdFM0EyMTEzQzg2MjAwRDI4
NUFGIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2
MzhBOTkxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM5RDg1MUYwMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRh
ZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1l
ZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ZjRjNWRlNmE5MmE3Zjc5ZDRhMDQ2MzM1NDFjMTc0
MWE3N2FmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYUVuZ2lu
ZVZpZGVvQ29uZmlndXJhdGlvbjo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24oVmlkZW9D
b25maWd1cmF0aW9uJiYgY29uZmlnKQorICAgIDogbV90eXBlKGNvbmZpZy5jb250ZW50VHlwZSkK
KyAgICAsIG1fd2lkdGgoY29uZmlnLndpZHRoKQorICAgICwgbV9oZWlnaHQoY29uZmlnLmhlaWdo
dCkKKyAgICAsIG1fYml0cmF0ZShjb25maWcuYml0cmF0ZSkKKyAgICAsIG1fZnJhbWVSYXRlTnVt
ZXJhdG9yKDApCisgICAgLCBtX2ZyYW1lUmF0ZURlbm9taW5hdG9yKDEpCit7CisgICAgYm9vbCBv
ayA9IGZhbHNlOworICAgIG1fZnJhbWVSYXRlTnVtZXJhdG9yID0gY29uZmlnLmZyYW1lcmF0ZS50
b0RvdWJsZSgmb2spOworICAgIGlmIChvaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBm
cmFtZXJhdGVQaWVjZXMgPSBjb25maWcuZnJhbWVyYXRlLnNwbGl0KCcvJyk7CisgICAgaWYgKGZy
YW1lcmF0ZVBpZWNlcy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91Ymxl
IG51bWVyYXRvciA9IGZyYW1lcmF0ZVBpZWNlc1swXS50b0RvdWJsZSgmb2spOworICAgIGlmICgh
b2spCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkZW5vbWluYXRvciA9IGZyYW1lcmF0
ZVBpZWNlc1sxXS50b0RvdWJsZSgmb2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghc3RkOjppc2Zpbml0ZShudW1lcmF0b3IpIHx8ICFzdGQ6OmlzZmluaXRlKGRl
bm9taW5hdG9yKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcmFtZVJhdGVOdW1lcmF0b3Ig
PSBudW1lcmF0b3I7CisgICAgbV9mcmFtZVJhdGVEZW5vbWluYXRvciA9IGRlbm9taW5hdG9yOwor
fQorCitNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6TWVkaWFFbmdpbmVBdWRpb0NvbmZp
Z3VyYXRpb24oQXVkaW9Db25maWd1cmF0aW9uJiYgY29uZmlnKQorICAgIDogbV90eXBlKGNvbmZp
Zy5jb250ZW50VHlwZSkKKyAgICAsIG1fY2hhbm5lbHMoY29uZmlnLmNoYW5uZWxzKQorICAgICwg
bV9iaXRyYXRlKDApCisgICAgLCBtX3NhbXBsZXJhdGUoMCkKK3sKKyAgICBpZiAoY29uZmlnLmJp
dHJhdGUpCisgICAgICAgIG1fYml0cmF0ZSA9IGNvbmZpZy5iaXRyYXRlLnZhbHVlKCk7CisKKyAg
ICBpZiAoY29uZmlnLnNhbXBsZXJhdGUpCisgICAgICAgIG1fc2FtcGxlcmF0ZSA9IGNvbmZpZy5z
YW1wbGVyYXRlLnZhbHVlKCk7Cit9CisKK01lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6TWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uKE1lZGlhQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKK3sKKyAgICBp
ZiAoY29uZmlnLmF1ZGlvKQorICAgICAgICBtX2F1ZGlvQ29uZmlndXJhdGlvbiA9IE1lZGlhRW5n
aW5lQXVkaW9Db25maWd1cmF0aW9uOjpjcmVhdGUoY29uZmlnLmF1ZGlvLnZhbHVlKCkpOworCisg
ICAgaWYgKGNvbmZpZy52aWRlbykKKyAgICAgICAgbV92aWRlb0NvbmZpZ3VyYXRpb24gPSBNZWRp
YUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKGNvbmZpZy52aWRlby52YWx1ZSgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTM0NzdlNjJkODkwODU3MzkwNGIwNzMwZDkxMmMwNjAy
YjAxYTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSwxMDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXVkaW9Db25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiTWVkaWFDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiVmlkZW9Db25maWd1cmF0
aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIE1lZGlhRW5naW5lVmlk
ZW9Db25maWd1cmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFFbmdpbmVWaWRlb0NvbmZp
Z3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRW5naW5lVmlkZW9Db25m
aWd1cmF0aW9uPiBjcmVhdGUoVmlkZW9Db25maWd1cmF0aW9uJiBjb25maWcpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZykpKTsKKyAgICB9OworCisgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH07CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3dpZHRoLCBtX2hlaWdodCk7IH07CisgICAgdWludDY0X3QgYml0cmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cmF0ZTsgfTsKKyAgICBkb3VibGUgZnJhbWVyYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGVOdW1lcmF0b3IgLyBtX2ZyYW1lUmF0ZURlbm9taW5h
dG9yOyB9OworCitwcml2YXRlOgorICAgIE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uKFZp
ZGVvQ29uZmlndXJhdGlvbiYmKTsKKworICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKKyAgICB1aW50
MzJfdCBtX3dpZHRoOworICAgIHVpbnQzMl90IG1faGVpZ2h0OworICAgIHVpbnQ2NF90IG1fYml0
cmF0ZTsKKyAgICBkb3VibGUgbV9mcmFtZVJhdGVOdW1lcmF0b3I7CisgICAgZG91YmxlIG1fZnJh
bWVSYXRlRGVub21pbmF0b3I7Cit9OworCitjbGFzcyBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJh
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4g
Y3JlYXRlKEF1ZGlvQ29uZmlndXJhdGlvbiYgY29uZmlnKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25m
aWcpKSk7CisgICAgfTsKKworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9OworICAgIFN0cmluZyBjaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hhbm5lbHM7IH07CisgICAgdWludDY0X3QgYml0cmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cmF0ZTsgfTsKKyAgICB1aW50MzJfdCBzYW1wbGVyYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGVyYXRlOyB9OworCitwcml2YXRlOgorICAgIE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9u
KEF1ZGlvQ29uZmlndXJhdGlvbiYmKTsKKworICAgIENvbnRlbnRUeXBlIG1fdHlwZTsKKyAgICBT
dHJpbmcgbV9jaGFubmVsczsKKyAgICB1aW50NjRfdCBtX2JpdHJhdGU7CisgICAgdWludDMyX3Qg
bV9zYW1wbGVyYXRlOworfTsKKworY2xhc3MgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAg
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uKE1lZGlhQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2aXJ0
dWFsIH5NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBlbnVtIGNs
YXNzIEltcGxlbWVudGF0aW9uVHlwZSB7CisgICAgICAgIE1vY2ssCisgICAgfTsKKworICAgIHZp
cnR1YWwgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsK
KworICAgIFJlZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4gYXVkaW9Db25maWd1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbmZpZ3VyYXRpb247IH07CisgICAgUmVm
UHRyPE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uPiB2aWRlb0NvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvQ29uZmlndXJhdGlvbjsgfTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IG1fYXVkaW9Db25maWd1cmF0aW9u
OworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gbV92aWRlb0NvbmZp
Z3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNkZWZpbmUgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19NRURJQV9FTkdJTkVfQ09ORklHVVJBVElPTihUb1ZhbHVlVHlwZU5h
bWUsIEltcGxlbWVudGF0aW9uVHlwZU5hbWUpIFwKKyAgICBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uJiBj
b25maWcpIHsgcmV0dXJuIGNvbmZpZy5pbXBsZW1lbnRhdGlvblR5cGUoKSA9PSBJbXBsZW1lbnRh
dGlvblR5cGVOYW1lOyB9IFwKKyAgICBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIxNTM4ODU3M2Q0YWQ4ZDA3MjRlYzI5OWUxOGExOGVjMGMyODdhYTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeS5oIgorCisjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgi
CisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRl
ICJNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCIKKyNpbmNsdWRlICJNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uTW9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBib29sJiBtb2NrRW5hYmxlZCgpCit7CisgICAgc3RhdGljIGJvb2wgZW5hYmxlZDsKKyAgICBy
ZXR1cm4gZW5hYmxlZDsKK30KKwordm9pZCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
OjpjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
IGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RGVjb2RpbmdDb25maWd1
cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIGlmIChtb2NrRW5hYmxlZCgpKSB7Cisg
ICAgICAgIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y3JlYXRlKGNvbmZp
ZywgY2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhbGxiYWNrKG51bGxw
dHIpOworfQorCit2b2lkIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmNyZWF0ZUVu
Y29kaW5nQ29uZmlndXJhdGlvbihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYgY29uZmlnLCBN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxs
YmFjayYgY2FsbGJhY2spCit7CisgICAgaWYgKG1vY2tFbmFibGVkKCkpIHsKKyAgICAgICAgTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjcmVhdGUoY29uZmlnLCBjYWxsYmFj
ayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGJhY2sobnVsbHB0cik7Cit9CisK
K3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygpCit7Cisg
ICAgbW9ja0VuYWJsZWQoKSA9IHRydWU7Cit9CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeTo6ZGlzYWJsZU1vY2soKQoreworICAgIG1vY2tFbmFibGVkKCkgPSBmYWxzZTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdlZWNiNjM2NWM1MGY4Zjc3ODI3NjkyNTE3MzI2Y2IwNmZlZmNhOTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUNhcGFiaWxpdGll
cy5oIgorI2luY2x1ZGUgIk1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAi
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2lu
ZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eSB7CitwdWJsaWM6CisgICAgdXNpbmcgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
Pik+OworICAgIHVzaW5nIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFJlZlB0cjxNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbj4pPjsKKwor
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYURlY29kaW5n
Q29uZmlndXJhdGlvbiYsIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJik7CisgICAgc3Rh
dGljIHZvaWQgY3JlYXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uJiwgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZU1vY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBkaXNhYmxlTW9jaygpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFF
bmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2RhYzEwNTQwMWFlMmZjNmFlYWMzNTdhZTQ5Y2RiNTllMDhlOWU0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24g
eworcHVibGljOgorICAgIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlnKQorICAgICAgICA6IE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbihyZWludGVycHJldF9jYXN0PE1lZGlhQ29uZmlndXJhdGlvbiYmPihjb25maWcpKQor
ICAgICAgICAsIG1fZGVjb2RpbmdUeXBlKGNvbmZpZy50eXBlKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsK
KworICAgIHZpcnR1YWwgYm9vbCBjYW5EZWNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9Owor
ICAgIHZpcnR1YWwgYm9vbCBjYW5TbW9vdGhseURlY29kZU1lZGlhKCkgeyByZXR1cm4gZmFsc2U7
IH07CisgICAgdmlydHVhbCBib29sIGNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVNZWRpYSgpIHsg
cmV0dXJuIGZhbHNlOyB9OworCisgICAgTWVkaWFEZWNvZGluZ1R5cGUgZGVjb2RpbmdUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWNvZGluZ1R5cGU7IH07CisKK3ByaXZhdGU6CisgICAgTWVkaWFE
ZWNvZGluZ1R5cGUgbV9kZWNvZGluZ1R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZjc2M2FhNzVmMTc2MWZhYzg3ZDZkOGMwN2U3ZGIwYzRhMjdmNGQ1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgiCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlh
RW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uIDogcHVibGljIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbiB7CitwdWJsaWM6CisgICAgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oTWVk
aWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisgICAgICAgIDogTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFDb25maWd1cmF0aW9uJiY+KGNvbmZp
ZykpCisgICAgICAgICwgbV9lbmNvZGluZ1R5cGUoY29uZmlnLnR5cGUpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgfk1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCBib29sIGNhbkVuY29kZU1lZGlhKCkgeyByZXR1cm4gZmFsc2U7
IH07CisgICAgdmlydHVhbCBib29sIGNhblNtb290aGx5RW5jb2RlTWVkaWEoKSB7IHJldHVybiBm
YWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUG93ZXJFZmZpY2llbnRseUVuY29kZU1lZGlh
KCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICBNZWRpYUVuY29kaW5nVHlwZSBlbmNvZGluZ1R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2VuY29kaW5nVHlwZTsgfTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYUVuY29kaW5nVHlwZSBtX2VuY29kaW5nVHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdp
bmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNjYxNWZiZTZjZGI2OWFjOWQ0NmE0MmVlNTAxYjI0MTE4NmRhYjRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZURlY29kaW5nQ29u
ZmlndXJhdGlvbk1vY2suY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlv
bk1vY2suaCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZp
Z3VyYXRpb25Nb2NrOjpjYW5EZWNvZGVNZWRpYSgpCit7CisgICAgLy8gVGhlIG1vY2sgaW1wbGVt
ZW50YXRpb24gc3VwcG9ydHMgb25seSBsb2NhbCBmaWxlIHBsYXliYWNrLgorICAgIGlmIChkZWNv
ZGluZ1R5cGUoKSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE1heGluZyBvdXQgdmlkZW8gZGVjb2Rpbmcgc3VwcG9ydCBh
dCA3MjBQLgorICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9D
b25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAg
ICAgICAgSW50U2l6ZSBzaXplID0gdmlkZW9Db25maWctPnNpemUoKTsKKyAgICAgICAgaWYgKHNp
emUud2lkdGgoKSA+IDEyODAgJiYgc2l6ZS5oZWlnaHQoKSA+IDcyMCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBBdWRpbyBkZWNvZGluZyBzdXBwb3J0IGxpbWl0
ZWQgdG8gYXVkaW8vbXA0LgorICAgIFJlZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bj4gYXVkaW9Db25maWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25m
aWcpCisgICAgICAgIHJldHVybiBhdWRpb0NvbmZpZy0+Y29udGVudFR5cGUoKS5jb250YWluZXJU
eXBlKCkgPT0gImF1ZGlvL21wNCI7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRp
YUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblNtb290aGx5RGVjb2RlTWVkaWEo
KQoreworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25m
aWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAg
ICAgaWYgKHZpZGVvQ29uZmlnLT5mcmFtZXJhdGUoKSA+IDMwKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bj4gYXVkaW9Db25maWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25m
aWcpCisgICAgICAgIHJldHVybiBhdWRpb0NvbmZpZy0+Y2hhbm5lbHMoKSA9PSAiMiI7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlv
bk1vY2s6OmNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVNZWRpYSgpCit7CisgICAgUmVmUHRyPE1l
ZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uPiB2aWRlb0NvbmZpZyA9IHZpZGVvQ29uZmlndXJh
dGlvbigpOworICAgIGlmICh2aWRlb0NvbmZpZykgeworICAgICAgICBpZiAodmlkZW9Db25maWct
PmNvbnRlbnRUeXBlKCkuY29udGFpbmVyVHlwZSgpICE9ICJ2aWRlby9tcDQiKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29u
ZmlndXJhdGlvbj4gYXVkaW9Db25maWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAo
YXVkaW9Db25maWcpCisgICAgICAgIHJldHVybiBhdWRpb0NvbmZpZy0+Yml0cmF0ZSgpIDw9IDEw
MDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbk1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFF
bmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFmMzgyOThmYzAw
ZTI1NzMzNWJkZDZiZjI0YmIxMzEzZWY0NDU2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZURlY29kaW5nQ29u
ZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2sgZmlu
YWwgOiBwdWJsaWMgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYgY29uZmln
LCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpEZWNvZGluZ0NvbmZpZ3VyYXRpb25D
YWxsYmFjayYgY2FsbGJhY2spCisgICAgeworICAgICAgICBhdXRvIG1vY2tDb25maWcgPSBhZG9w
dFJlZihuZXcgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1vdmUoY29u
ZmlnKSkpOworICAgICAgICBjYWxsYmFjayhtb2NrQ29uZmlnKTsKKyAgICB9OworCisgICAgSW1w
bGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQorICAgIGJvb2wgY2FuRGVjb2RlTWVkaWEoKSBm
aW5hbDsKKyAgICBib29sIGNhblNtb290aGx5RGVjb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29s
IGNhblBvd2VyRWZmaWNpZW50bHlEZWNvZGVNZWRpYSgpIGZpbmFsOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jayhNZWRpYURlY29k
aW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZykpIHsgfTsKK307CisKK30KKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19NRURJQV9FTkdJTkVfQ09ORklHVVJBVElPTihXZWJDb3JlOjpNZWRpYUVu
Z2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2ssIFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uOjpJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbk1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVu
Y29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDc2ZGEzMjFkODE1ZWRj
NmEzZjJhMGE5YmM4OGU0YWE2OTk3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5oIgorCisjaW5jbHVk
ZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhbkVu
Y29kZU1lZGlhKCkKK3sKKyAgICAvLyBUaGUgbW9jayBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBv
bmx5IGxvY2FsIGZpbGUgcGxheWJhY2suCisgICAgaWYgKGVuY29kaW5nVHlwZSgpID09IE1lZGlh
RW5jb2RpbmdUeXBlOjpSZWNvcmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1h
eGluZyBvdXQgdmlkZW8gZW5jb2Rpbmcgc3VwcG9ydCBhdCA3MjBQLgorICAgIFJlZlB0cjxNZWRp
YUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRp
b24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gdmlk
ZW9Db25maWctPnNpemUoKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGgoKSA+IDEyODAgJiYgc2l6
ZS5oZWlnaHQoKSA+IDcyMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvLyBBdWRpbyBlbmNvZGluZyBzdXBwb3J0IGxpbWl0ZWQgdG8gYXVkaW8vbXA0LgorICAgIFJl
ZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4gYXVkaW9Db25maWcgPSBhdWRpb0Nv
bmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25maWcpCisgICAgICAgIHJldHVybiBhdWRp
b0NvbmZpZy0+Y29udGVudFR5cGUoKS5jb250YWluZXJUeXBlKCkgPT0gImF1ZGlvL21wNCI7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbk1vY2s6OmNhblNtb290aGx5RW5jb2RlTWVkaWEoKQoreworICAgIFJlZlB0cjxNZWRpYUVu
Z2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24o
KTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5mcmFt
ZXJhdGUoKSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJl
ZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4gYXVkaW9Db25maWcgPSBhdWRpb0Nv
bmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25maWcpCisgICAgICAgIHJldHVybiBhdWRp
b0NvbmZpZy0+Y2hhbm5lbHMoKSA9PSAiMiI7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblBvd2VyRWZmaWNpZW50
bHlFbmNvZGVNZWRpYSgpCit7CisgICAgUmVmUHRyPE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0
aW9uPiB2aWRlb0NvbmZpZyA9IHZpZGVvQ29uZmlndXJhdGlvbigpOworICAgIGlmICh2aWRlb0Nv
bmZpZykgeworICAgICAgICBpZiAodmlkZW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFpbmVy
VHlwZSgpICE9ICJ2aWRlby9tcDQiKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIFJlZlB0cjxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4gYXVkaW9Db25maWcg
PSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25maWcpCisgICAgICAgIHJl
dHVybiBhdWRpb0NvbmZpZy0+Yml0cmF0ZSgpIDw9IDEwMDA7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0MDVhZmY3OGQ2NTFlM2Q3MjQyMjUzZjYwYjJiMzBhMTIy
YTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmln
dXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIK
KyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVu
Z2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFFbmdpbmVF
bmNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShN
ZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYgY29uZmlnLCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5OjpFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBhdXRvIG1vY2tDb25maWcgPSBhZG9wdFJlZihuZXcgTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1vdmUoY29uZmlnKSkpOworICAgICAgICBjYWxsYmFj
ayhtb2NrQ29uZmlnKTsKKyAgICB9OworCisgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVu
dGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9j
azsgfQorICAgIGJvb2wgY2FuRW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29sIGNhblNtb290
aGx5RW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29sIGNhblBvd2VyRWZmaWNpZW50bHlFbmNv
ZGVNZWRpYSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uTW9jayhNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZp
ZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNv
bmZpZykpIHsgfTsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19NRURJQV9FTkdJ
TkVfQ09ORklHVVJBVElPTihXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2ssIFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpJbXBsZW1l
bnRhdGlvblR5cGU6Ok1vY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGEzZTk2ZWQ5NjUxZGRhN2JhYTU1OWVkMTM5Zjc2ZGUzMzVhOWI4ZDUuLjBiMzQ4ZTgwMTk5YTY4
YWI4OWQzMDdjMGZlOWU0NjJkZmQ5NDMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNz
LmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUg
Ik1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTUwNSw2ICs1MDYsOCBAQCB2b2lkIEludGVybmFs
czo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0RnVsbHNj
cmVlbkF1dG9IaWRlRHVyYXRpb24oMF9zKTsKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5JbnNldHMo
eyB9KTsKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihmYWxzZSk7CisKKyAg
ICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpkaXNhYmxlTW9jaygpOwogfQogCiBJ
bnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0zNDY0LDYgKzM0Njcs
MTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VC
dWZmZXImIGJ1ZmZlciwgYm9vbCBmbGFnKQogCiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6OmVu
YWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpCit7CisgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygpOworfQorCiAjaWYgRU5BQkxFKFZJREVPKQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNv
bnN0IFN0cmluZyYgaW50ZXJydXB0aW9uU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggMGFiNTcwYmE0MzlhMThkMmZjNDQxODlmYmQ3N2YwMDU3NmFlNDgzZS4uMzg4NGVm
ZGUxN2NkYmQyNmFmMDdmOTZmNThhMTM0MTQ1ZGI1ZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC00NzQsNiArNDc0LDggQEAgcHVibGljOgogICAgIFJlZjxNb2NrQ0RNRmFj
dG9yeT4gcmVnaXN0ZXJNb2NrQ0RNKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZW5hYmxlTW9ja01l
ZGlhQ2FwYWJpbGl0aWVzKCk7CisKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2
b2lkIGVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjNhYTkyOTUzNjg4OGZjMDA4NjEzZDkyNzAzNDJjNjRl
ZmVkNGFiYy4uNzUwYzZmOTUxOWRhZmJmOTE3N2JkNTY3ZjIxMzNiZWY2ZWUyODg0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNDc4LDYgKzQ3OCw3IEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogCiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVE
SUFdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBXSBNb2NrQ0RNRmFjdG9yeSByZWdpc3Rlck1vY2tDRE0oKTsKKyAgICB2b2lkIGVuYWJs
ZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNQRUVDSF9TWU5U
SEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWE4
MzBlNmYxNjY4YjE1NTc2NTRjNDNhZjViY2M2MDg1OThjMzMyLi5mYjI5ZGY2NGNkZTc5OTllOWU1
ZjIxMmFlMmJiZmRiYTY1YzA2YmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDgtMDMg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtNZWRp
YUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50ZWdyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vY2sgdGVzdHMgZm9yIHRoZSBNZWRpYUNhcGFi
aWxpdGllcyBzcGVjaWZpY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBtZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9j
ay1lbmNvZGluZ0luZm8uaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5q
czoKKyAgICAgICAgKGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKToKKwogMjAxOC0wOC0wMiAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZWxlYXNlIGFzc2Vy
dCB3aGVuIHRocm93aW5nIGV4Y2VwdGlvbnMgaW4gY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29k
aW5nSW5mby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGll
cy9tb2NrLWRlY29kaW5nSW5mby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY1YjdhZTk1ZWY4
ZDk5MmVmOWYyNjBlMzU4MGI3NGMzYTRkY2QxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDY2IEBACitSVU4oaW50ZXJuYWxzLmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxp
dGllcygpKQorCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCA3MjBQIE1QNCBkZWNvZGluZwor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJh
dmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRl
OiAyNC41IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1
ZSBPSworaW5mby5zbW9vdGggPT0gdHJ1ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVl
IE9LCisKK05vdCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBvd2VyIGVmZmljaWVu
dCA3MjBQIE1QNCBkZWNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTog
J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3
aWR0aDogMTI4MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9L
CitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5m
by5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Vuc3VwcG9ydGVkIHByb3RvY29sOiBNU0UK
K1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7
IHR5cGU6ICdtZWRpYS1zb3VyY2UnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsg
Y29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwg
ZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVu
dCA9PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9uOiAxMDgwUAorUlVO
KHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlw
ZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMx
IicsIGhlaWdodDogMTA4MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDE5MjAsIGZyYW1lcmF0ZTog
MjQgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBP
SworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2Ug
T0sKKworU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4o
cHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBl
OiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEu
NDAuMiInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9
IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2lu
Zm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitT
bW9vdGggYnV0IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZworUlVOKHByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2Zp
bGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIi
JywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTsp
CitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNt
b290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK05vdCBz
bW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNl
ID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxl
JywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIics
IGNoYW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTsp
CitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNt
b290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK05vdCBz
bW9vdGggYW5kIHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZworUlVOKHByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2Zp
bGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIi
JywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0p
OykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8u
c21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK1Vu
c3VwcG9ydGVkIGF1ZGlvIGNvZGVjOiBvZ2cgdm9yYmlzCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRv
ci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7
IGNvbnRlbnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9InZvcmJpcyInLCBjaGFubmVsczogJzIn
IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2UgT0sK
K2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9L
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFi
aWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFj
YXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzQzOTAwMTk0
MmFmNTcyNTNhZTZlNjVhNmYwZDI2ZGIxNDk2MjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8uaHRtbApAQCAt
MCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICAgIHZhciBwcm9taXNlOworCisgICAgZnVuY3Rpb24gZG9UZXN0KCkK
KyAgICB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgZmFp
bFRlc3QoIkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAgcnVuKCdpbnRlcm5hbHMuZW5hYmxlTW9j
a01lZGlhQ2FwYWJpbGl0aWVzKCknKTsKKyAgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBuZXh0KCkgeworICAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBuZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7
CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorCisgICAgdGVzdHMgPSBbCisgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIg
ZWZmaWNpZW50IDcyMFAgTVA0IGRlY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNl
ID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxl
JywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhl
aWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNC41IH0g
fSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9
PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRy
dWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAg
fSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3RoICh0b28gaGlnaCBmcmFtZXJhdGUpIGJ1dCBwb3dl
ciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2Zp
bGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywg
aGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYwLjQv
MiB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5m
bykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZv
LCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAg
ICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIHByb3RvY29sOiBNU0UnKTsKKyAgICAg
ICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2Rp
bmdJbmZvKHsgdHlwZTogJ21lZGlhLXNvdXJjZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lk
dGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNv
bHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRp
YUNhcGFiaWxpdGllc0luZm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAg
ICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVk
IHZpZGVvIHJlc29sdXRpb246IDEwODBQJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywg
dmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdo
dDogMTA4MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDE5MjAsIGZyYW1lcmF0ZTogMjQgfSB9KTsi
KTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsK
KyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgZmFsc2Us
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9
LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNv
ZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFi
aWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBl
OiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnMicsIGJpdHJh
dGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3Vs
ZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVj
a01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAg
ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGJ1
dCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBy
dW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwi
bXA0YS40MC4yXCInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0
NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4o
KGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8o
aW5mbywgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3RoIGJ1dCBwb3dlciBlZmZpY2llbnQg
YXVkaW8gTVA0IGRlY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86
IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5l
bHM6ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAg
ICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAg
ICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2Us
IHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7
CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCdOb3Qgc21vb3RoIGFuZCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2Rp
bmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTog
J2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzUuMScsIGJpdHJh
dGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3Vs
ZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVj
a01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAor
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBv
cnRlZCBhdWRpbyBjb2RlYzogb2dnIHZvcmJpcycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9XCJ2b3JiaXNcIics
IGNoYW5uZWxzOiAnMicgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21p
c2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxp
dGllc0luZm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgXTsKKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KCkiIC8+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29k
aW5nSW5mby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGll
cy9tb2NrLWVuY29kaW5nSW5mby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU0Mjc0MTg5NjNk
MTAwYzY4YTIwYjVkYzJkZDE2MzY5ZmQwMGVhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDY2IEBACitSVU4oaW50ZXJuYWxzLmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxp
dGllcygpKQorCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCA3MjBQIE1QNCBlbmNvZGluZwor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsg
dHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBj
b2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBm
cmFtZXJhdGU6IDI0LjUgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRl
ZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50
ID09IHRydWUgT0sKKworTm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBidXQgcG93ZXIg
ZWZmaWNpZW50IDcyMFAgTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRp
YUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86
IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwg
Yml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogNjAuNC8yIH0gfSk7KQorUHJv
bWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGgg
PT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitVbnN1cHBvcnRl
ZCBwcm90b2NvbDogUmVjb3JkCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAncmVjb3JkJywgdmlkZW86IHsgY29udGVudFR5cGU6
ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwg
d2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitp
bmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8u
cG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworVW5zdXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlv
bjogMTA4MFAKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29k
aW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3Zp
ZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogMTA4MCwgYml0cmF0ZTogMTAwMCwgd2lk
dGg6IDE5MjAsIGZyYW1lcmF0ZTogMjQgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZv
LnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93
ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgYXVk
aW8gTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGll
cy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5
cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnMicsIGJpdHJh
dGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSwor
aW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gdHJ1ZSBPSworaW5mby5w
b3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Ntb290aCBidXQgcG93ZXIgaW5lZmZpY2llbnQg
YXVkaW8gTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVu
dFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnMicsIGJp
dHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBP
SworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gdHJ1ZSBPSworaW5m
by5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitOb3Qgc21vb3RoIGJ1dCBwb3dlciBlZmZp
Y2llbnQgYXVkaW8gTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNh
cGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsg
Y29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAn
NS4xJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJl
c29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxz
ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK05vdCBzbW9vdGggYW5kIHBv
d2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbics
IGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBj
aGFubmVsczogJzUuMScsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQor
UHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9v
dGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworVW5zdXBw
b3J0ZWQgYXVkaW8gY29kZWM6IG9nZyB2b3JiaXMKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRp
bzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL29nZzsgY29kZWNzPSJ2b3JiaXMiJywgY2hhbm5lbHM6
ICcyJyB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNl
IE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxz
ZSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFj
YXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcyNGFm
NmQ4M2FkYmEzMTAwZTc2ODA3Zjc0YTQ2OGMxNDY5MDRkZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0bWwK
QEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKyAgICB2YXIgcHJvbWlzZTsKKworICAgIGZ1bmN0aW9uIGRvVGVz
dCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAg
IGZhaWxUZXN0KCJJbnRlcm5hbHMgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgIHJ1bignaW50ZXJuYWxzLmVuYWJs
ZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpJyk7CisgICAgICAgICBuZXh0KCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gbmV4dCgpIHsKKyAgICAgICAgIGlmICghdGVzdHMubGVuZ3RoKSB7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgbmV4dFRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAgICBjb25zb2xlV3JpdGUo
JycpOworICAgICAgICBuZXh0VGVzdCgpOworICAgIH0KKworICAgIHRlc3RzID0gWworICAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYW5kIHBv
d2VyIGVmZmljaWVudCA3MjBQIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJv
bWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAn
dHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1c
ImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVy
YXRlOiAyNC41IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50
aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKGluZm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3RoICh0b28gaGlnaCBmcmFtZXJh
dGUpIGJ1dCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAg
ICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZv
KHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0
OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEy
ODAsIGZyYW1lcmF0ZTogNjAuNC8yIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2
ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFD
YXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgcHJv
dG9jb2w6IFJlY29yZCcpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5t
ZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAncmVjb3JkJywgdmlkZW86IHsg
Y29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBi
aXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAg
ICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAg
ICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOwor
ICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgnVW5zdXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlvbjogMTA4MFAnKTsKKyAgICAgICAgICAg
ICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZv
KHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0
OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDEwODAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAx
OTIwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShw
cm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYW5kIHBvd2Vy
IGVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3Ry
YW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJt
cDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0
MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigo
aW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhp
bmZvLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGJ1dCBwb3dlciBpbmVmZmljaWVudCBhdWRp
byBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3Iu
bWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1
ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNo
YW5uZWxzOiAnMicsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOwor
ICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAg
ICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCB0cnVl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0
KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoJ05vdCBzbW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2Rp
bmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRl
bnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4x
JywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAg
ICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAg
ICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAg
ICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
Tm90IHNtb290aCBhbmQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGVuY29kaW5nJyk7Cisg
ICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVu
Y29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTog
J2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzUuMScsIGJpdHJh
dGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3Vs
ZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVj
a01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAor
ICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBv
cnRlZCBhdWRpbyBjb2RlYzogb2dnIHZvcmJpcycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJh
bnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz1cInZv
cmJpc1wiJywgY2hhbm5lbHM6ICcyJyB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29s
dmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlh
Q2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICBd
OworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSIgLz4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCmluZGV4IGRiOGU0MTk4ZDYwMjcwZDAzZmFmYzJh
NzkzZmVmNWQ4YzQ1ODI3ZDUuLjJjM2FjYzVmYzY1NGYzNTYxMDViMmU4MzZhNDZmYWZiMTFjNDI0
YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwpAQCAtNDg3LDMgKzQ4Nyw5IEBAIGZ1bmN0aW9u
IGhhbmRsZVByb21pc2UocHJvbWlzZSkgewogICAgIGZ1bmN0aW9uIGhhbmRsZSgpIHsgfQogICAg
IHJldHVybiBwcm9taXNlLnRoZW4oaGFuZGxlLCBoYW5kbGUpOwogfQorCitmdW5jdGlvbiBjaGVj
a01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBleHBlY3RlZFN1cHBvcnRlZCwgZXhwZWN0ZWRT
bW9vdGgsIGV4cGVjdGVkUG93ZXJFZmZpY2llbnQpIHsKKyAgICBsb2dSZXN1bHQoaW5mby5zdXBw
b3J0ZWQgPT0gZXhwZWN0ZWRTdXBwb3J0ZWQsICJpbmZvLnN1cHBvcnRlZCA9PSAiICsgZXhwZWN0
ZWRTdXBwb3J0ZWQpOworICAgIGxvZ1Jlc3VsdChpbmZvLnNtb290aCA9PSBleHBlY3RlZFNtb290
aCwgImluZm8uc21vb3RoID09ICIgKyBleHBlY3RlZFNtb290aCk7CisgICAgbG9nUmVzdWx0KGlu
Zm8ucG93ZXJFZmZpY2llbnQgPT0gZXhwZWN0ZWRQb3dlckVmZmljaWVudCwgImluZm8ucG93ZXJF
ZmZpY2llbnQgPT0gIiArIGV4cGVjdGVkUG93ZXJFZmZpY2llbnQpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346484</attachid>
            <date>2018-08-03 07:58:33 -0700</date>
            <delta_ts>2018-08-03 08:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180803165831.patch</filename>
            <type>text/plain</type>
            <size>75901</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5ODJjZjVhZWFmOWFh
Yzg2Zjk2MjBiODQxNDA3ZmIzZGI1NjQ5MC4uOTNlNGRiNTk5ZWI4MDFhOTJiYWRkMmQyYjRhZmE0
NjM3NGVjY2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA4LTAzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBh
YmlsaXRpZXNdIFBsYXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgTW9jayBwbGF0Zm9ybSBzdXBwb3J0IGZvciB0aGUgTWVkaWFD
YXBhYmlsaXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCisgICAgICAgICAgICAgIG1lZGlhL21l
ZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5nSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNhcGFiaWxpdGllczo6ZW5jb2RpbmdJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUpOgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bjo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246OmNvbnRlbnRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlk
ZW9Db25maWd1cmF0aW9uOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5n
aW5lVmlkZW9Db25maWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpmcmFtZXJhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y29udGVudFR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246
OmNoYW5uZWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25m
aWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5l
QXVkaW9Db25maWd1cmF0aW9uOjpzYW1wbGVyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6YXVkaW9Db25maWd1cmF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6dmlkZW9Db25maWd1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpt
b2NrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5OjpjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRW5jb2RpbmdDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6
OmVuYWJsZU1vY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6ZGlzYWJsZU1vY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbjo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmNhbkRlY29kZU1lZGlhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uOjpjYW5T
bW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kaW5nVHlw
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbjo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b246OmNhbkVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5TbW9vdGhseUVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5
RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb246OmVuY29kaW5nVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2Rl
TWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuUG93ZXJFZmZpY2llbnRseURlY29k
ZU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6
OmNhblNtb290aGx5RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVF
bmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMTgtMDgtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmVsZWFzZSBhc3NlcnQgd2hlbiB0aHJvd2luZyBleGNlcHRpb25zIGluIGN1c3RvbSBl
bGVtZW50IHJlYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmZGZiNmRm
NzZiOTliMjAzNWUwNTI3Mjc3NzkyODQwM2FiNDM4Y2E0Li41MWJmMzdkYzNhNjQwOWU2NjZkOTFi
N2NjZDNkY2VmNzIzMTBhN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjcs
OCArMjcsMTAgQEAKICNpbmNsdWRlICJNZWRpYUNhcGFiaWxpdGllcy5oIgogCiAjaW5jbHVkZSAi
Q29udGVudFR5cGUuaCIKKyNpbmNsdWRlICJKU01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIgogI2lu
Y2x1ZGUgIk1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFFbmNv
ZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTk1LDggKzE5NywzNiBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzOjpkZWNvZGluZ0lu
Zm8oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLAogICAgIC8vIDUu
IEluIHBhcmFsbGVsLCBydW4gdGhlIGNyZWF0ZSBhIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBhbGdv
cml0aG0gd2l0aCBjb25maWd1cmF0aW9uIGFuZCByZXNvbHZlIHAgd2l0aCBpdHMgcmVzdWx0Lgog
ICAgIC8vIDYuIFJldHVybiBwLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtjb25maWd1
cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldICgpIG11dGFibGUgewotICAgICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7Ci0g
ICAgICAgIFVOVVNFRF9QQVJBTShwcm9taXNlKTsKKworICAgICAgICAvLyAyLjIuMyBJZiBjb25m
aWd1cmF0aW9uIGlzIG9mIHR5cGUgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24sIHJ1biB0aGUg
Zm9sbG93aW5nIHN1YnN0ZXBzOgorICAgICAgICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5OjpEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayBjYWxsYmFjayA9IFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGF1dG8gZW5naW5lQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIGluZm8gPSBNZWRpYUNhcGFiaWxpdGllc0luZm86OmNyZWF0ZSgpOwor
CisgICAgICAgICAgICBpZiAoZW5naW5lQ29uZmlndXJhdGlvbikgeworICAgICAgICAgICAgICAg
IC8vIDIuMi4zLjEuIElmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gZGVjb2RlIHRoZSBtZWRp
YSByZXByZXNlbnRlZCBieQorICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24sIHNldCBz
dXBwb3J0ZWQgdG8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAgICAg
ICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuRGVjb2RlTWVk
aWEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW5mby0+c3VwcG9ydGVkKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gMi4yLjMuMi4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBk
ZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIC8vIGNv
bmZpZ3VyYXRpb24gYXQgYSBwYWNlIHRoYXQgYWxsb3dzIGEgc21vb3RoIHBsYXliYWNrLCBzZXQg
c21vb3RoIHRvCisgICAgICAgICAgICAgICAgICAgIC8vIHRydWUuIE90aGVyd2lzZSBzZXQgaXQg
dG8gZmFsc2UuCisgICAgICAgICAgICAgICAgICAgIGluZm8tPnNldFNtb290aChlbmdpbmVDb25m
aWd1cmF0aW9uLT5jYW5TbW9vdGhseURlY29kZU1lZGlhKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIDIuMi4zLjMuIElmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gZGVjb2RlIHRoZSBt
ZWRpYSByZXByZXNlbnRlZCBieQorICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmF0aW9u
IGluIGEgcG93ZXIgZWZmaWNpZW50IG1hbm5lciwgc2V0IHBvd2VyRWZmaWNpZW50IHRvCisgICAg
ICAgICAgICAgICAgICAgIC8vIHRydWUuIE90aGVyd2lzZSBzZXQgaXQgdG8gZmFsc2UuIFRoZSB1
c2VyIGFnZW50IFNIT1VMRCBOT1QgdGFrZSBpbnRvCisgICAgICAgICAgICAgICAgICAgIC8vIGNv
bnNpZGVyYXRpb24gdGhlIGN1cnJlbnQgcG93ZXIgc291cmNlIGluIG9yZGVyIHRvIGRldGVybWlu
ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZGVjb2RpbmcgcG93ZXIgZWZmaWNpZW5jeSB1
bmxlc3MgdGhlIGRldmljZeKAmXMgcG93ZXIgc291cmNlIGhhcyBzaWRlCisgICAgICAgICAgICAg
ICAgICAgIC8vIGVmZmVjdHMgc3VjaCBhcyBlbmFibGluZyBkaWZmZXJlbnQgZGVjb2RpbmcgbW9k
dWxlcy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby0+c2V0UG93ZXJFZmZpY2llbnQoZW5naW5l
Q29uZmlndXJhdGlvbi0+Y2FuUG93ZXJFZmZpY2llbnRseURlY29kZU1lZGlhKCkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4+KFdU
Rk1vdmUoaW5mbykpOworICAgICAgICB9OworCisgICAgICAgIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3Rvcnk6OmNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBj
YWxsYmFjayk7CiAgICAgfSk7CiB9CiAKQEAgLTIxNyw4ICsyNDcsNDAgQEAgdm9pZCBNZWRpYUNh
cGFiaWxpdGllczo6ZW5jb2RpbmdJbmZvKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbiwKICAgICAvLyA1LiBJbiBwYXJhbGxlbCwgcnVuIHRoZSBjcmVhdGUgYSBNZWRp
YUNhcGFiaWxpdGllc0luZm8gYWxnb3JpdGhtIHdpdGggY29uZmlndXJhdGlvbiBhbmQgcmVzb2x2
ZSBwIHdpdGggaXRzIHJlc3VsdC4KICAgICAvLyA2LiBSZXR1cm4gcC4KICAgICBtX3Rhc2tRdWV1
ZS5lbnF1ZXVlVGFzayhbY29uZmlndXJhdGlvbiA9IFdURk1vdmUoY29uZmlndXJhdGlvbiksIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgVU5VU0VEX1BB
UkFNKGNvbmZpZ3VyYXRpb24pOwotICAgICAgICBVTlVTRURfUEFSQU0ocHJvbWlzZSk7CisKKyAg
ICAgICAgLy8gMi4yLjQuIElmIGNvbmZpZ3VyYXRpb24gaXMgb2YgdHlwZSBNZWRpYUVuY29kaW5n
Q29uZmlndXJhdGlvbiwgcnVuIHRoZSBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIE1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNr
IGNhbGxiYWNrID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byBlbmdpbmVDb25m
aWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gaW5mbyA9IE1lZGlhQ2FwYWJp
bGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChlbmdpbmVDb25maWd1cmF0
aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gMi4yLjQuMS4gSWYgdGhlIHVzZXIgYWdlbnQgaXMg
YWJsZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAgLy8gcmVwcmVzZW50ZWQg
YnkgY29uZmlndXJhdGlvbiwgc2V0IHN1cHBvcnRlZCB0byB0cnVlLiBPdGhlcndpc2UKKyAgICAg
ICAgICAgICAgICAvLyBzZXQgaXQgdG8gZmFsc2UuCisgICAgICAgICAgICAgICAgaW5mby0+c2V0
U3VwcG9ydGVkKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhbkVuY29kZU1lZGlhKCkpOworCisgICAg
ICAgICAgICAgICAgaWYgKGluZm8tPnN1cHBvcnRlZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIDIuMi40LjIuIElmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gZW5jb2RlIHRoZSBtZWRp
YQorICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9uIGF0
IGEgcGFjZSB0aGF0IGFsbG93cyBlbmNvZGluZworICAgICAgICAgICAgICAgICAgICAvLyBmcmFt
ZXMgYXQgdGhlIHNhbWUgcGFjZSBhcyB0aGV5IGFyZSBzZW50IHRvIHRoZSBlbmNvZGVyLCBzZXQK
KyAgICAgICAgICAgICAgICAgICAgLy8gc21vb3RoIHRvIHRydWUuIE90aGVyd2lzZSBzZXQgaXQg
dG8gZmFsc2UuCisgICAgICAgICAgICAgICAgICAgIGluZm8tPnNldFNtb290aChlbmdpbmVDb25m
aWd1cmF0aW9uLT5jYW5TbW9vdGhseUVuY29kZU1lZGlhKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIDIuMi40LjMuIElmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gZW5jb2RlIHRoZSBt
ZWRpYQorICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9u
IGluIGEgcG93ZXIgZWZmaWNpZW50IG1hbm5lciwgc2V0CisgICAgICAgICAgICAgICAgICAgIC8v
IHBvd2VyRWZmaWNpZW50IHRvIHRydWUuIE90aGVyd2lzZSBzZXQgaXQgdG8gZmFsc2UuIFRoZSB1
c2VyIGFnZW50CisgICAgICAgICAgICAgICAgICAgIC8vIFNIT1VMRCBOT1QgdGFrZSBpbnRvIGNv
bnNpZGVyYXRpb24gdGhlIGN1cnJlbnQgcG93ZXIgc291cmNlIGluCisgICAgICAgICAgICAgICAg
ICAgIC8vIG9yZGVyIHRvIGRldGVybWluZSB0aGUgZW5jb2RpbmcgcG93ZXIgZWZmaWNpZW5jeSB1
bmxlc3MgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGRldmljZeKAmXMgcG93ZXIgc291cmNl
IGhhcyBzaWRlIGVmZmVjdHMgc3VjaCBhcyBlbmFibGluZyBkaWZmZXJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgLy8gZW5jb2RpbmcgbW9kdWxlcy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby0+
c2V0UG93ZXJFZmZpY2llbnQoZW5naW5lQ29uZmlndXJhdGlvbi0+Y2FuUG93ZXJFZmZpY2llbnRs
eUVuY29kZU1lZGlhKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbz4+KFdURk1vdmUoaW5mbykpOworICAgICAgICB9OworCisgICAg
ICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmNyZWF0ZUVuY29kaW5nQ29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uLCBjYWxsYmFjayk7CisKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFi
aWxpdGllc0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgKaW5kZXggMTE5YTEyN2E1NTkwNDY1ZmEyZmQ3YWNlMTI0
ZjVlM2ZjNzQxZmE0ZS4uYWY3YWRiOGZjODc4ZWEyYjdmOGQ2NzIwODFiZTdjZTA2MDE5YTc4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUNhcGFiaWxpdGllc0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCkBAIC0zMSw2ICszMSwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gewogcHVibGljOgorCisgICAgc3RhdGlj
IFJlZjxNZWRpYUNhcGFiaWxpdGllc0luZm8+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUNhcGFiaWxpdGllc0luZm8oKSk7CisgICAgfQorCisgICAg
fk1lZGlhQ2FwYWJpbGl0aWVzSW5mbygpID0gZGVmYXVsdDsKKwogICAgIGJvb2wgc3VwcG9ydGVk
KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWQ7IH0KICAgICB2b2lkIHNldFN1cHBvcnRlZChi
b29sIHN1cHBvcnRlZCkgeyBtX3N1cHBvcnRlZCA9IHN1cHBvcnRlZDsgfQogCkBAIC00MSw2ICs0
OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBvd2VyRWZmaWNpZW50KGJvb2wgcG93ZXJFZmZp
Y2llbnQpIHsgbV9wb3dlckVmZmljaWVudCA9IHBvd2VyRWZmaWNpZW50OyB9CiAKIHByaXZhdGU6
CisgICAgTWVkaWFDYXBhYmlsaXRpZXNJbmZvKCkgPSBkZWZhdWx0OworCiAgICAgYm9vbCBtX3N1
cHBvcnRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Ntb290aCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3Bvd2VyRWZmaWNpZW50IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5k
ZXggZWU1ZjFiYjczOTM5ZDk1ZDJlMGExN2ZlMDE4Y2IyMTdhNjNiY2U5Yy4uZTE0ZWQ0YWRjZWMw
OTJjZDg4MzA3NDVmNDMyYzczN2MxZTQwZGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTMwLDYgKzMwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy94MTEiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L21lZGlhY2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9ndGsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lciIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZSIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNWRmZTc0Yzc5YjUyMzEwMGQ0ZWM3YjhiNGJkZjVk
ODM1Zjg2ZjI5MS4uZTJmOTViNDI2MzViMWJlODJhODlkNjk1NWM3NTk0NmM4OTJhYTJlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTk5LDYgKzk5LDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tYWMiCisgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvY2YiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV1BFLmNtYWtlCmluZGV4IGVhYTg5MTI0ZmVkYWI1NzFjYzVmNzhmODZlZmFiYmNhYTg2
OTQ3NzguLjFlMzg4ZjJjMDQ2ZDk1NTAzNjNhYWVmZTBjZjFhZTRkY2FhNGU2MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0yNyw2ICsyNyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy93cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UiCisgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL25ldHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9p
Y3UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDJmZWE0ZTRkODc5MGYyOWRkZDRhZTc5
NGY0YjYyZTVlMzY3YzRmZjMuLmQyOTkxYmNlZTcwMDcxNGRmMDA5ZjU5NWYwYmRkMGE4YzkwNzM2
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTMsNiArMTkzLDcgQEAgc2V0KFdl
YkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgcGxhdGZvcm0vYW5pbWF0
aW9uCiAgICAgcGxhdGZvcm0vYXVkaW8KICAgICBwbGF0Zm9ybS9ncmFwaGljcworICAgIHBsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzCiAgICAgcGxhdGZvcm0vbW9jawogICAgIHBsYXRmb3JtL25l
dHdvcmsKICAgICBwbGF0Zm9ybS9zcWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk5NmQyNzM5NjdhNTY4
NWM1MDk5NWJlODRmMTczODFkZjA0YjU3Ny4uODUwMmVjNjk1MzE1MWI5NWMyNWQ1YTUyMmMyNDVk
ZWE0NTdlZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MjEsNiArMTcyMSw5IEBAIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKK3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAKK3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCisKIHBs
YXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcApAQCAtMTc0MSw2ICsxNzQ0LDggQEAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAogCiBwbGF0Zm9ybS9t
b2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKIHBsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmNwcAorcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZURlY29kaW5nQ29u
ZmlndXJhdGlvbk1vY2suY3BwCitwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5jcHAKIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwCiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NTI4OGNkNDc0OGJi
ZmU0NzdhMTZmNmI4ODg0MDhlMWZiMzg0ZjQ0Li5mMGIzMDc4OTY2YTFmNTE5YzFhMTFhYTFiZjQ1
OTRlOGQ3YjlhOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDgxOSw2ICsxMDgxOSwxNiBAQAogCQk5QTUyOEU4MjE3RDdG
NTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZsb2F0aW5nT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdGMThFMjQ4OUEwMDUz
NDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyMTIxMTQ4RjUwMDBDQkRBMDYgLyogTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QUM2RjAyMjIxMTQ4RjUxMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDsgcGF0aCA9IG1lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QUM2RjAyMzIxMTQ4RjUyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDI0MjExNDhGNTMwMENC
REEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oOyBw
YXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMjUyMTE0OEY1NDAwQ0JEQTA2
IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBwYXRoID0g
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyNjIxMTQ4RjU1MDBDQkRBMDYgLyogTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDsgcGF0aCA9IG1lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDJEMjExNDhGOUYwMENCREEwNiAvKiBNZWRpYUVu
Z2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMkUyMTE0OEZBMTAwQ0JEQTA2IC8q
IE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyRjIxMTQ4RkEyMDBD
QkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAzMDIxMTQ4RkE0MDBD
QkRBMDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9u
TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBC
NzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVp
bHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTMxLDYgKzE2NTQxLDcg
QEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAogCQkJCTI5QTgxMjFCMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggKi8sCisJCQkJQTlFRTQ0OEYyMTBGRDY5QTAw
QjZFQUU2IC8qIEFjY2Vzc2liaWxpdHlSb2xlLmlkbCAqLywKIAkJCQkyOTgxQ0FBNzEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgKi8sCiAJCQkJOTNDNEY2RTkx
MTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLywKIAkJCQkyOTgx
Q0FBODEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwICovLApA
QCAtMTY1NjAsNyArMTY1NzEsNiBAQAogCQkJCUE5RjJFMEU3MjA0NzVDREMwMDUxMjg1NSAvKiBB
Y2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAgKi8sCiAJCQkJQTlGMkUwRTgyMDQ3NUNEQzAwNTEy
ODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmggKi8sCiAJCQkJQTlGMkUwRTkyMDQ3NUNE
RTAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmlkbCAqLywKLQkJCQlBOUVFNDQ4
RjIxMEZENjlBMDBCNkVBRTYgLyogQWNjZXNzaWJpbGl0eVJvbGUuaWRsICovLAogCQkJCUE5RUU0
NDhDMjEwRkM5QUQwMEI2RUFFNiAvKiBBcmlhQXR0cmlidXRlcy5pZGwgKi8sCiAJCQkJMjk4MUNB
QUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFB
MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCkBAIC0xODgwOCw2ICsxODgx
OCwxMCBAQAogCQkJCUNERjJCMDA1MTgyMDUzREYwMEYyQjQyNCAvKiBtZWRpYXNvdXJjZSAqLywK
IAkJCQk1OTMwOUExMDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmNwcCAqLywKIAkJCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrLmggKi8sCisJCQkJOUFDNkYwMkQyMTE0OEY5RjAwQ0JEQTA2IC8qIE1l
ZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8sCisJCQkJOUFDNkYwMkYy
MTE0OEZBMjAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5o
ICovLAorCQkJCTlBQzZGMDJFMjExNDhGQTEwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5n
Q29uZmlndXJhdGlvbk1vY2suY3BwICovLAorCQkJCTlBQzZGMDMwMjExNDhGQTQwMENCREEwNiAv
KiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCAqLywKIAkJCQkwNzdCNjQx
NDFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwICovLAogCQkJ
CTA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oICov
LAogCQkJCTA3N0I2NDEwMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jay5jcHAgKi8sCkBAIC0yMTI4OCw2ICsyMTMwMiwxOSBAQAogCQkJcGF0aCA9IHJlcGxh
eTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTlBQzZGMDIwMjExNDhGMUUw
MENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJOUFDNkYwMjEyMTE0OEY1MDAwQ0JEQTA2IC8qIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJOUFDNkYwMjMyMTE0OEY1MjAwQ0JEQTA2IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTlBQzZGMDIyMjExNDhGNTEwMENC
REEwNiAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcCAqLywKKwkJCQk5QUM2
RjAyNTIxMTQ4RjU0MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5o
ICovLAorCQkJCTlBQzZGMDI0MjExNDhGNTMwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbi5oICovLAorCQkJCTlBQzZGMDI2MjExNDhGNTUwMENCREEwNiAvKiBNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBtZWRp
YWNhcGFiaWxpdGllczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUExNDgz
MjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMjQ0MjEsNiArMjQ0NDgsNyBAQAogCQkJCUIyQTAxNTkxMEFGNkNE
NTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQlBNTlFM0MxQjExNTgwRjM0MDA3MjkyOEUg
LyogaW9zICovLAogCQkJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8sCisJCQkJ
OUFDNkYwMjAyMTE0OEYxRTAwQ0JEQTA2IC8qIG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCUM5
NkY1RUJGMUI1ODcyMjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8sCiAJCQkJMDcyMjFCOTIx
N0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovLAogCQkJCTU5Qzc3RjEwMTA1NDU5MUMw
MDUwNjEwNCAvKiBtb2NrICovLApAQCAtMjc4NzAsNyArMjc4OTgsNiBAQAogCQkJCTgzNzFBQzNC
MUY1MDlCRTQwMEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDRDIyN0UzQTIxMTNDODYyMDBEMjg1QUYgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThBMDZEMDEzM0MwNEQ1MDBDRDM3OUMgLyogRXZl
bnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MwOUE1MzBCMDY0REIzMDA1QUJE
NEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDUyLDYgKzI5NDc5LDcg
QEAKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEMjI3RTNBMjExM0M4NjIwMEQyODVBRiAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIwMEUx
NUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUQ4
NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMDk1N2ZmMTVhNWVjY2YwYjhlNzVhZTAyYTY0NjczMzFmNDNhODUzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uKFZpZGVvQ29uZmlndXJhdGlvbiYmIGNv
bmZpZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisgICAgLCBtX3dpZHRoKGNv
bmZpZy53aWR0aCkKKyAgICAsIG1faGVpZ2h0KGNvbmZpZy5oZWlnaHQpCisgICAgLCBtX2JpdHJh
dGUoY29uZmlnLmJpdHJhdGUpCisgICAgLCBtX2ZyYW1lUmF0ZU51bWVyYXRvcigwKQorICAgICwg
bV9mcmFtZVJhdGVEZW5vbWluYXRvcigxKQoreworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBt
X2ZyYW1lUmF0ZU51bWVyYXRvciA9IGNvbmZpZy5mcmFtZXJhdGUudG9Eb3VibGUoJm9rKTsKKyAg
ICBpZiAob2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWVyYXRlUGllY2VzID0g
Y29uZmlnLmZyYW1lcmF0ZS5zcGxpdCgnLycpOworICAgIGlmIChmcmFtZXJhdGVQaWVjZXMuc2l6
ZSgpICE9IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBudW1lcmF0b3IgPSBmcmFt
ZXJhdGVQaWVjZXNbMF0udG9Eb3VibGUoJm9rKTsKKyAgICBpZiAoIW9rIHx8ICFudW1lcmF0b3Ip
CisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkZW5vbWluYXRvciA9IGZyYW1lcmF0ZVBp
ZWNlc1sxXS50b0RvdWJsZSgmb2spOworICAgIGlmICghb2sgfHwgIWRlbm9taW5hdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobnVtZXJhdG9yKSB8fCAhc3Rk
Ojppc2Zpbml0ZShkZW5vbWluYXRvcikpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVS
YXRlTnVtZXJhdG9yID0gbnVtZXJhdG9yOworICAgIG1fZnJhbWVSYXRlRGVub21pbmF0b3IgPSBk
ZW5vbWluYXRvcjsKK30KKworTWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5n
aW5lQXVkaW9Db25maWd1cmF0aW9uKEF1ZGlvQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICA6
IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisgICAgLCBtX2NoYW5uZWxzKGNvbmZpZy5jaGFu
bmVscykKKyAgICAsIG1fYml0cmF0ZSgwKQorICAgICwgbV9zYW1wbGVyYXRlKDApCit7CisgICAg
aWYgKGNvbmZpZy5iaXRyYXRlKQorICAgICAgICBtX2JpdHJhdGUgPSBjb25maWcuYml0cmF0ZS52
YWx1ZSgpOworCisgICAgaWYgKGNvbmZpZy5zYW1wbGVyYXRlKQorICAgICAgICBtX3NhbXBsZXJh
dGUgPSBjb25maWcuc2FtcGxlcmF0ZS52YWx1ZSgpOworfQorCitNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRpb24mJiBjb25m
aWcpCit7CisgICAgaWYgKGNvbmZpZy5hdWRpbykKKyAgICAgICAgbV9hdWRpb0NvbmZpZ3VyYXRp
b24gPSBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKGNvbmZpZy5hdWRpby52
YWx1ZSgpKTsKKworICAgIGlmIChjb25maWcudmlkZW8pCisgICAgICAgIG1fdmlkZW9Db25maWd1
cmF0aW9uID0gTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmNyZWF0ZShjb25maWcudmlk
ZW8udmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEzNDc3ZTYyZDg5MDg1NzM5MDRi
MDczMGQ5MTJjMDYwMmIwMWE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oCkBAIC0w
LDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkF1
ZGlvQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlZp
ZGVvQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOworCitjbGFzcyBN
ZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5n
aW5lVmlkZW9Db25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYUVu
Z2luZVZpZGVvQ29uZmlndXJhdGlvbj4gY3JlYXRlKFZpZGVvQ29uZmlndXJhdGlvbiYgY29uZmln
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbmdpbmVWaWRlb0Nv
bmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSk7CisgICAgfTsKKworICAgIENvbnRlbnRUeXBl
IGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9OworICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV93aWR0aCwgbV9oZWlnaHQpOyB9OworICAgIHVp
bnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHJhdGU7IH07CisgICAgZG91Ymxl
IGZyYW1lcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlTnVtZXJhdG9yIC8gbV9mcmFt
ZVJhdGVEZW5vbWluYXRvcjsgfTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUVuZ2luZVZpZGVvQ29u
ZmlndXJhdGlvbihWaWRlb0NvbmZpZ3VyYXRpb24mJik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5
cGU7CisgICAgdWludDMyX3QgbV93aWR0aDsKKyAgICB1aW50MzJfdCBtX2hlaWdodDsKKyAgICB1
aW50NjRfdCBtX2JpdHJhdGU7CisgICAgZG91YmxlIG1fZnJhbWVSYXRlTnVtZXJhdG9yOworICAg
IGRvdWJsZSBtX2ZyYW1lUmF0ZURlbm9taW5hdG9yOworfTsKKworY2xhc3MgTWVkaWFFbmdpbmVB
dWRpb0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUVuZ2luZUF1ZGlvQ29u
ZmlndXJhdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFFbmdpbmVBdWRpb0Nv
bmZpZ3VyYXRpb24+IGNyZWF0ZShBdWRpb0NvbmZpZ3VyYXRpb24mIGNvbmZpZykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9u
KFdURk1vdmUoY29uZmlnKSkpOworICAgIH07CisKKyAgICBDb250ZW50VHlwZSBjb250ZW50VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfTsKKyAgICBTdHJpbmcgY2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzOyB9OworICAgIHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7
IHJldHVybiBtX2JpdHJhdGU7IH07CisgICAgdWludDMyX3Qgc2FtcGxlcmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtcGxlcmF0ZTsgfTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUVuZ2luZUF1ZGlv
Q29uZmlndXJhdGlvbihBdWRpb0NvbmZpZ3VyYXRpb24mJik7CisKKyAgICBDb250ZW50VHlwZSBt
X3R5cGU7CisgICAgU3RyaW5nIG1fY2hhbm5lbHM7CisgICAgdWludDY0X3QgbV9iaXRyYXRlOwor
ICAgIHVpbnQzMl90IG1fc2FtcGxlcmF0ZTsKK307CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbj4gewor
cHVibGljOgorICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRpb24m
Jik7CisgICAgdmlydHVhbCB+TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0Owor
CisgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRhdGlvblR5cGUgeworICAgICAgICBNb2NrLAorICAg
IH07CisKKyAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCA9IDA7CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+
IGF1ZGlvQ29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25maWd1cmF0aW9u
OyB9OworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25m
aWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NvbmZpZ3VyYXRpb247IH07CisKK3By
aXZhdGU6CisgICAgUmVmUHRyPE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uPiBtX2F1ZGlv
Q29uZmlndXJhdGlvbjsKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+
IG1fdmlkZW9Db25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04o
VG9WYWx1ZVR5cGVOYW1lLCBJbXBsZW1lbnRhdGlvblR5cGVOYW1lKSBcCisgICAgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbiYgY29uZmlnKSB7IHJldHVybiBjb25maWcuaW1wbGVtZW50YXRpb25UeXBlKCkg
PT0gSW1wbGVtZW50YXRpb25UeXBlTmFtZTsgfSBcCisgICAgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMTUzODg1NzNkNGFkOGQwNzI0ZWMyOTllMThhMThlYzBjMjg3
YWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKKworI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5ncy5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9u
LmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisj
aW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJN
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgYm9vbCYgbW9ja0VuYWJsZWQoKQoreworICAgIHN0YXRpYyBib29sIGVu
YWJsZWQ7CisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiBjb25maWcsIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkRl
Y29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobW9ja0Vu
YWJsZWQoKSkgeworICAgICAgICBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6
OmNyZWF0ZShjb25maWcsIGNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBj
YWxsYmFjayhudWxscHRyKTsKK30KKwordm9pZCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRp
b24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RW5jb2RpbmdDb25m
aWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIGlmIChtb2NrRW5hYmxlZCgpKSB7
CisgICAgICAgIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y3JlYXRlKGNv
bmZpZywgY2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhbGxiYWNrKG51
bGxwdHIpOworfQorCit2b2lkIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmVuYWJs
ZU1vY2soKQoreworICAgIG1vY2tFbmFibGVkKCkgPSB0cnVlOworfQorCit2b2lkIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmRpc2FibGVNb2NrKCkKK3sKKyAgICBtb2NrRW5hYmxl
ZCgpID0gZmFsc2U7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWVjYjYzNjVjNTBmOGY3NzgyNzY5MjUxNzMy
NmNiMDZmZWZjYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVk
aWFDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5o
IgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVk
ZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnkgeworcHVibGljOgorICAgIHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlv
bkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24+KT47CisKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24o
TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mLCBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFj
ayYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUVuY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJik7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVNb2NrKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzYWJsZU1vY2soKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkYWMxMDU0MDFhZTJmYzZhZWFjMzU3YWU0OWNkYjU5ZTA4ZTll
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFi
aWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uaCIK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxNZWRpYUNvbmZpZ3VyYXRpb24m
Jj4oY29uZmlnKSkKKyAgICAgICAgLCBtX2RlY29kaW5nVHlwZShjb25maWcudHlwZSkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB+TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24o
KSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRGVjb2RlTWVkaWEoKSB7IHJldHVy
biBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU21vb3RobHlEZWNvZGVNZWRpYSgpIHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBjYW5Qb3dlckVmZmljaWVudGx5RGVj
b2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIE1lZGlhRGVjb2RpbmdUeXBlIGRl
Y29kaW5nVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RpbmdUeXBlOyB9OworCitwcml2YXRl
OgorICAgIE1lZGlhRGVjb2RpbmdUeXBlIG1fZGVjb2RpbmdUeXBlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25m
aWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3NjNhYTc1ZjE3NjFmYWM4N2Q2ZDhjMDdlN2RiMGM0
YTI3ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIE1lZGlhRW5naW5lRW5jb2RpbmdDb25m
aWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlnKQorICAgICAgICA6
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihyZWludGVycHJldF9jYXN0PE1lZGlhQ29uZmlndXJh
dGlvbiYmPihjb25maWcpKQorICAgICAgICAsIG1fZW5jb2RpbmdUeXBlKGNvbmZpZy50eXBlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5FbmNvZGVNZWRpYSgpIHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBjYW5TbW9vdGhseUVuY29kZU1lZGlh
KCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGNhblBvd2VyRWZmaWNpZW50
bHlFbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworCisgICAgTWVkaWFFbmNvZGluZ1R5
cGUgZW5jb2RpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGluZ1R5cGU7IH07CisKK3By
aXZhdGU6CisgICAgTWVkaWFFbmNvZGluZ1R5cGUgbV9lbmNvZGluZ1R5cGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzAxY2UxOWQwNWIzNTllZWM5ZDE4Mzk2YzJmMmJhMjNmZGMyOTljZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdp
bmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGlu
Z0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1
ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIE1lZGlhRW5naW5l
RGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2RlTWVkaWEoKQoreworICAgIC8vIFRo
ZSBtb2NrIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIG9ubHkgbG9jYWwgZmlsZSBwbGF5YmFjay4K
KyAgICBpZiAoZGVjb2RpbmdUeXBlKCkgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGRlY29k
aW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1
cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9
IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgwICYm
IHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQXVkaW8gZGVjb2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4KKyAg
ICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlv
Q29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFp
bmVyVHlwZSgpID09ICJhdWRpby9tcDQiOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1l
ZGlhKCkKK3sKKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7Cisg
ICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIGlmICh2aWRlb0NvbmZpZy0+ZnJhbWVyYXRl
KCkgPiAzMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8
TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1
cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25m
aWctPmNoYW5uZWxzKCkgPT0gIjIiOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RGVj
b2RlTWVkaWEoKQoreworICAgIGF1dG8gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24o
KTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5jb250
ZW50VHlwZSgpLmNvbnRhaW5lclR5cGUoKSAhPSAidmlkZW8vbXA0IikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1
cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25m
aWctPmJpdHJhdGUoKSA8PSAxMDAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYxZjM4Mjk4ZmMwMGUyNTczMzViZGQ2YmYyNGJiMTMxM2VmNDQ1NmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uTW9jay5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCisjaW5jbHVkZSAiTWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrIGZpbmFsIDogcHVibGljIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGUoTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RGVj
b2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgYXV0
byBtb2NrQ29uZmlnID0gYWRvcHRSZWYobmV3IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uTW9jayhXVEZNb3ZlKGNvbmZpZykpKTsKKyAgICAgICAgY2FsbGJhY2sobW9ja0NvbmZpZyk7
CisgICAgfTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KKyAgICBib29s
IGNhbkRlY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5TbW9vdGhseURlY29kZU1lZGlh
KCkgZmluYWw7CisgICAgYm9vbCBjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbk1vY2soTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisgICAgICAgIDog
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSB7IH07Cit9
OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJ
T04oV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLCBXZWJDb3Jl
OjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6SW1wbGVtZW50YXRpb25UeXBlOjpN
b2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdp
bmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ODAyNDkxNjNiYmMyODE4NjY0NmFmMTJkYWYwOTUxZDY5YzdmZjBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbk1vY2suY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2suaCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSgpCit7CisgICAgLy8gVGhlIG1vY2sgaW1wbGVt
ZW50YXRpb24gc3VwcG9ydHMgb25seSBsb2NhbCBmaWxlIHBsYXliYWNrLgorICAgIGlmIChlbmNv
ZGluZ1R5cGUoKSA9PSBNZWRpYUVuY29kaW5nVHlwZTo6UmVjb3JkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGVuY29kaW5nIHN1cHBvcnQgYXQgNzIw
UC4KKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYg
KHZpZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXpl
KCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3
MjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQXVkaW8gZW5j
b2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4KKyAgICBhdXRvIGF1ZGlvQ29uZmln
ID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnICYmIChhdWRpb0Nv
bmZpZy0+Y29udGVudFR5cGUoKS5jb250YWluZXJUeXBlKCkgIT0gImF1ZGlvL21wNCIpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVu
Z2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblNtb290aGx5RW5jb2RlTWVkaWEoKQor
eworICAgIGF1dG8gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAo
dmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5mcmFtZXJhdGUoKSA+IDMw
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGF1dG8gYXVkaW9Db25m
aWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25maWcgJiYgYXVkaW9D
b25maWctPmNoYW5uZWxzKCkgIT0gIjIiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2s6OmNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpCit7CisgICAgYXV0byB2aWRlb0Nv
bmZpZyA9IHZpZGVvQ29uZmlndXJhdGlvbigpOworICAgIGlmICh2aWRlb0NvbmZpZyAmJiAodmlk
ZW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFpbmVyVHlwZSgpICE9ICJ2aWRlby9tcDQiKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhdWRpb0NvbmZpZyA9IGF1ZGlvQ29u
ZmlndXJhdGlvbigpOworICAgIGlmIChhdWRpb0NvbmZpZyAmJiAoYXVkaW9Db25maWctPmJpdHJh
dGUoKSA+IDEwMDApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0MDVhZmY3OGQ2NTFlM2Q3MjQyMjUzZjYwYjJiMzBhMTIy
YTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmln
dXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIK
KyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVu
Z2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFFbmdpbmVF
bmNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShN
ZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYgY29uZmlnLCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5OjpFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBhdXRvIG1vY2tDb25maWcgPSBhZG9wdFJlZihuZXcgTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1vdmUoY29uZmlnKSkpOworICAgICAgICBjYWxsYmFj
ayhtb2NrQ29uZmlnKTsKKyAgICB9OworCisgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVu
dGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9j
azsgfQorICAgIGJvb2wgY2FuRW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29sIGNhblNtb290
aGx5RW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29sIGNhblBvd2VyRWZmaWNpZW50bHlFbmNv
ZGVNZWRpYSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uTW9jayhNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZp
ZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNv
bmZpZykpIHsgfTsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19NRURJQV9FTkdJ
TkVfQ09ORklHVVJBVElPTihXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bk1vY2ssIFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpJbXBsZW1l
bnRhdGlvblR5cGU6Ok1vY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGEzZTk2ZWQ5NjUxZGRhN2JhYTU1OWVkMTM5Zjc2ZGUzMzVhOWI4ZDUuLjBiMzQ4ZTgwMTk5YTY4
YWI4OWQzMDdjMGZlOWU0NjJkZmQ5NDMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNz
LmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUg
Ik1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTUwNSw2ICs1MDYsOCBAQCB2b2lkIEludGVybmFs
czo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0RnVsbHNj
cmVlbkF1dG9IaWRlRHVyYXRpb24oMF9zKTsKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5JbnNldHMo
eyB9KTsKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihmYWxzZSk7CisKKyAg
ICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpkaXNhYmxlTW9jaygpOwogfQogCiBJ
bnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0zNDY0LDYgKzM0Njcs
MTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VC
dWZmZXImIGJ1ZmZlciwgYm9vbCBmbGFnKQogCiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6OmVu
YWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpCit7CisgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygpOworfQorCiAjaWYgRU5BQkxFKFZJREVPKQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNv
bnN0IFN0cmluZyYgaW50ZXJydXB0aW9uU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggMGFiNTcwYmE0MzlhMThkMmZjNDQxODlmYmQ3N2YwMDU3NmFlNDgzZS4uMzg4NGVm
ZGUxN2NkYmQyNmFmMDdmOTZmNThhMTM0MTQ1ZGI1ZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC00NzQsNiArNDc0LDggQEAgcHVibGljOgogICAgIFJlZjxNb2NrQ0RNRmFj
dG9yeT4gcmVnaXN0ZXJNb2NrQ0RNKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZW5hYmxlTW9ja01l
ZGlhQ2FwYWJpbGl0aWVzKCk7CisKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2
b2lkIGVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjNhYTkyOTUzNjg4OGZjMDA4NjEzZDkyNzAzNDJjNjRl
ZmVkNGFiYy4uNzUwYzZmOTUxOWRhZmJmOTE3N2JkNTY3ZjIxMzNiZWY2ZWUyODg0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNDc4LDYgKzQ3OCw3IEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogCiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVE
SUFdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVE
X01FRElBXSBNb2NrQ0RNRmFjdG9yeSByZWdpc3Rlck1vY2tDRE0oKTsKKyAgICB2b2lkIGVuYWJs
ZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNQRUVDSF9TWU5U
SEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWE4
MzBlNmYxNjY4YjE1NTc2NTRjNDNhZjViY2M2MDg1OThjMzMyLi4wYTM3YTI3NDQ5OTBlOWY3M2M3
ZGJjNWJmOTI0ZTk5MWVjMWJmODRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDgtMDMg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtNZWRp
YUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50ZWdyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBNb2NrIHRlc3RzIGZvciB0aGUgTWVkaWFDYXBhYmls
aXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIG1lZGlhL21lZGlhY2FwYWJpbGl0aWVz
L21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8uaHRtbDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29kaW5n
SW5mby5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby10ZXN0LmpzOgorICAgICAg
ICAoY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8pOgorCiAyMDE4LTA4LTAyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbGVhc2UgYXNzZXJ0IHdoZW4gdGhy
b3dpbmcgZXhjZXB0aW9ucyBpbiBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVj
b2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjViN2FlOTVlZjhkOTkyZWY5ZjI2
MGUzNTgwYjc0YzNhNGRjZDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCkpCisK
K1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGRlY29kaW5nCitSVU4ocHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVp
Z2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUgfSB9
KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZv
LnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90
IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBidXQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0
IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNv
ZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0
OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgw
LCBmcmFtZXJhdGU6IDYwLjQvMiB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3Vw
cG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZm
aWNpZW50ID09IHRydWUgT0sKKworVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IE1TRQorUlVOKHByb21p
c2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ21l
ZGlhLXNvdXJjZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2
YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6
IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2Ug
T0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNl
IE9LCisKK1Vuc3VwcG9ydGVkIHZpZGVvIHJlc29sdXRpb246IDEwODBQCitSVU4ocHJvbWlzZSA9
IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScs
IHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0
OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOykK
K1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNt
b290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitTbW9v
dGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywg
YXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNo
YW5uZWxzOiAnMicsIGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJv
bWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGgg
PT0gdHJ1ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Ntb290aCBidXQg
cG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlv
OiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVs
czogJzInLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2Ug
cmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRy
dWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworTm90IHNtb290aCBidXQg
cG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzog
eyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6
ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2Ug
cmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZh
bHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNtb290aCBhbmQg
cG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlv
OiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVs
czogJzUuMScsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlz
ZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0g
ZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworVW5zdXBwb3J0ZWQg
YXVkaW8gY29kZWM6IG9nZyB2b3JiaXMKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2Fw
YWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5
cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicsIGNoYW5uZWxzOiAnMicgfSB9KTspCitQ
cm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9v
dGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKK0VORCBPRiBU
RVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21v
Y2stZGVjb2RpbmdJbmZvLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGll
cy9tb2NrLWRlY29kaW5nSW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NDM5MDAxOTQyYWY1NzI1M2Fl
NmU2NWE2ZjBkMjZkYjE0OTYyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCkBAIC0wLDAgKzEsMTA3
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Li4v
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgICAgdmFyIHByb21pc2U7CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAg
ICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBmYWlsVGVzdCgiSW50
ZXJuYWxzIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgICBydW4oJ2ludGVybmFscy5lbmFibGVNb2NrTWVkaWFDYXBh
YmlsaXRpZXMoKScpOworICAgICAgICAgbmV4dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG5l
eHQoKSB7CisgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgZW5kVGVz
dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRU
ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAg
bmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQg
NzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzog
eyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAs
IGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUgfSB9KTsiKTsKKyAg
ICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAg
ICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsK
KyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ05vdCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBvd2VyIGVmZmljaWVu
dCA3MjBQIE1QNCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVv
OiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcy
MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogNjAuNC8yIH0gfSk7Iik7
CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7Cisg
ICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZh
bHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5l
eHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IE1TRScpOworICAgICAgICAgICAgIHJ1
bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0
eXBlOiAnbWVkaWEtc291cmNlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNv
ZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwg
ZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlz
ZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0
aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgdmlkZW8gcmVz
b2x1dGlvbjogMTA4MFAnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3Iu
bWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBj
b250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiAxMDgwLCBi
aXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAg
ICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAg
ICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOwor
ICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nJyk7Cisg
ICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRl
Y29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9t
cDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwg
c2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShw
cm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBu
ZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYnV0IHBvd2VyIGlu
ZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJc
IicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0p
OyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4g
eworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVl
LCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9
LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQg
ZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFD
YXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50
VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVsczogJzUuMScs
IGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAg
IHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAg
ICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAg
IH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05v
dCBzbW9vdGggYW5kIHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZycpOworICAg
ICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNv
ZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0
OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwg
c2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShw
cm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIGF1ZGlv
IGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86
IHsgY29udGVudFR5cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz1cInZvcmJpc1wiJywgY2hhbm5lbHM6
ICcyJyB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigo
aW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhp
bmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICBdOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSIgLz4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5j
b2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTQyNzQxODk2M2QxMDBjNjhhMjBi
NWRjMmRkMTYzNjlmZDAwZWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCkpCisK
K1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGVuY29kaW5nCitSVU4ocHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJh
bnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZj
MSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTog
MjQuNSB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUg
T0sKK2luZm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBP
SworCitOb3Qgc21vb3RoICh0b28gaGlnaCBmcmFtZXJhdGUpIGJ1dCBwb3dlciBlZmZpY2llbnQg
NzIwUCBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCB2aWRlbzogeyBjb250ZW50
VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAx
MDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTspCitQcm9taXNlIHJlc29s
dmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBP
SworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Vuc3VwcG9ydGVkIHByb3RvY29s
OiBSZWNvcmQKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29k
aW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21w
NDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4
MCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9y
dGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmlj
aWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9uOiAxMDgwUAor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsg
dHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBj
b2RlY3M9ImF2YzEiJywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwg
ZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVu
dCA9PSBmYWxzZSBPSworCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZW5j
b2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5n
SW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlv
L21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwg
c2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBv
cnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNp
ZW50ID09IHRydWUgT0sKKworU21vb3RoIGJ1dCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQg
ZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29k
aW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1
ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMjAw
MCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1
cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZm
aWNpZW50ID09IGZhbHNlIE9LCisKK05vdCBzbW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBhdWRp
byBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVz
LmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlw
ZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRy
YXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sK
K2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZv
LnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNtb290aCBhbmQgcG93ZXIgaW5lZmZp
Y2llbnQgYXVkaW8gTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNh
cGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsg
Y29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAn
NS4xJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJl
c29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxz
ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCBhdWRp
byBjb2RlYzogb2dnIHZvcmJpcworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRl
bnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9InZvcmJpcyInLCBjaGFubmVsczogJzInIH0gfSk7
KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2UgT0sKK2luZm8u
c21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGll
cy9tb2NrLWVuY29kaW5nSW5mby5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmls
aXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzI0YWY2ZDgzYWRiYTMx
MDBlNzY4MDdmNzRhNDY4YzE0NjkwNGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbApAQCAtMCwwICsx
LDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgIHZhciBwcm9taXNlOworCisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7
CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgZmFpbFRlc3Qo
IkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAgcnVuKCdpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlh
Q2FwYWJpbGl0aWVzKCknKTsKKyAgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBuZXh0KCkgeworICAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVu
ZFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBu
ZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CisgICAg
ICAgIG5leHRUZXN0KCk7CisgICAgfQorCisgICAgdGVzdHMgPSBbCisgICAgICAgICBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIgZWZmaWNp
ZW50IDcyMFAgTVA0IGVuY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Np
b24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywg
aGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUg
fSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8p
ID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAg
ICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBv
d2VyIGVmZmljaWVudCA3MjBQIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJv
bWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAn
dHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1c
ImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVy
YXRlOiA2MC40LzIgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2Up
LnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGll
c0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBvcnRlZCBwcm90b2NvbDogUmVj
b3JkJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJp
bGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlw
ZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEw
MDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hv
dWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNo
ZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9
LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1
cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9uOiAxMDgwUCcpOworICAgICAgICAgICAgIHJ1bigicHJv
bWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAn
dHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1c
ImF2YzFcIicsIGhlaWdodDogMTA4MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDE5MjAsIGZyYW1l
cmF0ZTogMjQgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRo
ZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0lu
Zm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50
IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmln
YXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9u
JywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwi
JywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7
Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7
CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUs
IHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwg
bmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCdTbW9vdGggYnV0IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNv
ZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFi
aWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29u
dGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICcy
JywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAg
ICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAg
ICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAg
ICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
Tm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAg
ICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNv
ZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdh
dWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRl
OiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRS
ZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tN
ZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3Ro
IGFuZCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAg
ICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZv
KHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0
OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwg
c2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShw
cm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIGF1ZGlv
IGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24n
LCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL29nZzsgY29kZWNzPVwidm9yYmlzXCInLCBj
aGFubmVsczogJzInIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNl
KS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0
KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgIF07CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIiAvPgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcyBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXRlc3QuanMKaW5kZXggZGI4ZTQxOThkNjAyNzBkMDNmYWZjMmE3OTNmZWY1ZDhj
NDU4MjdkNS4uMmMzYWNjNWZjNjU0ZjM1NjEwNWIyZTgzNmE0NmZhZmIxMWM0MjRiNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby10ZXN0LmpzCkBAIC00ODcsMyArNDg3LDkgQEAgZnVuY3Rpb24gaGFuZGxlUHJv
bWlzZShwcm9taXNlKSB7CiAgICAgZnVuY3Rpb24gaGFuZGxlKCkgeyB9CiAgICAgcmV0dXJuIHBy
b21pc2UudGhlbihoYW5kbGUsIGhhbmRsZSk7CiB9CisKK2Z1bmN0aW9uIGNoZWNrTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGluZm8sIGV4cGVjdGVkU3VwcG9ydGVkLCBleHBlY3RlZFNtb290aCwgZXhw
ZWN0ZWRQb3dlckVmZmljaWVudCkgeworICAgIGxvZ1Jlc3VsdChpbmZvLnN1cHBvcnRlZCA9PSBl
eHBlY3RlZFN1cHBvcnRlZCwgImluZm8uc3VwcG9ydGVkID09ICIgKyBleHBlY3RlZFN1cHBvcnRl
ZCk7CisgICAgbG9nUmVzdWx0KGluZm8uc21vb3RoID09IGV4cGVjdGVkU21vb3RoLCAiaW5mby5z
bW9vdGggPT0gIiArIGV4cGVjdGVkU21vb3RoKTsKKyAgICBsb2dSZXN1bHQoaW5mby5wb3dlckVm
ZmljaWVudCA9PSBleHBlY3RlZFBvd2VyRWZmaWNpZW50LCAiaW5mby5wb3dlckVmZmljaWVudCA9
PSAiICsgZXhwZWN0ZWRQb3dlckVmZmljaWVudCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346492</attachid>
            <date>2018-08-03 08:56:33 -0700</date>
            <delta_ts>2018-08-03 09:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180803175632.patch</filename>
            <type>text/plain</type>
            <size>76423</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU0YzY1NmVkYmUzZGNl
NjU2OTFjYmYzNzc1NTVmODA2YTQzMTNlYy4uMDc4OTQ1ZGY3ZTYxMDdhMDZkNjA4ZTE1N2YwMTBj
ODBhYzQwZmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA4LTAzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBh
YmlsaXRpZXNdIFBsYXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgTW9jayBwbGF0Zm9ybSBzdXBwb3J0IGZvciB0aGUgTWVkaWFD
YXBhYmlsaXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCisgICAgICAgICAgICAgIG1lZGlhL21l
ZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5nSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNhcGFiaWxpdGllczo6ZW5jb2RpbmdJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUpOgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bjo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246OmNvbnRlbnRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlk
ZW9Db25maWd1cmF0aW9uOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5n
aW5lVmlkZW9Db25maWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpmcmFtZXJhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y29udGVudFR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246
OmNoYW5uZWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25m
aWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5l
QXVkaW9Db25maWd1cmF0aW9uOjpzYW1wbGVyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6YXVkaW9Db25maWd1cmF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6dmlkZW9Db25maWd1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpt
b2NrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5OjpjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRW5jb2RpbmdDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6
OmVuYWJsZU1vY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6ZGlzYWJsZU1vY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbjo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmNhbkRlY29kZU1lZGlhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uOjpjYW5T
bW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kaW5nVHlw
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbjo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b246OmNhbkVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5TbW9vdGhseUVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5
RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb246OmVuY29kaW5nVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2Rl
TWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuUG93ZXJFZmZpY2llbnRseURlY29k
ZU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6
OmNhblNtb290aGx5RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVF
bmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMTgtMDgtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtGbG9hdGluZ10gTm93IHRoYXQgdGhlIGRvY3VtZW50IHJlbmRlcmVyIGJlbG9u
Z3MgdG8gImNvbXBsaWNhdGVkIGNhc2VzIiwgYWRqdXN0IHZpZXdwb3J0IHN0cmV0Y2hpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGZkZmI2ZGY3NmI5OWIyMDM1ZTA1MjcyNzc3
OTI4NDAzYWI0MzhjYTQuLjUxYmYzN2RjM2E2NDA5ZTY2NmQ5MWI3Y2NkM2RjZWY3MjMxMGE3ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1
ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzLmgiCiAKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2lu
Y2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCiAjaW5jbHVkZSAiTWVkaWFEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5o
IgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTUsOCArMTk3LDM2
IEBAIHZvaWQgTWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5nSW5mbyhNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sCiAgICAgLy8gNS4gSW4gcGFyYWxsZWwsIHJ1biB0
aGUgY3JlYXRlIGEgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGFsZ29yaXRobSB3aXRoIGNvbmZpZ3Vy
YXRpb24gYW5kIHJlc29sdmUgcCB3aXRoIGl0cyByZXN1bHQuCiAgICAgLy8gNi4gUmV0dXJuIHAu
CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFN
KHByb21pc2UpOworCisgICAgICAgIC8vIDIuMi4zIElmIGNvbmZpZ3VyYXRpb24gaXMgb2YgdHlw
ZSBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiwgcnVuIHRoZSBmb2xsb3dpbmcgc3Vic3RlcHM6
CisgICAgICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkRlY29kaW5nQ29uZmln
dXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
YXV0byBlbmdpbmVDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gaW5m
byA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChl
bmdpbmVDb25maWd1cmF0aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gMi4yLjMuMS4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5Cisg
ICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2V0IHN1cHBvcnRlZCB0byB0cnVlLiBP
dGhlcndpc2Ugc2V0IGl0IHRvIGZhbHNlLgorICAgICAgICAgICAgICAgIGluZm8tPnNldFN1cHBv
cnRlZChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5EZWNvZGVNZWRpYSgpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChpbmZvLT5zdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyAy
LjIuMy4yLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGRlY29kZSB0aGUgbWVkaWEgcmVw
cmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhdCBhIHBh
Y2UgdGhhdCBhbGxvd3MgYSBzbW9vdGggcGxheWJhY2ssIHNldCBzbW9vdGggdG8KKyAgICAgICAg
ICAgICAgICAgICAgLy8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RGVjb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjMuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5
CisgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQgcG93ZXJFZmZpY2llbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQgU0hPVUxEIE5P
VCB0YWtlIGludG8KKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUgZGV2aWNl4oCZ
cyBwb3dlciBzb3VyY2UgaGFzIHNpZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudCBkZWNvZGluZyBtb2R1bGVzLgorICAgICAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5Q
b3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRl
RGVjb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKICAgICB9KTsK
IH0KIApAQCAtMjE3LDggKzI0Nyw0MCBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGlu
Z0luZm8oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLAogICAgIC8v
IDUuIEluIHBhcmFsbGVsLCBydW4gdGhlIGNyZWF0ZSBhIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBh
bGdvcml0aG0gd2l0aCBjb25maWd1cmF0aW9uIGFuZCByZXNvbHZlIHAgd2l0aCBpdHMgcmVzdWx0
LgogICAgIC8vIDYuIFJldHVybiBwLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtjb25m
aWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldICgpIG11dGFibGUgewotICAgICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwcm9taXNlKTsKKworICAgICAgICAvLyAyLjIuNC4gSWYg
Y29uZmlndXJhdGlvbiBpcyBvZiB0eXBlIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLCBydW4g
dGhlIGZvbGxvd2luZyBzdWJzdGVwczoKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvIGVuZ2luZUNvbmZpZ3VyYXRpb24pIG11dGFibGUg
eworICAgICAgICAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUo
KTsKKworICAgICAgICAgICAgaWYgKGVuZ2luZUNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAg
ICAgICAvLyAyLjIuNC4xLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGVuY29kZSB0aGUg
bWVkaWEKKyAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9uLCBz
ZXQgc3VwcG9ydGVkIHRvIHRydWUuIE90aGVyd2lzZQorICAgICAgICAgICAgICAgIC8vIHNldCBp
dCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29u
ZmlndXJhdGlvbi0+Y2FuRW5jb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW5m
by0+c3VwcG9ydGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMi4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAg
ICAgIC8vIHJlcHJlc2VudGVkIGJ5IGNvbmZpZ3VyYXRpb24gYXQgYSBwYWNlIHRoYXQgYWxsb3dz
IGVuY29kaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lcyBhdCB0aGUgc2FtZSBwYWNl
IGFzIHRoZXkgYXJlIHNlbnQgdG8gdGhlIGVuY29kZXIsIHNldAorICAgICAgICAgICAgICAgICAg
ICAvLyBzbW9vdGggdG8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RW5jb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAg
ICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5IGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQKKyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJFZmZpY2llbnQgdG8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU0hPVUxEIE5PVCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIgdG8gZGV0
ZXJtaW5lIHRoZSBlbmNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gZGV2aWNl4oCZcyBwb3dlciBzb3VyY2UgaGFzIHNpZGUgZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyBlbmNvZGlu
ZyBtb2R1bGVzLgorICAgICAgICAgICAgICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChl
bmdpbmVDb25maWd1cmF0aW9uLT5jYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZv
Pj4oV1RGTW92ZShpbmZvKSk7CisgICAgICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24sIGNhbGxiYWNrKTsKKwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllc0lu
Zm8uaAppbmRleCAxMTlhMTI3YTU1OTA0NjVmYTJmZDdhY2UxMjRmNWUzZmM3NDFmYTRlLi5hZjdh
ZGI4ZmM4NzhlYTJiN2Y4ZDY3MjA4MWJlN2NlMDYwMTlhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBh
YmlsaXRpZXNJbmZvLmgKQEAgLTMxLDYgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiB7CiBwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbygpKTsKKyAgICB9CisKKyAgICB+TWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKCkgPSBkZWZhdWx0OworCiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3N1cHBvcnRlZDsgfQogICAgIHZvaWQgc2V0U3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7IG1f
c3VwcG9ydGVkID0gc3VwcG9ydGVkOyB9CiAKQEAgLTQxLDYgKzQ5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UG93ZXJFZmZpY2llbnQoYm9vbCBwb3dlckVmZmljaWVudCkgeyBtX3Bvd2VyRWZm
aWNpZW50ID0gcG93ZXJFZmZpY2llbnQ7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYUNhcGFiaWxp
dGllc0luZm8oKSA9IGRlZmF1bHQ7CisKICAgICBib29sIG1fc3VwcG9ydGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc21vb3RoIHsgZmFsc2UgfTsKICAgICBib29sIG1fcG93ZXJFZmZpY2llbnQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlZTVmMWJiNzM5MzlkOTVk
MmUwYTE3ZmUwMThjYjIxN2E2M2JjZTljLi5lMTRlZDRhZGNlYzA5MmNkODgzMDc0NWY0MzJjNzM3
YzFlNDBkZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAsNiArMzAsNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL3gxMSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2d0ayIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCA1ZGZlNzRjNzliNTIzMTAwZDRlYzdiOGI0YmRmNWQ4MzVmODZmMjkxLi5lMmY5NWI0
MjYzNWIxYmU4MmE4OWQ2OTU1Yzc1OTQ2Yzg5MmFhMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtOTksNiArOTksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL21hYyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jb2NvYSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jZiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5k
ZXggZWFhODkxMjRmZWRhYjU3MWNjNWY3OGY4NmVmYWJiY2FhODY5NDc3OC4uMWUzODhmMmMwNDZk
OTU1MDM2M2FhZWZlMGNmMWFlNGRjYWE0ZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UK
QEAgLTI3LDYgKzI3LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dwZSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZCIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lciIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3Vw
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKaW5kZXggMmZlYTRlNGQ4NzkwZjI5ZGRkNGFlNzk0ZjRiNjJlNWUzNjdjNGZmMy4u
ZDI5OTFiY2VlNzAwNzE0ZGYwMDlmNTk1ZjBiZGQwYThjOTA3MzY3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTE5Myw2ICsxOTMsNyBAQCBzZXQoV2ViQ29yZV9GT1JXQVJESU5HX0hF
QURFUlNfRElSRUNUT1JJRVMKICAgICBwbGF0Zm9ybS9hbmltYXRpb24KICAgICBwbGF0Zm9ybS9h
dWRpbwogICAgIHBsYXRmb3JtL2dyYXBoaWNzCisgICAgcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMKICAgICBwbGF0Zm9ybS9tb2NrCiAgICAgcGxhdGZvcm0vbmV0d29yawogICAgIHBsYXRmb3Jt
L3NxbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKaW5kZXggODMwYjUxY2RiMzAz
YTE3YmRiNjliZDQ4MjYyMDU1MWYxMDRiOWQ2Ni4uOWY1YTRmNWQ4MDJmODZmZmEwNjVkYzc1N2I0
Mzg3ZTVlYmEwZmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC01
NSw3ICs1NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMKICkK
IAogbGlzdChBUFBFTkQgV2ViQ29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJRVMKKyAg
ICBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
Ci0KICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk5NmQy
NzM5NjdhNTY4NWM1MDk5NWJlODRmMTczODFkZjA0YjU3Ny4uODUwMmVjNjk1MzE1MWI5NWMyNWQ1
YTUyMmMyNDVkZWE0NTdlZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MjEsNiArMTcyMSw5IEBA
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCiAKK3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAKK3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnku
Y3BwCisKIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcApAQCAtMTc0MSw2ICsxNzQ0LDggQEAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAogCiBw
bGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKIHBsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZURl
Y29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCitwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwCiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NTI4
OGNkNDc0OGJiZmU0NzdhMTZmNmI4ODg0MDhlMWZiMzg0ZjQ0Li5mMGIzMDc4OTY2YTFmNTE5YzFh
MTFhYTFiZjQ1OTRlOGQ3YjlhOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgxOSw2ICsxMDgxOSwxNiBAQAogCQk5QTUy
OEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0aW5nT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdGMThF
MjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyMTIxMTQ4RjUwMDBDQkRBMDYg
LyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHA7IHBhdGggPSBtZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5QUM2RjAyMjIxMTQ4RjUxMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDsgcGF0aCA9IG1lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5QUM2RjAyMzIxMTQ4RjUyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDI0MjEx
NDhGNTMwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZp
Z3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMjUyMTE0OEY1
NDAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5o
OyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyNjIxMTQ4RjU1MDBDQkRB
MDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDsgcGF0
aCA9IG1lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZGMDJEMjExNDhGOUYwMENCREEwNiAv
KiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25N
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUFDNkYwMkUyMTE0OEZBMTAw
Q0JEQTA2IC8qIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmln
dXJhdGlvbk1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyRjIx
MTQ4RkEyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAzMDIx
MTQ4RkE0MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRW5naW5lRW5jb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFC
QjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIz
MTEwRDAwQjc2NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTMxLDYg
KzE2NTQxLDcgQEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0
eVByb2dyZXNzSW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAogCQkJCTI5QTgxMjFCMEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggKi8sCisJCQkJQTlFRTQ0OEYy
MTBGRDY5QTAwQjZFQUU2IC8qIEFjY2Vzc2liaWxpdHlSb2xlLmlkbCAqLywKIAkJCQkyOTgxQ0FB
NzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgKi8sCiAJCQkJ
OTNDNEY2RTkxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLywK
IAkJCQkyOTgxQ0FBODEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
Y3BwICovLApAQCAtMTY1NjAsNyArMTY1NzEsNiBAQAogCQkJCUE5RjJFMEU3MjA0NzVDREMwMDUx
Mjg1NSAvKiBBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAgKi8sCiAJCQkJQTlGMkUwRTgyMDQ3
NUNEQzAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmggKi8sCiAJCQkJQTlGMkUw
RTkyMDQ3NUNERTAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2ZW50LmlkbCAqLywKLQkJ
CQlBOUVFNDQ4RjIxMEZENjlBMDBCNkVBRTYgLyogQWNjZXNzaWJpbGl0eVJvbGUuaWRsICovLAog
CQkJCUE5RUU0NDhDMjEwRkM5QUQwMEI2RUFFNiAvKiBBcmlhQXR0cmlidXRlcy5pZGwgKi8sCiAJ
CQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJ
CTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCkBAIC0xODgw
OCw2ICsxODgxOCwxMCBAQAogCQkJCUNERjJCMDA1MTgyMDUzREYwMEYyQjQyNCAvKiBtZWRpYXNv
dXJjZSAqLywKIAkJCQk1OTMwOUExMDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcCAqLywKIAkJCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8sCisJCQkJOUFDNkYwMkQyMTE0OEY5RjAwQ0JE
QTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgKi8sCisJCQkJ
OUFDNkYwMkYyMTE0OEZBMjAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uTW9jay5oICovLAorCQkJCTlBQzZGMDJFMjExNDhGQTEwMENCREEwNiAvKiBNZWRpYUVuZ2lu
ZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwICovLAorCQkJCTlBQzZGMDMwMjExNDhGQTQw
MENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCAqLywKIAkJ
CQkwNzdCNjQxNDFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3Bw
ICovLAogCQkJCTA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5oICovLAogCQkJCTA3N0I2NDEwMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jay5jcHAgKi8sCkBAIC0yMTI4OCw2ICsyMTMwMiwxOSBAQAogCQkJcGF0
aCA9IHJlcGxheTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTlBQzZGMDIw
MjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGllcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOUFDNkYwMjEyMTE0OEY1MDAwQ0JEQTA2IC8q
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJOUFDNkYwMjMyMTE0OEY1MjAw
Q0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTlBQzZGMDIyMjEx
NDhGNTEwMENCREEwNiAvKiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcCAqLywK
KwkJCQk5QUM2RjAyNTIxMTQ4RjU0MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeS5oICovLAorCQkJCTlBQzZGMDI0MjExNDhGNTMwMENCREEwNiAvKiBNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTlBQzZGMDI2MjExNDhGNTUwMENCREEw
NiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oICovLAorCQkJKTsKKwkJCW5h
bWUgPSBtZWRpYWNhcGFiaWxpdGllczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQ0MjEsNiArMjQ0NDgsNyBAQAogCQkJCUIyQTAx
NTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQlBNTlFM0MxQjExNTgwRjM0
MDA3MjkyOEUgLyogaW9zICovLAogCQkJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMg
Ki8sCisJCQkJOUFDNkYwMjAyMTE0OEYxRTAwQ0JEQTA2IC8qIG1lZGlhY2FwYWJpbGl0aWVzICov
LAogCQkJCUM5NkY1RUJGMUI1ODcyMjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8sCiAJCQkJ
MDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICovLAogCQkJCTU5Qzc3RjEw
MTA1NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovLApAQCAtMjc4NzAsNyArMjc4OTgsNiBAQAogCQkJ
CTgzNzFBQzNCMUY1MDlCRTQwMEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlDRDIyN0UzQTIxMTNDODYyMDBEMjg1QUYgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThBMDZEMDEzM0MwNEQ1MDBDRDM3
OUMgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MwOUE1MzBCMDY0
REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDUyLDYg
KzI5NDc5LDcgQEAKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1RUM1MUI1ODcy
MjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0ExIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjI3RTNBMjExM0M4NjIwMEQyODVBRiAvKiBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NjM4QTk5MTg4
NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMDk1N2ZmMTVhNWVjY2YwYjhlNzVhZTAyYTY0NjczMzFmNDNhODUz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWVkaWFFbmdpbmVWaWRlb0Nv
bmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uKFZpZGVvQ29uZmlndXJh
dGlvbiYmIGNvbmZpZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisgICAgLCBt
X3dpZHRoKGNvbmZpZy53aWR0aCkKKyAgICAsIG1faGVpZ2h0KGNvbmZpZy5oZWlnaHQpCisgICAg
LCBtX2JpdHJhdGUoY29uZmlnLmJpdHJhdGUpCisgICAgLCBtX2ZyYW1lUmF0ZU51bWVyYXRvcigw
KQorICAgICwgbV9mcmFtZVJhdGVEZW5vbWluYXRvcigxKQoreworICAgIGJvb2wgb2sgPSBmYWxz
ZTsKKyAgICBtX2ZyYW1lUmF0ZU51bWVyYXRvciA9IGNvbmZpZy5mcmFtZXJhdGUudG9Eb3VibGUo
Jm9rKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJhbWVyYXRl
UGllY2VzID0gY29uZmlnLmZyYW1lcmF0ZS5zcGxpdCgnLycpOworICAgIGlmIChmcmFtZXJhdGVQ
aWVjZXMuc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBudW1lcmF0
b3IgPSBmcmFtZXJhdGVQaWVjZXNbMF0udG9Eb3VibGUoJm9rKTsKKyAgICBpZiAoIW9rIHx8ICFu
dW1lcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkZW5vbWluYXRvciA9IGZy
YW1lcmF0ZVBpZWNlc1sxXS50b0RvdWJsZSgmb2spOworICAgIGlmICghb2sgfHwgIWRlbm9taW5h
dG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobnVtZXJhdG9y
KSB8fCAhc3RkOjppc2Zpbml0ZShkZW5vbWluYXRvcikpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZnJhbWVSYXRlTnVtZXJhdG9yID0gbnVtZXJhdG9yOworICAgIG1fZnJhbWVSYXRlRGVub21p
bmF0b3IgPSBkZW5vbWluYXRvcjsKK30KKworTWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246
Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uKEF1ZGlvQ29uZmlndXJhdGlvbiYmIGNvbmZp
ZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUpCisgICAgLCBtX2NoYW5uZWxzKGNv
bmZpZy5jaGFubmVscykKKyAgICAsIG1fYml0cmF0ZSgwKQorICAgICwgbV9zYW1wbGVyYXRlKDAp
Cit7CisgICAgaWYgKGNvbmZpZy5iaXRyYXRlKQorICAgICAgICBtX2JpdHJhdGUgPSBjb25maWcu
Yml0cmF0ZS52YWx1ZSgpOworCisgICAgaWYgKGNvbmZpZy5zYW1wbGVyYXRlKQorICAgICAgICBt
X3NhbXBsZXJhdGUgPSBjb25maWcuc2FtcGxlcmF0ZS52YWx1ZSgpOworfQorCitNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRp
b24mJiBjb25maWcpCit7CisgICAgaWYgKGNvbmZpZy5hdWRpbykKKyAgICAgICAgbV9hdWRpb0Nv
bmZpZ3VyYXRpb24gPSBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y3JlYXRlKGNvbmZp
Zy5hdWRpby52YWx1ZSgpKTsKKworICAgIGlmIChjb25maWcudmlkZW8pCisgICAgICAgIG1fdmlk
ZW9Db25maWd1cmF0aW9uID0gTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246OmNyZWF0ZShj
b25maWcudmlkZW8udmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEzNDc3ZTYyZDg5
MDg1NzM5MDRiMDczMGQ5MTJjMDYwMmIwMWE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlv
bi5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkF1ZGlvQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisj
aW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlZpZGVvQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uOwor
CitjbGFzcyBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gY3JlYXRlKFZpZGVvQ29uZmlndXJhdGlv
biYgY29uZmlnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbmdp
bmVWaWRlb0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcpKSk7CisgICAgfTsKKworICAgIENv
bnRlbnRUeXBlIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9OworICAgIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV93aWR0aCwgbV9oZWlnaHQpOyB9
OworICAgIHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHJhdGU7IH07Cisg
ICAgZG91YmxlIGZyYW1lcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlTnVtZXJhdG9y
IC8gbV9mcmFtZVJhdGVEZW5vbWluYXRvcjsgfTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUVuZ2lu
ZVZpZGVvQ29uZmlndXJhdGlvbihWaWRlb0NvbmZpZ3VyYXRpb24mJik7CisKKyAgICBDb250ZW50
VHlwZSBtX3R5cGU7CisgICAgdWludDMyX3QgbV93aWR0aDsKKyAgICB1aW50MzJfdCBtX2hlaWdo
dDsKKyAgICB1aW50NjRfdCBtX2JpdHJhdGU7CisgICAgZG91YmxlIG1fZnJhbWVSYXRlTnVtZXJh
dG9yOworICAgIGRvdWJsZSBtX2ZyYW1lUmF0ZURlbm9taW5hdG9yOworfTsKKworY2xhc3MgTWVk
aWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUVuZ2lu
ZUF1ZGlvQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFFbmdp
bmVBdWRpb0NvbmZpZ3VyYXRpb24+IGNyZWF0ZShBdWRpb0NvbmZpZ3VyYXRpb24mIGNvbmZpZykK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRW5naW5lQXVkaW9Db25m
aWd1cmF0aW9uKFdURk1vdmUoY29uZmlnKSkpOworICAgIH07CisKKyAgICBDb250ZW50VHlwZSBj
b250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfTsKKyAgICBTdHJpbmcgY2hhbm5l
bHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9OworICAgIHVpbnQ2NF90IGJpdHJhdGUo
KSBjb25zdCB7IHJldHVybiBtX2JpdHJhdGU7IH07CisgICAgdWludDMyX3Qgc2FtcGxlcmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlcmF0ZTsgfTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUVu
Z2luZUF1ZGlvQ29uZmlndXJhdGlvbihBdWRpb0NvbmZpZ3VyYXRpb24mJik7CisKKyAgICBDb250
ZW50VHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fY2hhbm5lbHM7CisgICAgdWludDY0X3QgbV9i
aXRyYXRlOworICAgIHVpbnQzMl90IG1fc2FtcGxlcmF0ZTsKK307CisKK2NsYXNzIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbj4geworcHVibGljOgorICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihNZWRpYUNvbmZp
Z3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uKCkgPSBk
ZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRhdGlvblR5cGUgeworICAgICAgICBN
b2NrLAorICAgIH07CisKKyAgICB2aXJ0dWFsIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRh
dGlvblR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZp
Z3VyYXRpb24+IGF1ZGlvQ29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25m
aWd1cmF0aW9uOyB9OworICAgIFJlZlB0cjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4g
dmlkZW9Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NvbmZpZ3VyYXRpb247
IH07CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9u
PiBtX2F1ZGlvQ29uZmlndXJhdGlvbjsKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVWaWRlb0NvbmZp
Z3VyYXRpb24+IG1fdmlkZW9Db25maWd1cmF0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJ
R1VSQVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBJbXBsZW1lbnRhdGlvblR5cGVOYW1lKSBcCisgICAg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbiYgY29uZmlnKSB7IHJldHVybiBjb25maWcuaW1wbGVtZW50YXRp
b25UeXBlKCkgPT0gSW1wbGVtZW50YXRpb25UeXBlTmFtZTsgfSBcCisgICAgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTUzODg1NzNkNGFkOGQwNzI0ZWMyOTllMThh
MThlYzBjMjg3YWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKQEAg
LTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKKworI2luY2x1ZGUgIkRlcHJl
Y2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25N
b2NrLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCYgbW9ja0VuYWJsZWQoKQoreworICAgIHN0YXRp
YyBib29sIGVuYWJsZWQ7CisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9CisKK3ZvaWQgTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlh
RGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25maWcsIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3Rvcnk6OkRlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiBjYWxsYmFjaykKK3sKKyAgICBp
ZiAobW9ja0VuYWJsZWQoKSkgeworICAgICAgICBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJh
dGlvbk1vY2s6OmNyZWF0ZShjb25maWcsIGNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9pZCBNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFFbmNvZGluZ0Nv
bmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RW5j
b2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQoreworICAgIGlmIChtb2NrRW5h
YmxlZCgpKSB7CisgICAgICAgIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jazo6
Y3JlYXRlKGNvbmZpZywgY2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNh
bGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnk6OmVuYWJsZU1vY2soKQoreworICAgIG1vY2tFbmFibGVkKCkgPSB0cnVlOworfQorCit2b2lk
IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmRpc2FibGVNb2NrKCkKK3sKKyAgICBt
b2NrRW5hYmxlZCgpID0gZmFsc2U7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWVjYjYzNjVjNTBmOGY3Nzgy
NzY5MjUxNzMyNmNiMDZmZWZjYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVkaWFDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYURlY29kaW5nQ29uZmln
dXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnkgeworcHVibGljOgorICAgIHVzaW5nIERlY29kaW5nQ29u
ZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxNZWRpYUVuZ2lu
ZURlY29kaW5nQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBFbmNvZGluZ0NvbmZpZ3VyYXRp
b25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8TWVkaWFFbmdpbmVFbmNvZGlu
Z0NvbmZpZ3VyYXRpb24+KT47CisKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEZWNvZGluZ0NvbmZp
Z3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mLCBEZWNvZGluZ0NvbmZpZ3VyYXRp
b25DYWxsYmFjayYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUVuY29kaW5nQ29uZmlndXJhdGlv
bihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxi
YWNrJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVNb2NrKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzYWJsZU1vY2soKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWMxMDU0MDFhZTJmYzZhZWFjMzU3YWU0OWNk
YjU5ZTA4ZTllNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVk
aWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICAg
ICAgOiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxNZWRpYUNvbmZp
Z3VyYXRpb24mJj4oY29uZmlnKSkKKyAgICAgICAgLCBtX2RlY29kaW5nVHlwZShjb25maWcudHlw
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZp
Z3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRGVjb2RlTWVkaWEo
KSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU21vb3RobHlEZWNvZGVN
ZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBjYW5Qb3dlckVmZmlj
aWVudGx5RGVjb2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIE1lZGlhRGVjb2Rp
bmdUeXBlIGRlY29kaW5nVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RpbmdUeXBlOyB9Owor
Citwcml2YXRlOgorICAgIE1lZGlhRGVjb2RpbmdUeXBlIG1fZGVjb2RpbmdUeXBlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3NjNhYTc1ZjE3NjFmYWM4N2Q2ZDhj
MDdlN2RiMGM0YTI3ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbiA6IHB1Ymxp
YyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIE1lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlnKQor
ICAgICAgICA6IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihyZWludGVycHJldF9jYXN0PE1lZGlh
Q29uZmlndXJhdGlvbiYmPihjb25maWcpKQorICAgICAgICAsIG1fZW5jb2RpbmdUeXBlKGNvbmZp
Zy50eXBlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5NZWRpYUVuZ2luZUVuY29kaW5n
Q29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5FbmNvZGVN
ZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBjYW5TbW9vdGhseUVu
Y29kZU1lZGlhKCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGNhblBvd2Vy
RWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworCisgICAgTWVkaWFF
bmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGluZ1R5cGU7
IH07CisKK3ByaXZhdGU6CisgICAgTWVkaWFFbmNvZGluZ1R5cGUgbV9lbmNvZGluZ1R5cGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uTW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxY2UxOWQwNWIzNTllZWM5ZDE4Mzk2YzJmMmJhMjNm
ZGMyOTljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdp
bmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIE1l
ZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2RlTWVkaWEoKQorewor
ICAgIC8vIFRoZSBtb2NrIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIG9ubHkgbG9jYWwgZmlsZSBw
bGF5YmFjay4KKyAgICBpZiAoZGVjb2RpbmdUeXBlKCkgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1l
ZGlhU291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZp
ZGVvIGRlY29kaW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlk
ZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNp
emUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkg
PiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gQXVkaW8gZGVjb2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlv
L21wNC4KKyAgICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAg
aWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmNvbnRlbnRUeXBl
KCkuY29udGFpbmVyVHlwZSgpID09ICJhdWRpby9tcDQiOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5TbW9vdGhs
eURlY29kZU1lZGlhKCkKK3sKKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0
aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIGlmICh2aWRlb0NvbmZpZy0+
ZnJhbWVyYXRlKCkgPiAzMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlnID0gYXVk
aW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4g
YXVkaW9Db25maWctPmNoYW5uZWxzKCkgPT0gIjIiOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmlj
aWVudGx5RGVjb2RlTWVkaWEoKQoreworICAgIGF1dG8gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZp
Z3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29u
ZmlnLT5jb250ZW50VHlwZSgpLmNvbnRhaW5lclR5cGUoKSAhPSAidmlkZW8vbXA0IikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVk
aW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4g
YXVkaW9Db25maWctPmJpdHJhdGUoKSA8PSAxMDAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9j
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxZjM4Mjk4ZmMwMGUyNTczMzViZGQ2YmYyNGJiMTMxM2VmNDQ1NmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRp
b24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCisjaW5j
bHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrIGZpbmFsIDogcHVibGljIE1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGUoTWVkaWFE
ZWNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeTo6RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgYXV0byBtb2NrQ29uZmlnID0gYWRvcHRSZWYobmV3IE1lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uTW9jayhXVEZNb3ZlKGNvbmZpZykpKTsKKyAgICAgICAgY2FsbGJhY2sobW9j
a0NvbmZpZyk7CisgICAgfTsKKworICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlv
blR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0K
KyAgICBib29sIGNhbkRlY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5TbW9vdGhseURl
Y29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVk
aWEoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbk1vY2soTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWcpCisg
ICAgICAgIDogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcp
KSB7IH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfTUVESUFfRU5HSU5FX0NP
TkZJR1VSQVRJT04oV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LCBXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbjo6SW1wbGVtZW50YXRp
b25UeXBlOjpNb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ODAyNDkxNjNiYmMyODE4NjY0NmFmMTJkYWYwOTUxZDY5YzdmZjBkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVu
Y29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbk1vY2suaCIKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSgpCit7CisgICAgLy8gVGhlIG1v
Y2sgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSBsb2NhbCBmaWxlIHBsYXliYWNrLgorICAg
IGlmIChlbmNvZGluZ1R5cGUoKSA9PSBNZWRpYUVuY29kaW5nVHlwZTo6UmVjb3JkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGVuY29kaW5nIHN1cHBv
cnQgYXQgNzIwUC4KKyAgICBhdXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7
CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9IHZpZGVvQ29u
ZmlnLT5zaXplKCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgwICYmIHNpemUuaGVp
Z2h0KCkgPiA3MjApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
QXVkaW8gZW5jb2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4KKyAgICBhdXRvIGF1
ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnICYm
IChhdWRpb0NvbmZpZy0+Y29udGVudFR5cGUoKS5jb250YWluZXJUeXBlKCkgIT0gImF1ZGlvL21w
NCIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblNtb290aGx5RW5jb2Rl
TWVkaWEoKQoreworICAgIGF1dG8gdmlkZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsK
KyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5mcmFtZXJh
dGUoKSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGF1dG8g
YXVkaW9Db25maWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAoYXVkaW9Db25maWcg
JiYgYXVkaW9Db25maWctPmNoYW5uZWxzKCkgIT0gIjIiKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmln
dXJhdGlvbk1vY2s6OmNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpCit7CisgICAgYXV0
byB2aWRlb0NvbmZpZyA9IHZpZGVvQ29uZmlndXJhdGlvbigpOworICAgIGlmICh2aWRlb0NvbmZp
ZyAmJiAodmlkZW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFpbmVyVHlwZSgpICE9ICJ2aWRl
by9tcDQiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBhdWRpb0NvbmZpZyA9
IGF1ZGlvQ29uZmlndXJhdGlvbigpOworICAgIGlmIChhdWRpb0NvbmZpZyAmJiAoYXVkaW9Db25m
aWctPmJpdHJhdGUoKSA+IDEwMDApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0MDVhZmY3OGQ2NTFlM2Q3MjQyMjUzZjYw
YjJiMzBhMTIyYTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVuY29k
aW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnkuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgor
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2sgZmluYWwgOiBwdWJsaWMgTWVk
aWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZShNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYgY29uZmlnLCBNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5OjpFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBhdXRvIG1vY2tDb25maWcgPSBhZG9wdFJlZihuZXcgTWVkaWFF
bmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1vdmUoY29uZmlnKSkpOworICAgICAg
ICBjYWxsYmFjayhtb2NrQ29uZmlnKTsKKyAgICB9OworCisgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6TW9jazsgfQorICAgIGJvb2wgY2FuRW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29s
IGNhblNtb290aGx5RW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAgICBib29sIGNhblBvd2VyRWZmaWNp
ZW50bHlFbmNvZGVNZWRpYSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlh
RW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jayhNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
biYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZykpIHsgfTsKK307CisKK30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19N
RURJQV9FTkdJTkVfQ09ORklHVVJBVElPTihXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29u
ZmlndXJhdGlvbk1vY2ssIFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9u
OjpJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGEzZTk2ZWQ5NjUxZGRhN2JhYTU1OWVkMTM5Zjc2ZGUzMzVhOWI4ZDUuLjBiMzQ4
ZTgwMTk5YTY4YWI4OWQzMDdjMGZlOWU0NjJkZmQ5NDMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ1By
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJNYWxsb2NT
dGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgog
I2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTUwNSw2ICs1MDYsOCBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uu
c2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oMF9zKTsKICAgICBwYWdlLnNldEZ1bGxzY3Jl
ZW5JbnNldHMoeyB9KTsKICAgICBwYWdlLnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihmYWxz
ZSk7CisKKyAgICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpkaXNhYmxlTW9jaygp
OwogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0zNDY0
LDYgKzM0NjcsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1w
cyhTb3VyY2VCdWZmZXImIGJ1ZmZlciwgYm9vbCBmbGFnKQogCiAjZW5kaWYKIAordm9pZCBJbnRl
cm5hbHM6OmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpCit7CisgICAgTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygpOworfQorCiAjaWYgRU5BQkxFKFZJREVP
KQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJydXB0aW9uU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKaW5kZXggMGFiNTcwYmE0MzlhMThkMmZjNDQxODlmYmQ3N2YwMDU3NmFlNDgz
ZS4uMzg4NGVmZGUxN2NkYmQyNmFmMDdmOTZmNThhMTM0MTQ1ZGI1ZDAwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC00NzQsNiArNDc0LDggQEAgcHVibGljOgogICAgIFJlZjxN
b2NrQ0RNRmFjdG9yeT4gcmVnaXN0ZXJNb2NrQ0RNKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZW5h
YmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCk7CisKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKICAgICB2b2lkIGVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjNhYTkyOTUzNjg4OGZjMDA4NjEzZDky
NzAzNDJjNjRlZmVkNGFiYy4uNzUwYzZmOTUxOWRhZmJmOTE3N2JkNTY3ZjIxMzNiZWY2ZWUyODg0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNDc4LDYgKzQ3OCw3IEBA
IGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9FTkNS
WVBURURfTUVESUFdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0oKTsKICAgICBbQ29uZGl0aW9uYWw9
RU5DUllQVEVEX01FRElBXSBNb2NrQ0RNRmFjdG9yeSByZWdpc3Rlck1vY2tDRE0oKTsKKyAgICB2
b2lkIGVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpOwogCiAgICAgW0NvbmRpdGlvbmFsPVNQ
RUVDSF9TWU5USEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCk7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmZWE4MzBlNmYxNjY4YjE1NTc2NTRjNDNhZjViY2M2MDg1OThjMzMyLi4wYTM3YTI3NDQ5
OTBlOWY3M2M3ZGJjNWJmOTI0ZTk5MWVjMWJmODRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTgtMDgtMDMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtNZWRpYUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50ZWdyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBNb2NrIHRlc3RzIGZvciB0aGUgTWVk
aWFDYXBhYmlsaXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIG1lZGlhL21lZGlhY2Fw
YWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8uaHRtbDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2Nr
LWVuY29kaW5nSW5mby5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby10ZXN0Lmpz
OgorICAgICAgICAoY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8pOgorCiAyMDE4LTA4LTAyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbGVhc2UgYXNzZXJ0
IHdoZW4gdGhyb3dpbmcgZXhjZXB0aW9ucyBpbiBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2Rp
bmdJbmZvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVz
L21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjViN2FlOTVlZjhk
OTkyZWY5ZjI2MGUzNTgwYjc0YzNhNGRjZDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNvZGluZ0luZm8tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0
aWVzKCkpCisKK1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGRlY29kaW5nCitS
VU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0
eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2
YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6
IDI0LjUgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVl
IE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUg
T0sKKworTm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRlKSBidXQgcG93ZXIgZWZmaWNpZW50
IDcyMFAgTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAn
dmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdp
ZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYwLjQvMiB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sK
K2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZv
LnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IE1TRQor
UlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ21lZGlhLXNvdXJjZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBj
b2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBm
cmFtZXJhdGU6IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQg
PT0gZmFsc2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50
ID09IGZhbHNlIE9LCisKK1Vuc3VwcG9ydGVkIHZpZGVvIHJlc29sdXRpb246IDEwODBQCitSVU4o
cHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBl
OiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEi
JywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAy
NCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNlIE9L
CitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBP
SworCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcKK1JVTihw
cm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6
ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40
MC4yIicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0g
fSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5m
by5zbW9vdGggPT0gdHJ1ZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Nt
b290aCBidXQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4ocHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiIn
LCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAyMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykK
K1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21v
b3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworTm90IHNt
b290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZworUlVOKHByb21pc2Ug
PSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUn
LCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywg
Y2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykK
K1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21v
b3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNt
b290aCBhbmQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGRlY29kaW5nCitSVU4ocHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiIn
LCBjaGFubmVsczogJzUuMScsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7
KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5z
bW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sKKworVW5z
dXBwb3J0ZWQgYXVkaW8gY29kZWM6IG9nZyB2b3JiaXMKK1JVTihwcm9taXNlID0gbmF2aWdhdG9y
Lm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsg
Y29udGVudFR5cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicsIGNoYW5uZWxzOiAnMicg
fSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSBmYWxzZSBPSwor
aW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQgPT0gZmFsc2UgT0sK
K0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJp
bGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NDM5MDAxOTQy
YWY1NzI1M2FlNmU2NWE2ZjBkMjZkYjE0OTYyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCkBAIC0w
LDAgKzEsMTA3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgdmFyIHByb21pc2U7CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQor
ICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBmYWls
VGVzdCgiSW50ZXJuYWxzIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICBydW4oJ2ludGVybmFscy5lbmFibGVNb2Nr
TWVkaWFDYXBhYmlsaXRpZXMoKScpOworICAgICAgICAgbmV4dCgpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIG5leHQoKSB7CisgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAg
ICAgZW5kVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIG5leHRUZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCcnKTsK
KyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBl
ZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2Ug
PSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUn
LCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVp
Z2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUgfSB9
KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+
IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9
LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBvd2Vy
IGVmZmljaWVudCA3MjBQIE1QNCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmls
ZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9XCJhdmMxXCInLCBo
ZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogNjAuNC8y
IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZv
KSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8s
IHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgcHJvdG9jb2w6IE1TRScpOworICAgICAg
ICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGlu
Z0luZm8oeyB0eXBlOiAnbWVkaWEtc291cmNlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRl
by9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0
aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29s
dmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlh
Q2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQg
dmlkZW8gcmVzb2x1dGlvbjogMTA4MFAnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBu
YXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2
aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0
OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIp
OworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4gewor
ICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0s
IG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgYXVkaW8gTVA0IGRlY29k
aW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJp
bGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6
ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0
ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNr
TWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAg
ICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYnV0
IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1
bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0
eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJt
cDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6IDIwMDAsIHNhbXBsZXJhdGU6IDQ0
MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigo
aW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhp
bmZvLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBh
dWRpbyBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzog
eyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwibXA0YS40MC4yXCInLCBjaGFubmVs
czogJzUuMScsIGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAg
ICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAg
ICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCBmYWxzZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsK
KyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ05vdCBzbW9vdGggYW5kIHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGlu
ZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAn
YXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0
ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNr
TWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9y
dGVkIGF1ZGlvIGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNl
ID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxl
JywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz1cInZvcmJpc1wiJywg
Y2hhbm5lbHM6ICcyJyB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlz
ZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0
aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICBdOworICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSIgLz4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2Rp
bmdJbmZvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVz
L21vY2stZW5jb2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTQyNzQxODk2M2Qx
MDBjNjhhMjBiNWRjMmRkMTYzNjlmZDAwZWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0
aWVzKCkpCisKK1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGVuY29kaW5nCitS
VU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0
eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNv
ZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEyODAsIGZy
YW1lcmF0ZTogMjQuNSB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQg
PT0gdHJ1ZSBPSworCitOb3Qgc21vb3RoICh0b28gaGlnaCBmcmFtZXJhdGUpIGJ1dCBwb3dlciBl
ZmZpY2llbnQgNzIwUCBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlh
Q2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCB2aWRlbzog
eyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBi
aXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTspCitQcm9t
aXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9
PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0cnVlIE9LCisKK1Vuc3VwcG9ydGVk
IHByb3RvY29sOiBSZWNvcmQKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTog
J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3
aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2lu
Zm8uc3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5w
b3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9u
OiAxMDgwUAorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2Rp
bmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0
aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8u
c3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dl
ckVmZmljaWVudCA9PSBmYWxzZSBPSworCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRp
byBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVz
LmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlw
ZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0
ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitp
bmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBv
d2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworU21vb3RoIGJ1dCBwb3dlciBpbmVmZmljaWVudCBh
dWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50
VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICcyJywgYml0
cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9L
CitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZv
LnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK05vdCBzbW9vdGggYnV0IHBvd2VyIGVmZmlj
aWVudCBhdWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2Fw
YWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBj
b250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICc1
LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVz
b2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNl
IE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNtb290aCBhbmQgcG93
ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRv
ci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywg
YXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNo
YW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQ
cm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290
aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBv
cnRlZCBhdWRpbyBjb2RlYzogb2dnIHZvcmJpcworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVk
aWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlv
OiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9InZvcmJpcyInLCBjaGFubmVsczog
JzInIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2Ug
T0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNl
IE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzI0YWY2
ZDgzYWRiYTMxMDBlNzY4MDdmNzRhNDY4YzE0NjkwNGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRtbApA
QCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBwcm9taXNlOworCisgICAgZnVuY3Rpb24gZG9UZXN0
KCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAg
ZmFpbFRlc3QoIkludGVybmFscyBpcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAgcnVuKCdpbnRlcm5hbHMuZW5hYmxl
TW9ja01lZGlhQ2FwYWJpbGl0aWVzKCknKTsKKyAgICAgICAgIG5leHQoKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBuZXh0KCkgeworICAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBuZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgn
Jyk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorCisgICAgdGVzdHMgPSBbCisgICAgICAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93
ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGVuY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9t
aXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0
cmFuc21pc3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwi
YXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJh
dGU6IDI0LjUgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRo
ZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0lu
Zm8oaW5mbywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggKHRvbyBoaWdoIGZyYW1lcmF0
ZSkgYnV0IHBvd2VyIGVmZmljaWVudCA3MjBQIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAg
IHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8o
eyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7
IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4
MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZl
KHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNh
cGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAg
ICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBvcnRlZCBwcm90
b2NvbDogUmVjb3JkJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBj
b250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJp
dHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Iik7CisgICAgICAg
ICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAg
ICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7Cisg
ICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9uOiAxMDgwUCcpOworICAgICAgICAgICAg
IHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8o
eyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7
IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogMTA4MCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDE5
MjAsIGZyYW1lcmF0ZTogMjQgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHBy
b21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFi
aWxpdGllc0luZm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIg
ZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlz
ZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJh
bnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1w
NGEuNDAuMlwiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQx
MDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChp
bmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGlu
Zm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYnV0IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlv
IE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5t
ZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVk
aW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hh
bm5lbHM6ICcyJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7Cisg
ICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAg
ICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQp
OworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgnTm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGlu
ZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVu
dFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICc1LjEn
LCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAgfSB9KTsiKTsKKyAgICAgICAgICAg
ICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAg
ICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRydWUpOwor
ICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAg
ICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdO
b3Qgc21vb3RoIGFuZCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcnKTsKKyAg
ICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5j
b2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAn
YXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0
ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxk
UmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNr
TWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1Vuc3VwcG9y
dGVkIGF1ZGlvIGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNl
ID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFu
c21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL29nZzsgY29kZWNzPVwidm9y
YmlzXCInLCBjaGFubmVsczogJzInIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2
ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFD
YXBhYmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAg
ICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgIF07
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIiAvPgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcyBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKaW5kZXggZGI4ZTQxOThkNjAyNzBkMDNmYWZjMmE3
OTNmZWY1ZDhjNDU4MjdkNS4uMmMzYWNjNWZjNjU0ZjM1NjEwNWIyZTgzNmE0NmZhZmIxMWM0MjRi
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcworKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCkBAIC00ODcsMyArNDg3LDkgQEAgZnVuY3Rpb24g
aGFuZGxlUHJvbWlzZShwcm9taXNlKSB7CiAgICAgZnVuY3Rpb24gaGFuZGxlKCkgeyB9CiAgICAg
cmV0dXJuIHByb21pc2UudGhlbihoYW5kbGUsIGhhbmRsZSk7CiB9CisKK2Z1bmN0aW9uIGNoZWNr
TWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGV4cGVjdGVkU3VwcG9ydGVkLCBleHBlY3RlZFNt
b290aCwgZXhwZWN0ZWRQb3dlckVmZmljaWVudCkgeworICAgIGxvZ1Jlc3VsdChpbmZvLnN1cHBv
cnRlZCA9PSBleHBlY3RlZFN1cHBvcnRlZCwgImluZm8uc3VwcG9ydGVkID09ICIgKyBleHBlY3Rl
ZFN1cHBvcnRlZCk7CisgICAgbG9nUmVzdWx0KGluZm8uc21vb3RoID09IGV4cGVjdGVkU21vb3Ro
LCAiaW5mby5zbW9vdGggPT0gIiArIGV4cGVjdGVkU21vb3RoKTsKKyAgICBsb2dSZXN1bHQoaW5m
by5wb3dlckVmZmljaWVudCA9PSBleHBlY3RlZFBvd2VyRWZmaWNpZW50LCAiaW5mby5wb3dlckVm
ZmljaWVudCA9PSAiICsgZXhwZWN0ZWRQb3dlckVmZmljaWVudCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346498</attachid>
            <date>2018-08-03 09:32:01 -0700</date>
            <delta_ts>2018-08-03 09:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187850-20180803183159.patch</filename>
            <type>text/plain</type>
            <size>76957</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU0YzY1NmVkYmUzZGNl
NjU2OTFjYmYzNzc1NTVmODA2YTQzMTNlYy4uMDc4OTQ1ZGY3ZTYxMDdhMDZkNjA4ZTE1N2YwMTBj
ODBhYzQwZmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTA4LTAzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbTWVkaWFDYXBh
YmlsaXRpZXNdIFBsYXRmb3JtIGludGVncmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgTW9jayBwbGF0Zm9ybSBzdXBwb3J0IGZvciB0aGUgTWVkaWFD
YXBhYmlsaXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYWNh
cGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCisgICAgICAgICAgICAgIG1lZGlhL21l
ZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5nSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNhcGFiaWxpdGllczo6ZW5jb2RpbmdJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUpOgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
V1BFLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZVZpZGVvQ29uZmln
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlv
bjo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRp
b246OmNvbnRlbnRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lVmlk
ZW9Db25maWd1cmF0aW9uOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5n
aW5lVmlkZW9Db25maWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uOjpmcmFtZXJhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbjo6Y29udGVudFR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb246
OmNoYW5uZWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQXVkaW9Db25m
aWd1cmF0aW9uOjpiaXRyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5l
QXVkaW9Db25maWd1cmF0aW9uOjpzYW1wbGVyYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6YXVkaW9Db25maWd1cmF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbjo6dmlkZW9Db25maWd1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpt
b2NrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5OjpjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRW5jb2RpbmdDb25maWd1cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6
OmVuYWJsZU1vY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6ZGlzYWJsZU1vY2spOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0
aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbjo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmNhbkRlY29kZU1lZGlhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uOjpjYW5T
bW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb246OmRlY29kaW5nVHlw
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbjo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b246OmNhbkVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uOjpjYW5TbW9vdGhseUVuY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uOjpjYW5Qb3dlckVmZmljaWVudGx5
RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb246OmVuY29kaW5nVHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
ZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuRGVjb2Rl
TWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6Y2FuUG93ZXJFZmZpY2llbnRseURlY29k
ZU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRpYSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6
OmNhblNtb290aGx5RW5jb2RlTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmdpbmVF
bmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMTgtMDgtMDMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtGbG9hdGluZ10gTm93IHRoYXQgdGhlIGRvY3VtZW50IHJlbmRlcmVyIGJlbG9u
Z3MgdG8gImNvbXBsaWNhdGVkIGNhc2VzIiwgYWRqdXN0IHZpZXdwb3J0IHN0cmV0Y2hpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlh
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGZkZmI2ZGY3NmI5OWIyMDM1ZTA1MjcyNzc3
OTI4NDAzYWI0MzhjYTQuLjUxYmYzN2RjM2E2NDA5ZTY2NmQ5MWI3Y2NkM2RjZWY3MjMxMGE3ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1
ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzLmgiCiAKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2lu
Y2x1ZGUgIkpTTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCiAjaW5jbHVkZSAiTWVkaWFEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5o
IgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTUsOCArMTk3LDM2
IEBAIHZvaWQgTWVkaWFDYXBhYmlsaXRpZXM6OmRlY29kaW5nSW5mbyhNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sCiAgICAgLy8gNS4gSW4gcGFyYWxsZWwsIHJ1biB0
aGUgY3JlYXRlIGEgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGFsZ29yaXRobSB3aXRoIGNvbmZpZ3Vy
YXRpb24gYW5kIHJlc29sdmUgcCB3aXRoIGl0cyByZXN1bHQuCiAgICAgLy8gNi4gUmV0dXJuIHAu
CiAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soW2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIFVOVVNFRF9QQVJBTShjb25maWd1cmF0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFN
KHByb21pc2UpOworCisgICAgICAgIC8vIDIuMi4zIElmIGNvbmZpZ3VyYXRpb24gaXMgb2YgdHlw
ZSBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiwgcnVuIHRoZSBmb2xsb3dpbmcgc3Vic3RlcHM6
CisgICAgICAgIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkRlY29kaW5nQ29uZmln
dXJhdGlvbkNhbGxiYWNrIGNhbGxiYWNrID0gW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
YXV0byBlbmdpbmVDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gaW5m
byA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChl
bmdpbmVDb25maWd1cmF0aW9uKSB7CisgICAgICAgICAgICAgICAgLy8gMi4yLjMuMS4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5Cisg
ICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2V0IHN1cHBvcnRlZCB0byB0cnVlLiBP
dGhlcndpc2Ugc2V0IGl0IHRvIGZhbHNlLgorICAgICAgICAgICAgICAgIGluZm8tPnNldFN1cHBv
cnRlZChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5EZWNvZGVNZWRpYSgpKTsKKworICAgICAgICAg
ICAgICAgIGlmIChpbmZvLT5zdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyAy
LjIuMy4yLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGRlY29kZSB0aGUgbWVkaWEgcmVw
cmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhdCBhIHBh
Y2UgdGhhdCBhbGxvd3MgYSBzbW9vdGggcGxheWJhY2ssIHNldCBzbW9vdGggdG8KKyAgICAgICAg
ICAgICAgICAgICAgLy8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RGVjb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjMuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBkZWNvZGUgdGhlIG1lZGlhIHJlcHJlc2VudGVkIGJ5
CisgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQgcG93ZXJFZmZpY2llbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQgU0hPVUxEIE5P
VCB0YWtlIGludG8KKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAg
ICAgICAgICAvLyBkZWNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUgZGV2aWNl4oCZ
cyBwb3dlciBzb3VyY2UgaGFzIHNpZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudCBkZWNvZGluZyBtb2R1bGVzLgorICAgICAgICAgICAg
ICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChlbmdpbmVDb25maWd1cmF0aW9uLT5jYW5Q
b3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPj4oV1RGTW92ZShpbmZvKSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRl
RGVjb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGNhbGxiYWNrKTsKICAgICB9KTsK
IH0KIApAQCAtMjE3LDggKzI0Nyw0MCBAQCB2b2lkIE1lZGlhQ2FwYWJpbGl0aWVzOjplbmNvZGlu
Z0luZm8oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLAogICAgIC8v
IDUuIEluIHBhcmFsbGVsLCBydW4gdGhlIGNyZWF0ZSBhIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyBh
bGdvcml0aG0gd2l0aCBjb25maWd1cmF0aW9uIGFuZCByZXNvbHZlIHAgd2l0aCBpdHMgcmVzdWx0
LgogICAgIC8vIDYuIFJldHVybiBwLgogICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKFtjb25m
aWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldICgpIG11dGFibGUgewotICAgICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShwcm9taXNlKTsKKworICAgICAgICAvLyAyLjIuNC4gSWYg
Y29uZmlndXJhdGlvbiBpcyBvZiB0eXBlIE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLCBydW4g
dGhlIGZvbGxvd2luZyBzdWJzdGVwczoKKyAgICAgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvIGVuZ2luZUNvbmZpZ3VyYXRpb24pIG11dGFibGUg
eworICAgICAgICAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpjcmVhdGUo
KTsKKworICAgICAgICAgICAgaWYgKGVuZ2luZUNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAg
ICAgICAvLyAyLjIuNC4xLiBJZiB0aGUgdXNlciBhZ2VudCBpcyBhYmxlIHRvIGVuY29kZSB0aGUg
bWVkaWEKKyAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRlZCBieSBjb25maWd1cmF0aW9uLCBz
ZXQgc3VwcG9ydGVkIHRvIHRydWUuIE90aGVyd2lzZQorICAgICAgICAgICAgICAgIC8vIHNldCBp
dCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICBpbmZvLT5zZXRTdXBwb3J0ZWQoZW5naW5lQ29u
ZmlndXJhdGlvbi0+Y2FuRW5jb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW5m
by0+c3VwcG9ydGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMi4gSWYgdGhl
IHVzZXIgYWdlbnQgaXMgYWJsZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAgICAg
ICAgIC8vIHJlcHJlc2VudGVkIGJ5IGNvbmZpZ3VyYXRpb24gYXQgYSBwYWNlIHRoYXQgYWxsb3dz
IGVuY29kaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lcyBhdCB0aGUgc2FtZSBwYWNl
IGFzIHRoZXkgYXJlIHNlbnQgdG8gdGhlIGVuY29kZXIsIHNldAorICAgICAgICAgICAgICAgICAg
ICAvLyBzbW9vdGggdG8gdHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby0+c2V0U21vb3RoKGVuZ2luZUNvbmZpZ3VyYXRpb24tPmNhblNtb290
aGx5RW5jb2RlTWVkaWEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gMi4yLjQuMy4gSWYg
dGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBlbmNvZGUgdGhlIG1lZGlhCisgICAgICAgICAgICAg
ICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5IGNvbmZpZ3VyYXRpb24gaW4gYSBwb3dlciBlZmZpY2ll
bnQgbWFubmVyLCBzZXQKKyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJFZmZpY2llbnQgdG8g
dHJ1ZS4gT3RoZXJ3aXNlIHNldCBpdCB0byBmYWxzZS4gVGhlIHVzZXIgYWdlbnQKKyAgICAgICAg
ICAgICAgICAgICAgLy8gU0hPVUxEIE5PVCB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgY3Vy
cmVudCBwb3dlciBzb3VyY2UgaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIgdG8gZGV0
ZXJtaW5lIHRoZSBlbmNvZGluZyBwb3dlciBlZmZpY2llbmN5IHVubGVzcyB0aGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gZGV2aWNl4oCZcyBwb3dlciBzb3VyY2UgaGFzIHNpZGUgZWZmZWN0cyBz
dWNoIGFzIGVuYWJsaW5nIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyBlbmNvZGlu
ZyBtb2R1bGVzLgorICAgICAgICAgICAgICAgICAgICBpbmZvLT5zZXRQb3dlckVmZmljaWVudChl
bmdpbmVDb25maWd1cmF0aW9uLT5jYW5Qb3dlckVmZmljaWVudGx5RW5jb2RlTWVkaWEoKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8TWVkaWFDYXBhYmlsaXRpZXNJbmZv
Pj4oV1RGTW92ZShpbmZvKSk7CisgICAgICAgIH07CisKKyAgICAgICAgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRp
b24sIGNhbGxiYWNrKTsKKwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGllc0lu
Zm8uaAppbmRleCAxMTlhMTI3YTU1OTA0NjVmYTJmZDdhY2UxMjRmNWUzZmM3NDFmYTRlLi5hZjdh
ZGI4ZmM4NzhlYTJiN2Y4ZDY3MjA4MWJlN2NlMDYwMTlhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDYXBh
YmlsaXRpZXNJbmZvLmgKQEAgLTMxLDYgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiB7CiBwdWJsaWM6CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbygpKTsKKyAgICB9CisKKyAgICB+TWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKCkgPSBkZWZhdWx0OworCiAgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3N1cHBvcnRlZDsgfQogICAgIHZvaWQgc2V0U3VwcG9ydGVkKGJvb2wgc3VwcG9ydGVkKSB7IG1f
c3VwcG9ydGVkID0gc3VwcG9ydGVkOyB9CiAKQEAgLTQxLDYgKzQ5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UG93ZXJFZmZpY2llbnQoYm9vbCBwb3dlckVmZmljaWVudCkgeyBtX3Bvd2VyRWZm
aWNpZW50ID0gcG93ZXJFZmZpY2llbnQ7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYUNhcGFiaWxp
dGllc0luZm8oKSA9IGRlZmF1bHQ7CisKICAgICBib29sIG1fc3VwcG9ydGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fc21vb3RoIHsgZmFsc2UgfTsKICAgICBib29sIG1fcG93ZXJFZmZpY2llbnQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlZTVmMWJiNzM5MzlkOTVk
MmUwYTE3ZmUwMThjYjIxN2E2M2JjZTljLi5lMTRlZDRhZGNlYzA5MmNkODgzMDc0NWY0MzJjNzM3
YzFlNDBkZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzAsNiArMzAsNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL3dheWxhbmQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL3gxMSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2d0ayIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCA1ZGZlNzRjNzliNTIzMTAwZDRlYzdiOGI0YmRmNWQ4MzVmODZmMjkxLi5lMmY5NWI0
MjYzNWIxYmU4MmE4OWQ2OTU1Yzc1OTQ2Yzg5MmFhMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtOTksNiArOTksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL21hYyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jb2NvYSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jZiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5k
ZXggZWFhODkxMjRmZWRhYjU3MWNjNWY3OGY4NmVmYWJiY2FhODY5NDc3OC4uMWUzODhmMmMwNDZk
OTU1MDM2M2FhZWZlMGNmMWFlNGRjYWE0ZTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UK
QEAgLTI3LDYgKzI3LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dwZSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZCIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lciIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3Vw
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2ljdSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKaW5kZXggMmZlYTRlNGQ4NzkwZjI5ZGRkNGFlNzk0ZjRiNjJlNWUzNjdjNGZmMy4u
ZmYzOTk0YTk5ZjgxYzBkZjBjM2RlYjY0Zjc5ZjY5MWRmNzYyMmM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTEwLDYgKzEwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS93aW4iCiAgICAg
IiR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL2luY2x1ZGUiCkBAIC0xOTMsNiArMTk0LDcgQEAgc2V0
KFdlYkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgcGxhdGZvcm0vYW5p
bWF0aW9uCiAgICAgcGxhdGZvcm0vYXVkaW8KICAgICBwbGF0Zm9ybS9ncmFwaGljcworICAgIHBs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzCiAgICAgcGxhdGZvcm0vbW9jawogICAgIHBsYXRmb3Jt
L25ldHdvcmsKICAgICBwbGF0Zm9ybS9zcWwKQEAgLTIzMiw2ICsyMzQsNyBAQCBpZiAoRU5BQkxF
X1dFQktJVCkKIAogICAgICAgICBpbnNwZWN0b3IvYWdlbnRzCiAKKyAgICAgICAgcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMKICAgICAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0KIAogICAgICAg
ICB3b3JrZXJzL3NlcnZpY2UvY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21h
a2UKaW5kZXggODMwYjUxY2RiMzAzYTE3YmRiNjliZDQ4MjYyMDU1MWYxMDRiOWQ2Ni4uOWY1YTRm
NWQ4MDJmODZmZmEwNjVkYzc1N2I0Mzg3ZTVlYmEwZmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbkNhaXJvLmNtYWtlCkBAIC01NSw3ICs1NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0
U3VwcG9ydF9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9GT1JXQVJESU5HX0hF
QURFUlNfRElSRUNUT1JJRVMKKyAgICBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvCi0KICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggZjk5NmQyNzM5NjdhNTY4NWM1MDk5NWJlODRmMTczODFkZjA0YjU3Ny4u
ODUwMmVjNjk1MzE1MWI5NWMyNWQ1YTUyMmMyNDVkZWE0NTdlZWRiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTE3MjEsNiArMTcyMSw5IEBAIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uY3BwCiAKK3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbi5jcHAKK3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuY3BwCisKIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5j
cHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcApA
QCAtMTc0MSw2ICsxNzQ0LDggQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcAogCiBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5jcHAKIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAorcGxhdGZv
cm0vbW9jay9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCitwbGF0Zm9y
bS9tb2NrL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmNwcAogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4NTI4OGNkNDc0OGJiZmU0NzdhMTZmNmI4ODg0MDhlMWZiMzg0ZjQ0
Li5mMGIzMDc4OTY2YTFmNTE5YzFhMTFhYTFiZjQ1OTRlOGQ3YjlhOTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgxOSw2
ICsxMDgxOSwxNiBAQAogCQk5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmpl
Y3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0aW5nT2JqZWN0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3NDMg
LyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlBQjFGMzdGMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2
RjAyMTIxMTQ4RjUwMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bi5jcHA7IHBhdGggPSBtZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyMjIxMTQ4RjUxMDBDQkRB
MDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNw
cDsgcGF0aCA9IG1lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUM2RjAyMzIxMTQ4RjUyMDBD
QkRBMDYgLyogTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oOyBwYXRoID0gbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlBQzZGMDI0MjExNDhGNTMwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYUVu
Z2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUFDNkYwMjUyMTE0OEY1NDAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeS5oOyBwYXRoID0gbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QUM2RjAyNjIxMTQ4RjU1MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFFbmdpbmVFbmNvZGlu
Z0NvbmZpZ3VyYXRpb24uaDsgcGF0aCA9IG1lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBQzZG
MDJEMjExNDhGOUYwMENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFFbmdpbmVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUFDNkYwMkUyMTE0OEZBMTAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1
cmF0aW9uTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QUM2RjAyRjIxMTQ4RkEyMDBDQkRBMDYgLyogTWVkaWFFbmdpbmVEZWNvZGlu
Z0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QUM2RjAzMDIxMTQ4RkE0MDBDQkRBMDYgLyogTWVkaWFFbmdpbmVFbmNvZGlu
Z0NvbmZpZ3VyYXRpb25Nb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
ZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQw
MEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2NTMxLDYgKzE2NTQxLDcgQEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3
MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNB
QTYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAog
CQkJCTI5QTgxMjFCMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmggKi8sCisJCQkJQTlFRTQ0OEYyMTBGRDY5QTAwQjZFQUU2IC8qIEFjY2Vzc2liaWxpdHlSb2xl
LmlkbCAqLywKIAkJCQkyOTgxQ0FBNzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5jcHAgKi8sCiAJCQkJOTNDNEY2RTkxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2li
aWxpdHlTY3JvbGxiYXIuaCAqLywKIAkJCQkyOTgxQ0FBODEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwICovLApAQCAtMTY1NjAsNyArMTY1NzEsNiBAQAogCQkJ
CUE5RjJFMEU3MjA0NzVDREMwMDUxMjg1NSAvKiBBY2Nlc3NpYmxlU2V0VmFsdWVFdmVudC5jcHAg
Ki8sCiAJCQkJQTlGMkUwRTgyMDQ3NUNEQzAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRWYWx1ZUV2
ZW50LmggKi8sCiAJCQkJQTlGMkUwRTkyMDQ3NUNERTAwNTEyODU1IC8qIEFjY2Vzc2libGVTZXRW
YWx1ZUV2ZW50LmlkbCAqLywKLQkJCQlBOUVFNDQ4RjIxMEZENjlBMDBCNkVBRTYgLyogQWNjZXNz
aWJpbGl0eVJvbGUuaWRsICovLAogCQkJCUE5RUU0NDhDMjEwRkM5QUQwMEI2RUFFNiAvKiBBcmlh
QXR0cmlidXRlcy5pZGwgKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2Jq
ZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVj
dENhY2hlLmggKi8sCkBAIC0xODgwOCw2ICsxODgxOCwxMCBAQAogCQkJCUNERjJCMDA1MTgyMDUz
REYwMEYyQjQyNCAvKiBtZWRpYXNvdXJjZSAqLywKIAkJCQk1OTMwOUExMDExRjRBRTU4MDAyNTA2
MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywKIAkJCQk1OTMwOUExMjEx
RjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8sCisJCQkJ
OUFDNkYwMkQyMTE0OEY5RjAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0
aW9uTW9jay5jcHAgKi8sCisJCQkJOUFDNkYwMkYyMTE0OEZBMjAwQ0JEQTA2IC8qIE1lZGlhRW5n
aW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oICovLAorCQkJCTlBQzZGMDJFMjExNDhGQTEw
MENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwICovLAor
CQkJCTlBQzZGMDMwMjExNDhGQTQwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmln
dXJhdGlvbk1vY2suaCAqLywKIAkJCQkwNzdCNjQxNDFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQ
bGF5YmFja1RhcmdldE1vY2suY3BwICovLAogCQkJCTA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAv
KiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oICovLAogCQkJCTA3N0I2NDEwMUI5NEYxMkUwMDNF
OUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAgKi8sCkBAIC0yMTI4OCw2
ICsyMTMwMiwxOSBAQAogCQkJcGF0aCA9IHJlcGxheTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCTlBQzZGMDIwMjExNDhGMUUwMENCREEwNiAvKiBtZWRpYWNhcGFiaWxpdGll
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOUFDNkYw
MjEyMTE0OEY1MDAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJ
CQkJOUFDNkYwMjMyMTE0OEY1MjAwQ0JEQTA2IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5o
ICovLAorCQkJCTlBQzZGMDIyMjExNDhGNTEwMENCREEwNiAvKiBNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5LmNwcCAqLywKKwkJCQk5QUM2RjAyNTIxMTQ4RjU0MDBDQkRBMDYgLyogTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oICovLAorCQkJCTlBQzZGMDI0MjExNDhGNTMw
MENCREEwNiAvKiBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTlB
QzZGMDI2MjExNDhGNTUwMENCREEwNiAvKiBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlv
bi5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBtZWRpYWNhcGFiaWxpdGllczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQ0MjEsNiAr
MjQ0NDgsNyBAQAogCQkJCUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywK
IAkJCQlBNTlFM0MxQjExNTgwRjM0MDA3MjkyOEUgLyogaW9zICovLAogCQkJCTY1ODJBMTQ4MDk5
OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8sCisJCQkJOUFDNkYwMjAyMTE0OEYxRTAwQ0JEQTA2IC8q
IG1lZGlhY2FwYWJpbGl0aWVzICovLAogCQkJCUM5NkY1RUJGMUI1ODcyMjYwMDkxRUE5RCAvKiBt
ZWRpYXNlc3Npb24gKi8sCiAJCQkJMDcyMjFCOTIxN0NGMEFENDAwODQ4RTUxIC8qIG1lZGlhc3Ry
ZWFtICovLAogCQkJCTU5Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovLApAQCAtMjc4
NzAsNyArMjc4OTgsNiBAQAogCQkJCTgzNzFBQzNCMUY1MDlCRTQwMEZCRjI4NCAvKiBFcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyog
RXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUw
IC8qIEV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRDIyN0UzQTIxMTNDODYyMDBEMjg1QUYg
LyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTM4RDMz
NTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MThBMDZEMDEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0MwOUE1MzBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5NDUyLDYgKzI5NDc5LDcgQEAKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5
MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM5NkY1RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b25Qcm92aWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2
M0ExIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjI3RTNB
MjExM0M4NjIwMEQyODVBRiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVk
aWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIw
MDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk1N2ZmMTVhNWVjY2YwYjhl
NzVhZTAyYTY0NjczMzFmNDNhODUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmNwcApA
QCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lVmlkZW9Db25maWd1
cmF0aW9uKFZpZGVvQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICA6IG1fdHlwZShjb25maWcu
Y29udGVudFR5cGUpCisgICAgLCBtX3dpZHRoKGNvbmZpZy53aWR0aCkKKyAgICAsIG1faGVpZ2h0
KGNvbmZpZy5oZWlnaHQpCisgICAgLCBtX2JpdHJhdGUoY29uZmlnLmJpdHJhdGUpCisgICAgLCBt
X2ZyYW1lUmF0ZU51bWVyYXRvcigwKQorICAgICwgbV9mcmFtZVJhdGVEZW5vbWluYXRvcigxKQor
eworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBtX2ZyYW1lUmF0ZU51bWVyYXRvciA9IGNvbmZp
Zy5mcmFtZXJhdGUudG9Eb3VibGUoJm9rKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gZnJhbWVyYXRlUGllY2VzID0gY29uZmlnLmZyYW1lcmF0ZS5zcGxpdCgnLycp
OworICAgIGlmIChmcmFtZXJhdGVQaWVjZXMuc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybjsK
KworICAgIGRvdWJsZSBudW1lcmF0b3IgPSBmcmFtZXJhdGVQaWVjZXNbMF0udG9Eb3VibGUoJm9r
KTsKKyAgICBpZiAoIW9rIHx8ICFudW1lcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGRv
dWJsZSBkZW5vbWluYXRvciA9IGZyYW1lcmF0ZVBpZWNlc1sxXS50b0RvdWJsZSgmb2spOworICAg
IGlmICghb2sgfHwgIWRlbm9taW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUobnVtZXJhdG9yKSB8fCAhc3RkOjppc2Zpbml0ZShkZW5vbWluYXRvcikpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZnJhbWVSYXRlTnVtZXJhdG9yID0gbnVtZXJhdG9yOwor
ICAgIG1fZnJhbWVSYXRlRGVub21pbmF0b3IgPSBkZW5vbWluYXRvcjsKK30KKworTWVkaWFFbmdp
bmVBdWRpb0NvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uKEF1ZGlv
Q29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICA6IG1fdHlwZShjb25maWcuY29udGVudFR5cGUp
CisgICAgLCBtX2NoYW5uZWxzKGNvbmZpZy5jaGFubmVscykKKyAgICAsIG1fYml0cmF0ZSgwKQor
ICAgICwgbV9zYW1wbGVyYXRlKDApCit7CisgICAgaWYgKGNvbmZpZy5iaXRyYXRlKQorICAgICAg
ICBtX2JpdHJhdGUgPSBjb25maWcuYml0cmF0ZS52YWx1ZSgpOworCisgICAgaWYgKGNvbmZpZy5z
YW1wbGVyYXRlKQorICAgICAgICBtX3NhbXBsZXJhdGUgPSBjb25maWcuc2FtcGxlcmF0ZS52YWx1
ZSgpOworfQorCitNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb246Ok1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbihNZWRpYUNvbmZpZ3VyYXRpb24mJiBjb25maWcpCit7CisgICAgaWYgKGNvbmZpZy5hdWRp
bykKKyAgICAgICAgbV9hdWRpb0NvbmZpZ3VyYXRpb24gPSBNZWRpYUVuZ2luZUF1ZGlvQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKGNvbmZpZy5hdWRpby52YWx1ZSgpKTsKKworICAgIGlmIChjb25maWcu
dmlkZW8pCisgICAgICAgIG1fdmlkZW9Db25maWd1cmF0aW9uID0gTWVkaWFFbmdpbmVWaWRlb0Nv
bmZpZ3VyYXRpb246OmNyZWF0ZShjb25maWcudmlkZW8udmFsdWUoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWEzNDc3ZTYyZDg5MDg1NzM5MDRiMDczMGQ5MTJjMDYwMmIwMWE5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkF1ZGlvQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk1lZGlh
Q29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlZpZGVvQ29uZmlndXJhdGlvbi5oIgorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uOworCitjbGFzcyBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlv
biA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5naW5lVmlkZW9Db25maWd1cmF0aW9uPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbj4gY3Jl
YXRlKFZpZGVvQ29uZmlndXJhdGlvbiYgY29uZmlnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWcp
KSk7CisgICAgfTsKKworICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUo
bV93aWR0aCwgbV9oZWlnaHQpOyB9OworICAgIHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHJhdGU7IH07CisgICAgZG91YmxlIGZyYW1lcmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVSYXRlTnVtZXJhdG9yIC8gbV9mcmFtZVJhdGVEZW5vbWluYXRvcjsgfTsKKworcHJp
dmF0ZToKKyAgICBNZWRpYUVuZ2luZVZpZGVvQ29uZmlndXJhdGlvbihWaWRlb0NvbmZpZ3VyYXRp
b24mJik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5cGU7CisgICAgdWludDMyX3QgbV93aWR0aDsK
KyAgICB1aW50MzJfdCBtX2hlaWdodDsKKyAgICB1aW50NjRfdCBtX2JpdHJhdGU7CisgICAgZG91
YmxlIG1fZnJhbWVSYXRlTnVtZXJhdG9yOworICAgIGRvdWJsZSBtX2ZyYW1lUmF0ZURlbm9taW5h
dG9yOworfTsKKworY2xhc3MgTWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGNyZWF0ZShBdWRpb0Nv
bmZpZ3VyYXRpb24mIGNvbmZpZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhRW5naW5lQXVkaW9Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlnKSkpOworICAgIH07
CisKKyAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fTsKKyAgICBTdHJpbmcgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9Owor
ICAgIHVpbnQ2NF90IGJpdHJhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHJhdGU7IH07CisgICAg
dWludDMyX3Qgc2FtcGxlcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlcmF0ZTsgfTsKKwor
cHJpdmF0ZToKKyAgICBNZWRpYUVuZ2luZUF1ZGlvQ29uZmlndXJhdGlvbihBdWRpb0NvbmZpZ3Vy
YXRpb24mJik7CisKKyAgICBDb250ZW50VHlwZSBtX3R5cGU7CisgICAgU3RyaW5nIG1fY2hhbm5l
bHM7CisgICAgdWludDY0X3QgbV9iaXRyYXRlOworICAgIHVpbnQzMl90IG1fc2FtcGxlcmF0ZTsK
K307CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAgIE1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbihNZWRpYUNvbmZpZ3VyYXRpb24mJik7CisgICAgdmlydHVhbCB+TWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uKCkgPSBkZWZhdWx0OworCisgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRh
dGlvblR5cGUgeworICAgICAgICBNb2NrLAorICAgIH07CisKKyAgICB2aXJ0dWFsIEltcGxlbWVu
dGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBSZWZQdHI8
TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRpb24+IGF1ZGlvQ29uZmlndXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXVkaW9Db25maWd1cmF0aW9uOyB9OworICAgIFJlZlB0cjxNZWRpYUVuZ2lu
ZVZpZGVvQ29uZmlndXJhdGlvbj4gdmlkZW9Db25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV92aWRlb0NvbmZpZ3VyYXRpb247IH07CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1lZGlhRW5n
aW5lQXVkaW9Db25maWd1cmF0aW9uPiBtX2F1ZGlvQ29uZmlndXJhdGlvbjsKKyAgICBSZWZQdHI8
TWVkaWFFbmdpbmVWaWRlb0NvbmZpZ3VyYXRpb24+IG1fdmlkZW9Db25maWd1cmF0aW9uOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBJbXBsZW1lbnRh
dGlvblR5cGVOYW1lKSBcCisgICAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVl
VHlwZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lQ29uZmlndXJhdGlvbiYgY29uZmlnKSB7IHJldHVy
biBjb25maWcuaW1wbGVtZW50YXRpb25UeXBlKCkgPT0gSW1wbGVtZW50YXRpb25UeXBlTmFtZTsg
fSBcCisgICAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTUzODg1
NzNkNGFkOGQwNzI0ZWMyOTllMThhMThlYzBjMjg3YWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeS5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnku
aCIKKworI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgorI2luY2x1ZGUgIk1l
ZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGlu
Z0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJh
dGlvbk1vY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCYgbW9ja0Vu
YWJsZWQoKQoreworICAgIHN0YXRpYyBib29sIGVuYWJsZWQ7CisgICAgcmV0dXJuIGVuYWJsZWQ7
Cit9CisKK3ZvaWQgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6Y3JlYXRlRGVjb2Rp
bmdDb25maWd1cmF0aW9uKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiBjb25maWcsIE1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OkRlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNr
JiBjYWxsYmFjaykKK3sKKyAgICBpZiAobW9ja0VuYWJsZWQoKSkgeworICAgICAgICBNZWRpYUVu
Z2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNyZWF0ZShjb25maWcsIGNhbGxiYWNrKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxsYmFjayhudWxscHRyKTsKK30KKwordm9p
ZCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpjcmVhdGVFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeTo6RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smIGNhbGxiYWNr
KQoreworICAgIGlmIChtb2NrRW5hYmxlZCgpKSB7CisgICAgICAgIE1lZGlhRW5naW5lRW5jb2Rp
bmdDb25maWd1cmF0aW9uTW9jazo6Y3JlYXRlKGNvbmZpZywgY2FsbGJhY2spOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGNhbGxiYWNrKG51bGxwdHIpOworfQorCit2b2lkIE1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmVuYWJsZU1vY2soKQoreworICAgIG1vY2tFbmFibGVk
KCkgPSB0cnVlOworfQorCit2b2lkIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk6OmRp
c2FibGVNb2NrKCkKK3sKKyAgICBtb2NrRW5hYmxlZCgpID0gZmFsc2U7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZWVjYjYzNjVjNTBmOGY3NzgyNzY5MjUxNzMyNmNiMDZmZWZjYTk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVkaWFDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhRW5naW5lRGVj
b2RpbmdDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZp
Z3VyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkgeworcHVibGljOgor
ICAgIHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKFJlZlB0cjxNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2lu
ZyBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWZQ
dHI8TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24+KT47CisKKyAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
LCBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0
ZUVuY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYsIEVuY29k
aW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBlbmFibGVNb2NrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGlzYWJs
ZU1vY2soKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRGVjb2RpbmdD
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWMxMDU0
MDFhZTJmYzZhZWFjMzU3YWU0OWNkYjU5ZTA4ZTllNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZURlY29kaW5n
Q29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRl
ICJNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZp
Z3VyYXRpb24gOiBwdWJsaWMgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAg
ICBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYURlY29kaW5nQ29uZmlndXJh
dGlvbiYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24ocmVpbnRl
cnByZXRfY2FzdDxNZWRpYUNvbmZpZ3VyYXRpb24mJj4oY29uZmlnKSkKKyAgICAgICAgLCBtX2Rl
Y29kaW5nVHlwZShjb25maWcudHlwZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TWVk
aWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuRGVjb2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuU21vb3RobHlEZWNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1
YWwgYm9vbCBjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSB7IHJldHVybiBmYWxzZTsg
fTsKKworICAgIE1lZGlhRGVjb2RpbmdUeXBlIGRlY29kaW5nVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVjb2RpbmdUeXBlOyB9OworCitwcml2YXRlOgorICAgIE1lZGlhRGVjb2RpbmdUeXBlIG1f
ZGVjb2RpbmdUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVFbmNv
ZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3
NjNhYTc1ZjE3NjFmYWM4N2Q2ZDhjMDdlN2RiMGM0YTI3ZjRkNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lRW5j
b2RpbmdDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIk1lZGlhRW5naW5lQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2luZUVuY29kaW5n
Q29uZmlndXJhdGlvbiA6IHB1YmxpYyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb24geworcHVibGlj
OgorICAgIE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25m
aWd1cmF0aW9uJiYgY29uZmlnKQorICAgICAgICA6IE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbihy
ZWludGVycHJldF9jYXN0PE1lZGlhQ29uZmlndXJhdGlvbiYmPihjb25maWcpKQorICAgICAgICAs
IG1fZW5jb2RpbmdUeXBlKGNvbmZpZy50eXBlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5FbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1
YWwgYm9vbCBjYW5TbW9vdGhseUVuY29kZU1lZGlhKCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAg
dmlydHVhbCBib29sIGNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpIHsgcmV0dXJuIGZh
bHNlOyB9OworCisgICAgTWVkaWFFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGluZ1R5cGU7IH07CisKK3ByaXZhdGU6CisgICAgTWVkaWFFbmNvZGluZ1R5
cGUgbV9lbmNvZGluZ1R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25m
aWd1cmF0aW9uTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAxY2UxOWQwNWIz
NTllZWM5ZDE4Mzk2YzJmMmJhMjNmZGMyOTljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgiCisKKyNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitib29sIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jazo6
Y2FuRGVjb2RlTWVkaWEoKQoreworICAgIC8vIFRoZSBtb2NrIGltcGxlbWVudGF0aW9uIHN1cHBv
cnRzIG9ubHkgbG9jYWwgZmlsZSBwbGF5YmFjay4KKyAgICBpZiAoZGVjb2RpbmdUeXBlKCkgPT0g
TWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBNYXhpbmcgb3V0IHZpZGVvIGRlY29kaW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBh
dXRvIHZpZGVvQ29uZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29u
ZmlnKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAg
ICAgIGlmIChzaXplLndpZHRoKCkgPiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQXVkaW8gZGVjb2Rpbmcgc3Vw
cG9ydCBsaW1pdGVkIHRvIGF1ZGlvL21wNC4KKyAgICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9D
b25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29uZmlnKQorICAgICAgICByZXR1cm4gYXVk
aW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29udGFpbmVyVHlwZSgpID09ICJhdWRpby9tcDQiOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb25Nb2NrOjpjYW5TbW9vdGhseURlY29kZU1lZGlhKCkKK3sKKyAgICBhdXRvIHZpZGVvQ29u
ZmlnID0gdmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAg
ICAgIGlmICh2aWRlb0NvbmZpZy0+ZnJhbWVyYXRlKCkgPiAzMCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFFbmdpbmVBdWRpb0NvbmZpZ3VyYXRp
b24+IGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29u
ZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmNoYW5uZWxzKCkgPT0gIjIiOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrOjpjYW5Qb3dlckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKQoreworICAgIGF1dG8gdmlk
ZW9Db25maWcgPSB2aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsK
KyAgICAgICAgaWYgKHZpZGVvQ29uZmlnLT5jb250ZW50VHlwZSgpLmNvbnRhaW5lclR5cGUoKSAh
PSAidmlkZW8vbXA0IikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBh
dXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKGF1ZGlvQ29u
ZmlnKQorICAgICAgICByZXR1cm4gYXVkaW9Db25maWctPmJpdHJhdGUoKSA8PSAxMDAwOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb25Nb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVj
b2RpbmdDb25maWd1cmF0aW9uTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZjM4Mjk4ZmMwMGUyNTczMzVi
ZGQ2YmYyNGJiMTMxM2VmNDQ1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jay5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVk
aWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5LmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRp
b24uaCIKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrIGZpbmFsIDogcHVi
bGljIE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBjcmVhdGUoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZywgTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sm
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgYXV0byBtb2NrQ29uZmlnID0gYWRvcHRSZWYobmV3
IE1lZGlhRW5naW5lRGVjb2RpbmdDb25maWd1cmF0aW9uTW9jayhXVEZNb3ZlKGNvbmZpZykpKTsK
KyAgICAgICAgY2FsbGJhY2sobW9ja0NvbmZpZyk7CisgICAgfTsKKworICAgIEltcGxlbWVudGF0
aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1l
bnRhdGlvblR5cGU6Ok1vY2s7IH0KKyAgICBib29sIGNhbkRlY29kZU1lZGlhKCkgZmluYWw7Cisg
ICAgYm9vbCBjYW5TbW9vdGhseURlY29kZU1lZGlhKCkgZmluYWw7CisgICAgYm9vbCBjYW5Qb3dl
ckVmZmljaWVudGx5RGVjb2RlTWVkaWEoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBNZWRpYUVuZ2luZURlY29kaW5nQ29uZmlndXJhdGlvbk1vY2soTWVkaWFEZWNvZGluZ0NvbmZp
Z3VyYXRpb24mJiBjb25maWcpCisgICAgICAgIDogTWVkaWFFbmdpbmVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24oV1RGTW92ZShjb25maWcpKSB7IH07Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfTUVESUFfRU5HSU5FX0NPTkZJR1VSQVRJT04oV2ViQ29yZTo6TWVkaWFFbmdpbmVEZWNv
ZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLCBXZWJDb3JlOjpNZWRpYUVuZ2luZURlY29kaW5nQ29uZmln
dXJhdGlvbjo6SW1wbGVtZW50YXRpb25UeXBlOjpNb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25Nb2NrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODAyNDkxNjNiYmMyODE4NjY0NmFmMTJk
YWYwOTUxZDY5YzdmZjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suY3BwCkBAIC0wLDAg
KzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCIKKworI2luY2x1ZGUgIkNvbnRl
bnRUeXBlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2Jvb2wgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrOjpjYW5FbmNvZGVNZWRp
YSgpCit7CisgICAgLy8gVGhlIG1vY2sgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSBsb2Nh
bCBmaWxlIHBsYXliYWNrLgorICAgIGlmIChlbmNvZGluZ1R5cGUoKSA9PSBNZWRpYUVuY29kaW5n
VHlwZTo6UmVjb3JkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXhpbmcgb3V0
IHZpZGVvIGVuY29kaW5nIHN1cHBvcnQgYXQgNzIwUC4KKyAgICBhdXRvIHZpZGVvQ29uZmlnID0g
dmlkZW9Db25maWd1cmF0aW9uKCk7CisgICAgaWYgKHZpZGVvQ29uZmlnKSB7CisgICAgICAgIElu
dFNpemUgc2l6ZSA9IHZpZGVvQ29uZmlnLT5zaXplKCk7CisgICAgICAgIGlmIChzaXplLndpZHRo
KCkgPiAxMjgwICYmIHNpemUuaGVpZ2h0KCkgPiA3MjApCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gQXVkaW8gZW5jb2Rpbmcgc3VwcG9ydCBsaW1pdGVkIHRvIGF1
ZGlvL21wNC4KKyAgICBhdXRvIGF1ZGlvQ29uZmlnID0gYXVkaW9Db25maWd1cmF0aW9uKCk7Cisg
ICAgaWYgKGF1ZGlvQ29uZmlnICYmIChhdWRpb0NvbmZpZy0+Y29udGVudFR5cGUoKS5jb250YWlu
ZXJUeXBlKCkgIT0gImF1ZGlvL21wNCIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2s6OmNhblNtb290aGx5RW5jb2RlTWVkaWEoKQoreworICAgIGF1dG8gdmlkZW9Db25maWcgPSB2
aWRlb0NvbmZpZ3VyYXRpb24oKTsKKyAgICBpZiAodmlkZW9Db25maWcpIHsKKyAgICAgICAgaWYg
KHZpZGVvQ29uZmlnLT5mcmFtZXJhdGUoKSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGF1dG8gYXVkaW9Db25maWcgPSBhdWRpb0NvbmZpZ3VyYXRpb24oKTsK
KyAgICBpZiAoYXVkaW9Db25maWcgJiYgYXVkaW9Db25maWctPmNoYW5uZWxzKCkgIT0gIjIiKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNZWRp
YUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2s6OmNhblBvd2VyRWZmaWNpZW50bHlFbmNv
ZGVNZWRpYSgpCit7CisgICAgYXV0byB2aWRlb0NvbmZpZyA9IHZpZGVvQ29uZmlndXJhdGlvbigp
OworICAgIGlmICh2aWRlb0NvbmZpZyAmJiAodmlkZW9Db25maWctPmNvbnRlbnRUeXBlKCkuY29u
dGFpbmVyVHlwZSgpICE9ICJ2aWRlby9tcDQiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBhdWRpb0NvbmZpZyA9IGF1ZGlvQ29uZmlndXJhdGlvbigpOworICAgIGlmIChhdWRp
b0NvbmZpZyAmJiAoYXVkaW9Db25maWctPmJpdHJhdGUoKSA+IDEwMDApKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUVu
Y29kaW5nQ29uZmlndXJhdGlvbk1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0MDVh
ZmY3OGQ2NTFlM2Q3MjQyMjUzZjYwYjJiMzBhMTIyYTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRp
b25Nb2NrLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisg
KiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaCIKKyNpbmNsdWRlICJNZWRpYUVuZ2luZUVuY29k
aW5nQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1v
Y2sgZmluYWwgOiBwdWJsaWMgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb24geworcHVi
bGljOgorICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYg
Y29uZmlnLCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OjpFbmNvZGluZ0NvbmZpZ3Vy
YXRpb25DYWxsYmFjayYgY2FsbGJhY2spCisgICAgeworICAgICAgICBhdXRvIG1vY2tDb25maWcg
PSBhZG9wdFJlZihuZXcgTWVkaWFFbmdpbmVFbmNvZGluZ0NvbmZpZ3VyYXRpb25Nb2NrKFdURk1v
dmUoY29uZmlnKSkpOworICAgICAgICBjYWxsYmFjayhtb2NrQ29uZmlnKTsKKyAgICB9OworCisg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQorICAgIGJvb2wgY2FuRW5jb2RlTWVk
aWEoKSBmaW5hbDsKKyAgICBib29sIGNhblNtb290aGx5RW5jb2RlTWVkaWEoKSBmaW5hbDsKKyAg
ICBib29sIGNhblBvd2VyRWZmaWNpZW50bHlFbmNvZGVNZWRpYSgpIGZpbmFsOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IE1lZGlhRW5naW5lRW5jb2RpbmdDb25maWd1cmF0aW9uTW9jayhNZWRp
YUVuY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZykKKyAgICAgICAgOiBNZWRpYUVuZ2luZUVu
Y29kaW5nQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZykpIHsgfTsKK307CisKK30KKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19NRURJQV9FTkdJTkVfQ09ORklHVVJBVElPTihXZWJDb3JlOjpN
ZWRpYUVuZ2luZUVuY29kaW5nQ29uZmlndXJhdGlvbk1vY2ssIFdlYkNvcmU6Ok1lZGlhRW5naW5l
RW5jb2RpbmdDb25maWd1cmF0aW9uOjpJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2spOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGEzZTk2ZWQ5NjUxZGRhN2JhYTU1OWVkMTM5
Zjc2ZGUzMzVhOWI4ZDUuLjBiMzQ4ZTgwMTk5YTY4YWI4OWQzMDdjMGZlOWU0NjJkZmQ5NDMzYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQAog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3ku
aCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKQEAg
LTUwNSw2ICs1MDYsOCBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQ
YWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oMF9zKTsK
ICAgICBwYWdlLnNldEZ1bGxzY3JlZW5JbnNldHMoeyB9KTsKICAgICBwYWdlLnNldEZ1bGxzY3Jl
ZW5Db250cm9sc0hpZGRlbihmYWxzZSk7CisKKyAgICBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5OjpkaXNhYmxlTW9jaygpOwogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVu
dCYgZG9jdW1lbnQpCkBAIC0zNDY0LDYgKzM0NjcsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFNo
b3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VCdWZmZXImIGJ1ZmZlciwgYm9vbCBmbGFnKQog
CiAjZW5kaWYKIAordm9pZCBJbnRlcm5hbHM6OmVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygp
Cit7CisgICAgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeTo6ZW5hYmxlTW9jaygpOwor
fQorCiAjaWYgRU5BQkxFKFZJREVPKQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OmJl
Z2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJydXB0aW9uU3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMGFiNTcwYmE0MzlhMThkMmZj
NDQxODlmYmQ3N2YwMDU3NmFlNDgzZS4uMzg4NGVmZGUxN2NkYmQyNmFmMDdmOTZmNThhMTM0MTQ1
ZGI1ZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00NzQsNiArNDc0LDgg
QEAgcHVibGljOgogICAgIFJlZjxNb2NrQ0RNRmFjdG9yeT4gcmVnaXN0ZXJNb2NrQ0RNKCk7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCk7CisKICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2b2lkIGVuYWJsZU1vY2tTcGVlY2hTeW50aGVz
aXplcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjNh
YTkyOTUzNjg4OGZjMDA4NjEzZDkyNzAzNDJjNjRlZmVkNGFiYy4uNzUwYzZmOTUxOWRhZmJmOTE3
N2JkNTY3ZjIxMzNiZWY2ZWUyODg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtNDc4LDYgKzQ3OCw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgW0Nv
bmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUFdIHZvaWQgaW5pdGlhbGl6ZU1vY2tDRE0o
KTsKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBXSBNb2NrQ0RNRmFjdG9yeSByZWdp
c3Rlck1vY2tDRE0oKTsKKyAgICB2b2lkIGVuYWJsZU1vY2tNZWRpYUNhcGFiaWxpdGllcygpOwog
CiAgICAgW0NvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWE4MzBlNmYxNjY4YjE1NTc2NTRjNDNhZjViY2M2
MDg1OThjMzMyLi4wYTM3YTI3NDQ5OTBlOWY3M2M3ZGJjNWJmOTI0ZTk5MWVjMWJmODRmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDgtMDMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtNZWRpYUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50
ZWdyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Nzg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBN
b2NrIHRlc3RzIGZvciB0aGUgTWVkaWFDYXBhYmlsaXRpZXMgc3BlY2lmaWNhdGlvbi4KKworICAg
ICAgICAqIG1lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNv
ZGluZ0luZm8uaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMv
bW9jay1lbmNvZGluZ0luZm8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9t
ZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby10ZXN0LmpzOgorICAgICAgICAoY2hlY2tNZWRpYUNhcGFiaWxpdGllc0lu
Zm8pOgorCiAyMDE4LTA4LTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbGVhc2UgYXNzZXJ0IHdoZW4gdGhyb3dpbmcgZXhjZXB0aW9ucyBpbiBjdXN0b20g
ZWxlbWVudCByZWFjdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2Fw
YWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZjViN2FlOTVlZjhkOTkyZWY5ZjI2MGUzNTgwYjc0YzNhNGRjZDFlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1kZWNv
ZGluZ0luZm8tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5h
YmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCkpCisKK1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50
IDcyMFAgTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAn
dmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdp
ZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitp
bmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSB0cnVlIE9LCitpbmZvLnBv
d2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworTm90IHNtb290aCAodG9vIGhpZ2ggZnJhbWVyYXRl
KSBidXQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5h
dmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZp
ZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3
MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDYwLjQvMiB9IH0pOykK
K1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21v
b3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworVW5zdXBw
b3J0ZWQgcHJvdG9jb2w6IE1TRQorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ21lZGlhLXNvdXJjZScsIHZpZGVvOiB7IGNvbnRl
bnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6
IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0IH0gfSk7KQorUHJvbWlzZSByZXNvbHZl
ZCBPSworaW5mby5zdXBwb3J0ZWQgPT0gZmFsc2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9L
CitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK1Vuc3VwcG9ydGVkIHZpZGVvIHJl
c29sdXRpb246IDEwODBQCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGll
cy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0
aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8u
c3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dl
ckVmZmljaWVudCA9PSBmYWxzZSBPSworCitTbW9vdGggYW5kIHBvd2VyIGVmZmljaWVudCBhdWRp
byBNUDQgZGVjb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVz
LmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRp
by9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6IDEwMDAs
IHNhbXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBw
b3J0ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gdHJ1ZSBPSworaW5mby5wb3dlckVmZmlj
aWVudCA9PSB0cnVlIE9LCisKK1Ntb290aCBidXQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0
IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNv
ZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0
OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzInLCBiaXRyYXRlOiAyMDAwLCBzYW1w
bGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRydWUgT0sKK2luZm8ucG93ZXJFZmZpY2llbnQg
PT0gZmFsc2UgT0sKKworTm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBk
ZWNvZGluZworUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2Rp
bmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsg
Y29kZWNzPSJtcDRhLjQwLjIiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1w
bGVyYXRlOiA0NDEwMCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVk
ID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50
ID09IHRydWUgT0sKKworTm90IHNtb290aCBhbmQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0
IGRlY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNv
ZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0
OyBjb2RlY3M9Im1wNGEuNDAuMiInLCBjaGFubmVsczogJzUuMScsIGJpdHJhdGU6IDIwMDAsIHNh
bXBsZXJhdGU6IDQ0MTAwIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5mby5zdXBwb3J0
ZWQgPT0gdHJ1ZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJFZmZpY2ll
bnQgPT0gZmFsc2UgT0sKKworVW5zdXBwb3J0ZWQgYXVkaW8gY29kZWM6IG9nZyB2b3JiaXMKK1JV
Tihwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5
cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9y
YmlzIicsIGNoYW5uZWxzOiAnMicgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1
cHBvcnRlZCA9PSBmYWxzZSBPSworaW5mby5zbW9vdGggPT0gZmFsc2UgT0sKK2luZm8ucG93ZXJF
ZmZpY2llbnQgPT0gZmFsc2UgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZGVjb2RpbmdJbmZvLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRlY29kaW5nSW5mby5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI3NDM5MDAxOTQyYWY1NzI1M2FlNmU2NWE2ZjBkMjZkYjE0OTYyMWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWRl
Y29kaW5nSW5mby5odG1sCkBAIC0wLDAgKzEsMTA3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgdmFyIHByb21pc2U7CisKKyAg
ICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgICAgICAgICBmYWlsVGVzdCgiSW50ZXJuYWxzIGlzIHJlcXVpcmVkIGZvciB0aGlz
IHRlc3QuIikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICBydW4o
J2ludGVybmFscy5lbmFibGVNb2NrTWVkaWFDYXBhYmlsaXRpZXMoKScpOworICAgICAgICAgbmV4
dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHQoKSB7CisgICAgICAgICBpZiAoIXRlc3Rz
Lmxlbmd0aCkgeworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIG5leHRUZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAgICAg
ICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgbmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICB0
ZXN0cyA9IFsKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZGVjb2RpbmcnKTsKKyAgICAg
ICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2Rp
bmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsg
Y29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgw
LCBmcmFtZXJhdGU6IDI0LjUgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHBy
b21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFi
aWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggKHRvbyBoaWdo
IGZyYW1lcmF0ZSkgYnV0IHBvd2VyIGVmZmljaWVudCA3MjBQIE1QNCBkZWNvZGluZycpOworICAg
ICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNv
ZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0
OyBjb2RlY3M9XCJhdmMxXCInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTogMTAwMCwgd2lkdGg6IDEy
ODAsIGZyYW1lcmF0ZTogNjAuNC8yIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2
ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFD
YXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAg
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnVW5zdXBwb3J0ZWQgcHJv
dG9jb2w6IE1TRScpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRp
YUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnbWVkaWEtc291cmNlJywgdmlkZW86
IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIw
LCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAg
ICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAg
ICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQp
OworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgnVW5zdXBwb3J0ZWQgdmlkZW8gcmVzb2x1dGlvbjogMTA4MFAnKTsKKyAgICAgICAg
ICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJ
bmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29k
ZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiAxMDgwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwg
ZnJhbWVyYXRlOiAyNCB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlz
ZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0
aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnU21vb3RoIGFuZCBwb3dlciBlZmZp
Y2llbnQgYXVkaW8gTVA0IGRlY29kaW5nJyk7CisgICAgICAgICAgICAgcnVuKCJwcm9taXNlID0g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywg
YXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywg
Y2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7
CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7Cisg
ICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRy
dWUsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4
dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCdTbW9vdGggYnV0IHBvd2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBkZWNvZGlu
ZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAn
YXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNoYW5uZWxzOiAnMicsIGJpdHJhdGU6
IDIwMDAsIHNhbXBsZXJhdGU6IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJl
c29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01l
ZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAg
ICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGgg
YnV0IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZGVjb2RpbmcnKTsKKyAgICAgICAgICAgICBy
dW4oInByb21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPVwi
bXA0YS40MC4yXCInLCBjaGFubmVsczogJzUuMScsIGJpdHJhdGU6IDEwMDAsIHNhbXBsZXJhdGU6
IDQ0MTAwICB9IH0pOyIpOworICAgICAgICAgICAgIHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhl
bigoaW5mbykgPT4geworICAgICAgICAgICAgICAgICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5m
byhpbmZvLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9vdGggYW5kIHBvd2VyIGluZWZmaWNp
ZW50IGF1ZGlvIE1QNCBkZWNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5h
dmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIGF1
ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNo
YW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7
CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7Cisg
ICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBu
ZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIGF1ZGlvIGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAg
ICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29k
aW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9vZ2c7
IGNvZGVjcz1cInZvcmJpc1wiJywgY2hhbm5lbHM6ICcyJyB9IH0pOyIpOworICAgICAgICAgICAg
IHNob3VsZFJlc29sdmUocHJvbWlzZSkudGhlbigoaW5mbykgPT4geworICAgICAgICAgICAgICAg
ICBjaGVja01lZGlhQ2FwYWJpbGl0aWVzSW5mbyhpbmZvLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAg
ICAgfSwKKyAgICBdOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rl
c3QoKSIgLz4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhY2Fw
YWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhY2FwYWJpbGl0aWVzL21vY2stZW5jb2RpbmdJbmZvLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNTQyNzQxODk2M2QxMDBjNjhhMjBiNWRjMmRkMTYzNjlmZDAwZWFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNv
ZGluZ0luZm8tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjYgQEAKK1JVTihpbnRlcm5hbHMuZW5h
YmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCkpCisKK1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50
IDcyMFAgTVA0IGVuY29kaW5nCitSVU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxp
dGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29udGVu
dFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDcyMCwgYml0cmF0ZTog
MTAwMCwgd2lkdGg6IDEyODAsIGZyYW1lcmF0ZTogMjQuNSB9IH0pOykKK1Byb21pc2UgcmVzb2x2
ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sKK2luZm8uc21vb3RoID09IHRydWUgT0sK
K2luZm8ucG93ZXJFZmZpY2llbnQgPT0gdHJ1ZSBPSworCitOb3Qgc21vb3RoICh0b28gaGlnaCBm
cmFtZXJhdGUpIGJ1dCBwb3dlciBlZmZpY2llbnQgNzIwUCBNUDQgZW5jb2RpbmcKK1JVTihwcm9t
aXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0
cmFuc21pc3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJh
dmMxIicsIGhlaWdodDogNzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRl
OiA2MC40LzIgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0
cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSB0
cnVlIE9LCisKK1Vuc3VwcG9ydGVkIHByb3RvY29sOiBSZWNvcmQKK1JVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2
aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDog
NzIwLCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1By
b21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290
aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitVbnN1cHBv
cnRlZCB2aWRlbyByZXNvbHV0aW9uOiAxMDgwUAorUlVOKHByb21pc2UgPSBuYXZpZ2F0b3IubWVk
aWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIHZpZGVv
OiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgaGVpZ2h0OiAxMDgw
LCBiaXRyYXRlOiAxMDAwLCB3aWR0aDogMTkyMCwgZnJhbWVyYXRlOiAyNCB9IH0pOykKK1Byb21p
c2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IGZhbHNlIE9LCitpbmZvLnNtb290aCA9
PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9PSBmYWxzZSBPSworCitTbW9vdGggYW5k
IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24n
LCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywg
Y2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTspCitQ
cm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNtb290
aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sKKworU21vb3RoIGJ1
dCBwb3dlciBpbmVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNlID0gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Np
b24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIi
JywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgfSB9KTsp
CitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9PSB0cnVlIE9LCitpbmZvLnNt
b290aCA9PSB0cnVlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCisKK05vdCBz
bW9vdGggYnV0IHBvd2VyIGVmZmljaWVudCBhdWRpbyBNUDQgZW5jb2RpbmcKK1JVTihwcm9taXNl
ID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICd0cmFu
c21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRh
LjQwLjIiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEw
MCB9IH0pOykKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK2luZm8uc3VwcG9ydGVkID09IHRydWUgT0sK
K2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBvd2VyRWZmaWNpZW50ID09IHRydWUgT0sK
KworTm90IHNtb290aCBhbmQgcG93ZXIgaW5lZmZpY2llbnQgYXVkaW8gTVA0IGVuY29kaW5nCitS
VU4ocHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0
eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNv
ZGVjcz0ibXA0YS40MC4yIicsIGNoYW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwgc2FtcGxl
cmF0ZTogNDQxMDAgfSB9KTspCitQcm9taXNlIHJlc29sdmVkIE9LCitpbmZvLnN1cHBvcnRlZCA9
PSB0cnVlIE9LCitpbmZvLnNtb290aCA9PSBmYWxzZSBPSworaW5mby5wb3dlckVmZmljaWVudCA9
PSBmYWxzZSBPSworCitVbnN1cHBvcnRlZCBhdWRpbyBjb2RlYzogb2dnIHZvcmJpcworUlVOKHBy
b21pc2UgPSBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTog
J3RyYW5zbWlzc2lvbicsIGF1ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vb2dnOyBjb2RlY3M9
InZvcmJpcyInLCBjaGFubmVsczogJzInIH0gfSk7KQorUHJvbWlzZSByZXNvbHZlZCBPSworaW5m
by5zdXBwb3J0ZWQgPT0gZmFsc2UgT0sKK2luZm8uc21vb3RoID09IGZhbHNlIE9LCitpbmZvLnBv
d2VyRWZmaWNpZW50ID09IGZhbHNlIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYWNhcGFiaWxpdGllcy9tb2NrLWVuY29kaW5nSW5mby5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9jay1lbmNvZGluZ0luZm8uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNzI0YWY2ZDgzYWRiYTMxMDBlNzY4MDdmNzRhNDY4YzE0NjkwNGRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMvbW9j
ay1lbmNvZGluZ0luZm8uaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIHZhciBwcm9taXNlOwor
CisgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgZmFpbFRlc3QoIkludGVybmFscyBpcyByZXF1aXJlZCBmb3Ig
dGhpcyB0ZXN0LiIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAg
cnVuKCdpbnRlcm5hbHMuZW5hYmxlTW9ja01lZGlhQ2FwYWJpbGl0aWVzKCknKTsKKyAgICAgICAg
IG5leHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBuZXh0KCkgeworICAgICAgICAgaWYgKCF0
ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBuZXh0VGVzdCA9IHRlc3RzLnNoaWZ0KCk7Cisg
ICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorCisg
ICAgdGVzdHMgPSBbCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoJ1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IDcyMFAgTVA0IGVuY29kaW5nJyk7Cisg
ICAgICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVu
Y29kaW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCB2aWRlbzogeyBjb250ZW50VHlwZTog
J3ZpZGVvL21wNDsgY29kZWNzPVwiYXZjMVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAs
IHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6IDI0LjUgfSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91
bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAgICAgICAgY2hl
Y2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAgICAgICAgIH0sCisg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ05vdCBzbW9v
dGggKHRvbyBoaWdoIGZyYW1lcmF0ZSkgYnV0IHBvd2VyIGVmZmljaWVudCA3MjBQIE1QNCBlbmNv
ZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFi
aWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29u
dGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogNzIwLCBiaXRy
YXRlOiAxMDAwLCB3aWR0aDogMTI4MCwgZnJhbWVyYXRlOiA2MC40LzIgfSB9KTsiKTsKKyAgICAg
ICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAg
ICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7Cisg
ICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCdVbnN1cHBvcnRlZCBwcm90b2NvbDogUmVjb3JkJyk7CisgICAgICAgICAgICAgcnVuKCJw
cm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6
ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPVwiYXZj
MVwiJywgaGVpZ2h0OiA3MjAsIGJpdHJhdGU6IDEwMDAsIHdpZHRoOiAxMjgwLCBmcmFtZXJhdGU6
IDI0IH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChp
bmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGlu
Zm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCdVbnN1cHBvcnRlZCB2aWRlbyByZXNvbHV0aW9uOiAx
MDgwUCcpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFi
aWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgdmlkZW86IHsgY29u
dGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz1cImF2YzFcIicsIGhlaWdodDogMTA4MCwgYml0
cmF0ZTogMTAwMCwgd2lkdGg6IDE5MjAsIGZyYW1lcmF0ZTogMjQgfSB9KTsiKTsKKyAgICAgICAg
ICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8pID0+IHsKKyAgICAgICAgICAg
ICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywgZmFsc2UsIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBuZXh0KTsKKyAg
ICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ1Ntb290aCBhbmQgcG93ZXIgZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAg
ICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNv
ZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdh
dWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTog
MTAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVz
b2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVk
aWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICAgICAg
ICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAg
ICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgY29uc29sZVdyaXRlKCdTbW9vdGggYnV0IHBv
d2VyIGluZWZmaWNpZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigi
cHJvbWlzZSA9IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBl
OiAndHJhbnNtaXNzaW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVj
cz1cIm1wNGEuNDAuMlwiJywgY2hhbm5lbHM6ICcyJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0
ZTogNDQxMDAgIH0gfSk7Iik7CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50
aGVuKChpbmZvKSA9PiB7CisgICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKGluZm8sIHRydWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgbmV4dCgpOwor
ICAgICAgICAgICAgIH0sIG5leHQpOworICAgICAgICAgfSwKKyAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnTm90IHNtb290aCBidXQgcG93ZXIgZWZmaWNp
ZW50IGF1ZGlvIE1QNCBlbmNvZGluZycpOworICAgICAgICAgICAgIHJ1bigicHJvbWlzZSA9IG5h
dmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8oeyB0eXBlOiAndHJhbnNtaXNz
aW9uJywgYXVkaW86IHsgY29udGVudFR5cGU6ICdhdWRpby9tcDQ7IGNvZGVjcz1cIm1wNGEuNDAu
MlwiJywgY2hhbm5lbHM6ICc1LjEnLCBiaXRyYXRlOiAxMDAwLCBzYW1wbGVyYXRlOiA0NDEwMCAg
fSB9KTsiKTsKKyAgICAgICAgICAgICBzaG91bGRSZXNvbHZlKHByb21pc2UpLnRoZW4oKGluZm8p
ID0+IHsKKyAgICAgICAgICAgICAgICAgY2hlY2tNZWRpYUNhcGFiaWxpdGllc0luZm8oaW5mbywg
dHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICAgfSwgbmV4dCk7CisgICAgICAgICB9LAorICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCdOb3Qgc21vb3RoIGFuZCBwb3dlciBpbmVmZmljaWVudCBhdWRp
byBNUDQgZW5jb2RpbmcnKTsKKyAgICAgICAgICAgICBydW4oInByb21pc2UgPSBuYXZpZ2F0b3Iu
bWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3RyYW5zbWlzc2lvbicsIGF1
ZGlvOiB7IGNvbnRlbnRUeXBlOiAnYXVkaW8vbXA0OyBjb2RlY3M9XCJtcDRhLjQwLjJcIicsIGNo
YW5uZWxzOiAnNS4xJywgYml0cmF0ZTogMjAwMCwgc2FtcGxlcmF0ZTogNDQxMDAgIH0gfSk7Iik7
CisgICAgICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7Cisg
ICAgICAgICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIHRydWUsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICB9LCBu
ZXh0KTsKKyAgICAgICAgIH0sCisgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoJ1Vuc3VwcG9ydGVkIGF1ZGlvIGNvZGVjOiBvZ2cgdm9yYmlzJyk7CisgICAg
ICAgICAgICAgcnVuKCJwcm9taXNlID0gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29k
aW5nSW5mbyh7IHR5cGU6ICd0cmFuc21pc3Npb24nLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ2F1
ZGlvL29nZzsgY29kZWNzPVwidm9yYmlzXCInLCBjaGFubmVsczogJzInIH0gfSk7Iik7CisgICAg
ICAgICAgICAgc2hvdWxkUmVzb2x2ZShwcm9taXNlKS50aGVuKChpbmZvKSA9PiB7CisgICAgICAg
ICAgICAgICAgIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgfSwgbmV4dCk7
CisgICAgICAgICB9LAorICAgIF07CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImRvVGVzdCgpIiAvPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tdGVzdC5qcyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKaW5kZXggZGI4
ZTQxOThkNjAyNzBkMDNmYWZjMmE3OTNmZWY1ZDhjNDU4MjdkNS4uMmMzYWNjNWZjNjU0ZjM1NjEw
NWIyZTgzNmE0NmZhZmIxMWM0MjRiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCkBAIC00ODcs
MyArNDg3LDkgQEAgZnVuY3Rpb24gaGFuZGxlUHJvbWlzZShwcm9taXNlKSB7CiAgICAgZnVuY3Rp
b24gaGFuZGxlKCkgeyB9CiAgICAgcmV0dXJuIHByb21pc2UudGhlbihoYW5kbGUsIGhhbmRsZSk7
CiB9CisKK2Z1bmN0aW9uIGNoZWNrTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGluZm8sIGV4cGVjdGVk
U3VwcG9ydGVkLCBleHBlY3RlZFNtb290aCwgZXhwZWN0ZWRQb3dlckVmZmljaWVudCkgeworICAg
IGxvZ1Jlc3VsdChpbmZvLnN1cHBvcnRlZCA9PSBleHBlY3RlZFN1cHBvcnRlZCwgImluZm8uc3Vw
cG9ydGVkID09ICIgKyBleHBlY3RlZFN1cHBvcnRlZCk7CisgICAgbG9nUmVzdWx0KGluZm8uc21v
b3RoID09IGV4cGVjdGVkU21vb3RoLCAiaW5mby5zbW9vdGggPT0gIiArIGV4cGVjdGVkU21vb3Ro
KTsKKyAgICBsb2dSZXN1bHQoaW5mby5wb3dlckVmZmljaWVudCA9PSBleHBlY3RlZFBvd2VyRWZm
aWNpZW50LCAiaW5mby5wb3dlckVmZmljaWVudCA9PSAiICsgZXhwZWN0ZWRQb3dlckVmZmljaWVu
dCk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>