<?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>173864</bug_id>
          
          <creation_ts>2017-06-26 22:15:55 -0700</creation_ts>
          <short_desc>MediaStreamTrackPrivate observers map is used in various thread without protection.</short_desc>
          <delta_ts>2017-07-10 08:14:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1323067</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-26 22:15:55 -0700</bug_when>
    <thetext>We could either ensure that observers are used on the main thread or add a lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323068</commentid>
    <comment_count>1</comment_count>
      <attachid>313897</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-26 22:23:22 -0700</bug_when>
    <thetext>Created attachment 313897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323183</commentid>
    <comment_count>2</comment_count>
      <attachid>313897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-27 11:41:40 -0700</bug_when>
    <thetext>Comment on attachment 313897
Patch

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

Please carefully protect ALL uses of m_observers.

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:101
&gt; +    ASSERT(isMainThread());

This is iterating over m_observers below but not locking, why?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:114
&gt; +    ASSERT(isMainThread());

This is iterating over m_observers below but not locking, why?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:171
&gt; +    ASSERT(isMainThread());

This is iterating over m_observers below but not locking, why?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:179
&gt; +    ASSERT(isMainThread());

This is iterating over m_observers below but not locking, why?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:199
&gt;      for (auto&amp; observer : m_observers)

This is iterating over m_observers but not locking, why?

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:211
&gt;      for (auto&amp; observer : m_observers)

This is iterating over m_observers but not locking, why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323185</commentid>
    <comment_count>3</comment_count>
      <attachid>313897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-27 11:42:35 -0700</bug_when>
    <thetext>Comment on attachment 313897
Patch

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

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:194
&gt; +        callOnMainThread([protectedThis = makeRef(*this)] {

MediaStreamTrackPrivate is NOT ThreadSafeRefCounted :((</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323186</commentid>
    <comment_count>4</comment_count>
      <attachid>313897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-27 11:44:05 -0700</bug_when>
    <thetext>Comment on attachment 313897
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        MediaStreamTrackPrivate observers map is used in various thread without protection.

typo: threads

s/protection/synchronization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323190</commentid>
    <comment_count>5</comment_count>
      <attachid>313897</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-27 11:53:03 -0700</bug_when>
    <thetext>Comment on attachment 313897
Patch

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

&gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:252
&gt;          observer-&gt;audioSamplesAvailable(*this, mediaTime, data, description, sampleCount);

This is not a good API contract. Despite your locking, sometimes observers will be notified on the main thread, sometimes on a background thread. This is a bug waiting to happen.
Why cannot be update the call sites of these 2 MediaStreamTrackPrivate methods to make sure MediaStreamTrackPrivate is *always* used on the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323204</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-27 12:40:35 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 313897 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313897&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp:252
&gt; &gt;          observer-&gt;audioSamplesAvailable(*this, mediaTime, data, description, sampleCount);
&gt; 
&gt; This is not a good API contract. Despite your locking, sometimes observers
&gt; will be notified on the main thread, sometimes on a background thread. This
&gt; is a bug waiting to happen.

Agreed.
We need to find a good tradeoff between the desire to optimize and the desire for simple to understand design.
The current model is too complex.

&gt; Why cannot be update the call sites of these 2 MediaStreamTrackPrivate
&gt; methods to make sure MediaStreamTrackPrivate is *always* used on the main
&gt; thread?

We could try to go to the main thread and measure the perf impact.
We could also split the observer contract. One issue is that we might lose some timing order between the observer API calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327003</commentid>
    <comment_count>7</comment_count>
      <attachid>314979</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-07-10 08:13:43 -0700</bug_when>
    <thetext>Created attachment 314979
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313897</attachid>
            <date>2017-06-26 22:23:22 -0700</date>
            <delta_ts>2017-07-10 08:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173864-20170626222321.patch</filename>
            <type>text/plain</type>
            <size>7999</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFjYzRjMTVlYWQ5YzQx
YjFiNDMxMWNiYTJjNDJlMzdmODUyZmU0My4uYzFjNmU3ZGQ5ZjM1MGYwY2MxM2EyYzcyNDAyYzQx
N2Q2MTA4ZmE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSBvYnNlcnZlcnMgbWFwIGlzIHVzZWQgaW4gdmFyaW91cyB0aHJlYWQgd2l0aG91dCBw
cm90ZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIGxvY2sgdG8gY29u
dHJvbCB0aGUgdXNlIG9mIHRoZSBvYnNlcnZlciBtYXAuCisgICAgICAgIFRoaXMgbWFwIHNob3Vs
ZCBiZSB1c2VkIG9ubHkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZXhjZXB0IHdoZW4gYmVpbmcgdXNl
ZCB0byBzZW5kIGF1ZGlvIGFuZC9vciB2aWRlbyBkYXRhCisgICAgICAgIHdoZXJlIHRoZSBvYnNl
cnZlciBtYXAgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGNhcHR1cmUgdGhyZWFkLgorICAgICAgICBU
byBlbnN1cmUgdGhhdCBubyBkZWFkbG9jayBjYW4gaGFwcGVuLCBvYnNlcnZlcnMgc2hvdWxkIG5v
dCBiZSBjaGFuZ2VkIHdpdGhpbiB0aGVzZSBhdWRpby92aWRlbyBzZW5kaW5nIGNhbGxiYWNrcy4K
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphZGRPYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVtb3Zl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNl
dEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmVu
ZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3Vy
Y2VTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpz
b3VyY2VTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Ojpzb3VyY2VNdXRlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OnNvdXJjZVNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6dXBkYXRlUmVhZHlTdGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorCiAyMDE3LTA2LTI2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMoKSBpcyBpbmVmZmljaWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IGZjNGY0Y2UwZjAwNjRkNmI4NWVjMWM5ZDk2
ZjRjYmU0NTk5ODkxZGMuLmI2YWNmMmQ0MGQ1MzZmNjU0OWQ3ZDVjY2Q0NjcyOTk5NmU4MGUxMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTY1LDExICs2NSwxNyBAQCBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6fk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKCkKIAogdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJzTG9jayk7CisKICAgICBtX29ic2VydmVy
cy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
cmVtb3ZlT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyJiBvYnNlcnZl
cikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fb2JzZXJ2ZXJzTG9jayk7CisKICAgICBzaXplX3QgcG9zID0gbV9vYnNlcnZlcnMuZmluZCgm
b2JzZXJ2ZXIpOwogICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCiAgICAgICAgIG1fb2JzZXJ2ZXJz
LnJlbW92ZShwb3MpOwpAQCAtOTIsNiArOTgsNyBAQCBib29sIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjppc0NhcHR1cmVUcmFjaygpIGNvbnN0CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKG1faXNFbmFibGVkID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTA0LDYgKzExMSw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldEVuYWJs
ZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjplbmRUcmFj
aygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9pc0VuZGVkKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTE2MCwxMiArMTY4LDE2IEBAIEF1ZGlvU291cmNlUHJvdmlk
ZXIqIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIAogdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RhcnRlZCgpCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKwogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKICAgICAgICAgb2JzZXJ2ZXItPnRyYWNrU3RhcnRlZCgqdGhpcyk7CiB9CiAKIHZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVN0b3BwZWQoKQogeworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKICAgICBpZiAobV9pc0VuZGVkKQogICAgICAgICByZXR1cm47CiAKQEAg
LTE3OCwxMiArMTkwLDI0IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVN0
b3BwZWQoKQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VNdXRlZENoYW5n
ZWQoKQogeworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5zb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAg
ICAgICBvYnNlcnZlci0+dHJhY2tNdXRlZENoYW5nZWQoKnRoaXMpOwogfQogCiB2b2lkIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQoKQogeworICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zb3VyY2VT
ZXR0aW5nc0NoYW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+
dHJhY2tTZXR0aW5nc0NoYW5nZWQoKnRoaXMpOwogfQpAQCAtMjA1LDYgKzIyOSw5IEBAIHZvaWQg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiBtZWRpYVNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbWVkaWFTYW1wbGUuc2V0VHJh
Y2tJRChpZCgpKTsKKworICAgIC8vIFRoaXMgY2FsbCB3aWxsIHVzdWFsbHkgaGFwcGVuIGluIGNh
cHR1cmUgdGhyZWFkLgorICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJzTG9jayk7CiAg
ICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+
c2FtcGxlQnVmZmVyVXBkYXRlZCgqdGhpcywgbWVkaWFTYW1wbGUpOwogfQpAQCAtMjE5LDYgKzI0
Niw4IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgLy8gVGhpcyBjYWxsIHdpbGwgdXN1YWxseSBoYXBwZW4gaW4gY2Fw
dHVyZSB0aHJlYWQuCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vYnNlcnZlcnNMb2NrKTsKICAg
ICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5h
dWRpb1NhbXBsZXNBdmFpbGFibGUoKnRoaXMsIG1lZGlhVGltZSwgZGF0YSwgZGVzY3JpcHRpb24s
IHNhbXBsZUNvdW50KTsKIH0KQEAgLTIzNyw2ICsyNjYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjp1cGRhdGVSZWFkeVN0YXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9y
ZWFkeVN0YXRlID0gc3RhdGU7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9vYnNlcnZlcnNMb2Nr
KTsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2Vy
dmVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUu
aAppbmRleCAxMjQ2NzZjNzM5MjhiMDkxZDBkZTMwM2IxNjhjMjRhYzAzYzkyOWQ1Li5iMTcwNjNm
NGFlZDQzZmM5NDM2MjhjMTVmMDQ0NDRlMzQyOWExYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2
YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5j
bHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE0LDYgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZVJlYWR5U3RhdGUoKTsKIAorICAgIExvY2sgbV9vYnNlcnZlcnNMb2NrOwogICAg
IFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogICAgIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiBtX3NvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcAppbmRleCAwYTI4MjA5ZjdhNDQ3M2E5MGRjNzA3YjdmNDZiYWU4YTNiNzJjYWM4Li4xMDAx
ODUzOWQ1NzYzNWNiYjViMGIwZDdmMDE5OWQ3MDdhNGIxNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcApAQCAtMjM4LDIwICsyMzgsMjAgQEAgdm9pZCBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJiBzYW1wbGUpCiAgICAgQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZl
ciwgMCk7CiAgICAgYXV0byogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oQ1ZQ
aXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbEJ1ZmZlciwgMCkpOwogCi0gICAg
QVNTRVJUKG1fd2lkdGgpOwotICAgIEFTU0VSVChtX2hlaWdodCk7CisgICAgYXV0byB3aWR0aCA9
IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBoZWlnaHQgPSBD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKTsKIAotICAgIGF1dG8gbmV3QnVmZmVy
ID0gbV9idWZmZXJQb29sLkNyZWF0ZUJ1ZmZlcihtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgYXV0
byBuZXdCdWZmZXIgPSBtX2J1ZmZlclBvb2wuQ3JlYXRlQnVmZmVyKHdpZHRoLCBoZWlnaHQpOwog
ICAgIEFTU0VSVChuZXdCdWZmZXIpOwogICAgIGlmICghbmV3QnVmZmVyKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HKFdlYlJUQywgIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6dmlkZW9TYW1w
bGVBdmFpbGFibGUgdW5hYmxlIHRvIGFsbG9jYXRlIGJ1ZmZlciBmb3IgY29udmVyc2lvbiB0byBZ
VVYiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAocGl4ZWxGb3JtYXRUeXBlID09
IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpCi0gICAgICAgIHdlYnJ0Yzo6Q29udmVydFRvSTQy
MCh3ZWJydGM6OlZpZGVvVHlwZTo6a0FSR0IsIHNvdXJjZSwgMCwgMCwgbV93aWR0aCwgbV9oZWln
aHQsIDAsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgbmV3QnVmZmVyKTsKKyAgICAgICAgd2Vi
cnRjOjpDb252ZXJ0VG9JNDIwKHdlYnJ0Yzo6VmlkZW9UeXBlOjprQVJHQiwgc291cmNlLCAwLCAw
LCB3aWR0aCwgaGVpZ2h0LCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIG5ld0J1ZmZlcik7
CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChwaXhlbEZvcm1hdFR5cGUgPT0ga0NWUGl4ZWxG
b3JtYXRUeXBlXzMyQVJHQik7Ci0gICAgICAgIHdlYnJ0Yzo6Q29udmVydFRvSTQyMCh3ZWJydGM6
OlZpZGVvVHlwZTo6a0JHUkEsIHNvdXJjZSwgMCwgMCwgbV93aWR0aCwgbV9oZWlnaHQsIDAsIHdl
YnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCwgbmV3QnVmZmVyKTsKKyAgICAgICAgd2VicnRjOjpDb252
ZXJ0VG9JNDIwKHdlYnJ0Yzo6VmlkZW9UeXBlOjprQkdSQSwgc291cmNlLCAwLCAwLCB3aWR0aCwg
aGVpZ2h0LCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIG5ld0J1ZmZlcik7CiAgICAgfQog
ICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwgMCk7CiAgICAg
aWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBtX2N1cnJlbnRSb3RhdGlvbiAhPSB3ZWJydGM6
OmtWaWRlb1JvdGF0aW9uXzApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314979</attachid>
            <date>2017-07-10 08:13:43 -0700</date>
            <delta_ts>2017-07-10 08:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173864-20170710081342.patch</filename>
            <type>text/plain</type>
            <size>24846</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYzMGMxZjkwZTE3MTRj
ZDc5NzMyYjAyMWNjYjY5NTJmYmM3ZTAxYi4uMDFkZWRkZDRkM2E0ZWE0NTM4ZmMzMzJkNWUxM2U4
ZjI2NGFjOTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA3LTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91bGQgZG8gSUNF
IGNhbmRpZGF0ZSBmaWx0ZXJpbmcgYXQgdGhlIERvY3VtZW50IGxldmVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4NjEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMzMTIyMDU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRp
ZGF0ZS1jcm9zcy1vcmlnaW4tZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93
ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtc2FtZS1vcmlnaW4tZnJhbWUuaHRtbAorICAg
ICAgICAgICAgICAgd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWFmdGVyLXJlbG9hZC5o
dG1sCisKKyAgICAgICAgTW92aW5nIFJUQ0NvbnRyb2xsZXIgZnJvbSB0aGUgcGFnZSB0byB0aGUg
ZG9jdW1lbnQuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpc2FibGluZyBJQ0UgY2FuZGlkYXRlIGZp
bHRlcmluZyBmb3Igc29tZSBkb2N1bWVudHMgKHR5cGljYWxseSB0aGUgdG9wIGRvY3VtZW50IGFu
ZCBzYW1lIG9yaWdpbiBjaGlsZHJlbikKKyAgICAgICAgYnV0IG5vdCB0aGlyZC1wYXJ0eSBpZnJh
bWVzLgorICAgICAgICBUaGlzIGFsc28gYWxsb3dzIHJlZW5hYmxpbmcgSUNFIGNhbmRpZGF0ZSBm
aWx0ZXJpbmcgd2hlbiBuYXZpZ2F0aW5nL3JlbG9hZGluZyB0aGUgcGFnZSwgc2luY2UgYSBuZXcg
ZG9jdW1lbnQgd2lsbCBiZSBjcmVhdGVkLgorCisgICAgICAgIFRoZSBwYWdlIHN0b3JlcyB0aGUg
SUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgZGVmYXVsdCBvcHRpb24gZm9yIGRvY3VtZW50IFJUQ0Nv
bnRyb2xsZXIuCisgICAgICAgIFRoaXMgYWxsb3dzIGRpc2FibGluZyBJQ0UgY2FuZGlkYXRlIGZp
bHRlcmluZy4KKworICAgICAgICBSVENQZWVyQ29ubmVjdGlvbiBvZiBkb2N1bWVudHMgdGhhdCBh
cmUgc2FtZS1vcmlnaW4gYXMgdGhlIHRvcC1kb2N1bWVudCB3aWxsIHVzZSB0aGUgY29udHJvbGxl
ciBvZiB0aGUgdG9wLWRvY3VtZW50LgorICAgICAgICBSVENQZWVyQ29ubmVjdGlvbiBvZiBvdGhl
ciBkb2N1bWVudHMgd2lsbCB1c2UgdGhlaXIgZG9jdW1lbnQgY29udHJvbGxlci4KKworICAgICAg
ICBXaGVuIGEgZ2V0VXNlck1lZGlhIHJlcXVlc3QgaXMgZ3JhbnRlZCwgSUNFIGNhbmRpZGF0ZSBm
aWx0ZXJpbmcgaXMgZGlzYWJsZWQgZm9yIGJvdGggdGhlIGN1cnJlbnQgZG9jdW1lbnQgYW5kIHRo
ZSB0b3AgZG9jdW1lbnQuCisgICAgICAgIERpc2FibGluZyBmb3IgdGhlIGN1cnJlbnQgZG9jdW1l
bnQgd2lsbCBtYWtlIHNlbnNlIHdoZW4gc3VwcG9ydGluZyB0aGlyZC1wYXJ0eSBpZnJhbWVzIGFs
bG93VXNlck1lZGlhLgorCisgICAgICAgIEludGVybmFscyB3aWxsIG5vIGxvbmdlciBkaXNhYmxl
IElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIGJ5IGRlZmF1bHQuCisgICAgICAgIFRoaXMgYWxsb3dz
IHRlc3RpbmcgdGhlIGNhc2Ugb2YgcmVsb2FkaW5nIGEgcGFnZS4KKyAgICAgICAgSUNFIGNhbmRp
ZGF0ZSBmaWx0ZXJpbmcgaXMgZGlzYWJsZWQgZm9yIHRlc3RzIGluY2x1ZGluZyB0ZXN0aGFybmVz
c3JlcG9ydC5qcy4KKworCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0NvbnRyb2xsZXI6OmlzSUNFQ2FuZGlkYXRlRmlsdGVyaW5n
RW5hYmxlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6YWxsb3cpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJ0Y0NvbnRyb2xsZXIpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
bGliV2ViUlRDUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlzYWJsZUlDRUNh
bmRpZGF0ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjplbmFibGVJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNJQ0VDYW5kaWRhdGVG
aWx0ZXJpbmdFbmFibGVkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmlzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTctMDctMDcgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjE5MjU3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDkxMTZkMjBlYmRmZmMx
ZjBlMWM1YTY3ZWYzZjBjMGUxZGI2MTAyYjQuLjYwNDljMDc5ODBjMzNiN2MzODBiOTQyMWM5MzJi
NDY5YTBkNjBmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0wNy0wOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGRvIElD
RSBjYW5kaWRhdGUgZmlsdGVyaW5nIGF0IHRoZSBEb2N1bWVudCBsZXZlbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODYxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zMzEyMjA1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmluZyBJQ0UgY2FuZGlkYXRlIGZpbHRlcmluZyBoYW5kbGluZyBh
dCBVSVByb2Nlc3MgbGV2ZWwuCisgICAgICAgIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIGlzIG5v
dyBkaXNhYmxlZCBhdCBVc2VyTWVkaWFSZXF1ZXN0IGxldmVsLgorICAgICAgICBXZWJQYWdlIGtl
ZXBzIHN0b3JpbmcgdGhlIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nIG9wdGlvbiBzbyBhcyB0byBz
ZXQKKyAgICAgICAgdGhlIGRlZmF1bHQgb3B0aW9uIGNvcnJlY3RseSBmb3IgZXZlcnkgZG9jdW1l
bnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlh
U3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OmVuZGVk
Q2FwdHVyZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
Zyk6CisKIDIwMTctMDctMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBjbG9zZSBsaXN0ZW5pbmcgV2ViUlRDIHNvY2tl
dHMgd2hlbiBiZWluZyBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENDb250cm9sbGVyLmgKaW5kZXggYmFhOWVjZmI1NWE1YThhM2Y0OGY4Njlm
M2I4YzFjNDRkYmUwNzQwNS4uMDVkMDFiNGY0M2ZkYWYwZWFiZDQxOWJmMTM4MTRjNzcyODdkNzdj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb250
cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKKyAgICBib29sIGlzSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRmlsdGVySUNFQ2Fu
ZGlkYXRlczsgfQogCiBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFJUQ1BlZXJDb25uZWN0aW9uPj4gbV9wZWVyQ29ubmVjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDg3OTU3YTcyY2ZjNjMyZjdiZDJjNTBkZGI3MGQ1NTMyMmY1OGUxYzUuLjhhZmFhZWU2Mjcw
Y2E2ZWQyOTk0MDc3YTAzMDJkNjY5NTg2MzRhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC02OCw5
ICs2OCw5IEBAIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgLy8gTGV0J3MgbWFrZSBpdCB1
bmNvbGxlY3RhYmxlIHVudGlsIHRoZSBwYyBpcyBjbG9zZWQgYnkgSlMgb3IgdGhlIHBhZ2Ugc3Rv
cHMgaXQuCiAgICAgaWYgKCFwZWVyQ29ubmVjdGlvbi0+aXNDbG9zZWQoKSkgewogICAgICAgICBw
ZWVyQ29ubmVjdGlvbi0+c2V0UGVuZGluZ0FjdGl2aXR5KHBlZXJDb25uZWN0aW9uLnB0cigpKTsK
LQotICAgICAgICBhdXRvKiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2Uo
KTsKLSAgICAgICAgcGVlckNvbm5lY3Rpb24tPnJlZ2lzdGVyVG9Db250cm9sbGVyKHBhZ2UtPnJ0
Y0NvbnRyb2xsZXIoKSk7CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpOworICAgICAgICBhdXRvJiB0b3BEb2N1bWVudCA9IGRvY3VtZW50LnRvcERv
Y3VtZW50KCk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLT5yZWdpc3RlclRvQ29udHJvbGxlcihk
b2N1bWVudC5vcmlnaW4oKSA9PSB0b3BEb2N1bWVudC5vcmlnaW4oKSA/IHRvcERvY3VtZW50LnJ0
Y0NvbnRyb2xsZXIoKSA6IGRvY3VtZW50LnJ0Y0NvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIHJl
dHVybiBwZWVyQ29ubmVjdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGFjOTcyYjRmYzgzN2Ey
MDQwYzBiYmI2MjNkYWNhOGY1MGI4YTA3NzMuLjU1MDMzMDExYmE5MmUyZjVhNTAyOTA2N2QxNjY4
MjkzMDkzNTQ2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTg2LDYgKzE4NiwxMyBAQCB2b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6OmFsbG93KFN0cmluZyYmIGF1ZGlvRGV2aWNlVUlELCBTdHJpbmcmJiB2
aWRlb0RldmljZVVJRCwgUwogICAgIG1fdmlkZW9Db25zdHJhaW50cy5kZXZpY2VJREhhc2hTYWx0
ID0gV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOwogCiAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oV1RGTW92ZShjYWxs
YmFjayksIG1fYWxsb3dlZEF1ZGlvRGV2aWNlVUlELCBtX2FsbG93ZWRWaWRlb0RldmljZVVJRCwg
Jm1fYXVkaW9Db25zdHJhaW50cywgJm1fdmlkZW9Db25zdHJhaW50cyk7CisKKyAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgZG9jdW1lbnQucnRjQ29udHJvbGxlcigpLmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KTsKKyAgICBkb2N1bWVudC50b3BEb2N1bWVudCgpLnJ0Y0NvbnRyb2xsZXIoKS5kaXNhYmxlSUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGVueShN
ZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbiByZWFzb24sIGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0
cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2YjdiZTQyMzU4M2E2NTNmNDI0NDUz
OWY5NTY3MzlkZmVmNmJjYmQwLi45MTYzMTkzY2QzNjI1Mzc0NjdkNDhmNGI1NjYzYzY4MzQwNTFm
MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU0MCw2ICs1NDAsMTQgQEAgRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcywgdW5zaWcKIAogICAgIGZvciAoYXV0byYgbm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q291bnQgOiBtX25vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50cykKICAgICAgICAgbm9kZUxpc3RB
bmRDb2xsZWN0aW9uQ291bnQgPSAwOworCisgICAgaWYgKHBhZ2UoKSAmJiAhcGFnZSgpLT5pc0lD
RUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKSkKKyAgICAgICAgbV9ydGNDb250cm9sbGVyLmRp
c2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKK30KKworUlRDQ29udHJvbGxlciYgRG9jdW1l
bnQ6OnJ0Y0NvbnRyb2xsZXIoKQoreworICAgIHJldHVybiBtX3J0Y0NvbnRyb2xsZXI7CiB9CiAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDlmM2U1
ZDhkYWFjMzFmMmFkOTg1ZjE2OTcxZjY3ZjhmMGQ2MzJkODkuLmRlY2JmMTEwNjgwNTAyZjhlODRm
MWYyMDkwNTg0M2E2MjE3OWJmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VWaXNp
YmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCisjaW5jbHVkZSAiUlRD
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyUHRyLmgiCkBAIC0xMzY1LDYgKzEzNjYsOCBAQCBwdWJs
aWM6CiAgICAgLy8gUGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29i
c29sZXRlLmh0bWwjZG9tLWRvY3VtZW50LXJlbGVhc2VldmVudHMsIHRoaXMgbWV0aG9kIGRvZXMg
bm90aGluZy4KICAgICB2b2lkIHJlbGVhc2VFdmVudHMoKSB7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIFJUQ0NvbnRyb2xsZXImIHJ0Y0NvbnRyb2xsZXIoKTsKKwogcHJvdGVjdGVkOgogICAgIGVu
dW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vo
b2xkZXIgPSAxIDw8IDEgfTsKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2ln
bmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0g
MCk7CkBAIC0xODI5LDYgKzE4MzIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPcmllbnRh
dGlvbk5vdGlmaWVyIG1fb3JpZW50YXRpb25Ob3RpZmllcjsKKyAgICBSVENDb250cm9sbGVyIG1f
cnRjQ29udHJvbGxlcjsKIAogICAgIHN0YXRpYyBib29sIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVj
dENhY2hlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNGI5ZGQ5YTZhNzBmYzkxN2Y2NDhlNTAyOTky
Y2IwYzQ5YmE5Y2VmYy4uMWYxOThmN2Y3ZDEyZWRhMzZkMTBjMTdlNDY3ZGUwNTExYWNhMzYxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTIyOCw3ICsyMjgsNiBAQCBwdWJsaWM6CiAgICAgUG9pbnRlckxv
Y2tDb250cm9sbGVyJiBwb2ludGVyTG9ja0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9w
b2ludGVyTG9ja0NvbnRyb2xsZXI7IH0KICNlbmRpZgogICAgIExpYldlYlJUQ1Byb3ZpZGVyJiBs
aWJXZWJSVENQcm92aWRlcigpIHsgcmV0dXJuIG1fbGliV2ViUlRDUHJvdmlkZXIuZ2V0KCk7IH0K
LSAgICBSVENDb250cm9sbGVyJiBydGNDb250cm9sbGVyKCkgeyByZXR1cm4gbV9ydGNDb250cm9s
bGVyOyB9CiAgICAgUGVyZm9ybWFuY2VNb25pdG9yKiBwZXJmb3JtYW5jZU1vbml0b3IoKSB7IHJl
dHVybiBtX3BlcmZvcm1hbmNlTW9uaXRvci5nZXQoKTsgfQogCiAgICAgVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQqIHZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV92YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5nZXQoKTsgfQpAQCAtNjAzLDYgKzYwMiwxMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldExvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlkZUZvclRlc3Rpbmcoc3RkOjpv
cHRpb25hbDxib29sPik7CiAKKyAgICB2b2lkIGRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KSB7IG1fZW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nID0gZmFsc2U7IH0KKyAgICB2b2lkIGVu
YWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpIHsgbV9lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJp
bmcgPSB0cnVlOyB9CisgICAgYm9vbCBpc0lDRUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2VuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZzsgfQorCiBwcml2YXRl
OgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgU3RyaW5nIGRvbWFpbjsKQEAgLTY3
Nyw3ICs2ODAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFN0YXRlVHJh
Y2tlcj4gbV93ZWJHTFN0YXRlVHJhY2tlcjsKIAogICAgIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92
aWRlcj4gbV9saWJXZWJSVENQcm92aWRlcjsKLSAgICBSVENDb250cm9sbGVyIG1fcnRjQ29udHJv
bGxlcjsKIAogICAgIGludCBtX25lc3RlZFJ1bkxvb3BDb3VudCB7IDAgfTsKICAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4gbV91bm5lc3RDYWxsYmFjazsKQEAgLTgyMyw2ICs4MjUsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbj4gbV9uYXZpZ2F0aW9uVG9Mb2dXaGVu
VmlzaWJsZTsKIAogICAgIGJvb2wgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2VuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZyB7IHRydWUgfTsKIH07CiAKIGlu
bGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBjNjExYTE2ZDBiMzk2NzRiYzU1NjliYjcyMWRhYTBkODE2MGU1NDU5Li4zMGNh
ODRhN2Y2NWFlYzQ0M2UwNWFjNjUxMTFhNDE5MTBjNjBmNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC00OTEsMTAgKzQ5MSw2IEBAIEludGVybmFsczo6SW50ZXJuYWxz
KERvY3VtZW50JiBkb2N1bWVudCkKICNpZiBVU0UoT1BFTldFQlJUQykKICAgICBlbmFibGVNb2Nr
TWVkaWFFbmRwb2ludCgpOwogI2VuZGlmCi0jaWYgVVNFKExJQldFQlJUQykKLSAgICBpZiAoZG9j
dW1lbnQucGFnZSgpKQotICAgICAgICBkb2N1bWVudC5wYWdlKCktPnJ0Y0NvbnRyb2xsZXIoKS5k
aXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7Ci0jZW5kaWYKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTEzMjgsMTcgKzEzMjQsMTggQEAgdm9p
ZCBJbnRlcm5hbHM6OnVzZU1vY2tSVENQZWVyQ29ubmVjdGlvbkZhY3RvcnkoY29uc3QgU3RyaW5n
JiB0ZXN0Q2FzZSkKIAogdm9pZCBJbnRlcm5hbHM6OnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZyhi
b29sIGVuYWJsZWQpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7Ci0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQot
ICAgICAgICByZXR1cm47Ci0gICAgYXV0byYgcnRjQ29udHJvbGxlciA9IHBhZ2UtPnJ0Y0NvbnRy
b2xsZXIoKTsKKyAgICBhdXRvJiBydGNDb250cm9sbGVyID0gY29udGV4dERvY3VtZW50KCktPnJ0
Y0NvbnRyb2xsZXIoKTsKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgcnRjQ29udHJvbGxlci5l
bmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsKICAgICBlbHNlCiAgICAgICAgIHJ0Y0NvbnRy
b2xsZXIuZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOwogfQogCitib29sIEludGVybmFs
czo6aXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y29udGV4dERvY3VtZW50KCktPnJ0Y0NvbnRyb2xsZXIoKS5pc0lDRUNhbmRpZGF0ZUZpbHRlcmlu
Z0VuYWJsZWQoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldEVudW1lcmF0aW5nQWxsTmV0d29y
a0ludGVyZmFjZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzA1YTg1YWE5ODY0ODY2NGQ2Mjk1NWQ5
MDEwYTEwZDQ5ZDMzMTYzYi4uOGZjNDFhNjAyZTZlMjFhNDliYjVkOGM0MTU1ZmViNzc1MzVkOWM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC00MzYsNiArNDM2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW11bGF0ZVJUQ1BlZXJDb25uZWN0aW9uUGxhdGZvcm1FdmVudChSVENQ
ZWVyQ29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKICAgICB2b2lkIHVzZU1vY2tS
VENQZWVyQ29ubmVjdGlvbkZhY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJQ0VD
YW5kaWRhdGVGaWx0ZXJpbmcoYm9vbCk7CisgICAgYm9vbCBpc0lDRUNhbmRpZGF0ZUZpbHRlcmlu
Z0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVy
ZmFjZXNFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RvcFBlZXJDb25uZWN0aW9uKFJUQ1BlZXJD
b25uZWN0aW9uJik7CiAgICAgdm9pZCBhcHBseVJvdGF0aW9uRm9yT3V0Z29pbmdWaWRlb1NvdXJj
ZXMoUlRDUGVlckNvbm5lY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCAxNzIyZTIxNWE0MjQ3MWEyMjYwNWZmMGNiOTdjYmUxNzBjOTNmZTdkLi43ZGUwZGVhZDI5
NDkwMGM3YjJkYjE2MTlhNGUyMDRmNjhiY2FhMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC00NjAsNiArNDYwLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlv
ciB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHZvaWQgZW11bGF0ZVJUQ1BlZXJDb25uZWN0
aW9uUGxhdGZvcm1FdmVudChSVENQZWVyQ29ubmVjdGlvbiBjb25uZWN0aW9uLCBET01TdHJpbmcg
YWN0aW9uKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdm9pZCB1c2VNb2NrUlRDUGVlckNv
bm5lY3Rpb25GYWN0b3J5KERPTVN0cmluZyB0ZXN0Q2FzZSk7CiAgICAgW0NvbmRpdGlvbmFsPVdF
Ql9SVENdIHZvaWQgc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nKGJvb2xlYW4gZW5hYmxlZCk7Cisg
ICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIGJvb2xlYW4gaXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdF
bmFibGVkKCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHZvaWQgc2V0RW51bWVyYXRpbmdB
bGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdm9pZCBzdG9wUGVlckNvbm5lY3Rpb24oUlRDUGVlckNvbm5lY3Rpb24g
Y29ubmVjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDU3ODc2YWI2ZTUwMzllMWJjNDZjMjE4YjBmODhj
ZTFlZTQ4MWNiZmQuLjk3NzcxY2ZhNGE0NTc1MzE3M2IzMzgwYmJkZTljODUwYjc1ZTAzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmNwcApAQCAtMTQ4LDExICsxNDgsNiBAQCB2b2lkIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
Ojp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0oVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYQogCiAg
ICAgdW5zaWduZWQgY3VycmVudEV4dGVuc2lvbnMgPSBzdGF0ZS5zYW5kYm94RXh0ZW5zaW9uc0dy
YW50ZWQoKTsKIAotI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQotICAgIGlm
IChjdXJyZW50RXh0ZW5zaW9ucyA9PSBQcm9jZXNzU3RhdGU6OlNhbmRib3hFeHRlbnNpb25zR3Jh
bnRlZDo6Tm9uZSAmJiAod2l0aEF1ZGlvIHx8IHdpdGhWaWRlbykpCi0gICAgICAgIHByb2Nlc3NT
dGFydGluZ0NhcHR1cmUuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZygpLCBwcm94eS5wYWdlKCkucGFnZUlEKCkpOwotI2VuZGlmCi0KICAgICBpZiAo
IShyZXF1aXJlZEV4dGVuc2lvbnMgJiBjdXJyZW50RXh0ZW5zaW9ucykpIHsKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKICAgICAgICAgaGFuZGxlcy5hbGxv
Y2F0ZShleHRlbnNpb25Db3VudCk7CkBAIC0yMTcsMTIgKzIxMiw2IEBAIHZvaWQgVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXI6OmVuZGVkQ2FwdHVyZVNlc3Npb24oVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hCiAgICAgaWYgKHBhcmFtcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQotICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgb25seSBkbyBFbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcgd2hlbiB0aGUgcGFnZSBp
cyBiZWluZyByZWxvYWRlZC4KLSAgICBpZiAoY3VycmVudEV4dGVuc2lvbnMgPT0gUHJvY2Vzc1N0
YXRlOjpTYW5kYm94RXh0ZW5zaW9uc0dyYW50ZWQ6Ok5vbmUpCi0gICAgICAgIHByb3h5LnBhZ2Uo
KS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5hYmxlSUNFQ2FuZGlkYXRlRmls
dGVyaW5nKCksIHByb3h5LnBhZ2UoKS5wYWdlSUQoKSk7Ci0jZW5kaWYKLQogICAgIHN0YXRlLnNl
dFNhbmRib3hFeHRlbnNpb25zR3JhbnRlZChjdXJyZW50RXh0ZW5zaW9ucyk7CiAgICAgcHJveHku
cGFnZSgpLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXZva2VVc2VyTWVkaWFE
ZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhwYXJhbXMpLCBwcm94eS5wYWdlKCkucGFnZUlEKCkpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNTFkODc3YmY4NjkyZmJkNTY2YTJjMWM1ODE2ZTczZjFlYWRiODdjNS4uMzY5Y2MyYjg1
M2Y5MGY5MjcwMWU2ZGFmMmIwZjc1MGUwMzM3YjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTc2LDEyICs1NzYsMTIgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogI2lmIEVOQUJMRShXRUJfUlRDKQogdm9pZCBXZWJQYWdlOjpkaXNhYmxlSUNF
Q2FuZGlkYXRlRmlsdGVyaW5nKCkKIHsKLSAgICBtX3BhZ2UtPnJ0Y0NvbnRyb2xsZXIoKS5kaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7CisgICAgbV9wYWdlLT5kaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZW5hYmxlSUNFQ2FuZGlkYXRlRmls
dGVyaW5nKCkKIHsKLSAgICBtX3BhZ2UtPnJ0Y0NvbnRyb2xsZXIoKS5kaXNhYmxlSUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKCk7CisgICAgbV9wYWdlLT5lbmFibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmco
KTsKIH0KIAogI2lmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDU2MjBhMDRlYjNjOWEwZTI5YmM2
YjkxMGM0OTg0YWM4YWE2ZjkzNS4uODQ3ZWRiOWQyN2I2MzVhODU0ZGQ1MTI0NDI4OTI4ZmJjNTQ0
OGI4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA3LTA5ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91bGQgZG8gSUNFIGNhbmRpZGF0ZSBm
aWx0ZXJpbmcgYXQgdGhlIERvY3VtZW50IGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4NjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
MTIyMDU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtY3Jvc3Mtb3JpZ2lu
LWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJydGMv
ZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtY3Jvc3Mtb3JpZ2luLWZyYW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLXNhbWUt
b3JpZ2luLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtc2FtZS1vcmlnaW4tZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5k
aWRhdGUtZmlsdGVyaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2VicnRj
L3Jlc291cmNlcy9kby1nZXQtdXNlci1tZWRpYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiByZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM6IERpc2FibGVkIElDRSBjYW5kaWRhdGUgZmlsdGVy
aW5nIGJ5IGRlZmF1bHQuCisgICAgICAgICogd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRl
LWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9maWx0
ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbDogQWRkZWQuCisKIDIwMTctMDct
MDcgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjE5MjU3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtY3Jvc3Mtb3JpZ2luLWZyYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2Fu
ZGlkYXRlLWNyb3NzLW9yaWdpbi1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk3NmIx
MjA5MjEwY2M2NTJmMjU0YjgzY2U0NzUzNjMxNGY3YmJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLWNyb3Nz
LW9yaWdpbi1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5k
aWRhdGUtY3Jvc3Mtb3JpZ2luLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1jcm9zcy1vcmlnaW4tZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YmRiOTQwODEwZjViZjgxYzk4NzA0MDVlZmM3OGY2OTdjODY5MmY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1j
YW5kaWRhdGUtY3Jvc3Mtb3JpZ2luLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICA8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2
ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJnZXRVc2VyTWVkaWEgZG9uZSIpIHsK
KyAgICAgICAgY2hlY2suaW5uZXJIVE1MID0gIjxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0
OjgwMDAvd2VicnRjL3Jlc291cmNlcy9jaGVjay1pY2UtY2FuZGlkYXRlLWZpbHRlcmluZy5odG1s
Jz48L2lmcmFtZT4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5pbm5lckhU
TUwgPSBldmVudC5kYXRhID09PSAiZmlsdGVyaW5nIGVuYWJsZWQiID8gIlBBU1MiIDogIkZBSUwi
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9LCBmYWxzZSk7CisKKyAgPC9zY3JpcHQ+CisgIDxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+CisgIDxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9InJlc291cmNlcy9kby1nZXQtdXNlci1tZWRp
YS5odG1sIj48L2lmcmFtZT4KKyAgPGRpdiBpZD0iY2hlY2siPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5n
LWljZS1jYW5kaWRhdGUtc2FtZS1vcmlnaW4tZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtc2FtZS1vcmlnaW4t
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5Y2ZjNWE5OGRiNzRmYmUzMmFjOWI2Nzhh
NjEzNGFmOTczNmRkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1zYW1lLW9yaWdpbi1mcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmluZy1pY2UtY2FuZGlkYXRlLXNhbWUtb3JpZ2luLWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRp
ZGF0ZS1zYW1lLW9yaWdpbi1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YzUxYWI5NWY5NzQxYWJi
NjFlNWU4OTFlZTNkM2EwMjcwYjc1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1zYW1lLW9yaWdpbi1mcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KyAgPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCit3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGlmIChldmVudC5k
YXRhID09PSAiZ2V0VXNlck1lZGlhIGRvbmUiKSB7CisgICAgICAgIGNoZWNrLmlubmVySFRNTCA9
ICI8aWZyYW1lIHNyYz0ncmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmlsdGVyaW5nLmh0
bWwnPjwvaWZyYW1lPiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2hlY2suaW5uZXJI
VE1MID0gIiI7CisgICAgcmVzdWx0LmlubmVySFRNTCA9IGV2ZW50LmRhdGEgPT09ICJmaWx0ZXJp
bmcgZGlzYWJsZWQiID8gIlBBU1MiIDogIkZBSUwiOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7CisKKyAgPC9z
Y3JpcHQ+CisgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisgIDxkaXYgaWQ9ImNoZWNrIj4KKyAg
ICA8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJyZXNvdXJjZXMvZG8tZ2V0LXVzZXItbWVkaWEuaHRt
bCI+PC9pZnJhbWU+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUt
ZmlsdGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnJ0Yy9yZXNvdXJjZXMv
Y2hlY2staWNlLWNhbmRpZGF0ZS1maWx0ZXJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzkzOWI4ZjQ5
MzBkYTUwMzY5Y2RmN2MzMTNlY2NmMTE5NmExOTA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJydGMvcmVzb3VyY2VzL2NoZWNrLWljZS1jYW5kaWRhdGUtZmls
dGVyaW5nLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdhdGhlckNhbmRpZGF0ZXMocGMpCit7CisgICAgdmFy
IGNhbmRpZGF0ZXMgPSBbXTsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geworICAgICAg
ICAgICAgaWYgKGV2ZW50LmNhbmRpZGF0ZSA9PT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJl
c29sdmUoY2FuZGlkYXRlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUp
OworICAgICAgICB9OworICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7
CisgICAgICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworcGMuY3Jl
YXRlRGF0YUNoYW5uZWwoIiIpOworCitnYXRoZXJDYW5kaWRhdGVzKHBjKS50aGVuKChjYW5kaWRh
dGVzKSA9PiB7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKGNhbmRpZGF0ZXMubGVuZ3RoID8gImZp
bHRlcmluZyBkaXNhYmxlZCIgOiAiZmlsdGVyaW5nIGVuYWJsZWQiLCAiKiIpOworfSk7Cis8L3Nj
cmlwdD4KKzxkaXY+Q2hlY2tpbmcgSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmc8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnJ0
Yy9yZXNvdXJjZXMvZG8tZ2V0LXVzZXItbWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2VicnRjL3Jlc291cmNlcy9kby1nZXQtdXNlci1tZWRpYS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
NzVmMGY2NzYxMjVmZGZkMTY2MTcwOWQyZjRiNTJmMWE3YzljZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnJ0Yy9yZXNvdXJjZXMvZG8tZ2V0LXVzZXItbWVk
aWEuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8c2NyaXB0PgorbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRy
dWUsIHZpZGVvOnRydWV9KS50aGVuKCgpID0+IHsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImdl
dFVzZXJNZWRpYSBkb25lIiwgIioiKTsKK30pOworPC9zY3JpcHQ+Cis8ZGl2PkNhbGxpbmcgZ2V0
VXNlck1lZGlhLCBwbGVhc2UgZ3JhbnQgYWNjZXNzPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzCmluZGV4IDU2NmVm
ZDVkNzExMmIwYTMzZjE3ZGE3NGQ2YjBlOTQ5ZGIxMGUxOTcuLjkwZDcxMzQ1NTc5ZGQ0N2RlM2M3
NTkxOTM3YjhlYzVkMzZlNjY4ZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMKQEAgLTIzLDYgKzIzLDEwIEBAIGlmIChzZWxmLnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgc2V0VGltZW91dCh0aW1lb3V0LCB0ZXN0UnVubmVyLnRpbWVvdXQgKiAwLjkpOwogfQog
CitpZiAoc2VsZi5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldElDRUNhbmRpZGF0ZUZpbHRl
cmluZyhmYWxzZSk7CisKKwogLy8gRnVuY3Rpb24gdXNlZCB0byBjb252ZXJ0IHRoZSB0ZXN0IHN0
YXR1cyBjb2RlIGludG8KIC8vIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZwogZnVuY3Rpb24gY29u
dmVydFJlc3VsdChyZXN1bHRTdGF0dXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
ZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlkYTdjYjZmYWUxN2Y4MmRjZWUzNDE4M2NlMWQ0ZWFkYWVhMGEy
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1j
YW5kaWRhdGUtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMg
dGVzdCByZXF1aXJlcyBpbnRlcm5hbHMuIEl0IGNoZWNrcyB0aGF0IGFmdGVyIHJlbG9hZCwgd2Ug
YXJlIGJhY2sgdG8gZmlsdGVyaW5nIGljZSBjYW5kaWRhdGUuCitQQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVsb2FkLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRhdGUtYWZ0ZXItcmVs
b2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODU5ODQ3YTlmMmY2MDc0MGM2YzFhY2YyNDRmYTZlMzBlNzU1
ZTNjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNl
LWNhbmRpZGF0ZS1hZnRlci1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit9CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5kb3cubG9jYWxTdG9yYWdl
LmdldEl0ZW0oImFmdGVyLXJlbG9hZCIpID09IG51bGwpIHsKKyAgICAgICAgd2luZG93LmxvY2Fs
U3RvcmFnZS5zZXRJdGVtKCJhZnRlci1yZWxvYWQiLCAidHJ1ZSIpCisgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscy5pc0lDRUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKSkgeworICAgICAg
ICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMLCBpbml0aWFsIGljZSBjYW5kaWRhdGUgZmls
dGVyaW5nIGlzIG9mZiI7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMuaXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMLCBpY2UgY2FuZGlk
YXRlIGZpbHRlcmluZyBhZnRlciBnZXRVc2VyTWVkaWEgaXMgb24iOworICAgICAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGludGVybmFscy5mb3JjZVJlbG9hZCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5jbGVhcigpOworICAg
ICAgICByZXN1bHQuaW5uZXJIVE1MID0gd2luZG93LmludGVybmFscy5pc0lDRUNhbmRpZGF0ZUZp
bHRlcmluZ0VuYWJsZWQoKSA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Owor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQodGVzdCwgMCk7
Ij4KKyAgPGRpdj5UaGlzIHRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzLiBJdCBjaGVja3MgdGhhdCBh
ZnRlciByZWxvYWQsIHdlIGFyZSBiYWNrIHRvIGZpbHRlcmluZyBpY2UgY2FuZGlkYXRlLjwvZGl2
PgorICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>