<?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>186933</bug_id>
          
          <creation_ts>2018-06-22 10:56:19 -0700</creation_ts>
          <short_desc>[WPE][GTK] Implement WebAudioSourceProviderGStreamer to allow bridging MediaStream and the WebAudio APIs</short_desc>
          <delta_ts>2020-10-29 05:34:03 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218335</see_also>
          <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>187064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thibault Saunier">tsaunier</reporter>
          <assigned_to name="Thibault Saunier">tsaunier</assigned_to>
          <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435509</commentid>
    <comment_count>0</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-06-22 10:56:19 -0700</bug_when>
    <thetext>This is also required for many WebRTC LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485696</commentid>
    <comment_count>1</comment_count>
      <attachid>356726</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-12-06 07:34:52 -0800</bug_when>
    <thetext>Created attachment 356726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485705</commentid>
    <comment_count>2</comment_count>
      <attachid>356726</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-06 08:28:03 -0800</bug_when>
    <thetext>Comment on attachment 356726
Patch

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:138
&gt; +    if (m_pipeline)
&gt; +        gst_element_set_state(m_pipeline.get(), GST_STATE_NULL);

Needs ifdef guards

&gt; Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:241
&gt; +    if (m_pipeline)
&gt; +        gst_element_set_state(m_pipeline.get(), GST_STATE_PLAYING);

Ditto

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:45
&gt;      GstElement* source = GStreamerCapturer::createSource();

No need for this variable anymore

&gt; Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:40
&gt; +static const double Tau = 2 * M_PI;
&gt; +static const double BipBopDuration = 0.07;
&gt; +static const double BipBopVolume = 0.5;
&gt; +static const double BipFrequency = 1500;
&gt; +static const double BopFrequency = 500;
&gt; +static const double HumFrequency = 150;
&gt; +static const double HumVolume = 0.1;

I think we usually name static constants like s_fooBar :)

&gt; Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:119
&gt; +            addHum(BipBopVolume, BopFrequency, rate, 0, static_cast&lt;float*&gt;(m_bipBopBuffer.data() + bopStart), bipBopSampleCount);

shouldn&apos;t the 0 here be bopStart?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485733</commentid>
    <comment_count>3</comment_count>
      <attachid>356735</attachid>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-12-06 09:36:14 -0800</bug_when>
    <thetext>Created attachment 356735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485737</commentid>
    <comment_count>4</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-12-06 09:52:24 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #2)
&gt; Comment on attachment 356726 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356726&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:138
&gt; &gt; +    if (m_pipeline)
&gt; &gt; +        gst_element_set_state(m_pipeline.get(), GST_STATE_NULL);
&gt; 
&gt; Needs ifdef guards
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:241
&gt; &gt; +    if (m_pipeline)
&gt; &gt; +        gst_element_set_state(m_pipeline.get(), GST_STATE_PLAYING);
&gt; 
&gt; Ditto

I am just gonna remove the ifdefing of the varible, it won&apos;t be used in some cases
but to me it is better than ifdefing all around.

&gt; &gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:45
&gt; &gt;      GstElement* source = GStreamerCapturer::createSource();
&gt; 
&gt; No need for this variable anymore

The whole override is not needed anymore, removed :-)
 
&gt; &gt; Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:40
&gt; &gt; +static const double Tau = 2 * M_PI;
&gt; &gt; +static const double BipBopDuration = 0.07;
&gt; &gt; +static const double BipBopVolume = 0.5;
&gt; &gt; +static const double BipFrequency = 1500;
&gt; &gt; +static const double BopFrequency = 500;
&gt; &gt; +static const double HumFrequency = 150;
&gt; &gt; +static const double HumVolume = 0.1;
&gt; 
&gt; I think we usually name static constants like s_fooBar :)

Done.

&gt; &gt; Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:119
&gt; &gt; +            addHum(BipBopVolume, BopFrequency, rate, 0, static_cast&lt;float*&gt;(m_bipBopBuffer.data() + bopStart), bipBopSampleCount);
&gt; 
&gt; shouldn&apos;t the 0 here be bopStart?

Nop, we already offset the data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485949</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-07 01:37:26 -0800</bug_when>
    <thetext>So the start param of addHum() is basically useless then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485951</commentid>
    <comment_count>6</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-12-07 02:10:15 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #5)
&gt; So the start param of addHum() is basically useless then?

....

&gt; Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:85
&gt; +                    addHum(s_HumVolume, s_HumFrequency, sampleRate(), m_samplesRendered, (float*)map.data(), bipBopCount);

It is used here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485952</commentid>
    <comment_count>7</comment_count>
      <attachid>356735</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-07 02:14:05 -0800</bug_when>
    <thetext>Comment on attachment 356735
Patch

OK then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485960</commentid>
    <comment_count>8</comment_count>
      <attachid>356735</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 02:49:04 -0800</bug_when>
    <thetext>Comment on attachment 356735
Patch

Clearing flags on attachment: 356735

Committed r238951: &lt;https://trac.webkit.org/changeset/238951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485961</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 02:49:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485962</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-07 02:50:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/46550463&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356726</attachid>
            <date>2018-12-06 07:34:52 -0800</date>
            <delta_ts>2018-12-06 09:36:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186933-20181206123451.patch</filename>
            <type>text/plain</type>
            <size>31533</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYyYjMzNzk4MWVmYmI4
NTg4OWZmNjdmYzFiZGI1NjUxNmFmMjY1OC4uNjc3NGZjMDQ3NTRkYzc3NWRhYjY0OTYxYzI2NmYx
NDA5ZjQ1NDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTEyLTA1ICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtd
IEltcGxlbWVudCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIHRvIGFsbG93IGJyaWRn
aW5nIE1lZGlhU3RyZWFtIGFuZCB0aGUgV2ViQXVkaW8gQVBJcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTMzCisKKyAgICAgICAgUmV1c2luZyB0
aGUgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciBpdHNlbGYgYXMgaXQgd2FzIGRvaW5nIGFs
bW9zdCBldmVyeXRoaW5nIHdlIG5lZWRlZCwKKyAgICAgICAganVzdCBhZGRlZCBhIGNvbnN0cnVj
dG9yIHRvIGJlIGFibGUgdG8gY3JlYXRlIGl0IGZyb20gYSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSBhbmQgbWFkZSBpdCBhCisgICAgICAgIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIgd2hpY2ggb25s
eSBtZWFucyBpdCBpcyBub3cgYSBUaHJlYWRTYWZlUmVmQ291bnRlZC4KKworICAgICAgICBTZW5z
aWJpbHkgcmVmYWN0b3JlZCBHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZSBzbyB0aGF0IHdlIGNv
dWxkIHJldXNlIGl0IHRvIHRyYWNrIGEgc2luZ2xlCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2su
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxl
ZCBhbGwgdGVzdHMgZGVwZW5kaW5nIG9uIHRoYXQgZmVhdHVyZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6c2V0Q2xpZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphdWRpb1Nv
dXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb0NhcHR1cmVyOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNy
Y1NldHVwU3JjKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBB
cHBTcmMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNyY05ldyk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlZE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V3JhcHBlZE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmFkZEh1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnJlbmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnNldHRpbmdz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1
bGxBdWRpb0RhdGEpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaW5wdXQgYnVmZmVycworICAgICAg
ICAgIGFyZSAiYmlnIiBhbmQgcHJvY2VzcyBhbGwgdGhlIGRhdGEgd2UgY2FuIGZvciBlYWNoIHJ1
bnMgb2YgdGhlIG1ldGhvZC4KKwogMjAxOC0xMS0yOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHN1cGVyZmx1b3VzIGNvZGUgaW4gQ29udGVudFNl
Y3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCBkNGEwY2EyYmY4YTZlNmJl
NTAyYWViMjc3YWRlZTJhOGE2YzM1OTkzLi5lNzExMWYzYzAyM2FlNjE1ZjAxOTUzMDI5NzkxMTZj
MzU3N2I2NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwCkBAIC0yNyw2ICsyNywxMCBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+
CiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKExJQldFQlJUQykKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb0RhdGEuaCIK
KyNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtOTQsNiArOTgsMzEgQEAgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAgICAgbV9mcm9udFJpZ2h0
QWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldygpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKExJQldFQlJUQykKK0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSkK
KyAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVyPE1haW5UaHJlYWROb3RpZmljYXRp
b24+OjpjcmVhdGUoKSkKKyAgICAsIG1fY2xpZW50KG51bGxwdHIpCisgICAgLCBtX2RlaW50ZXJs
ZWF2ZVNvdXJjZVBhZHMoMCkKKyAgICAsIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRIYW5kbGVySWQo
MCkKKyAgICAsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZCgwKQorICAgICwgbV9k
ZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkKDApCit7CisgICAgbV9mcm9udExlZnRBZGFw
dGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7CisgICAgbV9mcm9udFJpZ2h0QWRhcHRlciA9IGdzdF9h
ZGFwdGVyX25ldygpOworICAgIGF1dG8gcGlwZWxpbmVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIldl
YkF1ZGlvUHJvdmlkZXJfTWVkaWFTdHJlYW1UcmFja18lcyIsIHNvdXJjZS5pZCgpLnV0ZjgoKS5k
YXRhKCkpOworICAgIG1fcGlwZWxpbmUgPSBhZG9wdEdSZWYoR1NUX0VMRU1FTlQoZ19vYmplY3Rf
cmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFt
ZS51dGY4KCkuZGF0YSgpKSkpKTsKKyAgICBhdXRvIHNyYyA9IHdlYmtpdE1lZGlhU3RyZWFtU3Jj
TmV3KCk7CisgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXRUJLSVRfTUVESUFfU1RS
RUFNX1NSQyhzcmMpLCAmc291cmNlLCB0cnVlKTsKKworICAgIG1fYXVkaW9TaW5rQmluID0gYWRv
cHRHUmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9wYXJzZV9iaW5fZnJvbV9k
ZXNjcmlwdGlvbigidGVlIG5hbWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKSkpKTsKKworICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lLmdldCgpKSwgc3JjLCBtX2F1ZGlv
U2lua0Jpbi5nZXQoKSwgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayhzcmMsIG1fYXVk
aW9TaW5rQmluLmdldCgpKTsKKworICAgIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2so
bV9waXBlbGluZS5nZXQoKSk7Cit9CisjZW5kaWYKKwogQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogewogICAgIG1fbm90aWZpZXIt
PmludmFsaWRhdGUoKTsKQEAgLTEwNSw2ICsxMzQsOSBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAgICAgICAgIGdfc2lnbmFs
X2hhbmRsZXJfZGlzY29ubmVjdChkZWludGVybGVhdmUuZ2V0KCksIG1fZGVpbnRlcmxlYXZlUGFk
UmVtb3ZlZEhhbmRsZXJJZCk7CiAgICAgfQogCisgICAgaWYgKG1fcGlwZWxpbmUpCisgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7
CisKICAgICBnX29iamVjdF91bnJlZihtX2Zyb250TGVmdEFkYXB0ZXIpOwogICAgIGdfb2JqZWN0
X3VucmVmKG1fZnJvbnRSaWdodEFkYXB0ZXIpOwogfQpAQCAtMjA1LDEyICsyMzcsMTcgQEAgdm9p
ZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpzZXRDbGllbnQoQXVkaW9Tb3VyY2VQcm92
aWRlckNsaWVudCogY2xpZW50KQogICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0g
Y2xpZW50OwogCisgICAgaWYgKG1fcGlwZWxpbmUpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7CisKICAgICAvLyBUaGUg
dm9sdW1lIGVsZW1lbnQgaXMgdXNlZCB0byBtdXRlIGF1ZGlvIHBsYXliYWNrIHRvd2FyZHMgdGhl
CiAgICAgLy8gYXV0b2F1ZGlvc2luay4gVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgZG91YmxlIHBs
YXliYWNrIG9mIGF1ZGlvCiAgICAgLy8gZnJvbSBvdXIgYXVkaW8gc2luayBhbmQgZnJvbSB0aGUg
V2ViQXVkaW8gQXVkaW9EZXN0aW5hdGlvbiBub2RlCiAgICAgLy8gc3VwcG9zZWRseSBjb25maWd1
cmVkIGFscmVhZHkgYnkgYXBwbGljYXRpb24gc2lkZS4KICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IHZvbHVtZUVsZW1lbnQgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKG1f
YXVkaW9TaW5rQmluLmdldCgpKSwgInZvbHVtZSIpKTsKLSAgICBnX29iamVjdF9zZXQodm9sdW1l
RWxlbWVudC5nZXQoKSwgIm11dGUiLCBUUlVFLCBudWxscHRyKTsKKworICAgIGlmICh2b2x1bWVF
bGVtZW50KQorICAgICAgICBnX29iamVjdF9zZXQodm9sdW1lRWxlbWVudC5nZXQoKSwgIm11dGUi
LCBUUlVFLCBudWxscHRyKTsKIAogICAgIC8vIFRoZSBhdWRpb2NvbnZlcnQgYW5kIGF1ZGlvcmVz
YW1wbGUgZWxlbWVudHMgYXJlIG5lZWRlZCB0bwogICAgIC8vIGVuc3VyZSBkZWludGVybGVhdmUg
YW5kIHRoZSBzaW5rcyBkb3duc3RyZWFtIHJlY2VpdmUgYnVmZmVycyBpbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggYWI2MDE5OGM4ODBmZGI5NDQ2M2Jk
NzE5MmRlZGZkNmJlMDczNDlmNy4uZGZkYWRjYTAyMzMxZjhmMTY1NjM1NDE2NmRmZjJmZjNkN2Jl
ODM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBAIC0y
OCwxNCArMjgsMzEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJU
QykKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCisjZW5kaWYKKwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0ZXIgR3N0QWRhcHRl
cjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RBcHBTaW5rIEdzdEFwcFNpbms7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpCitj
bGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lcj4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyKHNvdXJjZSkpOworICAgIH0KKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisjZWxzZQogY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lciA6IHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKTsKIHB1YmxpYzoKKyNl
bmRpZgorCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogICAgIH5BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAKQEAgLTU0LDYgKzcxLDExIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyQWRhcHRlcnMoKTsKIAogcHJpdmF0ZToKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShMSUJXRUJSVEMpCisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVs
aW5lOworI2VuZGlmCisKICAgICBlbnVtIE1haW5UaHJlYWROb3RpZmljYXRpb24gewogICAgICAg
ICBEZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCA9IDEgPDwgMCwKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IDUxNjZkZTZmN2ZhMWNhYTNhNTFmZWNkYTM4ZmNkZWUw
NDZhMzU5ZTEuLjk1ZmE5NWVkNGY5NGI4NGNkMDlkNmYxOGJiZmRmNjFkNTNmNTg4ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTM1LDYgKzM1LDggQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCisj
ZWxpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElC
V0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXIuaCIKICNlbHNlCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIgog
I2VuZGlmCkBAIC0xNzgsNiArMTgwLDkgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2F1ZGlvU291cmNl
UHJvdmlkZXIgPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlzKTsK
KyNlbGlmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisgICAgaWYgKCFtX2F1ZGlv
U291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IEF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZSgqdGhpcyk7CiAjZW5kaWYKICAgICByZXR1cm4g
bV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZXIuY3BwCmluZGV4IDhkZjc1OGExMDlmZWU2NWU4MjM5OTNlYTg0MjQx
OGI0YjMyMThhNjguLjNjOTcyYjhhMWExNTkyZGUzZTc0Njk1MWM4ZmYyY2RhMzliZGEzZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgR1N0cmVhbWVyQXVkaW9DYXB0dXJlcjo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlcihH
U3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmljZSkKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJl
cjo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlcigpCi0gICAgOiBHU3RyZWFtZXJDYXB0dXJlcigiYXVk
aW90ZXN0c3JjIiwgYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3Iiwg
InJhdGUiLCBHX1RZUEVfSU5ULCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgbnVs
bHB0cikpKQorICAgIDogR1N0cmVhbWVyQ2FwdHVyZXIoImFwcHNyYyIsIGFkb3B0R1JlZihnc3Rf
Y2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIG51bGxwdHIpKSkKIHsKIH0KIApAQCAtNDQsOSAr
NDQsNiBAQCBHc3RFbGVtZW50KiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2Uo
KQogewogICAgIEdzdEVsZW1lbnQqIHNvdXJjZSA9IEdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVT
b3VyY2UoKTsKIAotICAgIGlmICghbV9kZXZpY2UpCi0gICAgICAgIGdzdF91dGlsX3NldF9vYmpl
Y3RfYXJnKEdfT0JKRUNUKG1fc3JjLmdldCgpKSwgIndhdmUiLCAidGlja3MiKTsKLQogICAgIHJl
dHVybiBzb3VyY2U7CiB9CiAKQEAgLTYyLDE0ICs1OSwxNSBAQCBHc3RFbGVtZW50KiBHU3RyZWFt
ZXJBdWRpb0NhcHR1cmVyOjpjcmVhdGVDb252ZXJ0ZXIoKQogYm9vbCBHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVyOjpzZXRTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQogewogCi0gICAgaWYgKHNhbXBs
ZVJhdGUgPiAwKSB7Ci0gICAgICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAi
U2V0dGluZyBTYW1wbGVSYXRlICVkIiwgc2FtcGxlUmF0ZSk7Ci0gICAgICAgIG1fY2FwcyA9IGFk
b3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBF
X0lOVCwgc2FtcGxlUmF0ZSwgbnVsbHB0cikpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKHNhbXBs
ZVJhdGUgPD0gMCkgewogICAgICAgICBHU1RfSU5GT19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwg
Ik5vdCBmb3JjaW5nIHNhbXBsZSByYXRlIik7Ci0gICAgICAgIG1fY2FwcyA9IGFkb3B0R1JlZihn
c3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKCJhdWRpby94LXJhdyIpKTsKKworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgR1NUX0lORk9fT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCks
ICJTZXR0aW5nIFNhbXBsZVJhdGUgJWQiLCBzYW1wbGVSYXRlKTsKKyAgICBtX2NhcHMgPSBhZG9w
dEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9J
TlQsIHNhbXBsZVJhdGUsIG51bGxwdHIpKTsKKwogICAgIGlmICghbV9jYXBzZmlsdGVyLmdldCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCmluZGV4IDg2MWFkZWYwMTA4MjExZDBjNDNi
NGJhMjU3NjJiYzYwMDhmNjIwYjEuLjY0ZmNlZDQwMDMzM2Q2YjUyOTRjN2M2ZGI5ZGM4NTcwZGYy
YzNjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpZ25l
ZEludGVnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9fSU5GT19JU19JTlRFR0VS
KCZtX2luZm8pOyB9CiAgICAgYm9vbCBpc05hdGl2ZUVuZGlhbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEdTVF9BVURJT19JTkZPX0VORElBTk5FU1MoJm1faW5mbykgPT0gR19CWVRFX09SREVSOyB9
CiAgICAgYm9vbCBpc0Zsb2F0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FVRElPX0lORk9f
SVNfRkxPQVQoJm1faW5mbyk7IH0KKyAgICBpbnQgYnl0ZXNQZXJGcmFtZSgpIHsgcmV0dXJuIEdT
VF9BVURJT19JTkZPX0JQRigmbV9pbmZvKTsgIH0KIAogICAgIHVpbnQzMl90IG51bWJlck9mSW50
ZXJsZWF2ZWRDaGFubmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzSW50ZXJsZWF2ZWQoKSA/
IEdTVF9BVURJT19JTkZPX0NIQU5ORUxTKCZtX2luZm8pIDogVFJVRTsgfQogICAgIHVpbnQzMl90
IG51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9f
SU5GT19DSEFOTkVMUygmbV9pbmZvKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggMjUxM2NhOTRiZTljN2UwMDBjNDY2MDhjYTEx
MGRjYWUxMzc4YWMyZi4uOTI3ZDk4NmMyMDViYjNmMGNiMjFkOWZmY2ViMDBjMzAyODZhMWU4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2b2lkIHdlYmtp
dE1lZGlhU3RyZWFtU3JjUHVzaFZpZGVvU2FtcGxlKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxm
LCBHc3RTYW1wbGUqIGdzdHNhbXBsZSk7CiBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNy
Y1B1c2hBdWRpb1NhbXBsZShXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgR3N0U2FtcGxlKiBn
c3RzYW1wbGUpOwogc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNUcmFja0VuZGVkKFdl
YktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwotc3Rh
dGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXZWJLaXRNZWRpYVN0cmVhbVNy
Yyogc2VsZiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKTsKIHN0YXRpYyB2b2lkIHdlYmtpdE1l
ZGlhU3RyZWFtU3JjUmVtb3ZlVHJhY2tCeVR5cGUoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHJhY2tUeXBlKTsKIAogc3RhdGljIEdzdFN0YXRp
Y1BhZFRlbXBsYXRlIHZpZGVvU3JjVGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgi
dmlkZW9fc3JjIiwKQEAgLTE1Niw3ICsxNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEFk
ZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykgZmluYWwKICAgICB7Ci0gICAg
ICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2sobV9tZWRpYVN0cmVhbVNyYy5nZXQoKSwg
JnRyYWNrKTsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhtX21lZGlhU3Ry
ZWFtU3JjLmdldCgpLCAmdHJhY2ssIGZhbHNlKTsKICAgICB9CiAKICAgICB2b2lkIGRpZFJlbW92
ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykgZmluYWwKQEAgLTE4Miw4ICsx
ODEsOCBAQCBzdHJ1Y3QgX1dlYktpdE1lZGlhU3RyZWFtU3JjIHsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPiBtZWRpYVN0cmVhbVRyYWNrT2JzZXJ2
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+IG1lZGlh
U3RyZWFtT2JzZXJ2ZXI7CiAgICAgdm9sYXRpbGUgZ2ludCBucGFkczsKLSAgICBndWxvbmcgcHJv
YmVpZDsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBzdHJlYW07CisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiB0cmFjazsKIAogICAgIEdzdEZsb3dDb21iaW5lciog
Zmxvd0NvbWJpbmVyOwogICAgIEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbj4gc3RyZWFtQ29s
bGVjdGlvbjsKQEAgLTMxNCw4ICszMTMsMTEgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJu
IHdlYmtpdE1lZGlhU3RyZWFtU3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwKICAg
ICBpZiAodHJhbnNpdGlvbiA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWSkgewog
CiAgICAgICAgIEdTVF9PQkpFQ1RfTE9DSyhzZWxmKTsKLSAgICAgICAgZm9yIChhdXRvJiB0cmFj
ayA6IHNlbGYtPnN0cmVhbS0+dHJhY2tzKCkpCi0gICAgICAgICAgICB0cmFjay0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlci5nZXQoKSk7CisgICAgICAgIGlm
IChzZWxmLT5zdHJlYW0pIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzZWxmLT5z
dHJlYW0tPnRyYWNrcygpKQorICAgICAgICAgICAgICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcigq
c2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyLmdldCgpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChzZWxmLT50cmFjaykKKyAgICAgICAgICAgIHNlbGYtPnRyYWNrLT5yZW1vdmVPYnNlcnZlcigq
c2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyLmdldCgpKTsKICAgICAgICAgR1NUX09CSkVD
VF9VTkxPQ0soc2VsZik7CiAgICAgfQogCkBAIC00MzUsMjIgKzQzNywyNiBAQCBzdGF0aWMgR3N0
UGFkUHJvYmVSZXR1cm4gd2Via2l0TWVkaWFTdHJlYW1TcmNQYWRQcm9iZUNiKEdzdFBhZCogcGFk
LCBHc3RQYWRQcm9iZQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFTdHJlYW1TcmNTZXR1
cFNyYyhXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogdHJhY2ssIEdzdEVsZW1lbnQqIGVsZW1lbnQsCi0gICAgR3N0U3RhdGljUGFkVGVtcGxh
dGUqIHBhZF90ZW1wbGF0ZSwgZ2Jvb2xlYW4gb2JzZXJ2ZV90cmFjaykKKyAgICBHc3RTdGF0aWNQ
YWRUZW1wbGF0ZSogcGFkX3RlbXBsYXRlLCBnYm9vbGVhbiBvYnNlcnZlX3RyYWNrLAorICAgIGJv
b2wgb25seVRyYWNrKQogewogICAgIGF1dG8gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKGVsZW1lbnQsICJzcmMiKSk7CiAKICAgICBnc3RfYmluX2FkZChHU1RfQklO
KHNlbGYpLCBlbGVtZW50KTsKIAotICAgIFByb2JlRGF0YSogZGF0YSA9IG5ldyBQcm9iZURhdGE7
Ci0gICAgZGF0YS0+c2VsZiA9IFdFQktJVF9NRURJQV9TVFJFQU1fU1JDKHNlbGYpOwotICAgIGRh
dGEtPnBhZF90ZW1wbGF0ZSA9IHBhZF90ZW1wbGF0ZTsKLSAgICBkYXRhLT50cmFjayA9IHRyYWNr
OwotCi0gICAgc2VsZi0+cHJvYmVpZCA9IGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgKEdz
dFBhZFByb2JlVHlwZSlHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwKLSAgICAg
ICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spd2Via2l0TWVkaWFTdHJlYW1TcmNQYWRQcm9iZUNiLCBk
YXRhLAotICAgICAgICBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgICAgICBkZWxldGUgKFBy
b2JlRGF0YSopZGF0YTsKLSAgICAgICAgfSk7CisgICAgaWYgKCFvbmx5VHJhY2spIHsKKyAgICAg
ICAgUHJvYmVEYXRhKiBkYXRhID0gbmV3IFByb2JlRGF0YTsKKyAgICAgICAgZGF0YS0+c2VsZiA9
IFdFQktJVF9NRURJQV9TVFJFQU1fU1JDKHNlbGYpOworICAgICAgICBkYXRhLT5wYWRfdGVtcGxh
dGUgPSBwYWRfdGVtcGxhdGU7CisgICAgICAgIGRhdGEtPnRyYWNrID0gdHJhY2s7CisKKyAgICAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUocGFkLmdldCgpLCAoR3N0UGFkUHJvYmVUeXBlKUdTVF9QQURf
UFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAorICAgICAgICAgICAgKEdzdFBhZFByb2JlQ2Fs
bGJhY2spd2Via2l0TWVkaWFTdHJlYW1TcmNQYWRQcm9iZUNiLCBkYXRhLAorICAgICAgICAgICAg
W10oZ3BvaW50ZXIgZGF0YSkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSAoUHJvYmVEYXRhKilk
YXRhOworICAgICAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHdlYmtpdE1lZGlhU3Ry
ZWFtU3JjQWRkUGFkKHNlbGYsIHBhZC5nZXQoKSwgcGFkX3RlbXBsYXRlKTsKIAogICAgIGlmIChv
YnNlcnZlX3RyYWNrKQogICAgICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIoKnNlbGYtPm1lZGlhU3Ry
ZWFtVHJhY2tPYnNlcnZlci5nZXQoKSk7CkBAIC00NjEsMTIgKzQ2NywxMiBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0TWVkaWFTdHJlYW1TcmNTZXR1cFNyYyhXZWJLaXRNZWRpYVN0cmVhbVNyYyog
c2VsZiwKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBBcHBTcmMo
V2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsCiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUq
IHRyYWNrLCBHc3RFbGVtZW50KiogZWxlbWVudCwKLSAgICBHc3RTdGF0aWNQYWRUZW1wbGF0ZSog
cGFkX3RlbXBsYXRlKQorICAgIEdzdFN0YXRpY1BhZFRlbXBsYXRlKiBwYWRfdGVtcGxhdGUsIGJv
b2wgb25seVRyYWNrKQogewogICAgICplbGVtZW50ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJhcHBzcmMiLCBudWxscHRyKTsKICAgICBnX29iamVjdF9zZXQoKmVsZW1lbnQsICJpcy1saXZl
IiwgdHJ1ZSwgImZvcm1hdCIsIEdTVF9GT1JNQVRfVElNRSwgbnVsbHB0cik7CiAKLSAgICByZXR1
cm4gd2Via2l0TWVkaWFTdHJlYW1TcmNTZXR1cFNyYyhzZWxmLCB0cmFjaywgKmVsZW1lbnQsIHBh
ZF90ZW1wbGF0ZSwgVFJVRSk7CisgICAgcmV0dXJuIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBT
cmMoc2VsZiwgdHJhY2ssICplbGVtZW50LCBwYWRfdGVtcGxhdGUsIFRSVUUsIG9ubHlUcmFjayk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9zdFN0cmVhbUNvbGxlY3Rp
b24oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1lZGlhU3RyZWFtUHJpdmF0ZSogc3RyZWFt
KQpAQCAtNDg0LDE0ICs0OTAsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNQ
b3N0U3RyZWFtQ29sbGVjdGlvbihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwKICAgICAgICAg
Z3N0X21lc3NhZ2VfbmV3X3N0cmVhbV9jb2xsZWN0aW9uKEdTVF9PQkpFQ1Qoc2VsZiksIHNlbGYt
PnN0cmVhbUNvbGxlY3Rpb24uZ2V0KCkpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0TWVkaWFT
dHJlYW1TcmNBZGRUcmFjayhXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUqIHRyYWNrKQorYm9vbCB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKFdl
YktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdHJhY2ss
IGJvb2wgb25seVRyYWNrKQogeworICAgIGJvb2wgcmVzID0gZmFsc2U7CiAgICAgaWYgKHRyYWNr
LT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8pCi0gICAgICAgIHdl
YmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBBcHBTcmMoc2VsZiwgdHJhY2ssICZzZWxmLT5hdWRpb1Ny
YywgJmF1ZGlvU3JjVGVtcGxhdGUpOworICAgICAgICByZXMgPSB3ZWJraXRNZWRpYVN0cmVhbVNy
Y1NldHVwQXBwU3JjKHNlbGYsIHRyYWNrLCAmc2VsZi0+YXVkaW9TcmMsICZhdWRpb1NyY1RlbXBs
YXRlLCBvbmx5VHJhY2spOwogICAgIGVsc2UgaWYgKHRyYWNrLT50eXBlKCkgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pCi0gICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0
dXBBcHBTcmMoc2VsZiwgdHJhY2ssICZzZWxmLT52aWRlb1NyYywgJnZpZGVvU3JjVGVtcGxhdGUp
OworICAgICAgICByZXMgPSB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldHVwQXBwU3JjKHNlbGYsIHRy
YWNrLCAmc2VsZi0+dmlkZW9TcmMsICZ2aWRlb1NyY1RlbXBsYXRlLCBvbmx5VHJhY2spOwogICAg
IGVsc2UKICAgICAgICAgR1NUX0lORk8oIlVuc3VwcG9ydGVkIHRyYWNrIHR5cGU6ICVkIiwgc3Rh
dGljX2Nhc3Q8aW50Pih0cmFjay0+dHlwZSgpKSk7CisKKyAgICBpZiAob25seVRyYWNrICYmIHJl
cykKKyAgICAgICAgc2VsZi0+dHJhY2sgPSB0cmFjazsKKworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNSZW1vdmVUcmFja0J5VHlwZShXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0cmFja1R5
cGUpCkBAIC01MjQsNyArNTM2LDcgQEAgYm9vbCB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVh
bShXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJlYW1Qcml2YXQKICAgICBzZWxm
LT5zdHJlYW0gPSBzdHJlYW07CiAgICAgc2VsZi0+c3RyZWFtLT5hZGRPYnNlcnZlcigqc2VsZi0+
bWVkaWFTdHJlYW1PYnNlcnZlci5nZXQoKSk7CiAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVh
bS0+dHJhY2tzKCkpCi0gICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soc2VsZiwg
dHJhY2suZ2V0KCkpOworICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKHNlbGYs
IHRyYWNrLmdldCgpLCBmYWxzZSk7CiAKICAgICByZXR1cm4gVFJVRTsKIH0KQEAgLTU5Myw2ICs2
MDUsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNUcmFja0VuZGVkKFdlYktp
dE1lZGlhU3RyZWFtU3JjKiBzZWxmLAogICAgIGdzdF9wYWRfcHVzaF9ldmVudChwYWQuZ2V0KCks
IGdzdF9ldmVudF9uZXdfZW9zKCkpOwogfQogCitHc3RFbGVtZW50KiB3ZWJraXRNZWRpYVN0cmVh
bVNyY05ldyh2b2lkKQoreworICAgIHJldHVybiBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcod2Vi
a2l0X21lZGlhX3N0cmVhbV9zcmNfZ2V0X3R5cGUoKSwgbnVsbHB0cikpOworfQorCiB9IC8vIFdl
YkNvcmUKICNlbmRpZiAvLyBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxMCwgMCkKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDE1
OTliYWU3ODYyNzE0YTdiYjlkMzQyY2U0YTMyMDgwMjY0MzQ2MzIuLmMzM2JkMDI4NWI2MTExOTQx
NTQwZWVhMWY0N2U1ZjljODllMTQwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJNZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC00MSw2ICs0MSw4IEBAIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRNZWRpYVN0cmVhbVNyYyBXZWJLaXRNZWRpYVN0cmVhbVNyYzsKICNkZWZpbmUgV0VCS0lU
X1RZUEVfTUVESUFfU1RSRUFNX1NSQyAod2Via2l0X21lZGlhX3N0cmVhbV9zcmNfZ2V0X3R5cGUo
KSkKIEdUeXBlIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2dldF90eXBlKHZvaWQpIEdfR05VQ19D
T05TVDsKIGJvb2wgd2Via2l0TWVkaWFTdHJlYW1TcmNTZXRTdHJlYW0oV2ViS2l0TWVkaWFTdHJl
YW1TcmMqLCBNZWRpYVN0cmVhbVByaXZhdGUqKTsKK2Jvb2wgd2Via2l0TWVkaWFTdHJlYW1TcmNB
ZGRUcmFjayhXZWJLaXRNZWRpYVN0cmVhbVNyYyosIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiwg
Ym9vbCBvbmx5VHJhY2spOworR3N0RWxlbWVudCAqIHdlYmtpdE1lZGlhU3RyZWFtU3JjTmV3KHZv
aWQpOwogfSAvLyBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZmQ1MmViZjQ5NmU3
YjFlNjk3Njk2Yjg1ZGFhYzYxNTc2YTA2MWFkZi4uMDQ4OTlhZGU0YjM3ZDM4YWExY2RjZmExOTU5
Nzg2OGFmMTg3OGI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMjQsMTYgKzI0LDExMCBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCiAjaW5j
bHVkZSAiTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oIgogCisjaW5jbHVkZSAiR1N0
cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmgiCiAKKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgVGF1ID0gMiAqIE1fUEk7CitzdGF0
aWMgY29uc3QgZG91YmxlIEJpcEJvcER1cmF0aW9uID0gMC4wNzsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgQmlwQm9wVm9sdW1lID0gMC41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBCaXBGcmVxdWVuY3kg
PSAxNTAwOworc3RhdGljIGNvbnN0IGRvdWJsZSBCb3BGcmVxdWVuY3kgPSA1MDA7CitzdGF0aWMg
Y29uc3QgZG91YmxlIEh1bUZyZXF1ZW5jeSA9IDE1MDsKK3N0YXRpYyBjb25zdCBkb3VibGUgSHVt
Vm9sdW1lID0gMC4xOworCiBjbGFzcyBXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgOiBw
dWJsaWMgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgewogcHVibGljOgogICAgIFdyYXBwZWRNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgaGFzaFNhbHQpCiAgICAgICAgIDogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoV1RGTW92
ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQorICAgICAgICAs
IG1fc3JjKG51bGxwdHIpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc3RhcnQoR1JlZlB0cjxH
c3RFbGVtZW50PiBzcmMpCisgICAgeworICAgICAgICBtX3NyYyA9IHNyYzsKKyAgICAgICAgaWYg
KG1fc3RyZWFtRm9ybWF0KQorICAgICAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X2NhcHMoR1NUX0FQ
UF9TUkMobV9zcmMuZ2V0KCkpLCBtX3N0cmVhbUZvcm1hdC0+Y2FwcygpKTsKKyAgICAgICAgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0KCk7CisgICAgfQorCisgICAgdm9pZCBhZGRIdW0o
ZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBmcmVxdWVuY3ksIGZsb2F0IHNhbXBsZVJhdGUsIHVpbnQ2
NF90IHN0YXJ0LCBmbG9hdCAqcCwgdWludDY0X3QgY291bnQpCisgICAgeworICAgICAgICBmbG9h
dCBodW1QZXJpb2QgPSBzYW1wbGVSYXRlIC8gZnJlcXVlbmN5OworICAgICAgICBmb3IgKHVpbnQ2
NF90IGkgPSBzdGFydCwgZW5kID0gc3RhcnQgKyBjb3VudDsgaSA8IGVuZDsgKytpKSB7CisgICAg
ICAgICAgICBmbG9hdCBhID0gYW1wbGl0dWRlICogc2luKGkgKiBUYXUgLyBodW1QZXJpb2QpOwor
ICAgICAgICAgICAgYSArPSAqcDsKKyAgICAgICAgICAgICpwKysgPSBhOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCByZW5kZXIoU2Vjb25kcyBkZWx0YSkKICAgICB7CisgICAgICAgIEFT
U0VSVChtX3NyYyk7CisKKyAgICAgICAgdWludDMyX3QgdG90YWxGcmFtZUNvdW50ID0gR1NUX1JP
VU5EX1VQXzE2KHN0YXRpY19jYXN0PHNpemVfdD4oZGVsdGEuc2Vjb25kcygpICogc2FtcGxlUmF0
ZSgpKSk7CisgICAgICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1l
Q291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICAgICAgd2hpbGUgKGZyYW1lQ291bnQp
IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGJpcEJvcFN0YXJ0ID0gbV9zYW1wbGVzUmVuZGVyZWQg
JSBtX2JpcEJvcEJ1ZmZlci5zaXplKCk7CisgICAgICAgICAgICB1aW50MzJfdCBiaXBCb3BSZW1h
aW4gPSBtX2JpcEJvcEJ1ZmZlci5zaXplKCkgLSBiaXBCb3BTdGFydDsKKyAgICAgICAgICAgIHVp
bnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4oZnJhbWVDb3VudCwgYmlwQm9wUmVtYWluKTsK
KworICAgICAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0
ZShudWxscHRyLCBiaXBCb3BDb3VudCAqIG1fc3RyZWFtRm9ybWF0LT5ieXRlc1BlckZyYW1lKCks
IG51bGxwdHIpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdzdE1hcHBlZEJ1ZmZl
ciBtYXAoYnVmZmVyLCBHU1RfTUFQX1dSSVRFKTsKKworICAgICAgICAgICAgICAgIGlmICghbXV0
ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkobWFwLmRhdGEoKSwgJm1fYmlwQm9w
QnVmZmVyW2JpcEJvcFN0YXJ0XSwgc2l6ZW9mKGZsb2F0KSAqIGJpcEJvcENvdW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkSHVtKEh1bVZvbHVtZSwgSHVtRnJlcXVlbmN5LCBzYW1wbGVSYXRl
KCksIG1fc2FtcGxlc1JlbmRlcmVkLCAoZmxvYXQqKW1hcC5kYXRhKCksIGJpcEJvcENvdW50KTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KG1hcC5k
YXRhKCksIDAsIHNpemVvZihmbG9hdCkgKiBiaXBCb3BDb3VudCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKEdTVF9BUFBfU1JDKG1fc3JjLmdl
dCgpKSwgYnVmZmVyKTsKKyAgICAgICAgICAgIG1fc2FtcGxlc1JlbmRlcmVkICs9IGJpcEJvcENv
dW50OworICAgICAgICAgICAgdG90YWxGcmFtZUNvdW50IC09IGJpcEJvcENvdW50OworICAgICAg
ICAgICAgZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZy
YW1lQ291bnQpOworICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5n
ZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykK
KyAgICB7CisgICAgICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAgICAgICBHc3RBdWRpb0luZm8g
aW5mbzsKKyAgICAgICAgICAgIGF1dG8gcmF0ZSA9IHNhbXBsZVJhdGUoKTsKKyAgICAgICAgICAg
IHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiByYXRlOworCisgICAgICAgICAgICBtX21heGltaXVt
RnJhbWVDb3VudCA9IFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhyZW5kZXJJbnRlcnZhbCgpLnNl
Y29uZHMoKSAqIHNhbXBsZVJhdGUoKSk7CisgICAgICAgICAgICBnc3RfYXVkaW9faW5mb19zZXRf
Zm9ybWF0KCZpbmZvLCBHU1RfQVVESU9fRk9STUFUX0YzMkxFLCByYXRlLCAxLCBudWxscHRyKTsK
KyAgICAgICAgICAgIG1fc3RyZWFtRm9ybWF0ID0gR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbihpbmZvKTsKKworICAgICAgICAgICAgaWYgKG1fc3JjKQorICAgICAgICAgICAgICAgIGdz
dF9hcHBfc3JjX3NldF9jYXBzKEdTVF9BUFBfU1JDKG1fc3JjLmdldCgpKSwgbV9zdHJlYW1Gb3Jt
YXQtPmNhcHMoKSk7CisKKyAgICAgICAgICAgIG1fYmlwQm9wQnVmZmVyLmdyb3coc2FtcGxlQ291
bnQpOworICAgICAgICAgICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsKKworICAgICAgICAgICAg
c2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChCaXBCb3BEdXJhdGlvbiAqIHJhdGUpOwor
ICAgICAgICAgICAgc2l6ZV90IGJpcFN0YXJ0ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBib3BT
dGFydCA9IHJhdGU7CisKKyAgICAgICAgICAgIGFkZEh1bShCaXBCb3BWb2x1bWUsIEJpcEZyZXF1
ZW5jeSwgcmF0ZSwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQqPihtX2JpcEJvcEJ1ZmZlci5kYXRhKCkg
KyBiaXBTdGFydCksIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICAgICAgICAgIGFkZEh1bShCaXBC
b3BWb2x1bWUsIEJvcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQqPihtX2Jp
cEJvcEJ1ZmZlci5kYXRhKCkgKyBib3BTdGFydCksIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5n
ZShzZXR0aW5ncyk7CisgICAgfQorCisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fc3RyZWFt
Rm9ybWF0OworICAgIFZlY3RvcjxmbG9hdD4gbV9iaXBCb3BCdWZmZXI7CisgICAgdWludDMyX3Qg
bV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDY0X3QgbV9zYW1wbGVzRW1pdHRlZCB7IDAg
fTsKKyAgICB1aW50NjRfdCBtX3NhbXBsZXNSZW5kZXJlZCB7IDAgfTsKIH07CiAKIENhcHR1cmVT
b3VyY2VPckVycm9yIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2
aWNlSUQsCkBAIC04MCw3ICsxNzQsNyBAQCB2b2lkIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHZvaWQgTW9ja0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKICAgICBHU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgIG1fd3JhcHBlZFNvdXJjZS0+c3Rh
cnQoKTsKKyAgICBzdGF0aWNfY2FzdDxXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UqPiht
X3dyYXBwZWRTb3VyY2UuZ2V0KCkpLT5zdGFydChjYXB0dXJlcigpLT5zb3VyY2UoKSk7CiB9CiAK
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTW9ja0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6c2V0dGluZ3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldl
YlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA1MzRhZjc3MDEw
MzcyMTEyNzNmOTgzZTAwZjRkNGIwMjFhZGMxNjFkLi41ZTdmOTc3YTk2YjIxNzlkYjYxOGZlODAw
YjJkNTYzNWRiOWQ2YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcApAQCAtMTA4LDMzICsxMDgsMjYg
QEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1bGxBdWRpb0Rh
dGEoKQogICAgIHNpemVfdCBpbkNodW5rU2FtcGxlQ291bnQgPSBnc3RfYXVkaW9fY29udmVydGVy
X2dldF9pbl9mcmFtZXMobV9zYW1wbGVDb252ZXJ0ZXIuZ2V0KCksIG91dENodW5rU2FtcGxlQ291
bnQpOwogICAgIHNpemVfdCBpbkJ1ZmZlclNpemUgPSBpbkNodW5rU2FtcGxlQ291bnQgKiBtX2lu
cHV0U3RyZWFtRGVzY3JpcHRpb24tPmdldEluZm8oKS0+YnBmOwogCi0gICAgYXV0byBhdmFpbGFi
bGUgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUobV9hZGFwdGVyLmdldCgpKTsKLSAgICBpZiAoaW5C
dWZmZXJTaXplID4gYXZhaWxhYmxlKSB7Ci0gICAgICAgIEdTVF9ERUJVRygiTm90IGVub3VnaCBk
YXRhOiB3YW50ZWQ6ICVsZCA+ICVsZCBhdmFpbGFibGUiLAotICAgICAgICAgICAgaW5CdWZmZXJT
aXplLCBhdmFpbGFibGUpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGlu
QnVmZmVyID0gYWRvcHRHUmVmKGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyKG1fYWRhcHRlci5nZXQo
KSwgaW5CdWZmZXJTaXplKSk7Ci0gICAgYXV0byBvdXRCdWZmZXIgPSBhZG9wdEdSZWYoZ3N0X2J1
ZmZlcl9uZXdfYWxsb2NhdGUobnVsbHB0ciwgb3V0QnVmZmVyU2l6ZSwgMCkpOwotICAgIEdzdE1h
cHBlZEJ1ZmZlciBvdXRNYXAob3V0QnVmZmVyLmdldCgpLCBHU1RfTUFQX1dSSVRFKTsKLSAgICBp
ZiAoaXNTaWxlbmNlZCgpKQotICAgICAgICBnc3RfYXVkaW9fZm9ybWF0X2ZpbGxfc2lsZW5jZSht
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLT5nZXRJbmZvKCktPmZpbmZvLCBvdXRNYXAuZGF0YSgp
LCBvdXRNYXAuc2l6ZSgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgR3N0TWFwcGVkQnVmZmVyIGlu
TWFwKGluQnVmZmVyLmdldCgpLCBHU1RfTUFQX1JFQUQpOwotCi0gICAgICAgIGdwb2ludGVyIGlu
WzFdID0geyBpbk1hcC5kYXRhKCkgfTsKLSAgICAgICAgZ3BvaW50ZXIgb3V0WzFdID0geyBvdXRN
YXAuZGF0YSgpIH07Ci0gICAgICAgIGlmICghZ3N0X2F1ZGlvX2NvbnZlcnRlcl9zYW1wbGVzKG1f
c2FtcGxlQ29udmVydGVyLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RBdWRpb0NvbnZlcnRlckZsYWdz
PigwKSwgaW4sIGluQ2h1bmtTYW1wbGVDb3VudCwgb3V0LCBvdXRDaHVua1NhbXBsZUNvdW50KSkg
ewotICAgICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY29udmVydCBzYW1wbGVzLiIpOwot
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgd2hpbGUgKGdzdF9hZGFwdGVyX2F2YWlsYWJsZSht
X2FkYXB0ZXIuZ2V0KCkpID4gaW5CdWZmZXJTaXplKSB7CisgICAgICAgIGF1dG8gaW5CdWZmZXIg
PSBhZG9wdEdSZWYoZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIobV9hZGFwdGVyLmdldCgpLCBpbkJ1
ZmZlclNpemUpKTsKKyAgICAgICAgbV9hdWRpb0J1ZmZlci5ncm93KG91dEJ1ZmZlclNpemUpOwor
ICAgICAgICBpZiAoaXNTaWxlbmNlZCgpKQorICAgICAgICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9m
aWxsX3NpbGVuY2UobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi0+Z2V0SW5mbygpLT5maW5mbywg
bV9hdWRpb0J1ZmZlci5kYXRhKCksIG91dEJ1ZmZlclNpemUpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIEdzdE1hcHBlZEJ1ZmZlciBpbk1hcChpbkJ1ZmZlci5nZXQoKSwgR1NUX01BUF9S
RUFEKTsKKworICAgICAgICAgICAgZ3BvaW50ZXIgaW5bMV0gPSB7IGluTWFwLmRhdGEoKSB9Owor
ICAgICAgICAgICAgZ3BvaW50ZXIgb3V0WzFdID0geyBtX2F1ZGlvQnVmZmVyLmRhdGEoKSB9Owor
ICAgICAgICAgICAgaWYgKCFnc3RfYXVkaW9fY29udmVydGVyX3NhbXBsZXMobV9zYW1wbGVDb252
ZXJ0ZXIuZ2V0KCksIHN0YXRpY19jYXN0PEdzdEF1ZGlvQ29udmVydGVyRmxhZ3M+KDApLCBpbiwg
aW5DaHVua1NhbXBsZUNvdW50LCBvdXQsIG91dENodW5rU2FtcGxlQ291bnQpKSB7CisgICAgICAg
ICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY29udmVydCBzYW1wbGVzLiIpOworCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCi0g
ICAgc2VuZEF1ZGlvRnJhbWVzKG91dE1hcC5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24tPnNh
bXBsZVJhdGUoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGludD4obV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi0+bnVtYmVyT2ZDaGFubmVscygpKSwgb3V0Q2h1bmtTYW1wbGVDb3VudCk7CisgICAg
ICAgIHNlbmRBdWRpb0ZyYW1lcyhtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIHN0YXRpY19jYXN0PGludD4obV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi0+c2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi0+bnVtYmVyT2ZDaGFubmVscygpKSwgb3V0Q2h1bmtTYW1wbGVD
b3VudCk7CisgICAgfQogfQogCiBib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldl
YlJUQzo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMu
aAppbmRleCA0NjA5ZTlkOWJhZDI1ZjZlOTI4NDQyNDFmOGYxNTU1NTY0MDg3ZmMwLi4wOTA0MDVl
MTg0OGZhY2Y4YTg3ZjA4ZjU2NWIxOGI3NDdiZWNiMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlTGliV2ViUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5oCkBAIC01
NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fYWRhcHRlck11dGV4OwogICAgIEdS
ZWZQdHI8R3N0QWRhcHRlcj4gbV9hZGFwdGVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlv
QnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcyNTc1NTNlNzFi
ZmEzYTE0MzZmYTgwYzk4YmU3MmM1OGY4MTBhMzQuLmI1YjhiZTQ5YWI3ZDYzNGQ3YWYzZjA3NzIy
ZTkzZWI5MjA2MTFkOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMi0wNSAgVGhpYmF1
bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBJ
bXBsZW1lbnQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciB0byBhbGxvdyBicmlkZ2lu
ZyBNZWRpYVN0cmVhbSBhbmQgdGhlIFdlYkF1ZGlvIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjkzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZWQgYWxsIHRlc3RzIGRlcGVuZGluZyBv
biB0aGF0IGZlYXR1cmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiB3ZWJydGMvY2xvbmUtYXVkaW8tdHJhY2suaHRtbDoKKwogMjAxOC0xMS0y
OCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0aW5nIGhyZWYgb24gbGluZWFyR3JhZGllbnQgYW5kIHJhZGlhbEdyYWRpZW50IGRvZXNu
J3QgdXBkYXRlIGl0cyByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggNGY2ZTI3ZDI4MjBiNmQ4OWY5N2IwY2E1Y2U5NTY4NGJlYzAyNGIxYi4u
N2ZlYjE3YzJhZWY0Y2Q5NDNhMzMwNDU4MDg3OWUxNzhkYzYyNTQ5NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU4NiwxNiArNTg2LDYgQEAgd2Via2l0
Lm9yZy9iLzE4NzA2NCB3ZWJydGMvbGlid2VicnRjL2Rlc2NyaXB0aW9uR2V0dGVycy5odG1sCiB3
ZWJraXQub3JnL2IvMTc3NTMzIHdlYnJ0Yy92aWRlby1pbnRlcnJ1cHRpb24uaHRtbAogCiB3ZWJr
aXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1E
ZXN0aW5hdGlvbi5odG1sCi13ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rp
b24tcmVtb3RlLWF1ZGlvLW11dGUyLmh0bWwKLXdlYmtpdC5vcmcvYi8xODY5MzMgd2VicnRjL3Bl
ZXItY29ubmVjdGlvbi1hdWRpby11bm11dGUuaHRtbAotd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJy
dGMvcGVlci1jb25uZWN0aW9uLWF1ZGlvLW11dGUyLmh0bWwKLXdlYmtpdC5vcmcvYi8xODY5MzMg
d2VicnRjL3BlZXItY29ubmVjdGlvbi1hdWRpby1tdXRlLmh0bWwKLXdlYmtpdC5vcmcvYi8xODY5
MzMgd2VicnRjL3BlZXItY29ubmVjdGlvbi1yZW1vdGUtYXVkaW8tbXV0ZS5odG1sCi13ZWJraXQu
b3JnL2IvMTg2OTMzIHdlYnJ0Yy9jbG9uZS1hdWRpby10cmFjay5odG1sCi13ZWJraXQub3JnL2Iv
MTg2OTMzIHdlYnJ0Yy9hdWRpby1yZXBsYWNlLXRyYWNrLmh0bWwKLXdlYmtpdC5vcmcvYi8xODY5
MzMgd2VicnRjL2F1ZGlvLXBlZXItY29ubmVjdGlvbi13ZWJhdWRpby5odG1sCi13ZWJraXQub3Jn
L2IvMTg2OTMzIHdlYnJ0Yy9hdWRpby1tdXRlZC1zdGF0cy5odG1sCi13ZWJraXQub3JnL2IvMTg2
OTMzIHdlYnJ0Yy9nZXRVc2VyTWVkaWEtd2ViYXVkaW8tYXV0b3BsYXkuaHRtbAogCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy8gWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2Vi
cnRjIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvY2xvbmUtYXVkaW8t
dHJhY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jbG9uZS1hdWRpby10cmFjay5odG1sCmlu
ZGV4IDY0OWI0NDZlODU4NDI1M2I1MTNhYjcyOTNhMDkwYzE1ZjBkYmY1NDMuLjBmOTM3NDg0OTA4
M2Y0YWRlMDI3NjY1NzRhMTUzYjU4MmQ5MWJiZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dl
YnJ0Yy9jbG9uZS1hdWRpby10cmFjay5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jbG9u
ZS1hdWRpby10cmFjay5odG1sCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gYW5h
bHlzZUF1ZGlvKHJlbW90ZVN0cmVhbSwgMjAwLCBjb250ZXh0KS50aGVuKChyZXN1bHRzKSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShyZXN1bHRzLmhlYXJkSHVtLCAiRGlk
IG5vdCBoZWFyZCBodW0gZnJvbSByZW1vdGUgZW5hYmxlZCB0cmFjayIpOworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZmFsc2UocmVzdWx0cy5oZWFyZEh1bSwgIkRpZCBub3QgaGVhciBodW0g
ZnJvbSByZW1vdGUgZGlzYWJsZWQgdHJhY2siKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiBhbmFseXNlQXVk
aW8obmV3IE1lZGlhU3RyZWFtKFtjbG9uZWRUcmFja10pLCAyMDAsIGNvbnRleHQpLnRoZW4oKHJl
c3VsdHMpID0+IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356735</attachid>
            <date>2018-12-06 09:36:14 -0800</date>
            <delta_ts>2018-12-07 02:49:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186933-20181206143613.patch</filename>
            <type>text/plain</type>
            <size>32302</size>
            <attacher name="Thibault Saunier">tsaunier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYyYjMzNzk4MWVmYmI4
NTg4OWZmNjdmYzFiZGI1NjUxNmFmMjY1OC4uNjc3NGZjMDQ3NTRkYzc3NWRhYjY0OTYxYzI2NmYx
NDA5ZjQ1NDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTEyLTA1ICBUaGli
YXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtd
IEltcGxlbWVudCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIHRvIGFsbG93IGJyaWRn
aW5nIE1lZGlhU3RyZWFtIGFuZCB0aGUgV2ViQXVkaW8gQVBJcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTMzCisKKyAgICAgICAgUmV1c2luZyB0
aGUgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciBpdHNlbGYgYXMgaXQgd2FzIGRvaW5nIGFs
bW9zdCBldmVyeXRoaW5nIHdlIG5lZWRlZCwKKyAgICAgICAganVzdCBhZGRlZCBhIGNvbnN0cnVj
dG9yIHRvIGJlIGFibGUgdG8gY3JlYXRlIGl0IGZyb20gYSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSBhbmQgbWFkZSBpdCBhCisgICAgICAgIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIgd2hpY2ggb25s
eSBtZWFucyBpdCBpcyBub3cgYSBUaHJlYWRTYWZlUmVmQ291bnRlZC4KKworICAgICAgICBTZW5z
aWJpbHkgcmVmYWN0b3JlZCBHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZSBzbyB0aGF0IHdlIGNv
dWxkIHJldXNlIGl0IHRvIHRyYWNrIGEgc2luZ2xlCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2su
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxl
ZCBhbGwgdGVzdHMgZGVwZW5kaW5nIG9uIHRoYXQgZmVhdHVyZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6c2V0Q2xpZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphdWRpb1Nv
dXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb0NhcHR1cmVyOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNy
Y1NldHVwU3JjKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBB
cHBTcmMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNyY1NldFN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjp3ZWJraXRNZWRpYVN0cmVhbVNyY05ldyk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlZE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6V3JhcHBlZE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmFkZEh1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnJlbmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnNldHRpbmdz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OnB1
bGxBdWRpb0RhdGEpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaW5wdXQgYnVmZmVycworICAgICAg
ICAgIGFyZSAiYmlnIiBhbmQgcHJvY2VzcyBhbGwgdGhlIGRhdGEgd2UgY2FuIGZvciBlYWNoIHJ1
bnMgb2YgdGhlIG1ldGhvZC4KKwogMjAxOC0xMS0yOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHN1cGVyZmx1b3VzIGNvZGUgaW4gQ29udGVudFNl
Y3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCBkNGEwY2EyYmY4YTZlNmJl
NTAyYWViMjc3YWRlZTJhOGE2YzM1OTkzLi5lNzExMWYzYzAyM2FlNjE1ZjAxOTUzMDI5NzkxMTZj
MzU3N2I2NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwCkBAIC0yNyw2ICsyNywxMCBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+
CiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKExJQldFQlJUQykKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb0RhdGEuaCIK
KyNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtOTQsNiArOTgsMzEgQEAgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAgICAgbV9mcm9udFJpZ2h0
QWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldygpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKExJQldFQlJUQykKK0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OkF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSkK
KyAgICA6IG1fbm90aWZpZXIoTWFpblRocmVhZE5vdGlmaWVyPE1haW5UaHJlYWROb3RpZmljYXRp
b24+OjpjcmVhdGUoKSkKKyAgICAsIG1fY2xpZW50KG51bGxwdHIpCisgICAgLCBtX2RlaW50ZXJs
ZWF2ZVNvdXJjZVBhZHMoMCkKKyAgICAsIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRIYW5kbGVySWQo
MCkKKyAgICAsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZCgwKQorICAgICwgbV9k
ZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkKDApCit7CisgICAgbV9mcm9udExlZnRBZGFw
dGVyID0gZ3N0X2FkYXB0ZXJfbmV3KCk7CisgICAgbV9mcm9udFJpZ2h0QWRhcHRlciA9IGdzdF9h
ZGFwdGVyX25ldygpOworICAgIGF1dG8gcGlwZWxpbmVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIldl
YkF1ZGlvUHJvdmlkZXJfTWVkaWFTdHJlYW1UcmFja18lcyIsIHNvdXJjZS5pZCgpLnV0ZjgoKS5k
YXRhKCkpOworICAgIG1fcGlwZWxpbmUgPSBhZG9wdEdSZWYoR1NUX0VMRU1FTlQoZ19vYmplY3Rf
cmVmX3NpbmsoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJwaXBlbGluZSIsIHBpcGVsaW5lTmFt
ZS51dGY4KCkuZGF0YSgpKSkpKTsKKyAgICBhdXRvIHNyYyA9IHdlYmtpdE1lZGlhU3RyZWFtU3Jj
TmV3KCk7CisgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXRUJLSVRfTUVESUFfU1RS
RUFNX1NSQyhzcmMpLCAmc291cmNlLCB0cnVlKTsKKworICAgIG1fYXVkaW9TaW5rQmluID0gYWRv
cHRHUmVmKEdTVF9FTEVNRU5UKGdfb2JqZWN0X3JlZl9zaW5rKGdzdF9wYXJzZV9iaW5fZnJvbV9k
ZXNjcmlwdGlvbigidGVlIG5hbWU9YXVkaW9UZWUiLCB0cnVlLCBudWxscHRyKSkpKTsKKworICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lLmdldCgpKSwgc3JjLCBtX2F1ZGlv
U2lua0Jpbi5nZXQoKSwgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayhzcmMsIG1fYXVk
aW9TaW5rQmluLmdldCgpKTsKKworICAgIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2so
bV9waXBlbGluZS5nZXQoKSk7Cit9CisjZW5kaWYKKwogQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJl
YW1lcjo6fkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIoKQogewogICAgIG1fbm90aWZpZXIt
PmludmFsaWRhdGUoKTsKQEAgLTEwNSw2ICsxMzQsOSBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyOjp+QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpCiAgICAgICAgIGdfc2lnbmFs
X2hhbmRsZXJfZGlzY29ubmVjdChkZWludGVybGVhdmUuZ2V0KCksIG1fZGVpbnRlcmxlYXZlUGFk
UmVtb3ZlZEhhbmRsZXJJZCk7CiAgICAgfQogCisgICAgaWYgKG1fcGlwZWxpbmUpCisgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7
CisKICAgICBnX29iamVjdF91bnJlZihtX2Zyb250TGVmdEFkYXB0ZXIpOwogICAgIGdfb2JqZWN0
X3VucmVmKG1fZnJvbnRSaWdodEFkYXB0ZXIpOwogfQpAQCAtMjA1LDEyICsyMzcsMTcgQEAgdm9p
ZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpzZXRDbGllbnQoQXVkaW9Tb3VyY2VQcm92
aWRlckNsaWVudCogY2xpZW50KQogICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0g
Y2xpZW50OwogCisgICAgaWYgKG1fcGlwZWxpbmUpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7CisKICAgICAvLyBUaGUg
dm9sdW1lIGVsZW1lbnQgaXMgdXNlZCB0byBtdXRlIGF1ZGlvIHBsYXliYWNrIHRvd2FyZHMgdGhl
CiAgICAgLy8gYXV0b2F1ZGlvc2luay4gVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgZG91YmxlIHBs
YXliYWNrIG9mIGF1ZGlvCiAgICAgLy8gZnJvbSBvdXIgYXVkaW8gc2luayBhbmQgZnJvbSB0aGUg
V2ViQXVkaW8gQXVkaW9EZXN0aW5hdGlvbiBub2RlCiAgICAgLy8gc3VwcG9zZWRseSBjb25maWd1
cmVkIGFscmVhZHkgYnkgYXBwbGljYXRpb24gc2lkZS4KICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IHZvbHVtZUVsZW1lbnQgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKG1f
YXVkaW9TaW5rQmluLmdldCgpKSwgInZvbHVtZSIpKTsKLSAgICBnX29iamVjdF9zZXQodm9sdW1l
RWxlbWVudC5nZXQoKSwgIm11dGUiLCBUUlVFLCBudWxscHRyKTsKKworICAgIGlmICh2b2x1bWVF
bGVtZW50KQorICAgICAgICBnX29iamVjdF9zZXQodm9sdW1lRWxlbWVudC5nZXQoKSwgIm11dGUi
LCBUUlVFLCBudWxscHRyKTsKIAogICAgIC8vIFRoZSBhdWRpb2NvbnZlcnQgYW5kIGF1ZGlvcmVz
YW1wbGUgZWxlbWVudHMgYXJlIG5lZWRlZCB0bwogICAgIC8vIGVuc3VyZSBkZWludGVybGVhdmUg
YW5kIHRoZSBzaW5rcyBkb3duc3RyZWFtIHJlY2VpdmUgYnVmZmVycyBpbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggYWI2MDE5OGM4ODBmZGI5NDQ2M2Jk
NzE5MmRlZGZkNmJlMDczNDlmNy4uOTJkMGE4NmY0NWU3NWQ3ZGNmNTRmODAzZTI4NzljNTIxMWI5
ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCkBAIC0y
OCwxNCArMjgsMzEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKExJQldFQlJU
QykKKyNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyLmgiCisjZW5kaWYKKwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0ZXIgR3N0QWRhcHRl
cjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RBcHBTaW5rIEdzdEFwcFNpbms7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShMSUJXRUJSVEMpCitj
bGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lcj4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyKHNvdXJjZSkpOworICAgIH0KKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisjZWxzZQogY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlckdTdHJlYW1lciA6IHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyKTsKIHB1YmxpYzoKKyNl
bmRpZgorCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcigpOwogICAgIH5BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyKCk7CiAKQEAgLTU0LDYgKzcxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJBZGFwdGVycygpOwogCiBwcml2YXRlOgorICAgIEdSZWZQdHI8R3N0RWxlbWVu
dD4gbV9waXBlbGluZTsKICAgICBlbnVtIE1haW5UaHJlYWROb3RpZmljYXRpb24gewogICAgICAg
ICBEZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCA9IDEgPDwgMCwKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IDUxNjZkZTZmN2ZhMWNhYTNhNTFmZWNkYTM4ZmNkZWUw
NDZhMzU5ZTEuLjk1ZmE5NWVkNGY5NGI4NGNkMDlkNmYxOGJiZmRmNjFkNTNmNTg4ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTM1LDYgKzM1LDggQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCisj
ZWxpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElC
V0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXIuaCIKICNlbHNlCiAjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oIgog
I2VuZGlmCkBAIC0xNzgsNiArMTgwLDkgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2F1ZGlvU291cmNl
UHJvdmlkZXIgPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlzKTsK
KyNlbGlmIFVTRShMSUJXRUJSVEMpICYmIFVTRShHU1RSRUFNRVIpCisgICAgaWYgKCFtX2F1ZGlv
U291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IEF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZSgqdGhpcyk7CiAjZW5kaWYKICAgICByZXR1cm4g
bV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZXIuY3BwCmluZGV4IDhkZjc1OGExMDlmZWU2NWU4MjM5OTNlYTg0MjQx
OGI0YjMyMThhNjguLjE0ZTIzMTg5ZDhlNjNiYzg4OGQ2MTUwMGE1MDcyMTlmNDM5Y2Y1MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0NhcHR1cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlci5jcHAKQEAgLTM2LDIw
ICszNiwxMCBAQCBHU3RyZWFtZXJBdWRpb0NhcHR1cmVyOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVy
KEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNlKQogfQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1
cmVyOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVyKCkKLSAgICA6IEdTdHJlYW1lckNhcHR1cmVyKCJh
dWRpb3Rlc3RzcmMiLCBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXci
LCAicmF0ZSIsIEdfVFlQRV9JTlQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBu
dWxscHRyKSkpCisgICAgOiBHU3RyZWFtZXJDYXB0dXJlcigiYXBwc3JjIiwgYWRvcHRHUmVmKGdz
dF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgbnVsbHB0cikpKQogewogfQogCi1Hc3RFbGVt
ZW50KiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQotewotICAgIEdzdEVs
ZW1lbnQqIHNvdXJjZSA9IEdTdHJlYW1lckNhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKTsKLQotICAg
IGlmICghbV9kZXZpY2UpCi0gICAgICAgIGdzdF91dGlsX3NldF9vYmplY3RfYXJnKEdfT0JKRUNU
KG1fc3JjLmdldCgpKSwgIndhdmUiLCAidGlja3MiKTsKLQotICAgIHJldHVybiBzb3VyY2U7Ci19
Ci0KIEdzdEVsZW1lbnQqIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI6OmNyZWF0ZUNvbnZlcnRlcigp
CiB7CiAgICAgYXV0byBjb252ZXJ0ZXIgPSBnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24o
ImF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUiLCBUUlVFLCBudWxscHRyKTsKQEAgLTYyLDE0
ICs1MiwxNSBAQCBHc3RFbGVtZW50KiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVyOjpjcmVhdGVDb252
ZXJ0ZXIoKQogYm9vbCBHU3RyZWFtZXJBdWRpb0NhcHR1cmVyOjpzZXRTYW1wbGVSYXRlKGludCBz
YW1wbGVSYXRlKQogewogCi0gICAgaWYgKHNhbXBsZVJhdGUgPiAwKSB7Ci0gICAgICAgIEdTVF9J
TkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU2V0dGluZyBTYW1wbGVSYXRlICVkIiwgc2Ft
cGxlUmF0ZSk7Ci0gICAgICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxl
KCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc2FtcGxlUmF0ZSwgbnVsbHB0cikp
OwotICAgIH0gZWxzZSB7CisgICAgaWYgKHNhbXBsZVJhdGUgPD0gMCkgewogICAgICAgICBHU1Rf
SU5GT19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIk5vdCBmb3JjaW5nIHNhbXBsZSByYXRlIik7
Ci0gICAgICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKCJh
dWRpby94LXJhdyIpKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgR1NU
X0lORk9fT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTZXR0aW5nIFNhbXBsZVJhdGUgJWQiLCBz
YW1wbGVSYXRlKTsKKyAgICBtX2NhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgi
YXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHNhbXBsZVJhdGUsIG51bGxwdHIpKTsK
KwogICAgIGlmICghbV9jYXBzZmlsdGVyLmdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlci5oCmluZGV4IDdiMjc5ZWUz
NDRlNWJhNzk2N2E3YWRhYjU5YWNlZGZmNTU3MWZhYjAuLjlhYWY3NjFkNmM0YjQzYzQ0ZWY0NDcx
MWU4MzdiMGYxMjUyZDFmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZXIuaApAQCAtMzIsNyArMzIsNiBAQCBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQXVkaW9DYXB0
dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlKTsKICAgICBHU3RyZWFtZXJBdWRpb0NhcHR1cmVy
KCk7CiAKLSAgICBHc3RFbGVtZW50KiBjcmVhdGVTb3VyY2UoKSBmaW5hbDsKICAgICBHc3RFbGVt
ZW50KiBjcmVhdGVDb252ZXJ0ZXIoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBuYW1lKCkgZmlu
YWwgeyByZXR1cm4gIkF1ZGlvIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAppbmRleCA4NjFhZGVmMDEwODIxMWQwYzQzYjRi
YTI1NzYyYmM2MDA4ZjYyMGIxLi42NGZjZWQ0MDAzMzNkNmI1Mjk0YzdjNmRiOWRjODU3MGRmMmMz
Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaWduZWRJ
bnRlZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FVRElPX0lORk9fSVNfSU5URUdFUigm
bV9pbmZvKTsgfQogICAgIGJvb2wgaXNOYXRpdmVFbmRpYW4oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBHU1RfQVVESU9fSU5GT19FTkRJQU5ORVNTKCZtX2luZm8pID09IEdfQllURV9PUkRFUjsgfQog
ICAgIGJvb2wgaXNGbG9hdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdTVF9BVURJT19JTkZPX0lT
X0ZMT0FUKCZtX2luZm8pOyB9CisgICAgaW50IGJ5dGVzUGVyRnJhbWUoKSB7IHJldHVybiBHU1Rf
QVVESU9fSU5GT19CUEYoJm1faW5mbyk7ICB9CiAKICAgICB1aW50MzJfdCBudW1iZXJPZkludGVy
bGVhdmVkQ2hhbm5lbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc0ludGVybGVhdmVkKCkgPyBH
U1RfQVVESU9fSU5GT19DSEFOTkVMUygmbV9pbmZvKSA6IFRSVUU7IH0KICAgICB1aW50MzJfdCBu
dW1iZXJPZkNoYW5uZWxTdHJlYW1zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FVRElPX0lO
Rk9fQ0hBTk5FTFMoJm1faW5mbyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
TWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDI1MTNjYTk0YmU5YzdlMDAwYzQ2NjA4Y2ExMTBk
Y2FlMTM3OGFjMmYuLjkyN2Q5ODZjMjA1YmIzZjBjYjIxZDlmZmNlYjAwYzMwMjg2YTFlOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApA
QCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgdm9pZCB3ZWJraXRN
ZWRpYVN0cmVhbVNyY1B1c2hWaWRlb1NhbXBsZShXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZiwg
R3N0U2FtcGxlKiBnc3RzYW1wbGUpOwogc3RhdGljIHZvaWQgd2Via2l0TWVkaWFTdHJlYW1TcmNQ
dXNoQXVkaW9TYW1wbGUoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIEdzdFNhbXBsZSogZ3N0
c2FtcGxlKTsKIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjVHJhY2tFbmRlZChXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLXN0YXRp
YyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2soV2ViS2l0TWVkaWFTdHJlYW1TcmMq
IHNlbGYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CiBzdGF0aWMgdm9pZCB3ZWJraXRNZWRp
YVN0cmVhbVNyY1JlbW92ZVRyYWNrQnlUeXBlKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHRyYWNrVHlwZSk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQ
YWRUZW1wbGF0ZSB2aWRlb1NyY1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInZp
ZGVvX3NyYyIsCkBAIC0xNTYsNyArMTU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRBZGRU
cmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spIGZpbmFsCiAgICAgewotICAgICAg
ICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKG1fbWVkaWFTdHJlYW1TcmMuZ2V0KCksICZ0
cmFjayk7CisgICAgICAgIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRkVHJhY2sobV9tZWRpYVN0cmVh
bVNyYy5nZXQoKSwgJnRyYWNrLCBmYWxzZSk7CiAgICAgfQogCiAgICAgdm9pZCBkaWRSZW1vdmVU
cmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spIGZpbmFsCkBAIC0xODIsOCArMTgx
LDggQEAgc3RydWN0IF9XZWJLaXRNZWRpYVN0cmVhbVNyYyB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4gbWVkaWFTdHJlYW1UcmFja09ic2VydmVy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPiBtZWRpYVN0
cmVhbU9ic2VydmVyOwogICAgIHZvbGF0aWxlIGdpbnQgbnBhZHM7Ci0gICAgZ3Vsb25nIHByb2Jl
aWQ7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gc3RyZWFtOworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gdHJhY2s7CiAKICAgICBHc3RGbG93Q29tYmluZXIqIGZs
b3dDb21iaW5lcjsKICAgICBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24+IHN0cmVhbUNvbGxl
Y3Rpb247CkBAIC0zMTQsOCArMzEzLDExIEBAIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3
ZWJraXRNZWRpYVN0cmVhbVNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsCiAgICAg
aWYgKHRyYW5zaXRpb24gPT0gR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFkpIHsKIAog
ICAgICAgICBHU1RfT0JKRUNUX0xPQ0soc2VsZik7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sg
OiBzZWxmLT5zdHJlYW0tPnRyYWNrcygpKQotICAgICAgICAgICAgdHJhY2stPnJlbW92ZU9ic2Vy
dmVyKCpzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIuZ2V0KCkpOworICAgICAgICBpZiAo
c2VsZi0+c3RyZWFtKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc2VsZi0+c3Ry
ZWFtLT50cmFja3MoKSkKKyAgICAgICAgICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnNl
bGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlci5nZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
c2VsZi0+dHJhY2spCisgICAgICAgICAgICBzZWxmLT50cmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnNl
bGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlci5nZXQoKSk7CiAgICAgICAgIEdTVF9PQkpFQ1Rf
VU5MT0NLKHNlbGYpOwogICAgIH0KIApAQCAtNDM1LDIyICs0MzcsMjYgQEAgc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIHdlYmtpdE1lZGlhU3RyZWFtU3JjUGFkUHJvYmVDYihHc3RQYWQqIHBhZCwg
R3N0UGFkUHJvYmUKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBT
cmMoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsCiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUqIHRyYWNrLCBHc3RFbGVtZW50KiBlbGVtZW50LAotICAgIEdzdFN0YXRpY1BhZFRlbXBsYXRl
KiBwYWRfdGVtcGxhdGUsIGdib29sZWFuIG9ic2VydmVfdHJhY2spCisgICAgR3N0U3RhdGljUGFk
VGVtcGxhdGUqIHBhZF90ZW1wbGF0ZSwgZ2Jvb2xlYW4gb2JzZXJ2ZV90cmFjaywKKyAgICBib29s
IG9ubHlUcmFjaykKIHsKICAgICBhdXRvIHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChlbGVtZW50LCAic3JjIikpOwogCiAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihz
ZWxmKSwgZWxlbWVudCk7CiAKLSAgICBQcm9iZURhdGEqIGRhdGEgPSBuZXcgUHJvYmVEYXRhOwot
ICAgIGRhdGEtPnNlbGYgPSBXRUJLSVRfTUVESUFfU1RSRUFNX1NSQyhzZWxmKTsKLSAgICBkYXRh
LT5wYWRfdGVtcGxhdGUgPSBwYWRfdGVtcGxhdGU7Ci0gICAgZGF0YS0+dHJhY2sgPSB0cmFjazsK
LQotICAgIHNlbGYtPnByb2JlaWQgPSBnc3RfcGFkX2FkZF9wcm9iZShwYWQuZ2V0KCksIChHc3RQ
YWRQcm9iZVR5cGUpR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sCi0gICAgICAg
IChHc3RQYWRQcm9iZUNhbGxiYWNrKXdlYmtpdE1lZGlhU3RyZWFtU3JjUGFkUHJvYmVDYiwgZGF0
YSwKLSAgICAgICAgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICAgICAgZGVsZXRlIChQcm9i
ZURhdGEqKWRhdGE7Ci0gICAgICAgIH0pOworICAgIGlmICghb25seVRyYWNrKSB7CisgICAgICAg
IFByb2JlRGF0YSogZGF0YSA9IG5ldyBQcm9iZURhdGE7CisgICAgICAgIGRhdGEtPnNlbGYgPSBX
RUJLSVRfTUVESUFfU1RSRUFNX1NSQyhzZWxmKTsKKyAgICAgICAgZGF0YS0+cGFkX3RlbXBsYXRl
ID0gcGFkX3RlbXBsYXRlOworICAgICAgICBkYXRhLT50cmFjayA9IHRyYWNrOworCisgICAgICAg
IGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgKEdzdFBhZFByb2JlVHlwZSlHU1RfUEFEX1BS
T0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwKKyAgICAgICAgICAgIChHc3RQYWRQcm9iZUNhbGxi
YWNrKXdlYmtpdE1lZGlhU3RyZWFtU3JjUGFkUHJvYmVDYiwgZGF0YSwKKyAgICAgICAgICAgIFtd
KGdwb2ludGVyIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgKFByb2JlRGF0YSopZGF0
YTsKKyAgICAgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICB3ZWJraXRNZWRpYVN0cmVh
bVNyY0FkZFBhZChzZWxmLCBwYWQuZ2V0KCksIHBhZF90ZW1wbGF0ZSk7CiAKICAgICBpZiAob2Jz
ZXJ2ZV90cmFjaykKICAgICAgICAgdHJhY2stPmFkZE9ic2VydmVyKCpzZWxmLT5tZWRpYVN0cmVh
bVRyYWNrT2JzZXJ2ZXIuZ2V0KCkpOwpAQCAtNDYxLDEyICs0NjcsMTIgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBTcmMoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNl
bGYsCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldHVwQXBwU3JjKFdl
YktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLAogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0
cmFjaywgR3N0RWxlbWVudCoqIGVsZW1lbnQsCi0gICAgR3N0U3RhdGljUGFkVGVtcGxhdGUqIHBh
ZF90ZW1wbGF0ZSkKKyAgICBHc3RTdGF0aWNQYWRUZW1wbGF0ZSogcGFkX3RlbXBsYXRlLCBib29s
IG9ubHlUcmFjaykKIHsKICAgICAqZWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXBwc3JjIiwgbnVsbHB0cik7CiAgICAgZ19vYmplY3Rfc2V0KCplbGVtZW50LCAiaXMtbGl2ZSIs
IHRydWUsICJmb3JtYXQiLCBHU1RfRk9STUFUX1RJTUUsIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0dXBTcmMoc2VsZiwgdHJhY2ssICplbGVtZW50LCBwYWRf
dGVtcGxhdGUsIFRSVUUpOworICAgIHJldHVybiB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldHVwU3Jj
KHNlbGYsIHRyYWNrLCAqZWxlbWVudCwgcGFkX3RlbXBsYXRlLCBUUlVFLCBvbmx5VHJhY2spOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY1Bvc3RTdHJlYW1Db2xsZWN0aW9u
KFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmLCBNZWRpYVN0cmVhbVByaXZhdGUqIHN0cmVhbSkK
QEAgLTQ4NCwxNCArNDkwLDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjUG9z
dFN0cmVhbUNvbGxlY3Rpb24oV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsCiAgICAgICAgIGdz
dF9tZXNzYWdlX25ld19zdHJlYW1fY29sbGVjdGlvbihHU1RfT0JKRUNUKHNlbGYpLCBzZWxmLT5z
dHJlYW1Db2xsZWN0aW9uLmdldCgpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3Ry
ZWFtU3JjQWRkVHJhY2soV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlKiB0cmFjaykKK2Jvb2wgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc2VsZiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRyYWNrLCBi
b29sIG9ubHlUcmFjaykKIHsKKyAgICBib29sIHJlcyA9IGZhbHNlOwogICAgIGlmICh0cmFjay0+
dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQotICAgICAgICB3ZWJr
aXRNZWRpYVN0cmVhbVNyY1NldHVwQXBwU3JjKHNlbGYsIHRyYWNrLCAmc2VsZi0+YXVkaW9TcmMs
ICZhdWRpb1NyY1RlbXBsYXRlKTsKKyAgICAgICAgcmVzID0gd2Via2l0TWVkaWFTdHJlYW1TcmNT
ZXR1cEFwcFNyYyhzZWxmLCB0cmFjaywgJnNlbGYtPmF1ZGlvU3JjLCAmYXVkaW9TcmNUZW1wbGF0
ZSwgb25seVRyYWNrKTsKICAgICBlbHNlIGlmICh0cmFjay0+dHlwZSgpID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlZpZGVvKQotICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY1NldHVw
QXBwU3JjKHNlbGYsIHRyYWNrLCAmc2VsZi0+dmlkZW9TcmMsICZ2aWRlb1NyY1RlbXBsYXRlKTsK
KyAgICAgICAgcmVzID0gd2Via2l0TWVkaWFTdHJlYW1TcmNTZXR1cEFwcFNyYyhzZWxmLCB0cmFj
aywgJnNlbGYtPnZpZGVvU3JjLCAmdmlkZW9TcmNUZW1wbGF0ZSwgb25seVRyYWNrKTsKICAgICBl
bHNlCiAgICAgICAgIEdTVF9JTkZPKCJVbnN1cHBvcnRlZCB0cmFjayB0eXBlOiAlZCIsIHN0YXRp
Y19jYXN0PGludD4odHJhY2stPnR5cGUoKSkpOworCisgICAgaWYgKG9ubHlUcmFjayAmJiByZXMp
CisgICAgICAgIHNlbGYtPnRyYWNrID0gdHJhY2s7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjUmVtb3ZlVHJhY2tCeVR5cGUoV2ViS2l0
TWVkaWFTdHJlYW1TcmMqIHNlbGYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHJhY2tUeXBl
KQpAQCAtNTI0LDcgKzUzNiw3IEBAIGJvb2wgd2Via2l0TWVkaWFTdHJlYW1TcmNTZXRTdHJlYW0o
V2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYsIE1lZGlhU3RyZWFtUHJpdmF0CiAgICAgc2VsZi0+
c3RyZWFtID0gc3RyZWFtOwogICAgIHNlbGYtPnN0cmVhbS0+YWRkT2JzZXJ2ZXIoKnNlbGYtPm1l
ZGlhU3RyZWFtT2JzZXJ2ZXIuZ2V0KCkpOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PnRyYWNrcygpKQotICAgICAgICB3ZWJraXRNZWRpYVN0cmVhbVNyY0FkZFRyYWNrKHNlbGYsIHRy
YWNrLmdldCgpKTsKKyAgICAgICAgd2Via2l0TWVkaWFTdHJlYW1TcmNBZGRUcmFjayhzZWxmLCB0
cmFjay5nZXQoKSwgZmFsc2UpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC01OTMsNiArNjA1
LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdE1lZGlhU3RyZWFtU3JjVHJhY2tFbmRlZChXZWJLaXRN
ZWRpYVN0cmVhbVNyYyogc2VsZiwKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQocGFkLmdldCgpLCBn
c3RfZXZlbnRfbmV3X2VvcygpKTsKIH0KIAorR3N0RWxlbWVudCogd2Via2l0TWVkaWFTdHJlYW1T
cmNOZXcodm9pZCkKK3sKKyAgICByZXR1cm4gR1NUX0VMRU1FTlQoZ19vYmplY3RfbmV3KHdlYmtp
dF9tZWRpYV9zdHJlYW1fc3JjX2dldF90eXBlKCksIG51bGxwdHIpKTsKK30KKwogfSAvLyBXZWJD
b3JlCiAjZW5kaWYgLy8gR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTAsIDApCiAjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRleCAxNTk5
YmFlNzg2MjcxNGE3YmI5ZDM0MmNlNGEzMjA4MDI2NDM0NjMyLi5jMzNiZDAyODViNjExMTk0MTU0
MGVlYTFmNDdlNWY5Yzg5ZTE0MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
TWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNDEsNiArNDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0TWVkaWFTdHJlYW1TcmMgV2ViS2l0TWVkaWFTdHJlYW1TcmM7CiAjZGVmaW5lIFdFQktJVF9U
WVBFX01FRElBX1NUUkVBTV9TUkMgKHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2dldF90eXBlKCkp
CiBHVHlwZSB3ZWJraXRfbWVkaWFfc3RyZWFtX3NyY19nZXRfdHlwZSh2b2lkKSBHX0dOVUNfQ09O
U1Q7CiBib29sIHdlYmtpdE1lZGlhU3RyZWFtU3JjU2V0U3RyZWFtKFdlYktpdE1lZGlhU3RyZWFt
U3JjKiwgTWVkaWFTdHJlYW1Qcml2YXRlKik7Citib29sIHdlYmtpdE1lZGlhU3RyZWFtU3JjQWRk
VHJhY2soV2ViS2l0TWVkaWFTdHJlYW1TcmMqLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSosIGJv
b2wgb25seVRyYWNrKTsKK0dzdEVsZW1lbnQgKiB3ZWJraXRNZWRpYVN0cmVhbVNyY05ldyh2b2lk
KTsKIH0gLy8gV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGZkNTJlYmY0OTZlN2Ix
ZTY5NzY5NmI4NWRhYWM2MTU3NmEwNjFhZGYuLjE2YmI2OGNiNjRhYzVjODc4MTAwYzZkZjI5NmE2
MDU0MTEzYWFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI0LDE2ICsyNCwxMTAgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoTElCV0VCUlRDKSAmJiBVU0UoR1NUUkVBTUVSKQogI2luY2x1
ZGUgIk1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCIKIAorI2luY2x1ZGUgIkdTdHJl
YW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oIgogCisjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgZG91YmxlIHNfVGF1ID0gMiAqIE1fUEk7CitzdGF0
aWMgY29uc3QgZG91YmxlIHNfQmlwQm9wRHVyYXRpb24gPSAwLjA3Oworc3RhdGljIGNvbnN0IGRv
dWJsZSBzX0JpcEJvcFZvbHVtZSA9IDAuNTsKK3N0YXRpYyBjb25zdCBkb3VibGUgc19CaXBGcmVx
dWVuY3kgPSAxNTAwOworc3RhdGljIGNvbnN0IGRvdWJsZSBzX0JvcEZyZXF1ZW5jeSA9IDUwMDsK
K3N0YXRpYyBjb25zdCBkb3VibGUgc19IdW1GcmVxdWVuY3kgPSAxNTA7CitzdGF0aWMgY29uc3Qg
ZG91YmxlIHNfSHVtVm9sdW1lID0gMC4xOworCiBjbGFzcyBXcmFwcGVkTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgewogcHVibGljOgogICAg
IFdyYXBwZWRNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgICAgIDogTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQp
KQorICAgICAgICAsIG1fc3JjKG51bGxwdHIpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc3Rh
cnQoR1JlZlB0cjxHc3RFbGVtZW50PiBzcmMpCisgICAgeworICAgICAgICBtX3NyYyA9IHNyYzsK
KyAgICAgICAgaWYgKG1fc3RyZWFtRm9ybWF0KQorICAgICAgICAgICAgZ3N0X2FwcF9zcmNfc2V0
X2NhcHMoR1NUX0FQUF9TUkMobV9zcmMuZ2V0KCkpLCBtX3N0cmVhbUZvcm1hdC0+Y2FwcygpKTsK
KyAgICAgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0KCk7CisgICAgfQorCisgICAg
dm9pZCBhZGRIdW0oZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBmcmVxdWVuY3ksIGZsb2F0IHNhbXBs
ZVJhdGUsIHVpbnQ2NF90IHN0YXJ0LCBmbG9hdCAqcCwgdWludDY0X3QgY291bnQpCisgICAgewor
ICAgICAgICBmbG9hdCBodW1QZXJpb2QgPSBzYW1wbGVSYXRlIC8gZnJlcXVlbmN5OworICAgICAg
ICBmb3IgKHVpbnQ2NF90IGkgPSBzdGFydCwgZW5kID0gc3RhcnQgKyBjb3VudDsgaSA8IGVuZDsg
KytpKSB7CisgICAgICAgICAgICBmbG9hdCBhID0gYW1wbGl0dWRlICogc2luKGkgKiBzX1RhdSAv
IGh1bVBlcmlvZCk7CisgICAgICAgICAgICBhICs9ICpwOworICAgICAgICAgICAgKnArKyA9IGE7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJlbmRlcihTZWNvbmRzIGRlbHRhKQogICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fc3JjKTsKKworICAgICAgICB1aW50MzJfdCB0b3RhbEZyYW1l
Q291bnQgPSBHU1RfUk9VTkRfVVBfMTYoc3RhdGljX2Nhc3Q8c2l6ZV90PihkZWx0YS5zZWNvbmRz
KCkgKiBzYW1wbGVSYXRlKCkpKTsKKyAgICAgICAgdWludDMyX3QgZnJhbWVDb3VudCA9IHN0ZDo6
bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZyYW1lQ291bnQpOworICAgICAgICB3aGls
ZSAoZnJhbWVDb3VudCkgeworICAgICAgICAgICAgdWludDMyX3QgYmlwQm9wU3RhcnQgPSBtX3Nh
bXBsZXNSZW5kZXJlZCAlIG1fYmlwQm9wQnVmZmVyLnNpemUoKTsKKyAgICAgICAgICAgIHVpbnQz
Ml90IGJpcEJvcFJlbWFpbiA9IG1fYmlwQm9wQnVmZmVyLnNpemUoKSAtIGJpcEJvcFN0YXJ0Owor
ICAgICAgICAgICAgdWludDMyX3QgYmlwQm9wQ291bnQgPSBzdGQ6Om1pbihmcmFtZUNvdW50LCBi
aXBCb3BSZW1haW4pOworCisgICAgICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZm
ZXJfbmV3X2FsbG9jYXRlKG51bGxwdHIsIGJpcEJvcENvdW50ICogbV9zdHJlYW1Gb3JtYXQtPmJ5
dGVzUGVyRnJhbWUoKSwgbnVsbHB0cik7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
R3N0TWFwcGVkQnVmZmVyIG1hcChidWZmZXIsIEdTVF9NQVBfV1JJVEUpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFtdXRlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShtYXAuZGF0
YSgpLCAmbV9iaXBCb3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2YoZmxvYXQpICogYmlwQm9w
Q291bnQpOworICAgICAgICAgICAgICAgICAgICBhZGRIdW0oc19IdW1Wb2x1bWUsIHNfSHVtRnJl
cXVlbmN5LCBzYW1wbGVSYXRlKCksIG1fc2FtcGxlc1JlbmRlcmVkLCAoZmxvYXQqKW1hcC5kYXRh
KCksIGJpcEJvcENvdW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgbWVtc2V0KG1hcC5kYXRhKCksIDAsIHNpemVvZihmbG9hdCkgKiBiaXBCb3BDb3VudCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKEdT
VF9BUFBfU1JDKG1fc3JjLmdldCgpKSwgYnVmZmVyKTsKKyAgICAgICAgICAgIG1fc2FtcGxlc1Jl
bmRlcmVkICs9IGJpcEJvcENvdW50OworICAgICAgICAgICAgdG90YWxGcmFtZUNvdW50IC09IGJp
cEJvcENvdW50OworICAgICAgICAgICAgZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVD
b3VudCwgbV9tYXhpbWl1bUZyYW1lQ291bnQpOworICAgICAgICB9CiAgICAgfQorCisgICAgdm9p
ZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPiBzZXR0aW5ncykKKyAgICB7CisgICAgICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAg
ICAgICBHc3RBdWRpb0luZm8gaW5mbzsKKyAgICAgICAgICAgIGF1dG8gcmF0ZSA9IHNhbXBsZVJh
dGUoKTsKKyAgICAgICAgICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiByYXRlOworCisgICAg
ICAgICAgICBtX21heGltaXVtRnJhbWVDb3VudCA9IFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhy
ZW5kZXJJbnRlcnZhbCgpLnNlY29uZHMoKSAqIHNhbXBsZVJhdGUoKSk7CisgICAgICAgICAgICBn
c3RfYXVkaW9faW5mb19zZXRfZm9ybWF0KCZpbmZvLCBHU1RfQVVESU9fRk9STUFUX0YzMkxFLCBy
YXRlLCAxLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fc3RyZWFtRm9ybWF0ID0gR1N0cmVhbWVy
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbihpbmZvKTsKKworICAgICAgICAgICAgaWYgKG1fc3JjKQor
ICAgICAgICAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9jYXBzKEdTVF9BUFBfU1JDKG1fc3JjLmdl
dCgpKSwgbV9zdHJlYW1Gb3JtYXQtPmNhcHMoKSk7CisKKyAgICAgICAgICAgIG1fYmlwQm9wQnVm
ZmVyLmdyb3coc2FtcGxlQ291bnQpOworICAgICAgICAgICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgw
KTsKKworICAgICAgICAgICAgc2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChzX0JpcEJv
cER1cmF0aW9uICogcmF0ZSk7CisgICAgICAgICAgICBzaXplX3QgYmlwU3RhcnQgPSAwOworICAg
ICAgICAgICAgc2l6ZV90IGJvcFN0YXJ0ID0gcmF0ZTsKKworICAgICAgICAgICAgYWRkSHVtKHNf
QmlwQm9wVm9sdW1lLCBzX0JpcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgc3RhdGljX2Nhc3Q8ZmxvYXQq
PihtX2JpcEJvcEJ1ZmZlci5kYXRhKCkgKyBiaXBTdGFydCksIGJpcEJvcFNhbXBsZUNvdW50KTsK
KyAgICAgICAgICAgIGFkZEh1bShzX0JpcEJvcFZvbHVtZSwgc19Cb3BGcmVxdWVuY3ksIHJhdGUs
IDAsIHN0YXRpY19jYXN0PGZsb2F0Kj4obV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYm9wU3RhcnQp
LCBiaXBCb3BTYW1wbGVDb3VudCk7CisgICAgICAgIH0KKworICAgICAgICBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOworICAgIH0KKworICAgIEdS
ZWZQdHI8R3N0RWxlbWVudD4gbV9zcmM7CisgICAgc3RkOjpvcHRpb25hbDxHU3RyZWFtZXJBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPiBtX3N0cmVhbUZvcm1hdDsKKyAgICBWZWN0b3I8ZmxvYXQ+IG1f
YmlwQm9wQnVmZmVyOworICAgIHVpbnQzMl90IG1fbWF4aW1pdW1GcmFtZUNvdW50OworICAgIHVp
bnQ2NF90IG1fc2FtcGxlc0VtaXR0ZWQgeyAwIH07CisgICAgdWludDY0X3QgbV9zYW1wbGVzUmVu
ZGVyZWQgeyAwIH07CiB9OwogCiBDYXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGRldmljZUlELApAQCAtODAsNyArMTc0LDcgQEAgdm9p
ZCBNb2NrR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB2
b2lkIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiB7CiAgICAgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEo
KTsKLSAgICBtX3dyYXBwZWRTb3VyY2UtPnN0YXJ0KCk7CisgICAgc3RhdGljX2Nhc3Q8V3JhcHBl
ZE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKj4obV93cmFwcGVkU291cmNlLmdldCgpKS0+c3RhcnQo
Y2FwdHVyZXIoKS0+c291cmNlKCkpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIE1vY2tHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxp
YldlYlJUQy5jcHAKaW5kZXggNTM0YWY3NzAxMDM3MjExMjczZjk4M2UwMGY0ZDRiMDIxYWRjMTYx
ZC4uNWU3Zjk3N2E5NmIyMTc5ZGI2MThmZTgwMGIyZDU2MzVkYjlkNmExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldl
YlJUQy5jcHAKQEAgLTEwOCwzMyArMTA4LDI2IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlTGliV2ViUlRDOjpwdWxsQXVkaW9EYXRhKCkKICAgICBzaXplX3QgaW5DaHVua1NhbXBs
ZUNvdW50ID0gZ3N0X2F1ZGlvX2NvbnZlcnRlcl9nZXRfaW5fZnJhbWVzKG1fc2FtcGxlQ29udmVy
dGVyLmdldCgpLCBvdXRDaHVua1NhbXBsZUNvdW50KTsKICAgICBzaXplX3QgaW5CdWZmZXJTaXpl
ID0gaW5DaHVua1NhbXBsZUNvdW50ICogbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLT5nZXRJbmZv
KCktPmJwZjsKIAotICAgIGF1dG8gYXZhaWxhYmxlID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlKG1f
YWRhcHRlci5nZXQoKSk7Ci0gICAgaWYgKGluQnVmZmVyU2l6ZSA+IGF2YWlsYWJsZSkgewotICAg
ICAgICBHU1RfREVCVUcoIk5vdCBlbm91Z2ggZGF0YTogd2FudGVkOiAlbGQgPiAlbGQgYXZhaWxh
YmxlIiwKLSAgICAgICAgICAgIGluQnVmZmVyU2l6ZSwgYXZhaWxhYmxlKTsKLQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBpbkJ1ZmZlciA9IGFkb3B0R1JlZihnc3RfYWRhcHRl
cl90YWtlX2J1ZmZlcihtX2FkYXB0ZXIuZ2V0KCksIGluQnVmZmVyU2l6ZSkpOwotICAgIGF1dG8g
b3V0QnVmZmVyID0gYWRvcHRHUmVmKGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlKG51bGxwdHIsIG91
dEJ1ZmZlclNpemUsIDApKTsKLSAgICBHc3RNYXBwZWRCdWZmZXIgb3V0TWFwKG91dEJ1ZmZlci5n
ZXQoKSwgR1NUX01BUF9XUklURSk7Ci0gICAgaWYgKGlzU2lsZW5jZWQoKSkKLSAgICAgICAgZ3N0
X2F1ZGlvX2Zvcm1hdF9maWxsX3NpbGVuY2UobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi0+Z2V0
SW5mbygpLT5maW5mbywgb3V0TWFwLmRhdGEoKSwgb3V0TWFwLnNpemUoKSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIEdzdE1hcHBlZEJ1ZmZlciBpbk1hcChpbkJ1ZmZlci5nZXQoKSwgR1NUX01BUF9S
RUFEKTsKLQotICAgICAgICBncG9pbnRlciBpblsxXSA9IHsgaW5NYXAuZGF0YSgpIH07Ci0gICAg
ICAgIGdwb2ludGVyIG91dFsxXSA9IHsgb3V0TWFwLmRhdGEoKSB9OwotICAgICAgICBpZiAoIWdz
dF9hdWRpb19jb252ZXJ0ZXJfc2FtcGxlcyhtX3NhbXBsZUNvbnZlcnRlci5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R3N0QXVkaW9Db252ZXJ0ZXJGbGFncz4oMCksIGluLCBpbkNodW5rU2FtcGxlQ291bnQs
IG91dCwgb3V0Q2h1bmtTYW1wbGVDb3VudCkpIHsKLSAgICAgICAgICAgIEdTVF9FUlJPUigiQ291
bGQgbm90IGNvbnZlcnQgc2FtcGxlcy4iKTsKLQotICAgICAgICAgICAgcmV0dXJuOworICAgIHdo
aWxlIChnc3RfYWRhcHRlcl9hdmFpbGFibGUobV9hZGFwdGVyLmdldCgpKSA+IGluQnVmZmVyU2l6
ZSkgeworICAgICAgICBhdXRvIGluQnVmZmVyID0gYWRvcHRHUmVmKGdzdF9hZGFwdGVyX3Rha2Vf
YnVmZmVyKG1fYWRhcHRlci5nZXQoKSwgaW5CdWZmZXJTaXplKSk7CisgICAgICAgIG1fYXVkaW9C
dWZmZXIuZ3JvdyhvdXRCdWZmZXJTaXplKTsKKyAgICAgICAgaWYgKGlzU2lsZW5jZWQoKSkKKyAg
ICAgICAgICAgIGdzdF9hdWRpb19mb3JtYXRfZmlsbF9zaWxlbmNlKG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24tPmdldEluZm8oKS0+ZmluZm8sIG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBvdXRCdWZm
ZXJTaXplKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBHc3RNYXBwZWRCdWZmZXIgaW5N
YXAoaW5CdWZmZXIuZ2V0KCksIEdTVF9NQVBfUkVBRCk7CisKKyAgICAgICAgICAgIGdwb2ludGVy
IGluWzFdID0geyBpbk1hcC5kYXRhKCkgfTsKKyAgICAgICAgICAgIGdwb2ludGVyIG91dFsxXSA9
IHsgbV9hdWRpb0J1ZmZlci5kYXRhKCkgfTsKKyAgICAgICAgICAgIGlmICghZ3N0X2F1ZGlvX2Nv
bnZlcnRlcl9zYW1wbGVzKG1fc2FtcGxlQ29udmVydGVyLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RB
dWRpb0NvbnZlcnRlckZsYWdzPigwKSwgaW4sIGluQ2h1bmtTYW1wbGVDb3VudCwgb3V0LCBvdXRD
aHVua1NhbXBsZUNvdW50KSkgeworICAgICAgICAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90
IGNvbnZlcnQgc2FtcGxlcy4iKTsKKworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIHNlbmRBdWRpb0ZyYW1lcyhvdXRNYXAuZGF0
YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgc3RhdGljX2Nhc3Q8aW50Piht
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkpLAotICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24tPm51bWJlck9mQ2hhbm5lbHMoKSks
IG91dENodW5rU2FtcGxlQ291bnQpOworICAgICAgICBzZW5kQXVkaW9GcmFtZXMobV9hdWRpb0J1
ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24tPnNhbXBsZVJhdGUoKSksCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24tPm51bWJlck9m
Q2hhbm5lbHMoKSksIG91dENodW5rU2FtcGxlQ291bnQpOworICAgIH0KIH0KIAogYm9vbCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEM6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmgKaW5kZXggNDYwOWU5ZDliYWQyNWY2ZTkyODQ0
MjQxZjhmMTU1NTU2NDA4N2ZjMC4uMDkwNDA1ZTE4NDhmYWNmOGE4N2YwOGY1NjViMThiNzQ3YmVj
YjE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VMaWJXZWJSVEMuaApAQCAtNTQsNiArNTQsNyBAQCBwcml2YXRlOgogCiAgICAg
TG9jayBtX2FkYXB0ZXJNdXRleDsKICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IG1fYWRhcHRlcjsK
KyAgICBWZWN0b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA3MjU3NTUzZTcxYmZhM2ExNDM2ZmE4MGM5OGJlNzJjNThmODEwYTM0
Li5iNWI4YmU0OWFiN2Q2MzRkN2FmM2YwNzcyMmU5M2ViOTIwNjExZDljIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTgtMTItMDUgIFRoaWJhdWx0IFNhdW5pZXIgIDx0c2F1bmllckBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtXUEVdW0dUS10gSW1wbGVtZW50IFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIgdG8gYWxsb3cgYnJpZGdpbmcgTWVkaWFTdHJlYW0gYW5kIHRoZSBXZWJBdWRp
byBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY5MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGVkIGFsbCB0ZXN0cyBkZXBlbmRpbmcgb24gdGhhdCBmZWF0dXJlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogd2VicnRjL2Nsb25lLWF1
ZGlvLXRyYWNrLmh0bWw6CisKIDIwMTgtMTEtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGluZyBocmVmIG9uIGxpbmVhckdyYWRp
ZW50IGFuZCByYWRpYWxHcmFkaWVudCBkb2Vzbid0IHVwZGF0ZSBpdHMgcmVuZGVyaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDRmNmUyN2QyODIwYjZk
ODlmOTdiMGNhNWNlOTU2ODRiZWMwMjRiMWIuLjdmZWIxN2MyYWVmNGNkOTQzYTMzMDQ1ODA4Nzll
MTc4ZGM2MjU0OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CkBAIC01ODYsMTYgKzU4Niw2IEBAIHdlYmtpdC5vcmcvYi8xODcwNjQgd2VicnRjL2xpYndlYnJ0
Yy9kZXNjcmlwdGlvbkdldHRlcnMuaHRtbAogd2Via2l0Lm9yZy9iLzE3NzUzMyB3ZWJydGMvdmlk
ZW8taW50ZXJydXB0aW9uLmh0bWwKIAogd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJydGMvcGVlci1j
b25uZWN0aW9uLWNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24uaHRtbAotd2Via2l0Lm9yZy9i
LzE4NjkzMyB3ZWJydGMvcGVlci1jb25uZWN0aW9uLXJlbW90ZS1hdWRpby1tdXRlMi5odG1sCi13
ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tYXVkaW8tdW5tdXRlLmh0
bWwKLXdlYmtpdC5vcmcvYi8xODY5MzMgd2VicnRjL3BlZXItY29ubmVjdGlvbi1hdWRpby1tdXRl
Mi5odG1sCi13ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tYXVkaW8t
bXV0ZS5odG1sCi13ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tcmVt
b3RlLWF1ZGlvLW11dGUuaHRtbAotd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJydGMvY2xvbmUtYXVk
aW8tdHJhY2suaHRtbAotd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJydGMvYXVkaW8tcmVwbGFjZS10
cmFjay5odG1sCi13ZWJraXQub3JnL2IvMTg2OTMzIHdlYnJ0Yy9hdWRpby1wZWVyLWNvbm5lY3Rp
b24td2ViYXVkaW8uaHRtbAotd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJydGMvYXVkaW8tbXV0ZWQt
c3RhdHMuaHRtbAotd2Via2l0Lm9yZy9iLzE4NjkzMyB3ZWJydGMvZ2V0VXNlck1lZGlhLXdlYmF1
ZGlvLWF1dG9wbGF5Lmh0bWwKIAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMvIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYnJ0YyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL2Nsb25lLWF1ZGlvLXRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvY2xvbmUtYXVkaW8tdHJhY2suaHRtbAppbmRleCA2NDliNDQ2ZTg1ODQyNTNiNTEzYWI3Mjkz
YTA5MGMxNWYwZGJmNTQzLi4wZjkzNzQ4NDkwODNmNGFkZTAyNzY2NTc0YTE1M2I1ODJkOTFiYmRi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvY2xvbmUtYXVkaW8tdHJhY2suaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2xvbmUtYXVkaW8tdHJhY2suaHRtbApAQCAtMzMsNyAr
MzMsNyBAQAogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFuYWx5c2VBdWRpbyhyZW1vdGVTdHJlYW0sIDIwMCwg
Y29udGV4dCkudGhlbigocmVzdWx0cykgPT4gewotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UocmVzdWx0cy5oZWFyZEh1bSwgIkRpZCBub3QgaGVhcmQgaHVtIGZyb20gcmVtb3RlIGVu
YWJsZWQgdHJhY2siKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdHMu
aGVhcmRIdW0sICJEaWQgbm90IGhlYXIgaHVtIGZyb20gcmVtb3RlIGRpc2FibGVkIHRyYWNrIik7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gYW5hbHlzZUF1ZGlvKG5ldyBNZWRpYVN0cmVhbShbY2xvbmVkVHJh
Y2tdKSwgMjAwLCBjb250ZXh0KS50aGVuKChyZXN1bHRzKSA9PiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>