<?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>175410</bug_id>
          
          <creation_ts>2017-08-09 16:54:40 -0700</creation_ts>
          <short_desc>[Beacon] Do connect-src CSP check on redirects as well</short_desc>
          <delta_ts>2017-08-10 14:51:20 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://w3c.github.io/webappsec-csp/#directive-connect-src</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337219</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-09 16:54:40 -0700</bug_when>
    <thetext>Do connect-src CSP check on sendBeacon redirects as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337222</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-09 16:55:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/33815470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337491</commentid>
    <comment_count>2</comment_count>
      <attachid>317821</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 10:52:36 -0700</bug_when>
    <thetext>Created attachment 317821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337494</commentid>
    <comment_count>3</comment_count>
      <attachid>317824</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 10:57:57 -0700</bug_when>
    <thetext>Created attachment 317824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337529</commentid>
    <comment_count>4</comment_count>
      <attachid>317824</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-10 12:02:08 -0700</bug_when>
    <thetext>Comment on attachment 317824
Patch

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

&gt; Source/WebCore/loader/cache/CachedResource.cpp:266
&gt; +        auto* contentSecurityPolicy = document &amp;&amp; !document-&gt;shouldBypassMainWorldContentSecurityPolicy() ? document-&gt;contentSecurityPolicy() : nullptr;

I guess this code is fine since beacon is only exposed in document.
But it goes somehow against the idea of CachedResource being something that relates to a loading context, which is not always a document.
Maybe worth a comment.

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:191
&gt; +            m_contentSecurityPolicy-&gt;didReceiveHeaders(*m_parameters.cspResponseHeaders, ContentSecurityPolicy::ReportParsingErrors::No);

Do we always need to create m_contentSecurityPolicy?
If m_parameters.cspResponseHeaders is null, does not it mean we do not need to do CSP checks?

&gt; Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h:62
&gt; +    void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&amp;, Ref&lt;WebCore::SecurityOrigin&gt;&amp;&amp; sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&amp;) override;

Can we make WebResourceLoadScheduler final and change override to final here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337547</commentid>
    <comment_count>5</comment_count>
      <attachid>317824</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 12:47:32 -0700</bug_when>
    <thetext>Comment on attachment 317824
Patch

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

&gt;&gt; Source/WebCore/loader/cache/CachedResource.cpp:266
&gt;&gt; +        auto* contentSecurityPolicy = document &amp;&amp; !document-&gt;shouldBypassMainWorldContentSecurityPolicy() ? document-&gt;contentSecurityPolicy() : nullptr;
&gt; 
&gt; I guess this code is fine since beacon is only exposed in document.
&gt; But it goes somehow against the idea of CachedResource being something that relates to a loading context, which is not always a document.
&gt; Maybe worth a comment.

Actually, I can get a contentSecurityPolicy from any ScriptExecutionContext, not just the document. I&apos;ll look at making this clearer.

&gt;&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:191
&gt;&gt; +            m_contentSecurityPolicy-&gt;didReceiveHeaders(*m_parameters.cspResponseHeaders, ContentSecurityPolicy::ReportParsingErrors::No);
&gt; 
&gt; Do we always need to create m_contentSecurityPolicy?
&gt; If m_parameters.cspResponseHeaders is null, does not it mean we do not need to do CSP checks?

Yes, this is the point. m_parameters.cspResponseHeaders is null when document-&gt;shouldBypassMainWorldContentSecurityPolicy() is true.

&gt;&gt; Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.h:62
&gt;&gt; +    void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&amp;, Ref&lt;WebCore::SecurityOrigin&gt;&amp;&amp; sourceOrigin, WebCore::ContentSecurityPolicy*, const WebCore::FetchOptions&amp;) override;
&gt; 
&gt; Can we make WebResourceLoadScheduler final and change override to final here?

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337553</commentid>
    <comment_count>6</comment_count>
      <attachid>317824</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 12:54:43 -0700</bug_when>
    <thetext>Comment on attachment 317824
Patch

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

&gt;&gt;&gt; Source/WebCore/loader/cache/CachedResource.cpp:266
&gt;&gt;&gt; +        auto* contentSecurityPolicy = document &amp;&amp; !document-&gt;shouldBypassMainWorldContentSecurityPolicy() ? document-&gt;contentSecurityPolicy() : nullptr;
&gt;&gt; 
&gt;&gt; I guess this code is fine since beacon is only exposed in document.
&gt;&gt; But it goes somehow against the idea of CachedResource being something that relates to a loading context, which is not always a document.
&gt;&gt; Maybe worth a comment.
&gt; 
&gt; Actually, I can get a contentSecurityPolicy from any ScriptExecutionContext, not just the document. I&apos;ll look at making this clearer.

Hmm... This method takes in a CachedResourceLoader which seems to be tied to a document, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337554</commentid>
    <comment_count>7</comment_count>
      <attachid>317837</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 12:55:29 -0700</bug_when>
    <thetext>Created attachment 317837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337556</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-10 13:05:01 -0700</bug_when>
    <thetext>&gt; &gt; Do we always need to create m_contentSecurityPolicy?
&gt; &gt; If m_parameters.cspResponseHeaders is null, does not it mean we do not need to do CSP checks?
&gt; 
&gt; Yes, this is the point. m_parameters.cspResponseHeaders is null when
&gt; document-&gt;shouldBypassMainWorldContentSecurityPolicy() is true.

When document-&gt;shouldBypassMainWorldContentSecurityPolicy() is true, we are currently creating an empty m_contentSecurityPolicy and calling allowConnectToSource on it.

What is done in WebCore is that we are not calling at all allowConnectToSource if document-&gt;shouldBypassMainWorldContentSecurityPolicy() is true.

It seems to me we should return a null m_contentSecurityPolicy if m_parameters.cspResponseHeaders is null.
Or probably better add a checkCSP routine that would return true if m_parameters.cspResponseHeaders is null.


&gt; Hmm... This method takes in a CachedResourceLoader which seems to be tied to
&gt; a document, isn&apos;t it?

Yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337581</commentid>
    <comment_count>9</comment_count>
      <attachid>317841</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-10 14:08:21 -0700</bug_when>
    <thetext>Created attachment 317841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337608</commentid>
    <comment_count>10</comment_count>
      <attachid>317841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-10 14:51:19 -0700</bug_when>
    <thetext>Comment on attachment 317841
Patch

Clearing flags on attachment: 317841

Committed r220549: &lt;http://trac.webkit.org/changeset/220549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337609</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-10 14:51:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317821</attachid>
            <date>2017-08-10 10:52:36 -0700</date>
            <delta_ts>2017-08-10 10:57:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175410-20170810105236.patch</filename>
            <type>text/plain</type>
            <size>33204</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMwZTRmMGZmMmRjMGZl
ZDgxZjcyMjIwMGI3MmQ0ZjQwODAzYTFhOC4uMDJlNTQyZTE2YjI3MGE2ZTM5N2QwY2Y2NDJiNGYw
MzUxYjM0YmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA4LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVj
dC1zcmMgQ1NQIGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMzODE1NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5IG9iamVjdCB0byBjcmVhdGVQaW5nSGFu
ZGxlIHNvIHRoYXQgd2UgY2FuIHNlbmQKKyAgICAgICAgZW5vdWdoIGRhdGEgdG8gdGhlIE5ldHdv
cmtQcm9jZXNzIHNvIGRvIENTUCBjaGVja3MgZm9yIFBpbmcgbG9hZHMgc3VjaAorICAgICAgICBh
cyBCZWFjb24uIEZvciB0aGUgSVBDLCB3ZSBzZXJpYWxpemUgdGhlIENvbnRlbnRTZWN1cml0eVBv
bGljeSdzIHJlc3BvbnNlCisgICAgICAgIGhlYWRlcnMuIFRob3NlIGhlYWRlcnMgYXJlIG5vdyBj
YWNoZWQgaW4gQ29udGVudFNlY3VyaXR5UG9saWN5IGZvcgorICAgICAgICBwZXJmb3JtYW5jZSBy
ZWFzb25zLiBDU1AgaGVhZGVycyBhcmUgcmFyZWx5IHVwZGF0ZWQgaW4gcHJhY3RpY2UgYnV0Cisg
ICAgICAgIHNlbmRCZWFjb24oKSBtYXkgZ2V0IGNhbGxlZCByZXBlYXRlZGx5IGZvciBhIGdpdmVu
IGRvY3VtZW50LgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMt
YmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbAorCisg
ICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL1BpbmdM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGlu
Z0xvYWRlcjo6c3RhcnRQaW5nTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlc3BvbnNlSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpkZWNvZGUpOgorCiAyMDE3LTA4
LTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dU
Rl0gTW92ZSBUZXh0U3RyZWFtIGludG8gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmMDg0NjZjMzdjMTRiZmRi
MjcyZGVhMjk5ODRlMGQ0Yzc2ZGQxOGQuLmFmNTc3MzZhOWYyYzBlMzQwYjI1NzUxMDIzMWJhMTRh
NDIyNTQ2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDgtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNy
YyBDU1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM4MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFzcyBDU1AgUmVzcG9uc2UgaGVhZGVycyB0byB0aGUgTmV0d29ya1Byb2Nlc3MgdmlhIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzCisgICAgICAgIHdoZW4gZG9pbmcgYSBQaW5nTG9h
ZC4gVGhpcyBhbGxvd3MgUGluZ0xvYWQgdG8gZG8gQ1NQIGNoZWNrcyAoaW4gcGFydGljdWxhcgor
ICAgICAgICBjb25uZWN0LXNyYyBvbmVzKSBpbiBjYXNlIHRoZSBwaW5nIGxvYWQgZ2V0cyByZWRp
cmVjdGVkLiBUaG9zZSBjaGVja3MgbmVlZCB0byBiZQorICAgICAgICBkb25lIG9uIHRoZSBOZXR3
b3JrUHJvY2VzcyBzaWRlIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSB0aGVyZSBpcyBubyBndWFyYW50
ZWUgdGhlCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyBzdGlsbCBhcm91bmQuCisKKyAg
ICAgICAgVG8gZG8gdGhlIENTUCBjaGVja3MsIFBpbmdMb2FkIGxhemlseSByZWNvbnN0cnVjdHMg
YSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0CisgICAgICAgIGZyb20gdGhlIENTUCByZXNw
b25zZSBoZWFkZXJzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpjb250ZW50U2VjdXJpdHlQ
b2xpY3kpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCiAyMDE3LTA4LTA5ICBKZXJlbXkg
Sm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZhbGlkYXRlIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIgaW4gc2FtZSBmYXNoaW9uIGFzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGJhZmUxNGNlNmMxYTYxNTEyN2JjNGI5MGFhOWMxYTg5
Y2NhMDhlNDUuLjYzNmY1YzFmNjcwNDA1ZWRkYzAwZjljZDY3NmY0NTA3YzAyOTQwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMTAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNyYyBD
U1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM4
MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNyZWF0ZVBpbmdIYW5kbGUoKSB0byB0YWtlIGluIENvbnRlbnRTZWN1cml0eVBvbGlj
eQorICAgICAgICBvYmplY3QgaW4gYnV0IG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgV0sxLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTct
MDgtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmVhY29u
XSBBZGQgc3VwcG9ydCBmb3IgQ09SUy1wcmVmbGlnaHRpbmcgZm9yIFdLMiAvIE5FVFdPUktfU0VT
U0lPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4NjNhYTljNGRm
YjA5MmExMzVlMzFiNDAwOTg1YWViOTE4M2JlMWMyLi5jNGRiN2ExYmYwM2E4NDRhZmEzYWZhY2Yy
MTQyZGE2NmUxZTVmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVy
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQZW5k
aW5nUmVxdWVzdHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShO
ZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGlj
eSosIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZURl
cml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDg5YmJhZGU2ZTVj
YWQzM2Q2M2Q0YzRlMzEwYzA1OGFkNmUzYjIzYTcuLjhlNTE2OWI1MGVmYjFhZjExZTc3NzcwM2Zl
YWZiMWY5NjU5OTA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7
CiAgICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KTsKIAotICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QsIGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCksIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBp
bmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZ
ZXMpOwogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGluZwpAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxv
d1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1
bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMpOwogfQogCiB2b2lkIFBpbmdMb2FkZXI6
OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwg
UmVmPEZvcm1EYXRhPiYmIHJlcG9ydCwgVmlvbGF0aW9uUmVwb3J0VHlwZSByZXBvcnRUeXBlKQpA
QCAtMTc2LDEwICsxNzYsMTAgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0
KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZjxGb3IKICAgICBpZiAoIXJl
ZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwogCi0gICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpObyk7CisgICAgc3RhcnRQaW5nTG9h
ZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQsIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6Tm8pOwog
fQogCi12b2lkIFBpbmdMb2FkZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIFNob3VsZEZv
bGxvd1JlZGlyZWN0cyBzaG91bGRGb2xsb3dSZWRpcmVjdHMpCit2b2lkIFBpbmdMb2FkZXI6OnN0
YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3Vt
ZW50JiBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHNob3VsZEZvbGxvd1JlZGlyZWN0
cykKIHsKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS5wYWdlKCktPnByb2dy
ZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIC8vIEZJWE1FOiBXaHkgYWN0aXZl
RG9jdW1lbnRMb2FkZXI/IEkgd291bGQgaGF2ZSBleHBlY3RlZCBkb2N1bWVudExvYWRlcigpLgpA
QCAtMTk0LDcgKzE5NCw4IEBAIHZvaWQgUGluZ0xvYWRlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYg
ZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKGZyYW1lLCBpZGVudGlm
aWVyLCBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlKCkpOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQo
KSwgcmVxdWVzdCwgc291cmNlT3JpZ2luLCBvcHRpb25zKTsKKyAgICBhdXRvKiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBkb2N1bWVudC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSA/IG51bGxwdHIgOiBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hh
bmRsZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG9wdGlvbnMpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCA5NzM1NGZiMzc4ZThlNzU0YjVm
MzQyZWQwZjAyMWE3ODcwN2EyZmZhLi5jM2E5MmEyODdmYTUzZjU2MWRmOWYzZjY1YWEyNzI2Y2Ez
M2Y1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTM3LDExICszNywxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRm9ybURh
dGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogCiBlbnVtIGNsYXNzIFZpb2xhdGlvblJlcG9ydFR5cGUgewog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSwKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHsgTm8sIFllcyB9
OwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3Qm
LCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBTaG91bGRGb2xsb3dSZWRpcmVjdHMpOwor
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBE
b2N1bWVudCYsIFNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCBiNWIwYzhiYmQyNjNkYzU3ZTE4YjBlNjNkYTNiODVjMzlkN2VjZjNmLi4zNmJkZDM0
ZmJkMDIzODdjZDQ1YjM1NjE4ODM5N2M4MmM3M2UyYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI2Miw3ICsyNjIsOSBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcikKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzcGVjaWFsLWNhc2UgQmVhY29u
IGhlcmUuCiAgICAgaWYgKG1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgdHlwZSgpID09IENhY2hlZFJl
c291cmNlOjpCZWFjb24pIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsKLSAgICAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJh
bWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luLCBtX29w
dGlvbnMpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRv
Y3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50
ICYmICFkb2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KCkgPyBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOworICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRs
ZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW4s
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9vcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKaW5kZXggYzQ1MjFmMTMxNWFjNTU2ZmYwMzgxYTliMmY4NzQ1ODNjMjFkMzQ4Yy4uYmRj
Y2E3NDZlOWYzYzYyNWZjMWQxMWQ1M2ZkNWY2NjA2ZDk5YTZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xNjQsMTEgKzE2
NCwxNCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkQ3JlYXRlV2luZG93UHJveHko
SlNET01XaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiAKIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlc3BvbnNlSGVhZGVycygpIGNv
bnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHJlc3VsdDsK
LSAgICByZXN1bHQubV9oZWFkZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wb2xpY2llcy5z
aXplKCkpOwotICAgIGZvciAoYXV0byYgcG9saWN5IDogbV9wb2xpY2llcykKLSAgICAgICAgcmVz
dWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQoeyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3kt
PmhlYWRlclR5cGUoKSB9KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9jYWNoZWRS
ZXNwb25zZUhlYWRlcnMpIHsKKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1faGVhZGVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fcG9saWNpZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBt
X3BvbGljaWVzKQorICAgICAgICAgICAgcmVzdWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQo
eyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhlYWRlclR5cGUoKSB9KTsKKyAgICAgICAgbV9j
YWNoZWRSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVy
biAqbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmIGhlYWRlcnMsIFJlcG9ydFBhcnNpbmdFcnJvcnMgcmVwb3J0UGFyc2luZ0Vycm9y
cykKQEAgLTE4OCw2ICsxOTEsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVj
ZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogICAgICAgICBt
X2hhc0FQSVBvbGljeSA9IHRydWU7CiAgICAgfQogCisgICAgbV9jYWNoZWRSZXNwb25zZUhlYWRl
cnMgPSBzdGQ6Om51bGxvcHQ7CisKICAgICAvLyBSRkMyNjE2LCBzZWN0aW9uIDQuMiBzcGVjaWZp
ZXMgdGhhdCBoZWFkZXJzIGFwcGVhcmluZyBtdWx0aXBsZSB0aW1lcyBjYW4KICAgICAvLyBiZSBj
b21iaW5lZCB3aXRoIGEgY29tbWEuIFdhbGsgdGhlIGhlYWRlciBzdHJpbmcsIGFuZCBwYXJzZSBl
YWNoIGNvbW1hCiAgICAgLy8gc2VwYXJhdGVkIGNodW5rIGFzIGEgc2VwYXJhdGUgaGVhZGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRl
eCBiMDVmMDM3MDE4NDRiMTc2ZjkxNjVjNWE0ZWRlMmEwMjFhNjQ5MjdiLi5hNmRhMGQ2Y2U2MWE2
ZTE4MmRhNzJlN2M4MGRkM2MzYjQzMzZiY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjUsOCArNjUsOCBAQCBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3kgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7Ci0gICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgRnJhbWUqID0gbnVsbHB0cik7Ci0gICAgfkNvbnRlbnRTZWN1cml0eVBv
bGljeSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGlj
eShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IEZyYW1lKiA9IG51bGxwdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5Db250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0
YXRlRnJvbShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICB2b2lkIGNvcHlVcGdy
YWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYp
OwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBIZWFkZXIsCiAgICAgICAg
IEluaGVyaXRlZCwKICAgICB9OwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyByZXNwb25zZUhlYWRlcnMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgcmVzcG9uc2VIZWFkZXJzKCkgY29uc3Q7CiAg
ICAgZW51bSBSZXBvcnRQYXJzaW5nRXJyb3JzIHsgTm8sIFllcyB9OwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUhlYWRlcnMoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
UmVwb3J0UGFyc2luZ0Vycm9ycyA9IFJlcG9ydFBhcnNpbmdFcnJvcnM6Olllcyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBSZXBvcnRQYXJzaW5nRXJyb3JzID0gUmVwb3J0UGFyc2lu
Z0Vycm9yczo6WWVzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQ
b2xpY3lGcm9tKTsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25z
dDsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93Q2hpbGRGcmFt
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4
dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1Nv
dXJjZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3Bv
bnNlUmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93Q29u
bmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGly
ZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9u
KGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VS
ZWNlaXZlZDo6Tm8pIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29u
c3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkOjpObykgY29uc3Q7CkBAIC0yMTYsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25T
ZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0Zv
cklubGluZVNjcmlwdHM7CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG0+IG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0czsKICAgICBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNU
b1VwZ3JhZGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycz4gbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IGIxNTQ2MTNjMzAyNjEzYzU1ZTlmN2U2ZTU2OTZk
MGU2ZWUyYzBhNDguLjY1MGEzNTBkOTEwOTdlNTVmMjZlMjRlZGU3Njk4M2RlZTA5YWFlN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC00MiwxNiArNDIsNDggQEAgZW51bSBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHsKIAogY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsKIHB1YmxpYzoKKyAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29k
ZShEZWNvZGVyJiwgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CisKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIAotICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycygpID0gZGVmYXVsdDsKLQogICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPj4g
bV9oZWFkZXJzOwogfTsKIAordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9oZWFkZXJzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9oZWFkZXJzKSB7CisgICAgICAgIGVuY29k
ZXIgPDwgcGFpci5maXJzdDsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBhaXIuc2Vjb25k
KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGhlYWRlcnMpCit7CisgICAgdWludDY0
X3QgaGVhZGVyc1NpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoZWFkZXJzU2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBoZWFkZXJzLm1faGVhZGVycy5yZXNlcnZlQ2FwYWNp
dHkoaGVhZGVyc1NpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhZGVyc1NpemU7
ICsraSkgeworICAgICAgICBTdHJpbmcgaGVhZGVyOworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhlYWRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0oaGVhZGVyVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGhlYWRlcnMubV9oZWFkZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihoZWFkZXIsIGhlYWRl
clR5cGUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAyNmI5ZGMxZTM4YjQwN2I5
YTY1ZTU4ZjVhNDcxMjY3N2E0MTQ3MjVhLi45ODJmNjc5YWFlN2Y2YjM2MzU1NWY0MDRmYTg1OWQ4
YmRjNzE1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtODcsNiArODcsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChzb3VyY2VPcmlnaW4pCiAgICAgICAgIGVuY29kZXIg
PDwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnNvdXJjZU9yaWdpbik7
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOworICAgIGVuY29kZXIgPDwgY3NwUmVzcG9u
c2VIZWFkZXJzOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYg
cmVzdWx0KQpAQCAtMTYzLDYgKzE2NCw4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAg
fQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5tb2RlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNzcFJlc3BvbnNlSGVh
ZGVycykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDM2Y2EwZTg5YzU5OTdiOGI1ZDJiZDEzNTU1YzY0MjU5
ZjIzYWFkZDguLjFjZmU3YThiZTNmODQ4NmNmZmE1NmY4ZDc5ZDBjZjdkYmY3YmJmNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBA
IC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBkZXJpdmVkQ2FjaGVk
RGF0YVR5cGVzVG9SZXRyaWV2ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IHNvdXJjZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGVlODExOGVjZjdi
M2VlZjRhMWYyMDVhMzJiODJiZmEyMzA3NTIxZjIuLmMzOGY1Mzg3MjAzNWVmOTU2YzI1MjVjYjdm
NTI3NmRmMWNjZmVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogCiAjZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFyYW1ldGVycy5zZXNzaW9u
SUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFBpbmdMb2FkOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTkxLDggKzkyLDE1IEBAIHZvaWQgUGluZ0xv
YWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBSCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IERvIENTUCBjaGVjay4KKworICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5KCkuYWxsb3dDb25uZWN0VG9Tb3VyY2UocmVxdWVzdC51cmwoKSwg
cmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gUmVkaXJlY3Qgd2FzIGJsb2NrZWQgYnkgQ1NQ
Iik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuc3VyZSB0aGUgbnVtYmVyIG9mIHJlZGly
ZWN0cyBkb2VzIG5vdCBleGNlZWQgMjAuCisKICAgICBpZiAoIW5lZWRzQ09SU1ByZWZsaWdodChy
ZXF1ZXN0KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTc1LDYgKzE4MywxNiBAQCBib29sIFBpbmdMb2FkOjpuZWVkc0NPUlNQcmVm
bGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogICAgIHJldHVybiAh
bV9pc1NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFzZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QocmVx
dWVzdC51cmwoKSk7CiB9CiAKK0NvbnRlbnRTZWN1cml0eVBvbGljeSYgUGluZ0xvYWQ6OmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRTZWN1cml0eVBvbGljeSkg
eworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PigqbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CisgICAgICAg
IGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQorICAgICAgICAgICAgbV9jb250
ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKCptX3BhcmFtZXRlcnMuY3NwUmVz
cG9uc2VIZWFkZXJzLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6
Ok5vKTsKKyAgICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKK30KKwog
dm9pZCBQaW5nTG9hZDo6ZG9DT1JTUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkb0NPUlNQcmVmbGlnaHQiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCAwMTQ0NDk2ODkyZTdj
ZGMwYTMyYzE0YzNlMWUwYTA0MDRhNDJjMTkyLi5hZGY1YjY3MWNjMjE0NjRjNTdlMTE3MmRjOTVi
NGJiOGJjMzdkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBA
IC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKQEAgLTQxLDYgKzQ1LDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAorICAgIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeSYgY29udGVudFNlY3VyaXR5UG9saWN5KCk7CisKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CkBAIC02NCw2ICs3
MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX29y
aWdpbjsKICAgICBib29sIG1faXNTYW1lT3JpZ2luUmVxdWVzdDsKICAgICBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyIG1fcmVkaXJlY3RIYW5kbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGMxNmQwOGJiN2ZjNGUyNWY4Y2JiZGUwNDU0YTFlMjM5YzBk
YTU5MjQuLjlkOTc3NWIwNDhmNjFhOTA5MzU4MDc3Nzk2ZTM3YjU2MWM3Y2RiZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHku
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3Vy
aXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtMzg1LDcgKzM4Niw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIHVuCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFu
ZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFu
ZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBpbmdI
YW5kbGUgbWlnaHQgYmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVhdGlv
biBiZWZvcmUgYSBOZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCiAgICAgLy8gSXQgaXMgbm90IGNs
ZWFyIHRoYXQgd2Ugc2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNzIGFu
eXdheXMuCkBAIC00MDUsNiArNDA2LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6Y3JlYXRl
UGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFIKICAgICBs
b2FkUGFyYW1ldGVycy5tb2RlID0gb3B0aW9ucy5tb2RlOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZEZvbGxvd1JlZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6Rm9sbG93OwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29udGV4dC0+c2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpOworICAgIGlmIChjb250ZW50U2VjdXJpdHlQb2xp
Y3kpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRT
ZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFtZXRlcnMpLCAw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCmluZGV4IGJmYzEwNzQ2ZmM0YjhkZmQ1MzMwNzgwMzUyMjQ0YjJhYjZkODI0
NjAuLjc1ZGZmODUyNzc1MTNkNTg1YjkxYzg1ZjRmZTc3NjA5ZTUwYjRmYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3Rz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBz
b3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRh
VG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDQ3OTc3NmVjOWQyZmUxNzYx
ZWY0ODE1NTk4ZDAwOTJjZGUzOThhOTIuLjcxZDAxZTEyNzg2OWQ1YTFmNDE4MjlmMjY5N2FmNjA4
NGYxYjcwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpsaW1p
dFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJldHVybiBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2VyaWFsTG9hZGluZ0Vu
YWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0
d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
LCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgLy8gUGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRl
bGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICBu
ZXcgUGluZ0hhbmRsZShuZXR3b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50
aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBQaW5nSGFuZGxlOjpVc2Vz
QXN5bmNDYWxsYmFja3M6Ok5vLCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0aW9uczo6UmVk
aXJlY3Q6OkZvbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA2MDk3MGJiNGZi
Yjc5ZDIzNTkwMjgxYWMzNmM0ODBlMjJmMDg1NDMzLi4zNGNiNjc2N2E5MTI0NGU1ZjU1OGE1OGEy
N2JjYmNiNGE5NTEzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNy
ZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2lu
LCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29u
c3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NGExZDZmNDM1NzExZTUzZGJj
MDM0OTAxM2E2NDA2ZmNhNjVlNzI0Li4zOGE4ODkyYjkxNDRhZDFkYWYwMjU2ODU5M2I3MGI0NTQ5
ZjQwMThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMTAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNyYyBDU1Ag
Y2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM4MTU0
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2Nvbm5l
Y3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxs
b3dlZC5zdWIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qt
c3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tl
ZC5zdWIuaHRtbDogQWRkZWQuCisKIDIwMTctMDgtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbQmVhY29uXVtOZXR3b3JrU2Vzc2lvbl0gU3VwcG9ydCBDT1JT
LXByZWZsaWdodGluZyBvbiByZWRpcmVjdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1y
ZWRpcmVjdC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdkODlkZTk4YzY3
MjlhYmFjOTQwY2JjOGQwYjg2NTNjYjIxNzkwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5z
dWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlZGlyZWN0IGlzIGFsbG93
ZWQgYnkgQ1NQIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29u
bmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTBiZjE0Y2ZmNmE5NDA3N2I5M2MzNjZiZDEyM2Y3OTM2ODFiNzAwNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNy
Yy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CisgICAgPHRpdGxlPlNlbmRCZWFjb24gQ1NQIGNoZWNraW5nIG9uIHJlZGlyZWN0PC90aXRsZT4K
KyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFj
b24vcmVzb3VyY2VzLyI7CisgICAgbGV0IG1ldGFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibWV0YSIpOworICAgIG1ldGFFbGVtZW50Lmh0dHBFcXVpdiA9ICJDb250ZW50LVNlY3Vy
aXR5LVBvbGljeSI7CisgICAgbWV0YUVsZW1lbnQuY29udGVudCA9ICJjb25uZWN0LXNyYyAnc2Vs
ZicgIiArIGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU47CisgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChtZXRhRWxlbWVudCk7CisKK2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVz
dCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFjb24tcHJlZmxp
Z2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgZmV0
Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS5qc29uKCku
dGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAgICB9KTsKKyAg
ICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJl
ZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNlID0gZ2V0X2hvc3Rf
aW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVI7CisgIHZhciBpZCA9IHNl
bGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSAr
ICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlkKTsKKwor
ICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRh
aW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9IFJFU09VUkNFU19ESVIgKyAicmVk
aXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFyZ2V0OworCisgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNl
bmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRlZCIpOworICAgIHJl
dHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0
X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAwLCAiRGlkIG5vdCByZWNlaXZlIHByZWZsaWdo
dCIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVhY29uJ10sIDEsICJSZWNlaXZlZCBi
ZWFjb24iKQorICAgIH0pOworICB9LCAiUmVkaXJlY3QgaXMgYWxsb3dlZCBieSBDU1AiKTsKK30K
KwordGVzdENPUlNQcmVmbGlnaHRSZWRpcmVjdFN1Y2Nlc3MoIjEyMyIpOworICAgIDwvc2NyaXB0
PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJl
Y3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMTk3YTNhMTY0Y2Q2MGVj
ZjY3ZDAzNjUyNzk1YmM3M2RlYzFhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZWRpcmVjdCBpcyBibG9ja2VkIGJ5
IENTUCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qt
c3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyMjBmNDQ3ZGFhZDc0OTY1N2JhMWQ5MzU1NjljZGZiN2I0OGY5NDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVh
Y29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImNvbm5lY3Qtc3JjICdzZWxmJyI+CisgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5TZW5kQmVhY29uIENTUCBibG9ja2luZyBvbiBy
ZWRpcmVjdDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQgc3JjPSIvY29t
bW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9z
dC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KK3ZhciBSRVNPVVJDRVNfRElS
ID0gIi9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRl
c3QsIGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZs
aWdodC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZl
dGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9uc2UuanNvbigp
LnRoZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAgICAgfSk7Cisg
ICAgICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q09SU1By
ZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CisgIHZhciB0ZXN0QmFzZSA9IGdldF9ob3N0
X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSOworICB2YXIgaWQgPSBz
ZWxmLnRva2VuKCk7CisgIHZhciB0YXJnZXQgPSBlbmNvZGVVUklDb21wb25lbnQodGVzdEJhc2Ug
KyAiYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZjbWQ9cHV0JmlkPSIgKyBpZCk7CisK
KyAgLy8gMzA3ICYgMzA4IHJlZGlyZWN0aW9ucyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IG1haW50
YWluIHRoZSBQT1NUIG1ldGhvZC4KKyAgdmFyIHRlc3RVcmwgPSBSRVNPVVJDRVNfRElSICsgInJl
ZGlyZWN0LnB5P3JlZGlyZWN0X3N0YXR1cz0zMDcmbG9jYXRpb249IiArIHRhcmdldDsKKworICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIGFzc2VydF90cnVlKG5hdmlnYXRvci5z
ZW5kQmVhY29uKHRlc3RVcmwsIHdoYXQpLCAiU2VuZEJlYWNvbiBTdWNjZWVkZWQiKTsKKyAgICBy
ZXR1cm4gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHQnXSwgMCwgIkRpZCBub3QgcmVjZWl2ZSBwcmVmbGln
aHQiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ2JlYWNvbiddLCAwLCAiRGlkIG5vdCBy
ZWNlaXZlIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJSZWRpcmVjdCBpcyBibG9ja2VkIGJ5IENT
UCIpOworfQorCit0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcygiMTIzIik7CisgICAg
PC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317824</attachid>
            <date>2017-08-10 10:57:57 -0700</date>
            <delta_ts>2017-08-10 12:55:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175410-20170810105756.patch</filename>
            <type>text/plain</type>
            <size>33225</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMwZTRmMGZmMmRjMGZl
ZDgxZjcyMjIwMGI3MmQ0ZjQwODAzYTFhOC4uMDJlNTQyZTE2YjI3MGE2ZTM5N2QwY2Y2NDJiNGYw
MzUxYjM0YmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA4LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVj
dC1zcmMgQ1NQIGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMzODE1NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFBhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5IG9iamVjdCB0byBjcmVhdGVQaW5nSGFu
ZGxlIHNvIHRoYXQgd2UgY2FuIHNlbmQKKyAgICAgICAgZW5vdWdoIGRhdGEgdG8gdGhlIE5ldHdv
cmtQcm9jZXNzIHNvIGRvIENTUCBjaGVja3MgZm9yIFBpbmcgbG9hZHMgc3VjaAorICAgICAgICBh
cyBCZWFjb24uIEZvciB0aGUgSVBDLCB3ZSBzZXJpYWxpemUgdGhlIENvbnRlbnRTZWN1cml0eVBv
bGljeSdzIHJlc3BvbnNlCisgICAgICAgIGhlYWRlcnMuIFRob3NlIGhlYWRlcnMgYXJlIG5vdyBj
YWNoZWQgaW4gQ29udGVudFNlY3VyaXR5UG9saWN5IGZvcgorICAgICAgICBwZXJmb3JtYW5jZSBy
ZWFzb25zLiBDU1AgaGVhZGVycyBhcmUgcmFyZWx5IHVwZGF0ZWQgaW4gcHJhY3RpY2UgYnV0Cisg
ICAgICAgIHNlbmRCZWFjb24oKSBtYXkgZ2V0IGNhbGxlZCByZXBlYXRlZGx5IGZvciBhIGdpdmVu
IGRvY3VtZW50LgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMt
YmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbAorCisg
ICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL1BpbmdM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGlu
Z0xvYWRlcjo6c3RhcnRQaW5nTG9hZCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlc3BvbnNlSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOjpkZWNvZGUpOgorCiAyMDE3LTA4
LTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dU
Rl0gTW92ZSBUZXh0U3RyZWFtIGludG8gV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmMDg0NjZjMzdjMTRiZmRi
MjcyZGVhMjk5ODRlMGQ0Yzc2ZGQxOGQuLmFmNTc3MzZhOWYyYzBlMzQwYjI1NzUxMDIzMWJhMTRh
NDIyNTQ2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDgtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNy
YyBDU1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM4MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUGFzcyBDU1AgUmVzcG9uc2UgaGVhZGVycyB0byB0aGUgTmV0d29ya1Byb2Nlc3MgdmlhIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzCisgICAgICAgIHdoZW4gZG9pbmcgYSBQaW5nTG9h
ZC4gVGhpcyBhbGxvd3MgUGluZ0xvYWQgdG8gZG8gQ1NQIGNoZWNrcyAoaW4gcGFydGljdWxhcgor
ICAgICAgICBjb25uZWN0LXNyYyBvbmVzKSBpbiBjYXNlIHRoZSBwaW5nIGxvYWQgZ2V0cyByZWRp
cmVjdGVkLiBUaG9zZSBjaGVja3MgbmVlZCB0byBiZQorICAgICAgICBkb25lIG9uIHRoZSBOZXR3
b3JrUHJvY2VzcyBzaWRlIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSB0aGVyZSBpcyBubyBndWFyYW50
ZWUgdGhlCisgICAgICAgIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyBzdGlsbCBhcm91bmQuCisKKyAg
ICAgICAgVG8gZG8gdGhlIENTUCBjaGVja3MsIFBpbmdMb2FkIGxhemlseSByZWNvbnN0cnVjdHMg
YSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0CisgICAgICAgIGZyb20gdGhlIENTUCByZXNw
b25zZSBoZWFkZXJzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjpjb250ZW50U2VjdXJpdHlQ
b2xpY3kpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmNyZWF0ZVBpbmdIYW5kbGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCiAyMDE3LTA4LTA5ICBKZXJlbXkg
Sm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZhbGlkYXRlIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIgaW4gc2FtZSBmYXNoaW9uIGFzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGJhZmUxNGNlNmMxYTYxNTEyN2JjNGI5MGFhOWMxYTg5
Y2NhMDhlNDUuLjYzNmY1YzFmNjcwNDA1ZWRkYzAwZjljZDY3NmY0NTA3YzAyOTQwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMTAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNyYyBD
U1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM4
MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNyZWF0ZVBpbmdIYW5kbGUoKSB0byB0YWtlIGluIENvbnRlbnRTZWN1cml0eVBvbGlj
eQorICAgICAgICBvYmplY3QgaW4gYnV0IG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgV0sxLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTct
MDgtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmVhY29u
XSBBZGQgc3VwcG9ydCBmb3IgQ09SUy1wcmVmbGlnaHRpbmcgZm9yIFdLMiAvIE5FVFdPUktfU0VT
U0lPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4NjNhYTljNGRm
YjA5MmExMzVlMzFiNDAwOTg1YWViOTE4M2JlMWMyLi5jNGRiN2ExYmYwM2E4NDRhZmEzYWZhY2Yy
MTQyZGE2NmUxZTVmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVy
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQZW5k
aW5nUmVxdWVzdHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShO
ZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGlj
eSosIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZURl
cml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDg5YmJhZGU2ZTVj
YWQzM2Q2M2Q0YzRlMzEwYzA1OGFkNmUzYjIzYTcuLjhlNTE2OWI1MGVmYjFhZjExZTc3NzcwM2Zl
YWZiMWY5NjU5OTA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7
CiAgICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KTsKIAotICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QsIGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCksIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBp
bmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZ
ZXMpOwogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGluZwpAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxv
d1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1
bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMpOwogfQogCiB2b2lkIFBpbmdMb2FkZXI6
OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwg
UmVmPEZvcm1EYXRhPiYmIHJlcG9ydCwgVmlvbGF0aW9uUmVwb3J0VHlwZSByZXBvcnRUeXBlKQpA
QCAtMTc2LDEwICsxNzYsMTAgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0
KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZjxGb3IKICAgICBpZiAoIXJl
ZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwogCi0gICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpObyk7CisgICAgc3RhcnRQaW5nTG9h
ZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQsIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6Tm8pOwog
fQogCi12b2lkIFBpbmdMb2FkZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIFNob3VsZEZv
bGxvd1JlZGlyZWN0cyBzaG91bGRGb2xsb3dSZWRpcmVjdHMpCit2b2lkIFBpbmdMb2FkZXI6OnN0
YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3Vt
ZW50JiBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHNob3VsZEZvbGxvd1JlZGlyZWN0
cykKIHsKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS5wYWdlKCktPnByb2dy
ZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIC8vIEZJWE1FOiBXaHkgYWN0aXZl
RG9jdW1lbnRMb2FkZXI/IEkgd291bGQgaGF2ZSBleHBlY3RlZCBkb2N1bWVudExvYWRlcigpLgpA
QCAtMTk0LDcgKzE5NCw4IEBAIHZvaWQgUGluZ0xvYWRlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYg
ZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKGZyYW1lLCBpZGVudGlm
aWVyLCBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNv
dXJjZVJlc3BvbnNlKCkpOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQo
KSwgcmVxdWVzdCwgc291cmNlT3JpZ2luLCBvcHRpb25zKTsKKyAgICBhdXRvKiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBkb2N1bWVudC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSA/IG51bGxwdHIgOiBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsK
KyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hh
bmRsZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG9wdGlvbnMpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCA5NzM1NGZiMzc4ZThlNzU0YjVm
MzQyZWQwZjAyMWE3ODcwN2EyZmZhLi5jM2E5MmEyODdmYTUzZjU2MWRmOWYzZjY1YWEyNzI2Y2Ez
M2Y1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTM3LDExICszNywxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRm9ybURh
dGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogCiBlbnVtIGNsYXNzIFZpb2xhdGlvblJlcG9ydFR5cGUgewog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSwKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHsgTm8sIFllcyB9
OwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3Qm
LCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBTaG91bGRGb2xsb3dSZWRpcmVjdHMpOwor
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBE
b2N1bWVudCYsIFNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCBiNWIwYzhiYmQyNjNkYzU3ZTE4YjBlNjNkYTNiODVjMzlkN2VjZjNmLi4zNmJkZDM0
ZmJkMDIzODdjZDQ1YjM1NjE4ODM5N2M4MmM3M2UyYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI2Miw3ICsyNjIsOSBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcikKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzcGVjaWFsLWNhc2UgQmVhY29u
IGhlcmUuCiAgICAgaWYgKG1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgdHlwZSgpID09IENhY2hlZFJl
c291cmNlOjpCZWFjb24pIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsKLSAgICAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJh
bWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luLCBtX29w
dGlvbnMpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRv
Y3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50
ICYmICFkb2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KCkgPyBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOworICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRs
ZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW4s
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9vcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKaW5kZXggYzQ1MjFmMTMxNWFjNTU2ZmYwMzgxYTliMmY4NzQ1ODNjMjFkMzQ4Yy4uYmRj
Y2E3NDZlOWYzYzYyNWZjMWQxMWQ1M2ZkNWY2NjA2ZDk5YTZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xNjQsMTEgKzE2
NCwxNCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkQ3JlYXRlV2luZG93UHJveHko
SlNET01XaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiAKIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlc3BvbnNlSGVhZGVycygpIGNv
bnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHJlc3VsdDsK
LSAgICByZXN1bHQubV9oZWFkZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wb2xpY2llcy5z
aXplKCkpOwotICAgIGZvciAoYXV0byYgcG9saWN5IDogbV9wb2xpY2llcykKLSAgICAgICAgcmVz
dWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQoeyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3kt
PmhlYWRlclR5cGUoKSB9KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9jYWNoZWRS
ZXNwb25zZUhlYWRlcnMpIHsKKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1faGVhZGVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fcG9saWNpZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBt
X3BvbGljaWVzKQorICAgICAgICAgICAgcmVzdWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQo
eyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhlYWRlclR5cGUoKSB9KTsKKyAgICAgICAgbV9j
YWNoZWRSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVy
biAqbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmIGhlYWRlcnMsIFJlcG9ydFBhcnNpbmdFcnJvcnMgcmVwb3J0UGFyc2luZ0Vycm9y
cykKQEAgLTE4OCw2ICsxOTEsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVj
ZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogICAgICAgICBt
X2hhc0FQSVBvbGljeSA9IHRydWU7CiAgICAgfQogCisgICAgbV9jYWNoZWRSZXNwb25zZUhlYWRl
cnMgPSBzdGQ6Om51bGxvcHQ7CisKICAgICAvLyBSRkMyNjE2LCBzZWN0aW9uIDQuMiBzcGVjaWZp
ZXMgdGhhdCBoZWFkZXJzIGFwcGVhcmluZyBtdWx0aXBsZSB0aW1lcyBjYW4KICAgICAvLyBiZSBj
b21iaW5lZCB3aXRoIGEgY29tbWEuIFdhbGsgdGhlIGhlYWRlciBzdHJpbmcsIGFuZCBwYXJzZSBl
YWNoIGNvbW1hCiAgICAgLy8gc2VwYXJhdGVkIGNodW5rIGFzIGEgc2VwYXJhdGUgaGVhZGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRl
eCBiMDVmMDM3MDE4NDRiMTc2ZjkxNjVjNWE0ZWRlMmEwMjFhNjQ5MjdiLi5hNmRhMGQ2Y2U2MWE2
ZTE4MmRhNzJlN2M4MGRkM2MzYjQzMzZiY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjUsOCArNjUsOCBAQCBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3kgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7Ci0gICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgRnJhbWUqID0gbnVsbHB0cik7Ci0gICAgfkNvbnRlbnRTZWN1cml0eVBv
bGljeSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGlj
eShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IEZyYW1lKiA9IG51bGxwdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5Db250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0
YXRlRnJvbShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICB2b2lkIGNvcHlVcGdy
YWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYp
OwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBIZWFkZXIsCiAgICAgICAg
IEluaGVyaXRlZCwKICAgICB9OwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyByZXNwb25zZUhlYWRlcnMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgcmVzcG9uc2VIZWFkZXJzKCkgY29uc3Q7CiAg
ICAgZW51bSBSZXBvcnRQYXJzaW5nRXJyb3JzIHsgTm8sIFllcyB9OwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUhlYWRlcnMoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
UmVwb3J0UGFyc2luZ0Vycm9ycyA9IFJlcG9ydFBhcnNpbmdFcnJvcnM6Olllcyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBSZXBvcnRQYXJzaW5nRXJyb3JzID0gUmVwb3J0UGFyc2lu
Z0Vycm9yczo6WWVzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQ
b2xpY3lGcm9tKTsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25z
dDsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93Q2hpbGRGcmFt
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4
dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1Nv
dXJjZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3Bv
bnNlUmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93Q29u
bmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGly
ZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9u
KGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VS
ZWNlaXZlZDo6Tm8pIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29u
c3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkOjpObykgY29uc3Q7CkBAIC0yMTYsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25T
ZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0Zv
cklubGluZVNjcmlwdHM7CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG0+IG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0czsKICAgICBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNU
b1VwZ3JhZGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycz4gbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IGIxNTQ2MTNjMzAyNjEzYzU1ZTlmN2U2ZTU2OTZk
MGU2ZWUyYzBhNDguLjAwMmUwZjk2OTg3ZGI1YWY3NjVjMzEwYjFiZDkyNTdlMDRhNTFiMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC00MiwxNiArNDIsNDggQEAgZW51bSBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHsKIAogY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsKIHB1YmxpYzoKKyAgICBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBj
b25zdDsKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29k
ZShEZWNvZGVyJiwgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CisKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIAotICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycygpID0gZGVmYXVsdDsKLQogICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPj4g
bV9oZWFkZXJzOwogfTsKIAordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9oZWFkZXJzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9oZWFkZXJzKSB7CisgICAgICAgIGVuY29k
ZXIgPDwgcGFpci5maXJzdDsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBhaXIuc2Vjb25k
KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGhlYWRlcnMpCit7CisgICAgdWludDY0
X3QgaGVhZGVyc1NpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoZWFkZXJzU2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBoZWFkZXJzLm1faGVhZGVycy5yZXNlcnZlQ2FwYWNp
dHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFkZXJzU2l6ZSkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaGVhZGVyc1NpemU7ICsraSkgeworICAgICAgICBTdHJpbmcgaGVhZGVyOworICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhlYWRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZTsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaGVhZGVyVHlwZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGhlYWRlcnMubV9oZWFkZXJzLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihoZWFkZXIsIGhlYWRlclR5cGUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApp
bmRleCAyNmI5ZGMxZTM4YjQwN2I5YTY1ZTU4ZjVhNDcxMjY3N2E0MTQ3MjVhLi45ODJmNjc5YWFl
N2Y2YjM2MzU1NWY0MDRmYTg1OWQ4YmRjNzE1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtODcsNiArODcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChzb3VyY2VPcmln
aW4pCiAgICAgICAgIGVuY29kZXIgPDwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4oKnNvdXJjZU9yaWdpbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOworICAg
IGVuY29kZXIgPDwgY3NwUmVzcG9uc2VIZWFkZXJzOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMTYzLDYgKzE2NCw4IEBAIGJvb2wgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IE5ldHdvcmtSZXNvdXJjCiAgICAgfQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3Vs
dC5tb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmNzcFJlc3BvbnNlSGVhZGVycykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDM2Y2EwZTg5YzU5
OTdiOGI1ZDJiZDEzNTU1YzY0MjU5ZjIzYWFkZDguLjFjZmU3YThiZTNmODQ4NmNmZmE1NmY4ZDc5
ZDBjZjdkYmY3YmJmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmg+CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
U3RyaW5nPiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IHNvdXJjZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9w
dGlvbnM6Ok1vZGUgbW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCmluZGV4IGVlODExOGVjZjdiM2VlZjRhMWYyMDVhMzJiODJiZmEyMzA3NTIxZjIuLmMzOGY1
Mzg3MjAzNWVmOTU2YzI1MjVjYjdmNTI3NmRmMWNjZmVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1
ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIFBpbmdMb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTkxLDgg
KzkyLDE1IEBAIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IERvIENTUCBj
aGVjay4KKworICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KCkuYWxsb3dDb25uZWN0VG9T
b3VyY2UocmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gUmVkaXJl
Y3Qgd2FzIGJsb2NrZWQgYnkgQ1NQIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuc3Vy
ZSB0aGUgbnVtYmVyIG9mIHJlZGlyZWN0cyBkb2VzIG5vdCBleGNlZWQgMjAuCisKICAgICBpZiAo
IW5lZWRzQ09SU1ByZWZsaWdodChyZXF1ZXN0KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1LDYgKzE4MywxNiBAQCBib29sIFBp
bmdMb2FkOjpuZWVkc0NPUlNQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KSBjb25zdAogICAgIHJldHVybiAhbV9pc1NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFzZWN1cml0eU9y
aWdpbigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSk7CiB9CiAKK0NvbnRlbnRTZWN1cml0eVBv
bGljeSYgUGluZ0xvYWQ6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgaWYgKCFtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeSkgeworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PigqbV9wYXJhbWV0ZXJzLnNv
dXJjZU9yaWdpbik7CisgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJz
KQorICAgICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJz
KCptX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKKyAgICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKK30KKwogdm9pZCBQaW5nTG9hZDo6ZG9DT1JTUHJlZmxpZ2h0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkb0NPUlNQcmVmbGlnaHQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAppbmRleCAwMTQ0NDk2ODkyZTdjZGMwYTMyYzE0YzNlMWUwYTA0MDRhNDJjMTkyLi5hZGY1YjY3
MWNjMjE0NjRjNTdlMTE3MmRjOTViNGJiOGJjMzdkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgIk5ldHdvcmtE
YXRhVGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKK30KKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsK
QEAgLTQxLDYgKzQ1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAor
ICAgIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSYgY29udGVudFNlY3VyaXR5UG9saWN5
KCk7CisKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CkBAIC02NCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKICAgICBib29sIG1faXNTYW1lT3JpZ2luUmVxdWVz
dDsKICAgICBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIG1fcmVkaXJlY3RIYW5kbGVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVu
dFNlY3VyaXR5UG9saWN5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGMxNmQwOGJiN2ZjNGUy
NWY4Y2JiZGUwNDU0YTFlMjM5YzBkYTU5MjQuLjlkOTc3NWIwNDhmNjFhOTA5MzU4MDc3Nzk2ZTM3
YjU2MWM3Y2RiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJX
ZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtMzg1LDcgKzM4Niw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIHVuCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291
cmNlT3JpZ2luLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291
cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhh
dCBjYWxsIHRvIGNyZWF0ZVBpbmdIYW5kbGUgbWlnaHQgYmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBl
bXB0eSBEb2N1bWVudCBjcmVhdGlvbiBiZWZvcmUgYSBOZXR3b3JraW5nQ29udGV4dCBleGlzdHMu
CiAgICAgLy8gSXQgaXMgbm90IGNsZWFyIHRoYXQgd2Ugc2hvdWxkIHNlbmQgcGluZyBsb2FkcyBk
dXJpbmcgdGhhdCBwcm9jZXNzIGFueXdheXMuCkBAIC00MDUsNiArNDA2LDggQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29y
a2luZ0NvbnRleHQsIFIKICAgICBsb2FkUGFyYW1ldGVycy5tb2RlID0gb3B0aW9ucy5tb2RlOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJl
Y3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93OwogICAgIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29u
dGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpOworICAgIGlm
IChjb250ZW50U2VjdXJpdHlQb2xpY3kpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3Bv
bnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBp
bmcobG9hZFBhcmFtZXRlcnMpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGJmYzEwNzQ2ZmM0YjhkZmQ1
MzMwNzgwMzUyMjQ0YjJhYjZkODI0NjAuLjc1ZGZmODUyNzc1MTNkNTg1YjkxYzg1ZjRmZTc3NjA5
ZTUwYjRmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN1bWVQZW5kaW5n
UmVxdWVzdHMoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeSosIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNo
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmlu
ZGV4IDQ3OTc3NmVjOWQyZmUxNzYxZWY0ODE1NTk4ZDAwOTJjZGUzOThhOTIuLjcxZDAxZTEyNzg2
OWQ1YTFmNDE4MjlmMjY5N2FmNjA4NGYxYjcwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTM2Myw3ICszNjMsNyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
SG9zdEluZm9ybWF0aW9uOjpsaW1pdFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJl
dHVybiBtX3JlcXVlc3RzTG9hZGluZy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cigpLmlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQp
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShO
ZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3Jr
aW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gUGluZ0hhbmRsZSBtYW5hZ2Vz
IGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBi
ZWVuIGZ1bGZpbGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShuZXR3b3JraW5nQ29udGV4dCwgcmVx
dWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpP
bWl0LCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6Ok5vLCBvcHRpb25zLnJlZGlyZWN0
ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaAppbmRleCA2MDk3MGJiNGZiYjc5ZDIzNTkwMjgxYWMzNmM0ODBlMjJmMDg1NDMzLi4zNGNi
Njc2N2E5MTI0NGU1ZjU1OGE1OGEyN2JjYmNiNGE5NTEzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFBlbmRp
bmdSZXF1ZXN0cygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2lu
Z0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBj
b25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RvcmVE
ZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGUgeyB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2NGExZDZmNDM1NzExZTUzZGJjMDM0OTAxM2E2NDA2ZmNhNjVlNzI0Li4zOGE4ODkyYjkxNDRh
ZDFkYWYwMjU2ODU5M2I3MGI0NTQ5ZjQwMThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTct
MDgtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29u
XSBEbyBjb25uZWN0LXNyYyBDU1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzM4MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICog
aHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNy
Yy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1i
ZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbDogQWRkZWQuCisKIDIwMTctMDgtMDkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmVhY29uXVtOZXR3b3Jr
U2Vzc2lvbl0gU3VwcG9ydCBDT1JTLXByZWZsaWdodGluZyBvbiByZWRpcmVjdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJl
Y3QtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjdkODlkZTk4YzY3MjlhYmFjOTQwY2JjOGQwYjg2NTNjYjIxNzkwZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFj
b24tcmVkaXJlY3QtYWxsb3dlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQ
QVNTIFJlZGlyZWN0IGlzIGFsbG93ZWQgYnkgQ1NQIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3Vi
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJl
ZGlyZWN0LWFsbG93ZWQuc3ViLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZjE0Y2ZmNmE5NDA3N2I5M2Mz
NjZiZDEyM2Y3OTM2ODFiNzAwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbApA
QCAtMCwwICsxLDUzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlNlbmRCZWFjb24gQ1NQIGNoZWNraW5n
IG9uIHJlZGlyZWN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9
Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dl
dC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNF
U19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisgICAgbGV0IG1ldGFFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpOworICAgIG1ldGFFbGVtZW50Lmh0dHBF
cXVpdiA9ICJDb250ZW50LVNlY3VyaXR5LVBvbGljeSI7CisgICAgbWV0YUVsZW1lbnQuY29udGVu
dCA9ICJjb25uZWN0LXNyYyAnc2VsZicgIiArIGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9P
UklHSU47CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtZXRhRWxlbWVudCk7CisKK2Z1
bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VT
X0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1
bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAg
ICAgICByZXNwb25zZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJv
ZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFy
IHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNF
U19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVS
SUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNt
ZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUg
b25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9
IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2NhdGlv
bj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgYXNz
ZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29u
IFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1
bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAwLCAiRGlk
IG5vdCByZWNlaXZlIHByZWZsaWdodCIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVh
Y29uJ10sIDEsICJSZWNlaXZlZCBiZWFjb24iKQorICAgIH0pOworICB9LCAiUmVkaXJlY3QgaXMg
YWxsb3dlZCBieSBDU1AiKTsKK30KKwordGVzdENPUlNQcmVmbGlnaHRSZWRpcmVjdFN1Y2Nlc3Mo
IjEyMyIpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJs
b2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25u
ZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVlMTk3YTNhMTY0Y2Q2MGVjZjY3ZDAzNjUyNzk1YmM3M2RlYzFhZmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJl
ZGlyZWN0LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBS
ZWRpcmVjdCBpcyBibG9ja2VkIGJ5IENTUCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVj
dC1ibG9ja2VkLnN1Yi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMjBmNDQ3ZGFhZDc0OTY1N2JhMWQ5MzU1
NjljZGZiN2I0OGY5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0bWwKQEAgLTAs
MCArMSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImNvbm5lY3Qtc3Jj
ICdzZWxmJyI+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5TZW5kQmVh
Y29uIENTUCBibG9ja2luZyBvbiByZWRpcmVjdDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9L3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5Pgor
ICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZvLnN1Yi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KK3ZhciBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCitm
dW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJFU09VUkNF
U19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKworICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9m
dW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKKyAg
ICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVzb2x2ZShi
b2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0pOworfQor
CitmdW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CisgIHZh
ciB0ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJD
RVNfRElSOworICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciB0YXJnZXQgPSBlbmNvZGVV
UklDb21wb25lbnQodGVzdEJhc2UgKyAiYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZj
bWQ9cHV0JmlkPSIgKyBpZCk7CisKKyAgLy8gMzA3ICYgMzA4IHJlZGlyZWN0aW9ucyBhcmUgdGhl
IG9ubHkgb25lcyB0aGF0IG1haW50YWluIHRoZSBQT1NUIG1ldGhvZC4KKyAgdmFyIHRlc3RVcmwg
PSBSRVNPVVJDRVNfRElSICsgInJlZGlyZWN0LnB5P3JlZGlyZWN0X3N0YXR1cz0zMDcmbG9jYXRp
b249IiArIHRhcmdldDsKKworICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIGFz
c2VydF90cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RVcmwsIHdoYXQpLCAiU2VuZEJlYWNv
biBTdWNjZWVkZWQiKTsKKyAgICByZXR1cm4gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVz
dWx0ID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydwcmVmbGlnaHQnXSwgMCwgIkRp
ZCBub3QgcmVjZWl2ZSBwcmVmbGlnaHQiKQorICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ2Jl
YWNvbiddLCAwLCAiRGlkIG5vdCByZWNlaXZlIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJSZWRp
cmVjdCBpcyBibG9ja2VkIGJ5IENTUCIpOworfQorCit0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0
U3VjY2VzcygiMTIzIik7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317837</attachid>
            <date>2017-08-10 12:55:29 -0700</date>
            <delta_ts>2017-08-10 14:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175410-20170810125528.patch</filename>
            <type>text/plain</type>
            <size>35837</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMwZTRmMGZmMmRjMGZl
ZDgxZjcyMjIwMGI3MmQ0ZjQwODAzYTFhOC4uN2VlMjA0MTIyZDM5ZTc3MDNkYWIyYTdlYjgxMTBl
YWFhMTY2ZjkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA4LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVj
dC1zcmMgQ1NQIGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMzODE1NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgUGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0IHRvIGNyZWF0ZVBpbmdIYW5k
bGUgc28gdGhhdCB3ZSBjYW4gc2VuZAorICAgICAgICBlbm91Z2ggZGF0YSB0byB0aGUgTmV0d29y
a1Byb2Nlc3Mgc28gZG8gQ1NQIGNoZWNrcyBmb3IgUGluZyBsb2FkcyBzdWNoCisgICAgICAgIGFz
IEJlYWNvbi4gRm9yIHRoZSBJUEMsIHdlIHNlcmlhbGl6ZSB0aGUgQ29udGVudFNlY3VyaXR5UG9s
aWN5J3MgcmVzcG9uc2UKKyAgICAgICAgaGVhZGVycy4gVGhvc2UgaGVhZGVycyBhcmUgbm93IGNh
Y2hlZCBpbiBDb250ZW50U2VjdXJpdHlQb2xpY3kgZm9yCisgICAgICAgIHBlcmZvcm1hbmNlIHJl
YXNvbnMuIENTUCBoZWFkZXJzIGFyZSByYXJlbHkgdXBkYXRlZCBpbiBwcmFjdGljZSBidXQKKyAg
ICAgICAgc2VuZEJlYWNvbigpIG1heSBnZXQgY2FsbGVkIHJlcGVhdGVkbHkgZm9yIGEgZ2l2ZW4g
ZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1i
ZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQv
YmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sCisKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpsb2FkSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpQaW5n
TG9hZGVyOjpzdGFydFBpbmdMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVzcG9uc2VIZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZSk6CisKIDIwMTctMDgt
MDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV1RG
XSBNb3ZlIFRleHRTdHJlYW0gaW50byBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2YwODQ2NmMzN2MxNGJmZGIy
NzJkZWEyOTk4NGUwZDRjNzZkZDE4ZC4uMWI4MjY3ZWY1NjVmZDAwYjBiOTcyNGIwM2ZjYTA4YTI1
YmE3NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtCZWFjb25dIERvIGNvbm5lY3Qtc3Jj
IENTUCBjaGVjayBvbiByZWRpcmVjdHMgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
MzgxNTQ3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
IFBhc3MgQ1NQIFJlc3BvbnNlIGhlYWRlcnMgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIHZpYSBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycworICAgICAgICB3aGVuIGRvaW5nIGEgUGluZ0xvYWQu
IFRoaXMgYWxsb3dzIFBpbmdMb2FkIHRvIGRvIENTUCBjaGVja3MgKGluIHBhcnRpY3VsYXIKKyAg
ICAgICAgY29ubmVjdC1zcmMgb25lcykgaW4gY2FzZSB0aGUgcGluZyBsb2FkIGdldHMgcmVkaXJl
Y3RlZC4gVGhvc2UgY2hlY2tzIG5lZWQgdG8gYmUKKyAgICAgICAgZG9uZSBvbiB0aGUgTmV0d29y
a1Byb2Nlc3Mgc2lkZSBhdCB0aGlzIHBvaW50IGJlY2F1c2UgdGhlcmUgaXMgbm8gZ3VhcmFudGVl
IHRoZQorICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgaXMgc3RpbGwgYXJvdW5kLgorCisgICAg
ICAgIFRvIGRvIHRoZSBDU1AgY2hlY2tzLCBQaW5nTG9hZCBsYXppbHkgcmVjb25zdHJ1Y3RzIGEg
Q29udGVudFNlY3VyaXR5UG9saWN5IG9iamVjdAorICAgICAgICBmcm9tIHRoZSBDU1AgcmVzcG9u
c2UgaGVhZGVycy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6Y29udGVudFNlY3VyaXR5UG9s
aWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOC0wOSAgSmVyZW15IEpv
bmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgSW52YWxpZGF0ZSBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyIGluIHNhbWUgZmFzaGlvbiBhcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiYWZlMTRjZTZjMWE2MTUxMjdiYzRiOTBhYTljMWE4OWNj
YTA4ZTQ1Li4xNDk5YTI1YWRjNTFiNTkzMDRlN2ZiM2E0YmNlNDAyNTkzNjcyNDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA4LTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVjdC1zcmMgQ1NQ
IGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzODE1
NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBk
YXRlIGNyZWF0ZVBpbmdIYW5kbGUoKSB0byB0YWtlIGluIENvbnRlbnRTZWN1cml0eVBvbGljeQor
ICAgICAgICBvYmplY3QgaW4gYnV0IG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgV0sxLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTctMDgt
MDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmVhY29uXSBB
ZGQgc3VwcG9ydCBmb3IgQ09SUy1wcmVmbGlnaHRpbmcgZm9yIFdLMiAvIE5FVFdPUktfU0VTU0lP
TgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4NjNhYTljNGRmYjA5
MmExMzVlMzFiNDAwOTg1YWViOTE4M2JlMWMyLi5jNGRiN2ExYmYwM2E4NDRhZmEzYWZhY2YyMTQy
ZGE2NmUxZTVmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQZW5kaW5n
UmVxdWVzdHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShOZXR3
b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGljeSos
IGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2
ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDg5YmJhZGU2ZTVjYWQz
M2Q2M2Q0YzRlMzEwYzA1OGFkNmUzYjIzYTcuLjhlNTE2OWI1MGVmYjFhZjExZTc3NzcwM2ZlYWZi
MWY5NjU5OTA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAg
ICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KTsKIAotICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QsIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCksIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdM
b2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMp
OwogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGluZwpAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
dGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxvd1Jl
ZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVu
dCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMpOwogfQogCiB2b2lkIFBpbmdMb2FkZXI6OnNl
bmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVm
PEZvcm1EYXRhPiYmIHJlcG9ydCwgVmlvbGF0aW9uUmVwb3J0VHlwZSByZXBvcnRUeXBlKQpAQCAt
MTc2LDEwICsxNzYsMTAgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZy
YW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZjxGb3IKICAgICBpZiAoIXJlZmVy
cmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIp
OwogCi0gICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKSwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpObyk7CisgICAgc3RhcnRQaW5nTG9hZChm
cmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQsIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6Tm8pOwogfQog
Ci12b2lkIFBpbmdMb2FkZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxv
d1JlZGlyZWN0cyBzaG91bGRGb2xsb3dSZWRpcmVjdHMpCit2b2lkIFBpbmdMb2FkZXI6OnN0YXJ0
UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3VtZW50
JiBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHNob3VsZEZvbGxvd1JlZGlyZWN0cykK
IHsKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS5wYWdlKCktPnByb2dyZXNz
KCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIC8vIEZJWE1FOiBXaHkgYWN0aXZlRG9j
dW1lbnRMb2FkZXI/IEkgd291bGQgaGF2ZSBleHBlY3RlZCBkb2N1bWVudExvYWRlcigpLgpAQCAt
MTk0LDcgKzE5NCw4IEBAIHZvaWQgUGluZ0xvYWRlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJh
bWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKGZyYW1lLCBpZGVudGlmaWVy
LCBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwg
cmVxdWVzdCwgc291cmNlT3JpZ2luLCBvcHRpb25zKTsKKyAgICBhdXRvKiBjb250ZW50U2VjdXJp
dHlQb2xpY3kgPSBkb2N1bWVudC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3koKSA/IG51bGxwdHIgOiBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRs
ZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG9wdGlvbnMpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCA5NzM1NGZiMzc4ZThlNzU0YjVmMzQy
ZWQwZjAyMWE3ODcwN2EyZmZhLi5jM2E5MmEyODdmYTUzZjU2MWRmOWYzZjY1YWEyNzI2Y2EzM2Y1
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTM3LDExICszNywxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogCiBlbnVtIGNsYXNzIFZpb2xhdGlvblJlcG9ydFR5cGUgewogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeSwKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHsgTm8sIFllcyB9Owot
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBT
ZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBTaG91bGRGb2xsb3dSZWRpcmVjdHMpOworICAg
IHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBEb2N1
bWVudCYsIFNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApp
bmRleCBiNWIwYzhiYmQyNjNkYzU3ZTE4YjBlNjNkYTNiODVjMzlkN2VjZjNmLi4zNmJkZDM0ZmJk
MDIzODdjZDQ1YjM1NjE4ODM5N2M4MmM3M2UyYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI2Miw3ICsyNjIsOSBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxv
YWRlcikKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzcGVjaWFsLWNhc2UgQmVhY29uIGhl
cmUuCiAgICAgaWYgKG1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgdHlwZSgpID09IENhY2hlZFJlc291
cmNlOjpCZWFjb24pIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luKTsKLSAgICAgICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJhbWUu
bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgKm1fb3JpZ2luLCBtX29wdGlv
bnMpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3Vt
ZW50KCk7CisgICAgICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50ICYm
ICFkb2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkg
PyBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOworICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRsZShm
cmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW4sIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgbV9vcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggYzQ1MjFmMTMxNWFjNTU2ZmYwMzgxYTliMmY4NzQ1ODNjMjFkMzQ4Yy4uYmRjY2E3
NDZlOWYzYzYyNWZjMWQxMWQ1M2ZkNWY2NjA2ZDk5YTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xNjQsMTEgKzE2NCwx
NCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkQ3JlYXRlV2luZG93UHJveHkoSlNE
T01XaW5kb3dQcm94eSYgd2luZG93UHJveHkpCiAKIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlc3BvbnNlSGVhZGVycygpIGNvbnN0
CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHJlc3VsdDsKLSAg
ICByZXN1bHQubV9oZWFkZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wb2xpY2llcy5zaXpl
KCkpOwotICAgIGZvciAoYXV0byYgcG9saWN5IDogbV9wb2xpY2llcykKLSAgICAgICAgcmVzdWx0
Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQoeyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhl
YWRlclR5cGUoKSB9KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghbV9jYWNoZWRSZXNw
b25zZUhlYWRlcnMpIHsKKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1faGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fcG9saWNpZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3Bv
bGljaWVzKQorICAgICAgICAgICAgcmVzdWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQoeyBw
b2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhlYWRlclR5cGUoKSB9KTsKKyAgICAgICAgbV9jYWNo
ZWRSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiAq
bV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGhlYWRlcnMsIFJlcG9ydFBhcnNpbmdFcnJvcnMgcmVwb3J0UGFyc2luZ0Vycm9ycykK
QEAgLTE4OCw2ICsxOTEsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2
ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogICAgICAgICBtX2hh
c0FQSVBvbGljeSA9IHRydWU7CiAgICAgfQogCisgICAgbV9jYWNoZWRSZXNwb25zZUhlYWRlcnMg
PSBzdGQ6Om51bGxvcHQ7CisKICAgICAvLyBSRkMyNjE2LCBzZWN0aW9uIDQuMiBzcGVjaWZpZXMg
dGhhdCBoZWFkZXJzIGFwcGVhcmluZyBtdWx0aXBsZSB0aW1lcyBjYW4KICAgICAvLyBiZSBjb21i
aW5lZCB3aXRoIGEgY29tbWEuIFdhbGsgdGhlIGhlYWRlciBzdHJpbmcsIGFuZCBwYXJzZSBlYWNo
IGNvbW1hCiAgICAgLy8gc2VwYXJhdGVkIGNodW5rIGFzIGEgc2VwYXJhdGUgaGVhZGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCBi
MDVmMDM3MDE4NDRiMTc2ZjkxNjVjNWE0ZWRlMmEwMjFhNjQ5MjdiLi5hNmRhMGQ2Y2U2MWE2ZTE4
MmRhNzJlN2M4MGRkM2MzYjQzMzZiY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjUsOCArNjUsOCBAQCBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3kgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7Ci0gICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiwgY29uc3QgRnJhbWUqID0gbnVsbHB0cik7Ci0gICAgfkNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShj
b25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IEZyYW1lKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5Db250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0YXRl
RnJvbShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICB2b2lkIGNvcHlVcGdyYWRl
SW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYpOwpA
QCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgICAgIEhUVFBIZWFkZXIsCiAgICAgICAgIElu
aGVyaXRlZCwKICAgICB9OwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyByZXNwb25zZUhlYWRlcnMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgcmVzcG9uc2VIZWFkZXJzKCkgY29uc3Q7CiAgICAg
ZW51bSBSZXBvcnRQYXJzaW5nRXJyb3JzIHsgTm8sIFllcyB9OwotICAgIHZvaWQgZGlkUmVjZWl2
ZUhlYWRlcnMoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgUmVw
b3J0UGFyc2luZ0Vycm9ycyA9IFJlcG9ydFBhcnNpbmdFcnJvcnM6Olllcyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZlSGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmLCBSZXBvcnRQYXJzaW5nRXJyb3JzID0gUmVwb3J0UGFyc2luZ0Vy
cm9yczo6WWVzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xp
Y3lGcm9tKTsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBu
b25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsK
QEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4dEZy
b21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJj
ZShjb25zdCBVUkwmLCBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93Q29ubmVj
dFRvU291cmNlKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNv
bnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VSZWNl
aXZlZDo6Tm8pIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVk
OjpObykgY29uc3Q7CkBAIC0yMTYsNiArMjE2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0Zvcklu
bGluZVNjcmlwdHM7CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdv
cml0aG0+IG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0czsKICAgICBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1Vw
Z3JhZGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycz4gbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IGIxNTQ2MTNjMzAyNjEzYzU1ZTlmN2U2ZTU2OTZkMGU2
ZWUyYzBhNDguLjAwMmUwZjk2OTg3ZGI1YWY3NjVjMzEwYjFiZDkyNTdlMDRhNTFiMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC00MiwxNiArNDIsNDggQEAgZW51bSBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsKIHB1YmxpYzoKKyAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIAotICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycygpID0gZGVmYXVsdDsKLQogICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPj4gbV9o
ZWFkZXJzOwogfTsKIAordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9oZWFkZXJzLnNpemUo
KSk7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9oZWFkZXJzKSB7CisgICAgICAgIGVuY29kZXIg
PDwgcGFpci5maXJzdDsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHBhaXIuc2Vjb25kKTsK
KyAgICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGhlYWRlcnMpCit7CisgICAgdWludDY0X3Qg
aGVhZGVyc1NpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoZWFkZXJzU2l6ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBoZWFkZXJzLm1faGVhZGVycy5yZXNlcnZlQ2FwYWNpdHko
c3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFkZXJzU2l6ZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaGVhZGVyc1NpemU7ICsraSkgeworICAgICAgICBTdHJpbmcgaGVhZGVyOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhlYWRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaGVhZGVyVHlwZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGhlYWRlcnMubV9oZWFkZXJzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihoZWFkZXIsIGhlYWRlclR5cGUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRl
eCAyNmI5ZGMxZTM4YjQwN2I5YTY1ZTU4ZjVhNDcxMjY3N2E0MTQ3MjVhLi45ODJmNjc5YWFlN2Y2
YjM2MzU1NWY0MDRmYTg1OWQ4YmRjNzE1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cApAQCAtODcsNiArODcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChzb3VyY2VPcmlnaW4p
CiAgICAgICAgIGVuY29kZXIgPDwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKnNvdXJjZU9yaWdpbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOworICAgIGVu
Y29kZXIgPDwgY3NwUmVzcG9uc2VIZWFkZXJzOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMTYzLDYgKzE2NCw4IEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5l
dHdvcmtSZXNvdXJjCiAgICAgfQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5t
b2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmNzcFJlc3BvbnNlSGVhZGVycykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDM2Y2EwZTg5YzU5OTdi
OGI1ZDJiZDEzNTU1YzY0MjU5ZjIzYWFkZDguLjFjZmU3YThiZTNmODQ4NmNmZmE1NmY4ZDc5ZDBj
ZjdkYmY3YmJmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg+CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3Ry
aW5nPiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+IHNvdXJjZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlv
bnM6Ok1vZGUgbW9kZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CmluZGV4IGVlODExOGVjZjdiM2VlZjRhMWYyMDVhMzJiODJiZmEyMzA3NTIxZjIuLmMzOGY1Mzg3
MjAzNWVmOTU2YzI1MjVjYjdmNTI3NmRmMWNjZmVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUg
IlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogCiAj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1f
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIFBpbmdMb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTkxLDggKzky
LDE1IEBAIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IERvIENTUCBjaGVj
ay4KKworICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KCkuYWxsb3dDb25uZWN0VG9Tb3Vy
Y2UocmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gUmVkaXJlY3Qg
d2FzIGJsb2NrZWQgYnkgQ1NQIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuc3VyZSB0
aGUgbnVtYmVyIG9mIHJlZGlyZWN0cyBkb2VzIG5vdCBleGNlZWQgMjAuCisKICAgICBpZiAoIW5l
ZWRzQ09SU1ByZWZsaWdodChyZXF1ZXN0KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc1LDYgKzE4MywxNiBAQCBib29sIFBpbmdM
b2FkOjpuZWVkc0NPUlNQcmVmbGlnaHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBj
b25zdAogICAgIHJldHVybiAhbV9pc1NhbWVPcmlnaW5SZXF1ZXN0IHx8ICFzZWN1cml0eU9yaWdp
bigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSk7CiB9CiAKK0NvbnRlbnRTZWN1cml0eVBvbGlj
eSYgUGluZ0xvYWQ6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgaWYgKCFtX2NvbnRl
bnRTZWN1cml0eVBvbGljeSkgeworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PigqbV9wYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbik7CisgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQor
ICAgICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKCpt
X3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKKyAgICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKK30KKwogdm9pZCBQaW5nTG9hZDo6ZG9DT1JTUHJlZmxpZ2h0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
b0NPUlNQcmVmbGlnaHQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApp
bmRleCAwMTQ0NDk2ODkyZTdjZGMwYTMyYzE0YzNlMWUwYTA0MDRhNDJjMTkyLi5hZGY1YjY3MWNj
MjE0NjRjNTdlMTE3MmRjOTViNGJiOGJjMzdkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKQEAg
LTQxLDYgKzQ1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAorICAg
IFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSYgY29udGVudFNlY3VyaXR5UG9saWN5KCk7
CisKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CkBAIC02NCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKICAgICBib29sIG1faXNTYW1lT3JpZ2luUmVxdWVzdDsK
ICAgICBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyIG1fcmVkaXJlY3RIYW5kbGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNl
Y3VyaXR5UG9saWN5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGMxNmQwOGJiN2ZjNGUyNWY4
Y2JiZGUwNDU0YTFlMjM5YzBkYTU5MjQuLjlkOTc3NWIwNDhmNjFhOTA5MzU4MDc3Nzk2ZTM3YjU2
MWM3Y2RiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJV
UkxTY2hlbWVUYXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtMzg1LDcgKzM4Niw3IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIHVuCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4
dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNl
T3JpZ2luLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4
dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNl
T3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBj
YWxsIHRvIGNyZWF0ZVBpbmdIYW5kbGUgbWlnaHQgYmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0
eSBEb2N1bWVudCBjcmVhdGlvbiBiZWZvcmUgYSBOZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCiAg
ICAgLy8gSXQgaXMgbm90IGNsZWFyIHRoYXQgd2Ugc2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJp
bmcgdGhhdCBwcm9jZXNzIGFueXdheXMuCkBAIC00MDUsNiArNDA2LDggQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQsIFIKICAgICBsb2FkUGFyYW1ldGVycy5tb2RlID0gb3B0aW9ucy5tb2RlOwogICAg
IGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJlY3Qg
PT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93OwogICAgIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBuZXR3b3JraW5nQ29udGV4
dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpOworICAgIGlmIChj
b250ZW50U2VjdXJpdHlQb2xpY3kpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmco
bG9hZFBhcmFtZXRlcnMpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGJmYzEwNzQ2ZmM0YjhkZmQ1MzMw
NzgwMzUyMjQ0YjJhYjZkODI0NjAuLjRkMzUxMTQ2N2NjMTQ2OGQyNjhhMjEwZDYwMTNjZDNhYzNi
ZmY5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNDEsMjkgKzQxLDI5IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjsKIGNsYXNzIFdlYlVSTFNjaGVtZVRhc2tQcm94eTsKIHR5cGVkZWYgdWludDY0
X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAotY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgOiBw
dWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgeworY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkxvYWRlclN0cmF0ZWd5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViTG9hZGVyU3RyYXRlZ3koKTsKLSAgICB+V2ViTG9hZGVyU3RyYXRlZ3ko
KSBvdmVycmlkZTsKKyAgICB+V2ViTG9hZGVyU3RyYXRlZ3koKSBmaW5hbDsKICAgICAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRSZXNvdXJjZShXZWJDb3JlOjpG
cmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFscywgV2ViQ29y
ZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZFJlc291cmNlKFdlYkNvcmU6
OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBmaW5hbDsK
KyAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3Jl
OjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmluYWw7CiAKLSAgICB2
b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGJvb2wpIG92ZXJyaWRl
OwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBib29sKSBmaW5hbDsKKyAg
ICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOwogICAgIAotICAgIHZv
aWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbWlu
aW11bVByaW9yaXR5KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdl
YkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkgZmluYWw7CiAKLSAg
ICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3Vt
ZVBlbmRpbmdSZXF1ZXN0cygpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1
ZXN0cygpIGZpbmFsOworICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CiAK
LSAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
c291cmNlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291
cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMmKSBmaW5hbDsKIAotICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2Fj
aGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlI
YXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgZmluYWw7CiAKICAgICBXZWJSZXNv
dXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2FkZXJGb3JJZGVudGlmaWVyKFJlc291cmNlTG9hZElk
ZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV93ZWJSZXNvdXJjZUxvYWRlcnMu
Z2V0KGlkZW50aWZpZXIpOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDQ3OTc3
NmVjOWQyZmUxNzYxZWY0ODE1NTk4ZDAwOTJjZGUzOThhOTIuLjcxZDAxZTEyNzg2OWQ1YTFmNDE4
MjlmMjY5N2FmNjA4NGYxYjcwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAg
LTM2Myw3ICszNjMsNyBAQCBib29sIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9y
bWF0aW9uOjpsaW1pdFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaQogICAgIHJldHVybiBtX3Jl
cXVlc3RzTG9hZGluZy5zaXplKCkgPj0gKHdlYlJlc291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2Vy
aWFsTG9hZGluZ0VuYWJsZWQoKSA/IDEgOiBtX21heFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5n
Q29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gUGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24g
bGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZp
bGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShuZXR3b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgb3B0
aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBQaW5n
SGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6Ok5vLCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRl
eCA2MDk3MGJiNGZiYjc5ZDIzNTkwMjgxYWMzNmM0ODBlMjJmMDg1NDMzLi4zNGNiNjc2N2E5MTI0
NGU1ZjU1OGE1OGEyN2JjYmNiNGE5NTEzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0
cygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYgc291cmNlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYg
c291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0
YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NGExZDZm
NDM1NzExZTUzZGJjMDM0OTAxM2E2NDA2ZmNhNjVlNzI0Li5hZDJlOWRmNDIzNjRmOWViZjQwZDQ2
YjE1MTJkN2ZiNDdkZTE4ZWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbQmVhY29uXSBEbyBjb25u
ZWN0LXNyYyBDU1AgY2hlY2sgb24gcmVkaXJlY3RzIGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzM4MTU0NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKwor
ICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3dwdC9i
ZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1y
ZWRpcmVjdC1hbGxvd2VkLnN1Yi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFj
b24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRp
cmVjdC1ibG9ja2VkLnN1Yi5odG1sOiBBZGRlZC4KKwogMjAxNy0wOC0wOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtCZWFjb25dW05ldHdvcmtTZXNzaW9uXSBT
dXBwb3J0IENPUlMtcHJlZmxpZ2h0aW5nIG9uIHJlZGlyZWN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2Vk
LnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1z
cmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
N2Q4OWRlOThjNjcyOWFiYWM5NDBjYmM4ZDBiODY1M2NiMjE3OTBkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVj
dC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUmVkaXJl
Y3QgaXMgYWxsb3dlZCBieSBDU1AgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxs
b3dlZC5zdWIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmMTRjZmY2YTk0MDc3YjkzYzM2NmJkMTIzZjc5
MzY4MWI3MDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi5odG1sCkBAIC0wLDAgKzEs
NTMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJlYWNvbiBDU1AgY2hlY2tpbmcgb24gcmVkaXJl
Y3Q8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48
L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8c2NyaXB0IHNyYz0iL2NvbW1vbi91
dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5m
by5zdWIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cit2YXIgUkVTT1VSQ0VTX0RJUiA9ICIv
V2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvIjsKKyAgICBsZXQgbWV0YUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJtZXRhIik7CisgICAgbWV0YUVsZW1lbnQuaHR0cEVxdWl2ID0gIkNv
bnRlbnQtU2VjdXJpdHktUG9saWN5IjsKKyAgICBtZXRhRWxlbWVudC5jb250ZW50ID0gImNvbm5l
Y3Qtc3JjICdzZWxmJyAiICsgZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTjsKKyAg
ICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG1ldGFFbGVtZW50KTsKKworZnVuY3Rpb24gcG9s
bFJlc3VsdCh0ZXN0LCBpZCkgeworICB2YXIgY2hlY2tVcmwgPSBSRVNPVVJDRVNfRElSICsgImJl
YWNvbi1wcmVmbGlnaHQucHk/Y21kPWdldCZpZD0iICsgaWQ7CisKKyAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgIHN0ZXBfdGltZW91dCh0ZXN0LnN0ZXBfZnVuYygoKSA9PiB7
CisgICAgICBmZXRjaChjaGVja1VybCkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgIHJlc3Bv
bnNlLmpzb24oKS50aGVuKGJvZHkgPT4geworICAgICAgICAgIHJlc29sdmUoYm9keSk7CisgICAg
ICAgIH0pOworICAgICAgfSk7CisgICAgfSksIDEwMDApOworICB9KTsKK30KKworZnVuY3Rpb24g
dGVzdENPUlNQcmVmbGlnaHRSZWRpcmVjdFN1Y2Nlc3Mod2hhdCkgeworICB2YXIgdGVzdEJhc2Ug
PSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsgUkVTT1VSQ0VTX0RJUjsKKyAg
dmFyIGlkID0gc2VsZi50b2tlbigpOworICB2YXIgdGFyZ2V0ID0gZW5jb2RlVVJJQ29tcG9uZW50
KHRlc3RCYXNlICsgImJlYWNvbi1wcmVmbGlnaHQucHk/YWxsb3dDb3JzPTEmY21kPXB1dCZpZD0i
ICsgaWQpOworCisgIC8vIDMwNyAmIDMwOCByZWRpcmVjdGlvbnMgYXJlIHRoZSBvbmx5IG9uZXMg
dGhhdCBtYWludGFpbiB0aGUgUE9TVCBtZXRob2QuCisgIHZhciB0ZXN0VXJsID0gUkVTT1VSQ0VT
X0RJUiArICJyZWRpcmVjdC5weT9yZWRpcmVjdF9zdGF0dXM9MzA3JmxvY2F0aW9uPSIgKyB0YXJn
ZXQ7CisKKyAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICBhc3NlcnRfdHJ1ZShu
YXZpZ2F0b3Iuc2VuZEJlYWNvbih0ZXN0VXJsLCB3aGF0KSwgIlNlbmRCZWFjb24gU3VjY2VlZGVk
Iik7CisgICAgcmV0dXJuIHBvbGxSZXN1bHQodGVzdCwgaWQpIC50aGVuKHJlc3VsdCA9PiB7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJlZmxpZ2h0J10sIDAsICJEaWQgbm90IHJlY2Vp
dmUgcHJlZmxpZ2h0IikKKyAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0WydiZWFjb24nXSwgMSwg
IlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7CisgIH0sICJSZWRpcmVjdCBpcyBhbGxvd2VkIGJ5
IENTUCIpOworfQorCit0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2VzcygiMTIzIik7Cisg
ICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJl
YWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxOTdh
M2ExNjRjZDYwZWNmNjdkMDM2NTI3OTViYzczZGVjMWFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxv
Y2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlZGlyZWN0IGlz
IGJsb2NrZWQgYnkgQ1NQIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQu
c3ViLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIyMGY0NDdkYWFkNzQ5NjU3YmExZDkzNTU2OWNkZmI3YjQ4
Zjk0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25u
ZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbApAQCAtMCwwICsxLDUwIEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iY29ubmVjdC1zcmMgJ3NlbGYnIj4K
KyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlNlbmRCZWFjb24gQ1NQIGJs
b2NraW5nIG9uIHJlZGlyZWN0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlw
dCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29t
bW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJF
U09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBv
bGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJi
ZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4g
eworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNw
b25zZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAg
ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNl
ID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVI7Cisg
IHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVu
dCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9
IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVz
IHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9IFJFU09VUkNF
U19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFy
Z2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgYXNzZXJ0X3RydWUo
bmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwgd2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRl
ZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRlc3QsIGlkKSAudGhlbihyZXN1bHQgPT4gewor
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3ByZWZsaWdodCddLCAwLCAiRGlkIG5vdCByZWNl
aXZlIHByZWZsaWdodCIpCisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVhY29uJ10sIDAs
ICJEaWQgbm90IHJlY2VpdmUgYmVhY29uIikKKyAgICB9KTsKKyAgfSwgIlJlZGlyZWN0IGlzIGJs
b2NrZWQgYnkgQ1NQIik7Cit9CisKK3Rlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKCIx
MjMiKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317841</attachid>
            <date>2017-08-10 14:08:21 -0700</date>
            <delta_ts>2017-08-10 14:51:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175410-20170810140820.patch</filename>
            <type>text/plain</type>
            <size>36035</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMwZTRmMGZmMmRjMGZl
ZDgxZjcyMjIwMGI3MmQ0ZjQwODAzYTFhOC4uN2VlMjA0MTIyZDM5ZTc3MDNkYWIyYTdlYjgxMTBl
YWFhMTY2ZjkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA4LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVj
dC1zcmMgQ1NQIGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMzODE1NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgUGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0IHRvIGNyZWF0ZVBpbmdIYW5k
bGUgc28gdGhhdCB3ZSBjYW4gc2VuZAorICAgICAgICBlbm91Z2ggZGF0YSB0byB0aGUgTmV0d29y
a1Byb2Nlc3Mgc28gZG8gQ1NQIGNoZWNrcyBmb3IgUGluZyBsb2FkcyBzdWNoCisgICAgICAgIGFz
IEJlYWNvbi4gRm9yIHRoZSBJUEMsIHdlIHNlcmlhbGl6ZSB0aGUgQ29udGVudFNlY3VyaXR5UG9s
aWN5J3MgcmVzcG9uc2UKKyAgICAgICAgaGVhZGVycy4gVGhvc2UgaGVhZGVycyBhcmUgbm93IGNh
Y2hlZCBpbiBDb250ZW50U2VjdXJpdHlQb2xpY3kgZm9yCisgICAgICAgIHBlcmZvcm1hbmNlIHJl
YXNvbnMuIENTUCBoZWFkZXJzIGFyZSByYXJlbHkgdXBkYXRlZCBpbiBwcmFjdGljZSBidXQKKyAg
ICAgICAgc2VuZEJlYWNvbigpIG1heSBnZXQgY2FsbGVkIHJlcGVhdGVkbHkgZm9yIGEgZ2l2ZW4g
ZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1i
ZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQv
YmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sCisKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpsb2FkSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpQaW5n
TG9hZGVyOjpzdGFydFBpbmdMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVzcG9uc2VIZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6OmRlY29kZSk6CisKIDIwMTctMDgt
MDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbV1RG
XSBNb3ZlIFRleHRTdHJlYW0gaW50byBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2YwODQ2NmMzN2MxNGJmZGIy
NzJkZWEyOTk4NGUwZDRjNzZkZDE4ZC4uMWI4MjY3ZWY1NjVmZDAwYjBiOTcyNGIwM2ZjYTA4YTI1
YmE3NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtCZWFjb25dIERvIGNvbm5lY3Qtc3Jj
IENTUCBjaGVjayBvbiByZWRpcmVjdHMgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
MzgxNTQ3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
IFBhc3MgQ1NQIFJlc3BvbnNlIGhlYWRlcnMgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIHZpYSBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycworICAgICAgICB3aGVuIGRvaW5nIGEgUGluZ0xvYWQu
IFRoaXMgYWxsb3dzIFBpbmdMb2FkIHRvIGRvIENTUCBjaGVja3MgKGluIHBhcnRpY3VsYXIKKyAg
ICAgICAgY29ubmVjdC1zcmMgb25lcykgaW4gY2FzZSB0aGUgcGluZyBsb2FkIGdldHMgcmVkaXJl
Y3RlZC4gVGhvc2UgY2hlY2tzIG5lZWQgdG8gYmUKKyAgICAgICAgZG9uZSBvbiB0aGUgTmV0d29y
a1Byb2Nlc3Mgc2lkZSBhdCB0aGlzIHBvaW50IGJlY2F1c2UgdGhlcmUgaXMgbm8gZ3VhcmFudGVl
IHRoZQorICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgaXMgc3RpbGwgYXJvdW5kLgorCisgICAg
ICAgIFRvIGRvIHRoZSBDU1AgY2hlY2tzLCBQaW5nTG9hZCBsYXppbHkgcmVjb25zdHJ1Y3RzIGEg
Q29udGVudFNlY3VyaXR5UG9saWN5IG9iamVjdAorICAgICAgICBmcm9tIHRoZSBDU1AgcmVzcG9u
c2UgaGVhZGVycy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6Y29udGVudFNlY3VyaXR5UG9s
aWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAxNy0wOC0wOSAgSmVyZW15IEpv
bmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgSW52YWxpZGF0ZSBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyIGluIHNhbWUgZmFzaGlvbiBhcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiYWZlMTRjZTZjMWE2MTUxMjdiYzRiOTBhYTljMWE4OWNj
YTA4ZTQ1Li4xNDk5YTI1YWRjNTFiNTkzMDRlN2ZiM2E0YmNlNDAyNTkzNjcyNDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA4LTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gRG8gY29ubmVjdC1zcmMgQ1NQ
IGNoZWNrIG9uIHJlZGlyZWN0cyBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzODE1
NDcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBk
YXRlIGNyZWF0ZVBpbmdIYW5kbGUoKSB0byB0YWtlIGluIENvbnRlbnRTZWN1cml0eVBvbGljeQor
ICAgICAgICBvYmplY3QgaW4gYnV0IG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgV0sxLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRlUGluZ0hhbmRsZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTctMDgt
MDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQmVhY29uXSBB
ZGQgc3VwcG9ydCBmb3IgQ09SUy1wcmVmbGlnaHRpbmcgZm9yIFdLMiAvIE5FVFdPUktfU0VTU0lP
TgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4NjNhYTljNGRmYjA5
MmExMzVlMzFiNDAwOTg1YWViOTE4M2JlMWMyLi5jNGRiN2ExYmYwM2E4NDRhZmEzYWZhY2YyMTQy
ZGE2NmUxZTVmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQZW5kaW5n
UmVxdWVzdHMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlUGluZ0hhbmRsZShOZXR3
b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIENvbnRlbnRTZWN1cml0eVBvbGljeSos
IGNvbnN0IEZldGNoT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZURlcml2
ZWREYXRhVG9DYWNoZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlLZXksIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDg5YmJhZGU2ZTVjYWQz
M2Q2M2Q0YzRlMzEwYzA1OGFkNmUzYjIzYTcuLjhlNTE2OWI1MGVmYjFhZjExZTc3NzcwM2ZlYWZi
MWY5NjU5OTA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShGcmFtZSYgZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAg
ICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KTsKIAotICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QsIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCksIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdM
b2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMp
OwogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGluZwpAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
dGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxvd1Jl
ZGlyZWN0czo6WWVzKTsKKyAgICBzdGFydFBpbmdMb2FkKGZyYW1lLCByZXF1ZXN0LCBkb2N1bWVu
dCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpZZXMpOwogfQogCiB2b2lkIFBpbmdMb2FkZXI6OnNl
bmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVm
PEZvcm1EYXRhPiYmIHJlcG9ydCwgVmlvbGF0aW9uUmVwb3J0VHlwZSByZXBvcnRUeXBlKQpAQCAt
MTc2LDEwICsxNzYsMTAgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZy
YW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZjxGb3IKICAgICBpZiAoIXJlZmVy
cmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIp
OwogCi0gICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKSwgU2hvdWxkRm9sbG93UmVkaXJlY3RzOjpObyk7CisgICAgc3RhcnRQaW5nTG9hZChm
cmFtZSwgcmVxdWVzdCwgZG9jdW1lbnQsIFNob3VsZEZvbGxvd1JlZGlyZWN0czo6Tm8pOwogfQog
Ci12b2lkIFBpbmdMb2FkZXI6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIFNob3VsZEZvbGxv
d1JlZGlyZWN0cyBzaG91bGRGb2xsb3dSZWRpcmVjdHMpCit2b2lkIFBpbmdMb2FkZXI6OnN0YXJ0
UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3VtZW50
JiBkb2N1bWVudCwgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHNob3VsZEZvbGxvd1JlZGlyZWN0cykK
IHsKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS5wYWdlKCktPnByb2dyZXNz
KCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIC8vIEZJWE1FOiBXaHkgYWN0aXZlRG9j
dW1lbnRMb2FkZXI/IEkgd291bGQgaGF2ZSBleHBlY3RlZCBkb2N1bWVudExvYWRlcigpLgpAQCAt
MTk0LDcgKzE5NCw4IEBAIHZvaWQgUGluZ0xvYWRlcjo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJh
bWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPCiAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKGZyYW1lLCBpZGVudGlmaWVy
LCBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmNyZWF0ZVBpbmdIYW5kbGUoZnJhbWUubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwg
cmVxdWVzdCwgc291cmNlT3JpZ2luLCBvcHRpb25zKTsKKyAgICBhdXRvKiBjb250ZW50U2VjdXJp
dHlQb2xpY3kgPSBkb2N1bWVudC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3koKSA/IG51bGxwdHIgOiBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRs
ZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIG9wdGlvbnMpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCA5NzM1NGZiMzc4ZThlNzU0YjVmMzQy
ZWQwZjAyMWE3ODcwN2EyZmZhLi5jM2E5MmEyODdmYTUzZjU2MWRmOWYzZjY1YWEyNzI2Y2EzM2Y1
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTM3LDExICszNywxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogCiBlbnVtIGNsYXNzIFZpb2xhdGlvblJlcG9ydFR5cGUgewogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeSwKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93UmVkaXJlY3RzIHsgTm8sIFllcyB9Owot
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBT
ZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBTaG91bGRGb2xsb3dSZWRpcmVjdHMpOworICAg
IHN0YXRpYyB2b2lkIHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBEb2N1
bWVudCYsIFNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApp
bmRleCBiNWIwYzhiYmQyNjNkYzU3ZTE4YjBlNjNkYTNiODVjMzlkN2VjZjNmLi44NmViZTc4NGUz
NzMwNjM4MjQ0Y2Y0M2ZhMzRkZTc4NDMxMjk2MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTI2Miw3ICsyNjIsMTAgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VM
b2FkZXIpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qgc3BlY2lhbC1jYXNlIEJlYWNvbiBo
ZXJlLgogICAgIGlmIChtX29wdGlvbnMua2VlcEFsaXZlICYmIHR5cGUoKSA9PSBDYWNoZWRSZXNv
dXJjZTo6QmVhY29uKSB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbik7Ci0gICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5jcmVhdGVQaW5nSGFuZGxlKGZyYW1l
LmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsICptX29yaWdpbiwgbV9vcHRp
b25zKTsKKyAgICAgICAgLy8gQmVhY29uIGlzIG5vdCBleHBvc2VkIHRvIHdvcmtlcnMgc28gaXQg
aXMgc2FmZSB0byByZWx5IG9uIHRoZSBkb2N1bWVudCBoZXJlLgorICAgICAgICBhdXRvKiBkb2N1
bWVudCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8qIGNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50ICYmICFkb2N1bWVudC0+c2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgPyBkb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCkgOiBudWxscHRyOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+Y3JlYXRlUGluZ0hhbmRsZShmcmFtZS5sb2FkZXIoKS5uZXR3b3JraW5n
Q29udGV4dCgpLCByZXF1ZXN0LCAqbV9vcmlnaW4sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9v
cHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggYzQ1MjFmMTMxNWFjNTU2
ZmYwMzgxYTliMmY4NzQ1ODNjMjFkMzQ4Yy4uYmRjY2E3NDZlOWYzYzYyNWZjMWQxMWQ1M2ZkNWY2
NjA2ZDk5YTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCkBAIC0xNjQsMTEgKzE2NCwxNCBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6ZGlkQ3JlYXRlV2luZG93UHJveHkoSlNET01XaW5kb3dQcm94eSYgd2luZG93UHJv
eHkpCiAKIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlc3BvbnNlSGVhZGVycygpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzIHJlc3VsdDsKLSAgICByZXN1bHQubV9oZWFkZXJzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9wb2xpY2llcy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcG9s
aWN5IDogbV9wb2xpY2llcykKLSAgICAgICAgcmVzdWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBl
bmQoeyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhlYWRlclR5cGUoKSB9KTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIGlmICghbV9jYWNoZWRSZXNwb25zZUhlYWRlcnMpIHsKKyAgICAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0Lm1faGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcG9saWNpZXMuc2l6ZSgpKTsK
KyAgICAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKQorICAgICAgICAgICAgcmVz
dWx0Lm1faGVhZGVycy51bmNoZWNrZWRBcHBlbmQoeyBwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3kt
PmhlYWRlclR5cGUoKSB9KTsKKyAgICAgICAgbV9jYWNoZWRSZXNwb25zZUhlYWRlcnMgPSBXVEZN
b3ZlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiAqbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7
CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVycyhjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGhlYWRlcnMsIFJlcG9ydFBh
cnNpbmdFcnJvcnMgcmVwb3J0UGFyc2luZ0Vycm9ycykKQEAgLTE4OCw2ICsxOTEsOCBAQCB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlciwgQ29udGVudFNlY3VyaQogICAgICAgICBtX2hhc0FQSVBvbGljeSA9IHRydWU7CiAgICAg
fQogCisgICAgbV9jYWNoZWRSZXNwb25zZUhlYWRlcnMgPSBzdGQ6Om51bGxvcHQ7CisKICAgICAv
LyBSRkMyNjE2LCBzZWN0aW9uIDQuMiBzcGVjaWZpZXMgdGhhdCBoZWFkZXJzIGFwcGVhcmluZyBt
dWx0aXBsZSB0aW1lcyBjYW4KICAgICAvLyBiZSBjb21iaW5lZCB3aXRoIGEgY29tbWEuIFdhbGsg
dGhlIGhlYWRlciBzdHJpbmcsIGFuZCBwYXJzZSBlYWNoIGNvbW1hCiAgICAgLy8gc2VwYXJhdGVk
IGNodW5rIGFzIGEgc2VwYXJhdGUgaGVhZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCBiMDVmMDM3MDE4NDRiMTc2ZjkxNjVjNWE0
ZWRlMmEwMjFhNjQ5MjdiLi5hNmRhMGQ2Y2U2MWE2ZTE4MmRhNzJlN2M4MGRkM2MzYjQzMzZiY2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aApAQCAtNjUsOCArNjUsOCBAQCBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3kgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENvbnRlbnRTZWN1
cml0eVBvbGljeShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgZXhwbGljaXQgQ29udGVu
dFNlY3VyaXR5UG9saWN5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgRnJhbWUqID0gbnVs
bHB0cik7Ci0gICAgfkNvbnRlbnRTZWN1cml0eVBvbGljeSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNv
bnN0IEZyYW1lKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Db250ZW50U2VjdXJp
dHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0YXRlRnJvbShjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kqKTsKICAgICB2b2lkIGNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9t
KGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYpOwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6
CiAgICAgICAgIEhUVFBIZWFkZXIsCiAgICAgICAgIEluaGVyaXRlZCwKICAgICB9OwotICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyByZXNwb25zZUhlYWRlcnMoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMgcmVzcG9uc2VIZWFkZXJzKCkgY29uc3Q7CiAgICAgZW51bSBSZXBvcnRQYXJzaW5nRXJyb3Jz
IHsgTm8sIFllcyB9OwotICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlcnMoY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgUmVwb3J0UGFyc2luZ0Vycm9ycyA9IFJlcG9y
dFBhcnNpbmdFcnJvcnM6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRSZWNlaXZl
SGVhZGVycyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBSZXBv
cnRQYXJzaW5nRXJyb3JzID0gUmVwb3J0UGFyc2luZ0Vycm9yczo6WWVzKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVy
VHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKIAogICAgIGJvb2wgYWxs
b3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVk
aXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29u
c3Q7CiAgICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVk
aXJlY3RSZXNwb25zZVJlY2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmLCBSZWRpcmVjdFJl
c3BvbnNlUmVjZWl2ZWQgPSBSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNv
bnN0OwogICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYsIFJlZGlyZWN0UmVzcG9u
c2VSZWNlaXZlZCA9IFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pIGNvbnN0OwogCiAgICAg
Ym9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVkaXJlY3RSZXNwb25zZVJl
Y2VpdmVkID0gUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykgY29uc3Q7CkBAIC0yMTYsNiAr
MjE2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFz
aEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHM7CiAgICAgT3B0aW9u
U2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IG1faGFzaEFsZ29yaXRobXNG
b3JJbmxpbmVTdHlsZXNoZWV0czsKICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGU7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gbV9jYWNoZWRS
ZXNwb25zZUhlYWRlcnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4
IGIxNTQ2MTNjMzAyNjEzYzU1ZTlmN2U2ZTU2OTZkMGU2ZWUyYzBhNDguLjAwMmUwZjk2OTg3ZGI1
YWY3NjVjMzEwYjFiZDkyNTdlMDRhNTFiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5o
CkBAIC00MiwxNiArNDIsNDggQEAgZW51bSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFk
ZXJUeXBlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsK
IHB1YmxpYzoKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMoKSA9IGRl
ZmF1bHQ7CiAgICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeTsKIAotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycygpID0gZGVmYXVsdDsKLQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPj4gbV9oZWFkZXJzOwogfTsKIAordGVtcGxhdGUg
PGNsYXNzIEVuY29kZXI+Cit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9oZWFkZXJzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBwYWly
IDogbV9oZWFkZXJzKSB7CisgICAgICAgIGVuY29kZXIgPDwgcGFpci5maXJzdDsKKyAgICAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHBhaXIuc2Vjb25kKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBEZWNvZGVyPgorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGhlYWRlcnMpCit7CisgICAgdWludDY0X3QgaGVhZGVyc1NpemU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoZWFkZXJzU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBo
ZWFkZXJzLm1faGVhZGVycy5yZXNlcnZlQ2FwYWNpdHkoc3RhdGljX2Nhc3Q8c2l6ZV90PihoZWFk
ZXJzU2l6ZSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhZGVyc1NpemU7ICsraSkg
eworICAgICAgICBTdHJpbmcgaGVhZGVyOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhl
YWRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0oaGVhZGVyVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGhl
YWRlcnMubV9oZWFkZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihoZWFkZXIsIGhlYWRlclR5cGUp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAyNmI5ZGMxZTM4YjQwN2I5YTY1ZTU4
ZjVhNDcxMjY3N2E0MTQ3MjVhLi45ODJmNjc5YWFlN2Y2YjM2MzU1NWY0MDRmYTg1OWQ4YmRjNzE1
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtODcsNiArODcsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGlmIChzb3VyY2VPcmlnaW4pCiAgICAgICAgIGVuY29kZXIgPDwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnNvdXJjZU9yaWdpbik7CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOworICAgIGVuY29kZXIgPDwgY3NwUmVzcG9uc2VIZWFk
ZXJzOwogfQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0
KQpAQCAtMTYzLDYgKzE2NCw4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgfQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5tb2RlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNzcFJlc3BvbnNlSGVhZGVycykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oCmluZGV4IDM2Y2EwZTg5YzU5OTdiOGI1ZDJiZDEzNTU1YzY0MjU5ZjIzYWFk
ZDguLjFjZmU3YThiZTNmODQ4NmNmZmE1NmY4ZDc5ZDBjZjdkYmY3YmJmNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CkBAIC01Nyw2
ICs1OCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBkZXJpdmVkQ2FjaGVkRGF0YVR5
cGVzVG9SZXRyaWV2ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNvdXJj
ZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4g
Y3NwUmVzcG9uc2VIZWFkZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGVlODExOGVjZjdiM2VlZjRh
MWYyMDVhMzJiODJiZmEyMzA3NTIxZjIuLjU4ODU2OGU4OWIzMzFiOGY4NjdiZTI4MjZmMTU3NDE2
ZGIxZGM2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFBpbmdMb2FkOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTkxLDggKzkyLDE3IEBAIHZvaWQgUGluZ0xvYWQ6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBSCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgLy8gRklYTUU6IERvIENTUCBjaGVjay4KKworICAgIGlmIChhdXRvKiBjb250
ZW50U2VjdXJpdHlQb2xpY3kgPSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgeworICAg
ICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UocmVx
dWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdh
cyBibG9ja2VkIGJ5IENTUCIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgZW5zdXJlIHRoZSBudW1iZXIgb2YgcmVkaXJlY3RzIGRvZXMgbm90IGV4Y2VlZCAy
MC4KKwogICAgIGlmICghbmVlZHNDT1JTUHJlZmxpZ2h0KHJlcXVlc3QpKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CkBAIC0xNzUsNiArMTg1
LDE1IEBAIGJvb2wgUGluZ0xvYWQ6Om5lZWRzQ09SU1ByZWZsaWdodChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpIGNvbnN0CiAgICAgcmV0dXJuICFtX2lzU2FtZU9yaWdpblJlcXVlc3Qg
fHwgIXNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKIH0KIAorQ29u
dGVudFNlY3VyaXR5UG9saWN5KiBQaW5nTG9hZDo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fY29udGVudFNlY3VyaXR5UG9saWN5ICYmIG1fcGFyYW1ldGVycy5j
c3BSZXNwb25zZUhlYWRlcnMpIHsKKyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oKm1fcGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4pOworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhl
YWRlcnMoKm1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOworICAgIH0KKyAgICByZXR1cm4gbV9jb250
ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7Cit9CisKIHZvaWQgUGluZ0xvYWQ6OmRvQ09SU1ByZWZs
aWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZG9DT1JTUHJlZmxpZ2h0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgKaW5kZXggMDE0NDQ5Njg5MmU3Y2RjMGEzMmMxNGMzZTFlMGEwNDA0YTQyYzE5
Mi4uMzYwMGE0YjQ0OTczNzgzMmZlNmRmYzE2M2RiNDhjYzNjMjFjMjA2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRl
ICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xp
Y3k7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXI7CkBAIC00MSw2ICs0NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgflBpbmdM
b2FkKCk7CiAKKyAgICBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1
cml0eVBvbGljeSgpIGNvbnN0OworCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwpAQCAtNjQsNiArNzAsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgYm9vbCBtX2lz
U2FtZU9yaWdpblJlcXVlc3Q7CiAgICAgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBtX3JlZGly
ZWN0SGFuZGxlcjsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCmluZGV4IGMxNmQwOGJiN2ZjNGUyNWY4Y2JiZGUwNDU0YTFlMjM5YzBkYTU5MjQuLjlkOTc3
NWIwNDhmNjFhOTA5MzU4MDc3Nzk2ZTM3YjU2MWM3Y2RiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNo
ZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudC5oPgpAQCAtMzg1LDcgKzM4Niw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIHVuCiAgICAg
fQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtp
bmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjcmVhdGVQaW5nSGFuZGxlKE5ldHdvcmtp
bmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBDb250ZW50U2VjdXJpdHlQb2xpY3kq
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBjYWxsIHRvIGNyZWF0ZVBpbmdIYW5kbGUgbWlnaHQg
YmUgbWFkZSBkdXJpbmcgaW5pdGlhbCBlbXB0eSBEb2N1bWVudCBjcmVhdGlvbiBiZWZvcmUgYSBO
ZXR3b3JraW5nQ29udGV4dCBleGlzdHMuCiAgICAgLy8gSXQgaXMgbm90IGNsZWFyIHRoYXQgd2Ug
c2hvdWxkIHNlbmQgcGluZyBsb2FkcyBkdXJpbmcgdGhhdCBwcm9jZXNzIGFueXdheXMuCkBAIC00
MDUsNiArNDA2LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6Y3JlYXRlUGluZ0hhbmRsZShO
ZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFIKICAgICBsb2FkUGFyYW1ldGVy
cy5tb2RlID0gb3B0aW9ucy5tb2RlOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1Jl
ZGlyZWN0cyA9IG9wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9s
bG93OwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QgPSBuZXR3b3JraW5nQ29udGV4dC0+c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCgpOworICAgIGlmIChjb250ZW50U2VjdXJpdHlQb2xpY3kpCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGlj
eS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3
b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6TG9hZFBpbmcobG9hZFBhcmFtZXRlcnMpLCAwKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
CmluZGV4IGJmYzEwNzQ2ZmM0YjhkZmQ1MzMwNzgwMzUyMjQ0YjJhYjZkODI0NjAuLjRkMzUxMTQ2
N2NjMTQ2OGQyNjhhMjEwZDYwMTNjZDNhYzNiZmY5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNDEsMjkgKzQx
LDI5IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlVSTFNjaGVt
ZVRhc2tQcm94eTsKIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAot
Y2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kg
eworY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3kgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkxvYWRlclN0cmF0ZWd5KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTG9hZGVyU3RyYXRlZ3ko
KTsKLSAgICB+V2ViTG9hZGVyU3RyYXRlZ3koKSBvdmVycmlkZTsKKyAgICB+V2ViTG9hZGVyU3Ry
YXRlZ3koKSBmaW5hbDsKICAgICAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI+IGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZyByZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFscywgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcj4gbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCB1bnNpZ25lZCBsb25nIHJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYgZGF0YSkgZmluYWw7CiAKLSAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciopIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciosIGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZWRpcmVjdFVSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBmaW5hbDsKKyAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNl
aXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJl
Y3RVUkwpIGZpbmFsOwogICAgIAotICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5KSBvdmVycmlkZTsKKyAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1p
bmltdW1Qcmlvcml0eSkgZmluYWw7CiAKLSAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpIGZpbmFsOworICAgIHZvaWQgcmVzdW1l
UGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CiAKLSAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBmaW5hbDsKIAotICAg
IHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFz
aCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNo
ZShjb25zdCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAotICAg
IHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQo
Ym9vbCkgZmluYWw7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2FkZXJG
b3JJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyBy
ZXR1cm4gbV93ZWJSZXNvdXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCmluZGV4IDQ3OTc3NmVjOWQyZmUxNzYxZWY0ODE1NTk4ZDAwOTJjZGUz
OThhOTIuLjcxZDAxZTEyNzg2OWQ1YTFmNDE4MjlmMjY5N2FmNjA4NGYxYjcwZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM2Myw3ICszNjMsNyBAQCBib29sIFdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjpsaW1pdFJlcXVlc3RzKFJlc291cmNl
TG9hZFByaW9yaQogICAgIHJldHVybiBtX3JlcXVlc3RzTG9hZGluZy5zaXplKCkgPj0gKHdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcigpLmlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSA/IDEgOiBtX21h
eFJlcXVlc3RzSW5GbGlnaHQpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
Y3JlYXRlUGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBjb25zdCBGZXRj
aE9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3JlYXRl
UGluZ0hhbmRsZShOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8g
UGluZ0hhbmRsZSBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5nIGl0c2VsZiB3aGVu
IGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICBuZXcgUGluZ0hhbmRsZShuZXR3
b3JraW5nQ29udGV4dCwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyAhPSBGZXRjaE9wdGlv
bnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBQaW5nSGFuZGxlOjpVc2VzQXN5bmNDYWxsYmFja3M6Ok5v
LCBvcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA2MDk3MGJiNGZiYjc5ZDIzNTkwMjgxYWMzNmM0
ODBlMjJmMDg1NDMzLi4zNGNiNjc2N2E5MTI0NGU1ZjU1OGE1OGEyN2JjYmNiNGE5NTEzYjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1l
UGVuZGluZ1JlcXVlc3RzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBS
ZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVBpbmdIYW5kbGUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0Jiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGUgeyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2NGExZDZmNDM1NzExZTUzZGJjMDM0OTAxM2E2NDA2ZmNhNjVl
NzI0Li5hZDJlOWRmNDIzNjRmOWViZjQwZDQ2YjE1MTJkN2ZiNDdkZTE4ZWU3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTctMDgtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBbQmVhY29uXSBEbyBjb25uZWN0LXNyYyBDU1AgY2hlY2sgb24gcmVkaXJlY3Rz
IGFzIHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTQxMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM4MTU0NzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGly
ZWN0LWFsbG93ZWQuc3ViLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
YmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0
LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvYmVh
Y29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sOiBBZGRlZC4K
KwogMjAxNy0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtCZWFjb25dW05ldHdvcmtTZXNzaW9uXSBTdXBwb3J0IENPUlMtcHJlZmxpZ2h0aW5nIG9uIHJl
ZGlyZWN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qt
c3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWFsbG93ZWQuc3Vi
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Q4OWRlOThjNjcyOWFiYWM5NDBjYmM4ZDBiODY1
M2NiMjE3OTBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1hbGxvd2VkLnN1Yi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACisKK1BBU1MgUmVkaXJlY3QgaXMgYWxsb3dlZCBieSBDU1AgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVk
aXJlY3QtYWxsb3dlZC5zdWIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25u
ZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYWxsb3dlZC5zdWIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJm
MTRjZmY2YTk0MDc3YjkzYzM2NmJkMTIzZjc5MzY4MWI3MDA1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1h
bGxvd2VkLnN1Yi5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+U2VuZEJl
YWNvbiBDU1AgY2hlY2tpbmcgb24gcmVkaXJlY3Q8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPS9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9L3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4K
KyAgICA8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+Cit2YXIgUkVTT1VSQ0VTX0RJUiA9ICIvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvIjsKKyAg
ICBsZXQgbWV0YUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZXRhIik7CisgICAg
bWV0YUVsZW1lbnQuaHR0cEVxdWl2ID0gIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IjsKKyAgICBt
ZXRhRWxlbWVudC5jb250ZW50ID0gImNvbm5lY3Qtc3JjICdzZWxmJyAiICsgZ2V0X2hvc3RfaW5m
bygpLkhUVFBfUkVNT1RFX09SSUdJTjsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG1l
dGFFbGVtZW50KTsKKworZnVuY3Rpb24gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgeworICB2YXIgY2hl
Y2tVcmwgPSBSRVNPVVJDRVNfRElSICsgImJlYWNvbi1wcmVmbGlnaHQucHk/Y21kPWdldCZpZD0i
ICsgaWQ7CisKKyAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHN0ZXBfdGlt
ZW91dCh0ZXN0LnN0ZXBfZnVuYygoKSA9PiB7CisgICAgICBmZXRjaChjaGVja1VybCkudGhlbihy
ZXNwb25zZSA9PiB7CisgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGJvZHkgPT4geworICAg
ICAgICAgIHJlc29sdmUoYm9keSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSksIDEw
MDApOworICB9KTsKK30KKworZnVuY3Rpb24gdGVzdENPUlNQcmVmbGlnaHRSZWRpcmVjdFN1Y2Nl
c3Mod2hhdCkgeworICB2YXIgdGVzdEJhc2UgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVf
T1JJR0lOICsgUkVTT1VSQ0VTX0RJUjsKKyAgdmFyIGlkID0gc2VsZi50b2tlbigpOworICB2YXIg
dGFyZ2V0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHRlc3RCYXNlICsgImJlYWNvbi1wcmVmbGlnaHQu
cHk/YWxsb3dDb3JzPTEmY21kPXB1dCZpZD0iICsgaWQpOworCisgIC8vIDMwNyAmIDMwOCByZWRp
cmVjdGlvbnMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBtYWludGFpbiB0aGUgUE9TVCBtZXRob2Qu
CisgIHZhciB0ZXN0VXJsID0gUkVTT1VSQ0VTX0RJUiArICJyZWRpcmVjdC5weT9yZWRpcmVjdF9z
dGF0dXM9MzA3JmxvY2F0aW9uPSIgKyB0YXJnZXQ7CisKKyAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKKyAgICBhc3NlcnRfdHJ1ZShuYXZpZ2F0b3Iuc2VuZEJlYWNvbih0ZXN0VXJsLCB3
aGF0KSwgIlNlbmRCZWFjb24gU3VjY2VlZGVkIik7CisgICAgcmV0dXJuIHBvbGxSZXN1bHQodGVz
dCwgaWQpIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsncHJl
ZmxpZ2h0J10sIDAsICJEaWQgbm90IHJlY2VpdmUgcHJlZmxpZ2h0IikKKyAgICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0WydiZWFjb24nXSwgMSwgIlJlY2VpdmVkIGJlYWNvbiIpCisgICAgfSk7Cisg
IH0sICJSZWRpcmVjdCBpcyBhbGxvd2VkIGJ5IENTUCIpOworfQorCit0ZXN0Q09SU1ByZWZsaWdo
dFJlZGlyZWN0U3VjY2VzcygiMTIzIik7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1i
ZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxOTdhM2ExNjRjZDYwZWNmNjdkMDM2NTI3OTViYzczZGVj
MWFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25u
ZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIFJlZGlyZWN0IGlzIGJsb2NrZWQgYnkgQ1NQIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0
LWJsb2NrZWQuc3ViLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1z
cmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIyMGY0NDdk
YWFkNzQ5NjU3YmExZDkzNTU2OWNkZmI3YjQ4Zjk0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tl
ZC5zdWIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8
aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29u
dGVudD0iY29ubmVjdC1zcmMgJ3NlbGYnIj4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgPHRpdGxlPlNlbmRCZWFjb24gQ1NQIGJsb2NraW5nIG9uIHJlZGlyZWN0PC90aXRsZT4KKyAg
ICA8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+CisgIDwv
aGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgordmFyIFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24v
cmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBvbGxSZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNo
ZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9
IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3Rp
bWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4geworICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4o
cmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAg
ICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAx
MDAwKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDT1JTUHJlZmxpZ2h0UmVkaXJlY3RTdWNj
ZXNzKHdoYXQpIHsKKyAgdmFyIHRlc3RCYXNlID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RF
X09SSUdJTiArIFJFU09VUkNFU19ESVI7CisgIHZhciBpZCA9IHNlbGYudG9rZW4oKTsKKyAgdmFy
IHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0
LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAzMDcgJiAzMDggcmVk
aXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9k
LgorICB2YXIgdGVzdFVybCA9IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3QucHk/cmVkaXJlY3Rf
c3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFyZ2V0OworCisgIHByb21pc2VfdGVzdChmdW5jdGlv
bih0ZXN0KSB7CisgICAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCwg
d2hhdCksICJTZW5kQmVhY29uIFN1Y2NlZWRlZCIpOworICAgIHJldHVybiBwb2xsUmVzdWx0KHRl
c3QsIGlkKSAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ3By
ZWZsaWdodCddLCAwLCAiRGlkIG5vdCByZWNlaXZlIHByZWZsaWdodCIpCisgICAgICBhc3NlcnRf
ZXF1YWxzKHJlc3VsdFsnYmVhY29uJ10sIDAsICJEaWQgbm90IHJlY2VpdmUgYmVhY29uIikKKyAg
ICB9KTsKKyAgfSwgIlJlZGlyZWN0IGlzIGJsb2NrZWQgYnkgQ1NQIik7Cit9CisKK3Rlc3RDT1JT
UHJlZmxpZ2h0UmVkaXJlY3RTdWNjZXNzKCIxMjMiKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>