<?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>99351</bug_id>
          
          <creation_ts>2012-10-15 12:30:50 -0700</creation_ts>
          <short_desc>[GTK][Soup] Implement the default authentication dialog via WebCoreSupport</short_desc>
          <delta_ts>2012-10-23 18:08:55 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99352</blocked>
    
    <blocked>99913</blocked>
    
    <blocked>99914</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742278</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-15 12:30:50 -0700</bug_when>
    <thetext>Instead of using a SoupSession feature to enable the default authentication dialog, we should use WebCoreSupport. This is the first step toward full-class support for authentication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744448</commentid>
    <comment_count>1</comment_count>
      <attachid>169222</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-17 11:25:40 -0700</bug_when>
    <thetext>Created attachment 169222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744450</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-17 11:26:07 -0700</bug_when>
    <thetext>The reason the changes in the Soup backend are GTK+ only is that the EFL port still uses a SoupFeature to implement the authentication dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744520</commentid>
    <comment_count>3</comment_count>
      <attachid>169238</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-17 12:57:57 -0700</bug_when>
    <thetext>Created attachment 169238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747446</commentid>
    <comment_count>4</comment_count>
      <attachid>169238</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-22 05:17:08 -0700</bug_when>
    <thetext>Comment on attachment 169238
Patch

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

This is great, I&apos;m happy to see progress on this, thanks!. My only concern is the changes to the default session, because I think they might break EFL port in WebKit1. In any case, since those changes look unrelated to the patch, maybe you can split the patch and I would review the authentication specific changes.

&gt; Source/WebCore/ChangeLog:38
&gt; +        (WebCore::ResourceHandleInternal::soupSession): Use the default SoupSession instead of the
&gt; +        one from the context -- the context is always storing the default one anyway.

This is true in GTK+ port and WebKit2, but not in EFL, I think. Their implementation of the FrameNetworkingContext returns the SoupSession associated to the web view, and they have API to set a SoupSession to the a web view. I&apos;ll add EFL guys to the CC to confirm it.

&gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:48
&gt; +    ProtectionSpaceAuthenticationScheme scheme = ProtectionSpaceAuthenticationSchemeDefault;

This will never happen, since there&apos;s a final else in the if, or is it to silence the compiler?

&gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:60
&gt; +    SoupURI* soupURI = soup_message_get_uri(message);

The message is only passed to get the uri, would it make sense to pass the SoupURI instead to the function? I guess it&apos;s more convenient to pass the message as it&apos;s what the consructor receives.

&gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:69
&gt; +        retrying ? 0 : 1,

retrying ? 0 : 1, // previousFailureCount ?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:268
&gt;  SoupSession* ResourceHandleInternal::soupSession()
&gt;  {
&gt; -    SoupSession* session = sessionFromContext(m_context.get());
&gt; +    SoupSession* session = ResourceHandle::defaultSession();
&gt;      ensureSessionIsInitialized(session);
&gt;      return session;
&gt;  }

If we are going to use always the default session, maybe we can just remove this, or ::defaultSession() since both return the same session in the end.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1043
&gt; +        g_signal_connect(G_OBJECT(session), &quot;authenticate&quot;, G_CALLBACK(authenicateCallback), 0);

g_signal_connect expects a gpointer not a GObject, so we don&apos;t need the cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747447</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-22 05:19:16 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=77341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747669</commentid>
    <comment_count>6</comment_count>
      <attachid>169936</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-22 10:33:32 -0700</bug_when>
    <thetext>Created attachment 169936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747679</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-22 10:36:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 169238 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169238&amp;action=review
&gt; 
&gt; This is great, I&apos;m happy to see progress on this, thanks!. My only concern is the changes to the default session, because I think they might break EFL port in WebKit1. In any case, since those changes look unrelated to the patch, maybe you can split the patch and I would review the authentication specific changes.

Thanks for the review. I&apos;ve removed the changes that don&apos;t account for non-default sessions.

&gt; &gt; Source/WebCore/ChangeLog:38
&gt; &gt; +        (WebCore::ResourceHandleInternal::soupSession): Use the default SoupSession instead of the
&gt; &gt; +        one from the context -- the context is always storing the default one anyway.
&gt; 
&gt; This is true in GTK+ port and WebKit2, but not in EFL, I think. Their implementation of the FrameNetworkingContext returns the SoupSession associated to the web view, and they have API to set a SoupSession to the a web view. I&apos;ll add EFL guys to the CC to confirm it.

Okay. I&apos;ve tried to remove all the changes that make this assumption in my patch.

&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:48
&gt; &gt; +    ProtectionSpaceAuthenticationScheme scheme = ProtectionSpaceAuthenticationSchemeDefault;
&gt; 
&gt; This will never happen, since there&apos;s a final else in the if, or is it to silence the compiler?

I have a instinct never to declare a variable without assigning it a default value, but I don&apos;t mind changing it in this case.

&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:60
&gt; &gt; +    SoupURI* soupURI = soup_message_get_uri(message);
&gt; 
&gt; The message is only passed to get the uri, would it make sense to pass the SoupURI instead to the function? I guess it&apos;s more convenient to pass the message as it&apos;s what the consructor receives.

Yeah, I think this is slightly simpler.


&gt; &gt; Source/WebCore/platform/network/soup/AuthenticationChallengeSoup.cpp:69
&gt; &gt; +        retrying ? 0 : 1,
&gt; 
&gt; retrying ? 0 : 1, // previousFailureCount ?

Okay.
 
&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1043
&gt; &gt; +        g_signal_connect(G_OBJECT(session), &quot;authenticate&quot;, G_CALLBACK(authenicateCallback), 0);
&gt; 
&gt; g_signal_connect expects a gpointer not a GObject, so we don&apos;t need the cast.

Okay. I&apos;ve fixed the other one too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748691</commentid>
    <comment_count>8</comment_count>
      <attachid>169936</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-23 09:00:29 -0700</bug_when>
    <thetext>Comment on attachment 169936
Patch

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

Excellent!

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:672
&gt; -static void setSoupRequestInitiaingPageID(SoupRequest* request, uint64_t initiatingPageID)
&gt; +static void setSoupRequestInitiaingPageID(SoupRequest* request, NetworkingContext* context)

The name looks a bit weird now that it doesn&apos;t receive a page id, maybe setSoupRequestInitiaingPageIDFromContext or something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749183</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-23 18:08:55 -0700</bug_when>
    <thetext>Committed r132286: &lt;http://trac.webkit.org/changeset/132286&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169222</attachid>
            <date>2012-10-17 11:25:40 -0700</date>
            <delta_ts>2012-10-17 12:57:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99351-20121017112427.patch</filename>
            <type>text/plain</type>
            <size>43912</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhNWM5NmEwZGYzNTY3
MzY5YzhhOGU1Y2Y2ODkyZDc3NTk0NjkwYi4uZWZlZjZhMTgyOWI5MDk5YWRiMTIxNjBmMjFjMWZm
ODk0ODVjMjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEwLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtTb3Vw
XSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9nIHZpYSBXZWJDb3Jl
U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnN0ZWFkIG9mIGNvbm5lY3RpbmcgdG8gdGhlIFNvdXBTZXNzaW9uOjphdXRoZW50aWNhdGUgc2ln
bmFsIGluIHRoZSBBUEkgbGF5ZXIKKyAgICAgICAgdmlhIGEgU291cFNlc3Npb25GZWF0dXJlLCBy
b3V0ZSB0aGUgbWVzc2FnZSB0aHJvdWdoIHRoZSB0eXBpY2FsIFdlYkNvcmUgYXV0aGVudGljYXRp
b24KKyAgICAgICAgbWVjaGFuaXNtLiBUaGlzIGlzIGEgc3RlcCBvbiB0aGUgcGF0aCB0byBoYXZp
bmcgZnVsbC1ibG93biBzdXBwb3J0IGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICBpbiB0aGUg
QVBJIGFsbG93aW5nIGZvciBjdXN0b20gYXV0aGVudGljYXRpb24gZGlhbG9ncyBhbmQgYmVoYXZp
b3IgaW4gY2xpZW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBj
aGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgdGhl
IG5ldyBpbXBsZW1lbnRhdGlvbiBmaWxlIGZvciB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBJbmNs
dWRlIEdUSysgaGVyZSBhcyB3ZWxsLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtBdXRoZW50
aWNhdGlvbkRpYWxvZy5jcHA6IEluc3RlYWQgb2YgY2FycnlpbmcgYSByYXcgcG9pbnRlciB0byBh
IFNvdXBBdXRoCisgICAgICAgIGNhcnJ5IGEgR1JlZlB0ciB3aGljaCB3aWxsIGFsbG93IHRoZSBk
aWFsb2cgdG8gYmUgdXNlZCBldmVuIGFmdGVyIHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQor
ICAgICAgICBpcyBkZXN0cm95ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nLmg6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaDogQWRkIGEgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1ldGhv
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoK
KyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBXZSBubyBsb25nZXIgbmVlZCB0byBz
dG9yZSBhIE5ldHdvcmtpbmdDb250ZXh0IGluIHRoZSBoYW5kbGUncworICAgICAgICBpbnRlcm5h
bCBkYXRhIHN0cnVjdHVyZS4gUmVtb3ZlIHRoZSBnZXR0ZXIgZm9yIHRoZSBpbml0aWF0aW5nIHBh
Z2UgSUQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg6IEFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlCisgICAgICAgIHRoYXQgdGFrZXMgYSBiaXQgb2YgZGF0YSBmcm9tIHRoZSBoYW5kbGUgaW5j
bHVkaW5nIFNvdXBNZXNzYWdlIGFuZCBTb3VwQXV0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcDogQWRkZWQuIERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAg
IChSZXNvdXJjZUVycm9yKTogQWRkZWQgYSBmYWN0b3J5IGZvciBhdXRoZW50aWNhdGlvbiBlcnJv
ci5zCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6Oldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcik6IFdlIG5vIGxvbmdlciBwYXNzIGluIHRoZQorICAgICAg
ICBTb3VwU2Vzc2lvbiBzaW5jZSB0aGUgc3luY2hyb25vdXMgbG9hZGVyIGFsd2F5cyB1c2VzIHRo
ZSBkZWZhdWx0IHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNM
b2FkZXI6OmFkanVzdE1heENvbm5lY3Rpb25zKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlU3lu
Y2hyb25vdXNMb2FkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
SW50ZXJuYWw6OnNvdXBTZXNzaW9uKTogVXNlIHRoZSBkZWZhdWx0IFNvdXBTZXNzaW9uIGluc3Rl
YWQgb2YgdGhlCisgICAgICAgIG9uZSBmcm9tIHRoZSBjb250ZXh0IC0tIHRoZSBjb250ZXh0IGlz
IGFsd2F5cyBzdG9yaW5nIHRoZSBkZWZhdWx0IG9uZSBhbnl3YXkuCisgICAgICAgIChXZWJDb3Jl
OjpzZXRTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJRCk6IEp1c3QgZ2V0IHRoZSBwYWdlIGRpcmVj
dGx5IGZyb20gdGhlIE5ldHdvcmtpbmdDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KTogQWx3YXlzIHNldCB0aGUgImhhbmRsZSIg
ZGF0YSBvbiB0aGUgbWVzc2FnZS4KKyAgICAgICAgSXQncyBhbHdheXMgdXNlZCBub3cuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOiBEb24ndCBzdG9yZSB0aGUgTmV0
d29ya2luZ0NvbnRleHQgaW4gdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlCisgICAgICAgIGFu
ZCBnZXQgdGhlIGluaXRpYXRpbmcgcGFnZSBJRCBkaXJlY3RseSBmcm9tIHRoZSBOZXR3b3JraW5n
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOiBBZGRlZCB0aGlzIG1ldGhvZCB3aGljaCByb3V0ZXMKKyAg
ICAgICAgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB0byB0aGUgY2xpZW50LgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbCk6IEFkZGVkIGEgc3R1YiBmb3IgdGhpcyBtZXRob2QuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6IERvbid0
IHBhc3MgdGhlIHNlc3Npb24gdG8gdGhlIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OmF1dGhl
bmljYXRlQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpkZWZhdWx0U2Vzc2lvbik6IENvbm5lY3QgdGhlIGF1dGhlbnRpY2F0ZSBjYWxsYmFjay4KKwog
MjAxMi0xMC0wOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgRml4IHRoZSBvcmRlciBvZiB0aGUgc3RhdGVtZW50cyBpbiBteSBwcmV2aW91cyBidWls
ZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMTdjODA4OGIwNzc1NWY4NDQyNjk0NDM2MWJjMTkz
Y2NkN2Q3Mjk3Yi4uNTJiMTNhODMwY2ZlNjVmYTVjNjEzZTQyNGE5ZmYxOTE1ZTA5NWU1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTE1ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtTb3VwXSBJbXBsZW1l
bnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9nIHZpYSBXZWJDb3JlU3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHVzaW5nIGEgY3VzdG9tIFNvdXBTZXNzaW9uRmVhdHVyZSB0byBzaG93IHRoZSBhdXRoZW50aWNh
dGlvbiBkaWFsb2csCisgICAgICAgIHNob3cgaXQgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
Q29yZSBtZXNzYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICBTaG93IHRoZSBkaWFs
b2cgd2hlbiB3ZSBuZWVkIHRvIGF1dGhlbnRpY2F0ZS4gQWxzbywgc28gbm90IHNob3cgdGhlIGRp
YWxvZworICAgICAgICBpZiB3ZSBhcmUgaW4gRFJUIG1vZGUuCisgICAgICAgICogd2Via2l0L3dl
YmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAod2Via2l0SW5pdCk6IE5vIGxvbmdlciBpbnN0YWxs
IG91ciBTb3VwRmVhdHVyZS4KKwogMjAxMi0xMC0wNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJh
IEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBm
aXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNDY4OTc3Y2E4Y2IxMmZjODdkOTQxZjQ0MmFjYjBiOWM5MTQ5YmU0Zi4uMGM3NDUxMmRjNjU4
YTkyOTU3YzAyMmY1YTVjNGNlNmI2YzZlZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTEwLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXVtTb3VwXSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24g
ZGlhbG9nIHZpYSBXZWJDb3JlU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIGEgY3VzdG9tIFNvdXBTZXNzaW9uRmVh
dHVyZSB0byBzaG93IHRoZSBhdXRoZW50aWNhdGlvbgorICAgICAgICBkaWFsb2csIHNob3cgaXQg
dXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBtZXNzYWdlLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbTogUmVtb3ZlZCB0aGUgU291cFNlc3Npb25GZWF0dXJlIGZpbGVzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0KTogT25seSB1c2UgdGhlIGRlZmF1bHQgZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKKyAgICAgICAgZm9yIG5vbi1HVEsrIHBvcnRz
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IEFkZGVkCisg
ICAgICAgIGEgR1RLKy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IHNob3dzIHRoZSBHdGtB
dXRoZW50aWNhdGlvbkRpYWxvZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlh
bG9nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9n
Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkd0ayk6IERvbid0IGluc3RhbGwg
dGhlIGN1c3RvbSBzZXNzaW9uIGZlYXR1cmUuCisKIDIwMTItMTAtMDkgIFJpayBDYWJhbmllciAg
PGNhYmFuaWVyQGFkb2JlLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBjb21waWxlIGZsYWcg
Zm9yIGNvbXBvc2l0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhODJiM2My
MzdlMjA3ZjZmNDZmOTJmOTBlYjNmNTc2NmY3ZmJkNGE4Li5iNDgzZDhlZmRmZWNhOGQ0OTI0YjQ1
ZmY0NGE1YTA4NzZiZDUxMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2
OTUsNiArNDY5NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZUphclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llSmFyU291cC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGYwYTZjMzM1Y2NmOTY5MjZiNGIxMzE2OWY0MGU0MWNhODhlZWFjOWYuLmE2
Y2ZlZmMwNmY1MTU5MTNiNzdjYTA4ZTdjY2ZkYjk0MmQwYzg4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsCiAgICAgfQogICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUg
YSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscy4KICAgICAvLyBJZiB3ZSBjYW4n
dCBjb250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBh
bHRvZ2V0aGVyLgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENV
UkwpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwg
UExBVEZPUk0oR1RLKQogICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKICAgICBBU1NFUlQoIWhhbmRsZSgpLT5oYXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmNwcAppbmRleCBkNjVmNzRm
OTEzNWYyZTU2YTJjYWEzYTU0NjQ1ZTNjNmZmOWZlNDA1Li4zNmJkMzFiMWVhNTEzZjUyNTYyOWQ4
ZDkwMmJjZGMwZTU5YWZhODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBH
dGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6R3RrQXV0aGVudGljYXRpb25EaWFsb2coR3RrV2luZG93
KiBwYXJlbnRXaW5kb3csIFNvdXBTZQogICAgIGd0a19hbGlnbm1lbnRfc2V0X3BhZGRpbmcoR1RL
X0FMSUdOTUVOVChlbnRyeUNvbnRhaW5lciksIDAsIDAsIDAsIDApOwogICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHZCb3gpLCBlbnRyeUNvbnRhaW5lciwgRkFMU0UsIEZBTFNFLCAwKTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFsbShtX2F1dGgpOwor
ICAgIGNvbnN0IGNoYXIqIHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFsbShtX2F1dGguZ2V0KCkp
OwogICAgIC8vIENoZWNraW5nIHRoYXQgcmVhbG0gaXMgbm90IGFuIGVtcHR5IHN0cmluZy4KICAg
ICBib29sIGhhc1JlYWxtID0gKHJlYWxtICYmIHJlYWxtWzBdICE9ICdcMCcpOwogCkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6c2hvdygpCiB7CiAgICAg
Y29uc3QgY2hhciogdXNlcm5hbWUgPSAwOwogICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gMDsK
LSAgICBib29sIGhhdmVTYXZlZExvZ2luID0gZ2V0U2F2ZWRMb2dpbihtX2F1dGgsICZ1c2VybmFt
ZSwgJnBhc3N3b3JkKTsKKyAgICBib29sIGhhdmVTYXZlZExvZ2luID0gZ2V0U2F2ZWRMb2dpbiht
X2F1dGguZ2V0KCksICZ1c2VybmFtZSwgJnBhc3N3b3JkKTsKICAgICBzb3VwX3Nlc3Npb25fcGF1
c2VfbWVzc2FnZShtX3Nlc3Npb24sIG1fbWVzc2FnZS5nZXQoKSk7CiAgICAgZ3RrX2VudHJ5X3Nl
dF90ZXh0KEdUS19FTlRSWShtX2xvZ2luRW50cnkpLCB1c2VybmFtZSA/IHVzZXJuYW1lIDogIiIp
OwogICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkobV9wYXNzd29yZEVudHJ5KSwgcGFz
c3dvcmQgPyBwYXNzd29yZCA6ICIiKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEd0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nOjpzYXZlUGFzc3dvcmQoKQogCiAgICAgLy8gQW55dGhpbmcgYnV0IDQw
MSBhbmQgNXh4IG1lYW5zIHRoZSBwYXNzd29yZCB3YXMgYWNjZXB0ZWQuCiAgICAgaWYgKG1fbWVz
c2FnZS5nZXQoKS0+c3RhdHVzX2NvZGUgIT0gNDAxICYmIG1fbWVzc2FnZS5nZXQoKS0+c3RhdHVz
X2NvZGUgPCA1MDApCi0gICAgICAgIHNvdXBfYXV0aF9zYXZlX3Bhc3N3b3JkKG1fYXV0aCwgbV91
c2VybmFtZS5kYXRhKCksIG1fcGFzc3dvcmQuZGF0YSgpKTsKKyAgICAgICAgc291cF9hdXRoX3Nh
dmVfcGFzc3dvcmQobV9hdXRoLmdldCgpLCBtX3VzZXJuYW1lLmRhdGEoKSwgbV9wYXNzd29yZC5k
YXRhKCkpOwogCiAgICAgLy8gRGlzY29ubmVjdCB0aGUgY2FsbGJhY2suIElmIHRoZSBhdXRoZW50
aWNhdGlvbiBzdWNjZWVkZWQgd2UgYXJlIGRvbmUsCiAgICAgLy8gYW5kIGlmIGl0IGZhaWxlZCB3
ZSdsbCBjcmVhdGUgYSBuZXcgR3RrQXV0aGVudGljYXRpb25EaWFsb2cgYW5kIHdlJ2xsCkBAIC0y
NzgsNyArMjc4LDcgQEAgdm9pZCBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6YXV0aGVudGljYXRl
KCkKIHsKICAgICBjb25zdCBjaGFyICp1c2VybmFtZSA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtf
RU5UUlkobV9sb2dpbkVudHJ5KSk7CiAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQgPSBndGtfZW50
cnlfZ2V0X3RleHQoR1RLX0VOVFJZKG1fcGFzc3dvcmRFbnRyeSkpOwotICAgIHNvdXBfYXV0aF9h
dXRoZW50aWNhdGUobV9hdXRoLCB1c2VybmFtZSwgcGFzc3dvcmQpOworICAgIHNvdXBfYXV0aF9h
dXRoZW50aWNhdGUobV9hdXRoLmdldCgpLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogCiAjaWZkZWYg
U09VUF9UWVBFX1BBU1NXT1JEX01BTkFHRVIKICAgICBpZiAobV9yZW1lbWJlckNoZWNrQnV0dG9u
ICYmIGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04obV9yZW1l
bWJlckNoZWNrQnV0dG9uKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmgKaW5kZXggMjNmNmY1NTc0MWQ3OWE2N2M5OTYy
ZWQwNGRkZTY1NWMxOTMwYzU1Yi4uNzU4MjQxY2QzMzZkODMzNjU0NTk1NTBhMzhmMGUxNmQ0OTY4
YjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBHdGtXaWRn
ZXQqIG1fZGlhbG9nOwogICAgIFNvdXBTZXNzaW9uKiBtX3Nlc3Npb247CiAgICAgR1JlZlB0cjxT
b3VwTWVzc2FnZT4gbV9tZXNzYWdlOwotICAgIFNvdXBBdXRoKiBtX2F1dGg7CisgICAgR1JlZlB0
cjxTb3VwQXV0aD4gbV9hdXRoOwogCiAgICAgR3RrV2lkZ2V0KiBtX2xvZ2luRW50cnk7CiAgICAg
R3RrV2lkZ2V0KiBtX3Bhc3N3b3JkRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggYjliZjM0ZmViMjI0NjE3ZThhODBkNjRh
MThmZTZlNDBiMjY4YTRhNy4uYzgxNzAwNGJkZWEzMDFiYTBmMmQyZjEyYjMxMWU2Yjc5NWRlY2Rk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaApAQCAtMTc0LDYgKzE3NCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SG9z
dEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZv
aWQgc2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNh
dGUqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCk7CisKKyNpZiBQ
TEFURk9STShHVEspCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CisjZW5kaWYKICNlbmRpZgogCiAgICAgLy8gVXNlZCB0byB3b3JrIGFyb3Vu
ZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQgYW55IG1vcmUgTlNVUkxDb25uZWN0aW9uIGNh
bGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20gdGhlIG9uZSB5b3UncmUgaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCmluZGV4IDYzZGYyODI0NTE1ZGI4ZGUxOTMzMTJkYmQ3NGIzYmYyNmQ2OTJkYzMuLmFj
YjExNzExOTUwZjA0MzgyM2RhYjEyZTk5NjBjOTk5YWJkODEzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CkBAIC0xOTEsOSArMTkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBt
X2J1ZmZlcjsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNp
Z25lZCBsb25nIG1fYm9keURhdGFTZW50OwotICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRl
eHQ+IG1fY29udGV4dDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCk7Ci0gICAg
ICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFU
KQogICAgICAgICBRTmV0d29ya1JlcGx5SGFuZGxlciogbV9qb2I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCmluZGV4IDQ5MmQ1YzIwMjNjMmU2OWRjZDA5NTcxYzA2OWU2ZTM0YzcyMTMwNTMu
LjMzY2JmYmJhOTc0NjVkZGZkMzU0Zjc4ZTRiYzRlYzJlOWU4MDIyOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKIAor
dHlwZWRlZiBzdHJ1Y3QgX1NvdXBBdXRoIFNvdXBBdXRoOwordHlwZWRlZiBzdHJ1Y3QgX1NvdXBN
ZXNzYWdlIFNvdXBNZXNzYWdlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7
CkBAIC00MSw4ICs0NCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFNvdXBNZXNzYWdlKiwgU291cEF1dGgqLCBib29sIHJldHJ5aW5nLCBB
dXRoZW50aWNhdGlvbkNsaWVudCopOworCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhl
bnRpY2F0aW9uQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbkNsaWVudC5n
ZXQoKTsgfQorICAgIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cE1lc3NhZ2UuZ2V0KCk7IH0KKyAgICBTb3VwQXV0aCogc291cEF1dGgoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXBBdXRoLmdldCgpOyB9CiAKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxTb3VwTWVz
c2FnZT4gbV9zb3VwTWVzc2FnZTsKKyAgICBHUmVmUHRyPFNvdXBBdXRoPiBtX3NvdXBBdXRoOwog
ICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M2NjFjYmI0MDYyMzJhN2I0Nzk1NWExOGExM2FhNGNmMjg1ZTg0YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNvdXAuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIElHQUxJQSBTLkwuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSShTb3VwVVJJ
KiB1cmksIGJvb2wgaXNGb3JQcm94eSkKK3sKKyAgICBpZiAodXJpLT5zY2hlbWUgPT0gU09VUF9V
UklfU0NIRU1FX0hUVFBTKQorICAgICAgICByZXR1cm4gaXNGb3JQcm94eSA/IFByb3RlY3Rpb25T
cGFjZVByb3h5SFRUUFMgOiBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQUzsKKyAgICBpZiAodXJp
LT5zY2hlbWUgPT0gU09VUF9VUklfU0NIRU1FX0hUVFApCisgICAgICAgIHJldHVybiBpc0ZvclBy
b3h5ID8gUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQIDogUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UDsKKyAgICBpZiAodXJpLT5zY2hlbWUgPT0gU09VUF9VUklfU0NIRU1FX0ZUUCkKKyAgICAgICAg
cmV0dXJuIGlzRm9yUHJveHkgPyBQcm90ZWN0aW9uU3BhY2VQcm94eUZUUCA6IFByb3RlY3Rpb25T
cGFjZVNlcnZlckZUUDsKKyAgICByZXR1cm4gaXNGb3JQcm94eSA/IFByb3RlY3Rpb25TcGFjZVBy
b3h5SFRUUCA6IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7Cit9CisKK3N0YXRpYyBQcm90ZWN0
aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlRnJvbVNvdXBBdXRoQW5kTWVzc2FnZShTb3VwQXV0aCog
c291cEF1dGgsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIGNvbnN0IGNoYXIqIHNjaGVt
ZU5hbWUgPSBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKHNvdXBBdXRoKTsKKyAgICBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZURlZmF1bHQ7CisgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoc2No
ZW1lTmFtZSwgImJhc2ljIikpIHsKKyAgICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWM7CisgICAgZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2Fz
ZWNtcChzY2hlbWVOYW1lLCAiZGlnZXN0IikpCisgICAgICAgIHNjaGVtZSA9IFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERpZ2VzdDsKKyAgICBlbHNlIGlmICghZ19hc2Np
aV9zdHJjYXNlY21wKHNjaGVtZU5hbWUsICJudGxtIikpCisgICAgICAgIHNjaGVtZSA9IFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTlRMTTsKKyAgICBlbHNlIGlmICghZ19hc2Np
aV9zdHJjYXNlY21wKHNjaGVtZU5hbWUsICJuZWdvdGlhdGUiKSkKKyAgICAgICAgc2NoZW1lID0g
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVOZWdvdGlhdGU7CisgICAgZWxzZQor
ICAgICAgICBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25v
d247CisKKyAgICBTb3VwVVJJKiBzb3VwVVJJID0gc291cF9tZXNzYWdlX2dldF91cmkobWVzc2Fn
ZSk7CisgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZShTdHJpbmc6OmZyb21VVEY4KHNvdXBfdXJp
X2dldF9ob3N0KHNvdXBVUkkpKSwgc291cF91cmlfZ2V0X3BvcnQoc291cFVSSSksCisgICAgICAg
IHByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGcm9tVVJJKHNvdXBVUkksIHNvdXBfYXV0aF9pc19m
b3JfcHJveHkoc291cEF1dGgpKSwKKyAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChzb3VwX2F1dGhf
Z2V0X3JlYWxtKHNvdXBBdXRoKSksIHNjaGVtZSk7Cit9CisKK0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNv
dXBBdXRoKiBzb3VwQXV0aCwgYm9vbCByZXRyeWluZywgQXV0aGVudGljYXRpb25DbGllbnQqIGNs
aWVudCkKKyAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2VG
cm9tU291cEF1dGhBbmRNZXNzYWdlKHNvdXBBdXRoLCBzb3VwTWVzc2FnZSksCisgICAgICAgIENy
ZWRlbnRpYWwoKSwgLy8gcHJvcG9zZWRDcmVkZW50aWFscworICAgICAgICByZXRyeWluZyA/IDAg
OiAxLAorICAgICAgICBzb3VwTWVzc2FnZSwgLy8gZmFpbHVyZVJlc3BvbnNlCisgICAgICAgIFJl
c291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3Ioc291cE1lc3NhZ2UpKQorICAgICwgbV9z
b3VwTWVzc2FnZShzb3VwTWVzc2FnZSkKKyAgICAsIG1fc291cEF1dGgoc291cEF1dGgpCisgICAg
LCBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50KGNsaWVudCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUVycm9yLmgKaW5kZXggNzY2ZGEwYjMwZDMzMjZlZjJmNjMxYWZmZGY3MGQxZjc0ODI0
MjkxMy4uMGNiNWRiNzViOWYxNzZhNmFhYjFkMjAxMzQyOWNmM2FkMzRkZTkzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
CkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBnZW5l
cmljSU9FcnJvcihHRXJyb3IqLCBTb3VwUmVxdWVzdCopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVy
cm9yIHRsc0Vycm9yKFNvdXBSZXF1ZXN0KiwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlm
aWNhdGUqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0aW1lb3V0RXJyb3IoY29uc3QgU3Ry
aW5nJiBmYWlsaW5nVVJMKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciBhdXRoZW50aWNhdGlv
bkVycm9yKFNvdXBNZXNzYWdlKik7CiAKICAgICB1bnNpZ25lZCB0bHNFcnJvcnMoKSBjb25zdCB7
IHJldHVybiBtX3Rsc0Vycm9yczsgfQogICAgIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUo
KSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cAppbmRleCBlZTc0OGRjZWM0YmNhYzM3YzFiZmQ2OWU0NzRjMTcyZTk3MTU5NTlkLi4wZjVlMjFh
OWEzMmI5OTAxYjIzY2Y2MTFjZWVlNWI4MTRmNTY2YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
QEAgLTM1LDExICszNSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTdHJp
bmcgZmFpbGluZ1VSSShTb3VwVVJJKiBzb3VwVVJJKQoreworICAgIEFTU0VSVChzb3VwVVJJKTsK
KyAgICBHT3duUHRyPGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0Up
KTsKKyAgICByZXR1cm4gdXJpLmdldCgpOworfQorCiBzdGF0aWMgU3RyaW5nIGZhaWxpbmdVUkko
U291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwotICAgIEdPd25Q
dHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShyZXF1
ZXN0KSwgRkFMU0UpKTsKLSAgICByZXR1cm4gdXJpLmdldCgpOworICAgIHJldHVybiBmYWlsaW5n
VVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBS
ZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIEdFcnJvciogZXJy
b3IsIFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQpAQCAtNTAsNiArNTYsMTMgQEAgUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIEdFcnJvciog
ZXJyb3IsIFNvdXAKICAgICAgICAgZmFpbGluZ1VSSShyZXF1ZXN0KSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgUmVzb3VyY2VF
cnJvcjo6YXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBB
U1NFUlQobWVzc2FnZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJp
bmcoU09VUF9IVFRQX0VSUk9SKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgICAgIGZhaWxp
bmdVUkkoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSkpLCBTdHJpbmc6OmZyb21VVEY4KG1l
c3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKK30KKwogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
OjpnZW5lcmljSU9FcnJvcihHRXJyb3IqIGVycm9yLCBTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsK
ICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX0lPX0VSUk9SKSwg
ZXJyb3ItPmNvZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDZkYTFmZDFkMzY1YTkxNDBj
YTEzNDJhMzgwY2VjMGQ4NjI3YThhMzUuLjgxY2ZkNGIxNGU0YjBhYmIxZTRhNjI0YWQwMzRiNWE5
MDFiNzdkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC03OCwxMCArNzgsOSBAQCBjbGFz
cyBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcik7CiBw
dWJsaWM6CiAKLSAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgVmVj
dG9yPGNoYXI+JiBkYXRhKQorICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcihSZXNvdXJjZUVy
cm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0
YSkKICAgICAgICAgOiBtX2Vycm9yKGVycm9yKQogICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9u
c2UpCi0gICAgICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiAgICAgICAgICwgbV9kYXRhKGRhdGEp
CiAgICAgICAgICwgbV9maW5pc2hlZChmYWxzZSkKICAgICB7CkBAIC0xMDUsMTQgKzEwNCwxNSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFkanVzdE1heENvbm5lY3Rpb25zKGludCBhZGp1c3RtZW50
KQogICAgIHsKKyAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBSZXNvdXJjZUhhbmRsZTo6
ZGVmYXVsdFNlc3Npb24oKTsKICAgICAgICAgaW50IG1heENvbm5lY3Rpb25zLCBtYXhDb25uZWN0
aW9uc1Blckhvc3Q7Ci0gICAgICAgIGdfb2JqZWN0X2dldChtX3Nlc3Npb24sCisgICAgICAgIGdf
b2JqZWN0X2dldChzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX01B
WF9DT05OUywgJm1heENvbm5lY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNT
SU9OX01BWF9DT05OU19QRVJfSE9TVCwgJm1heENvbm5lY3Rpb25zUGVySG9zdCwKICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBtYXhDb25uZWN0aW9ucyArPSBhZGp1c3RtZW50
OwogICAgICAgICBtYXhDb25uZWN0aW9uc1Blckhvc3QgKz0gYWRqdXN0bWVudDsKLSAgICAgICAg
Z19vYmplY3Rfc2V0KG1fc2Vzc2lvbiwKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNlc3Npb24sCiAg
ICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fTUFYX0NPTk5TLCBtYXhDb25uZWN0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9NQVhfQ09OTlNfUEVSX0hPU1Qs
IG1heENvbm5lY3Rpb25zUGVySG9zdCwKICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwpAQCAt
MTU2LDcgKzE1Niw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VFcnJvciYgbV9l
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlJiBtX3Jlc3BvbnNlOwotICAgIFNvdXBTZXNzaW9u
KiBtX3Nlc3Npb247CiAgICAgVmVjdG9yPGNoYXI+JiBtX2RhdGE7CiAgICAgYm9vbCBtX2Zpbmlz
aGVkOwogICAgIEdSZWZQdHI8R01haW5Mb29wPiBtX21haW5Mb29wOwpAQCAtMjI2LDE2ICsyMjUs
NiBAQCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7
CiB9CiAKLXN0YXRpYyBTb3VwU2Vzc2lvbiogc2Vzc2lvbkZyb21Db250ZXh0KE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiAoY29udGV4dCAmJiBjb250ZXh0LT5pc1Zh
bGlkKCkpID8gY29udGV4dC0+c291cFNlc3Npb24oKSA6IFJlc291cmNlSGFuZGxlOjpkZWZhdWx0
U2Vzc2lvbigpOwotfQotCi11aW50NjRfdCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjppbml0aWF0
aW5nUGFnZUlEKCkKLXsKLSAgICByZXR1cm4gKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzVmFs
aWQoKSkgPyBtX2NvbnRleHQtPmluaXRpYXRpbmdQYWdlSUQoKSA6IDA7Ci19Ci0KIFJlc291cmNl
SGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQogewogICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbih0aGlzLCB0cnVlKTsKQEAgLTI3Myw3ICsyNjIsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVT
ZXNzaW9uSXNJbml0aWFsaXplZChTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIAogU291cFNlc3Npb24q
IFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnNvdXBTZXNzaW9uKCkKIHsKLSAgICBTb3VwU2Vzc2lv
biogc2Vzc2lvbiA9IHNlc3Npb25Gcm9tQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgIFNv
dXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CiAg
ICAgZW5zdXJlU2Vzc2lvbklzSW5pdGlhbGl6ZWQoc2Vzc2lvbik7CiAgICAgcmV0dXJuIHNlc3Np
b247CiB9CkBAIC02NzQsMTMgKzY2MywxMyBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrRXZlbnRDYWxs
YmFjayhTb3VwTWVzc2FnZSosIEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lPU3RyZQogCiBz
dGF0aWMgY29uc3QgY2hhciogZ1NvdXBSZXF1ZXN0SW5pdGlhaW5nUGFnZUlES2V5ID0gIndrLXNv
dXAtcmVxdWVzdC1pbml0aWFpbmctcGFnZS1pZCI7CiAKLXN0YXRpYyB2b2lkIHNldFNvdXBSZXF1
ZXN0SW5pdGlhaW5nUGFnZUlEKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCB1aW50NjRfdCBpbml0aWF0
aW5nUGFnZUlEKQorc3RhdGljIHZvaWQgc2V0U291cFJlcXVlc3RJbml0aWFpbmdQYWdlSUQoU291
cFJlcXVlc3QqIHJlcXVlc3QsIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogewotICAgIGlm
ICghaW5pdGlhdGluZ1BhZ2VJRCkKKyAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQ
dHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkp
OwotICAgICppbml0aWF0aW5nUGFnZUlEUHRyID0gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAqaW5p
dGlhdGluZ1BhZ2VJRFB0ciA9IGNvbnRleHQtPmluaXRpYXRpbmdQYWdlSUQoKTsKICAgICBnX29i
amVjdF9zZXRfZGF0YV9mdWxsKEdfT0JKRUNUKHJlcXVlc3QpLCBnX2ludGVybl9zdGF0aWNfc3Ry
aW5nKGdTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIs
IGZhc3RGcmVlKTsKIH0KIApAQCAtNjk4LDYgKzY4Nyw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZVNv
dXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSCiAgICAgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQo
KTsKICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKIAorICAgIGdf
b2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIsIGhhbmRsZSk7
CiAgICAgaWYgKCFoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpKQogICAgICAgICBzb3VwX21l
c3NhZ2VfZGlzYWJsZV9mZWF0dXJlKHNvdXBNZXNzYWdlLCBTT1VQX1RZUEVfQ09OVEVOVF9TTklG
RkVSKTsKIApAQCAtNzM2LDcgKzcyNiw2IEBAIHN0YXRpYyBib29sIGNyZWF0ZVNvdXBNZXNzYWdl
Rm9ySGFuZGxlQW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSCiAgICAg
ZC0+bV9yZXNwb25zZS5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpj
cmVhdGUoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCAi
bmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sobmV0d29ya0V2ZW50Q2FsbGJhY2spLCBoYW5kbGUp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgIndyb3RlLWJv
ZHkiLCBHX0NBTExCQUNLKHdyb3RlQm9keUNhbGxiYWNrKSwgaGFuZGxlKTsKLSAgICBnX29iamVj
dF9zZXRfZGF0YShHX09CSkVDVChkLT5tX3NvdXBNZXNzYWdlLmdldCgpKSwgImhhbmRsZSIsIGhh
bmRsZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNzg1LDkgKzc3NCw2IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogICAg
ICAgICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAgICB9
CiAKLSAgICAvLyBVc2VkIHRvIHNldCB0aGUgYXV0aGVudGljYXRpb24gZGlhbG9nIHRvcGxldmVs
OyBtYXkgYmUgTlVMTAotICAgIGQtPm1fY29udGV4dCA9IGNvbnRleHQ7Ci0KICAgICAvLyBPbmx5
IGFsbG93IHRoZSBQT1NUIGFuZCBHRVQgbWV0aG9kcyBmb3Igbm9uLUhUVFAgcmVxdWVzdHMuCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7CiAgICAg
Ym9vbCBpc0hUVFBGYW1pbHlSZXF1ZXN0ID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCk7CkBAIC04MDEsNyArNzg3LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIHNldFNvdXBSZXF1ZXN0SW5pdGlhaW5nUGFnZUlEKGQtPm1fc291cFJlcXVlc3QuZ2V0
KCksIGQtPmluaXRpYXRpbmdQYWdlSUQoKSk7CisgICAgc2V0U291cFJlcXVlc3RJbml0aWFpbmdQ
YWdlSUQoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSwgY29udGV4dCk7CiAKICAgICAvLyBTZW5kIHRo
ZSByZXF1ZXN0IG9ubHkgaWYgaXQncyBub3QgYmVlbiBleHBsaWNpdGx5IGRlZmVycmVkLgogICAg
IGlmICghZC0+bV9kZWZlcnNMb2FkaW5nKQpAQCAtODU1LDYgKzg0MSwxOCBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMpCiAgICAg
Z0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsKIH0KIAorI2lmIFBMQVRGT1JNKEdU
SykKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIGlmIChj
bGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKQoreworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIHdhaXRpbmdUb1NlbmRSZXF1
ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBm
b3IgZC0+bV9zb3VwUmVxdWVzdCBiZWNhdXNlIHRoZSByZXF1ZXN0IG1heSBoYXZlIHJhaXNlZCBh
IGZhaWx1cmUKQEAgLTkxOCw3ICs5MTYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAg
IGlmIChsb2FkaW5nU3luY2hyb25vdXNSZXF1ZXN0KSAvLyBJbiBwcmFjdGljZSB0aGlzIGNhbm5v
dCBoYXBwZW4sIGJ1dCBpZiBmb3Igc29tZSByZWFzb24gaXQgZG9lcywKICAgICAgICAgcmV0dXJu
OyAgICAgICAgICAgICAgICAgICAgLy8gd2Ugd2FudCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZ29p
bmcgaW50byBhbiBpbmZpbml0ZSBsb29wIG9mIHJlcXVlc3RzLgogCi0gICAgV2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyIHN5bmNMb2FkZXIoZXJyb3IsIHJlc3BvbnNlLCBzZXNzaW9uRnJvbUNvbnRl
eHQoY29udGV4dCksIGRhdGEpOworICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBzeW5jTG9h
ZGVyKGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBo
YW5kbGUgPSBjcmVhdGUoY29udGV4dCwgcmVxdWVzdCwgJnN5bmNMb2FkZXIsIGZhbHNlIC8qZGVm
ZXJzTG9hZGluZyovLCBmYWxzZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKTsKICAgICBpZiAoIWhh
bmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAwOCw2ICsxMDA2LDE5IEBAIHN0YXRpYyBnYm9v
bGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEpCiAgICAgcmV0dXJuIEZB
TFNFOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQorc3RhdGljIHZvaWQgYXV0aGVuaWNhdGVDYWxs
YmFjayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3Vw
QXV0aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQoreworICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9n
ZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CisgICAgaWYgKCFoYW5k
bGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gcGFzcyBhIGNs
aWVudCBoZXJlLCBiZWNhdXNlIEdUSysgZG9lcyBub3QgeWV0IHVzZSB0aGUgQXV0aGVudGljYXRp
b25DbGllbnQgdG8KKyAgICAvLyByZXNwb25kIHRvIHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAtLSBpbnN0ZWFkIGRlYWxpbmcgd2l0aCB0aGUgU291cCBvYmplY3RzIGRpcmVjdGx5LgorICAg
IGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIDApKTsKK30KKyNlbmRp
ZgorCiBTb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKIHsKICAg
ICBzdGF0aWMgU291cFNlc3Npb24qIHNlc3Npb24gPSAwOwpAQCAtMTAyOCw2ICsxMDM5LDEwIEBA
IFNvdXBTZXNzaW9uKiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQogICAgICAgICAg
ICAgICAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9Q
Uk9YWV9SRVNPTFZFUl9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9O
X1VTRV9USFJFQURfQ09OVEVYVCwgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVChzZXNz
aW9uKSwgImF1dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0soYXV0aGVuaWNhdGVDYWxsYmFjayksIDAp
OworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICAgICAgZ19zaWduYWxfY29u
bmVjdChHX09CSkVDVChzZXNzaW9uKSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVx
dWVzdFN0YXJ0ZWRDYWxsYmFjayksIDApOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXgg
MDg1ZjQxYzZhM2U5MGNhMzJhNmVlY2NhZmFiZGJjYmRiMDMyOWM1ZC4uZmY2ZmRlN2E3NmY1Zjhl
NzYyOTkzM2RlNzM1MWZmOGQ2NTJjNzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlckd0ay5oIgorI2luY2x1ZGUgIkR1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgogI2luY2x1ZGUgIkVycm9yc0d0ay5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTM5LDcgKzQwLDkgQEAK
ICNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3RrQXV0aGVudGljYXRp
b25EaWFsb2cuaCIKICNpbmNsdWRlICJHdGtQbHVnaW5XaWRnZXQuaCIKKyNpbmNsdWRlICJHdGtV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKQEAgLTE5Niw5
ICsxOTksMTUgQEAgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRl
bnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgaWYgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJf
dmlldyhtX2ZyYW1lKSkpOworICAgIEd0a1dpbmRvdyogdG9wbGV2ZWxXaW5kb3cgPSB3aWRnZXRJ
c09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpID8gR1RLX1dJTkRPVyh0b3BsZXZlbCkg
OiAwOworICAgIEd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nKiBkaWFsb2cgPSBuZXcgR3RrQXV0aGVu
dGljYXRpb25EaWFsb2codG9wbGV2ZWxXaW5kb3csIHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9u
KCksIGNoYWxsZW5nZS5zb3VwTWVzc2FnZSgpLCBjaGFsbGVuZ2Uuc291cEF1dGgoKSk7CisgICAg
ZGlhbG9nLT5zaG93KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nICBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKaW5kZXggZDI3MTVh
NmExZDIzNGU4MDBmYWY2OTIwY2U1ZmI5MjEyNzY2NDNhNS4uODg2MjkyMTY5OWEzODVkMDUzMWJl
MmMyNTVjNjVjNmVjODRiOWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRn
bG9iYWxzLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHRH
dGsuaCIKLSNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTQ1
LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJ3ZWJraXRmYXZpY29uZGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGljb25kYXRhYmFzZS5o
IgotI2luY2x1ZGUgIndlYmtpdHNvdXBhdXRoZGlhbG9nLmgiCiAjaW5jbHVkZSAid2Via2l0c3Bl
bGxjaGVja2VyLmgiCiAjaW5jbHVkZSAid2Via2l0c3BlbGxjaGVja2VyZW5jaGFudC5oIgogI2lu
Y2x1ZGUgIndlYmtpdHdlYmRhdGFiYXNlLmgiCkBAIC0yMDcsMzIgKzIwNSw2IEBAIFdlYktpdFdl
YlBsdWdpbkRhdGFiYXNlKiB3ZWJraXRfZ2V0X3dlYl9wbHVnaW5fZGF0YWJhc2UoKQogICAgIHJl
dHVybiBkYXRhYmFzZTsKIH0KIAotCi1zdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50VG9wbGV2ZWxD
YWxsYmFjayhXZWJLaXRTb3VwQXV0aERpYWxvZyogZmVhdHVyZSwgU291cE1lc3NhZ2UqIG1lc3Nh
Z2UsIGdwb2ludGVyIHVzZXJEYXRhKQotewotICAgIGdwb2ludGVyIG1lc3NhZ2VEYXRhID0gZ19v
YmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QobWVzc2FnZSksICJyZXNvdXJjZUhhbmRsZSIpOwotICAg
IGlmICghbWVzc2FnZURhdGEpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4obWVzc2FnZURhdGEp
OwotICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFJlc291cmNl
SGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAgaWYgKCFkKQot
ICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFdlYktpdDo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dEd0ayogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dEd0ayo+KGQtPm1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gTlVMTDsKLQotICAgIGlmICghY29udGV4dC0+Y29yZUZyYW1lKCkpCi0gICAgICAgIHJl
dHVybiBOVUxMOwotCi0gICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9ICBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKGNvbnRleHQtPmNvcmVGcmFtZSgpLT5wYWdlKCktPmNocm9tZSgp
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwotICAgIHJldHVybiB3aWRnZXRJc09uc2NyZWVuVG9w
bGV2ZWxXaW5kb3codG9wbGV2ZWwpID8gdG9wbGV2ZWwgOiAwOwotfQotCiAvKioKICAqIHdlYmtp
dF9nZXRfaWNvbl9kYXRhYmFzZToKICAqCkBAIC01OTAsMTMgKzU2Miw2IEBAIHZvaWQgd2Via2l0
SW5pdCgpCiAgICAgR093blB0cjxnY2hhcj4gaWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdCIsICJpY29uZGF0YWJhc2UiLCBOVUxM
KSk7CiAgICAgd2Via2l0X2ljb25fZGF0YWJhc2Vfc2V0X3BhdGgod2Via2l0X2dldF9pY29uX2Rh
dGFiYXNlKCksIGljb25EYXRhYmFzZVBhdGguZ2V0KCkpOwogCi0gICAgU291cFNlc3Npb24qIHNl
c3Npb24gPSB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigpOwotCi0gICAgU291cFNlc3Npb25G
ZWF0dXJlKiBhdXRoRGlhbG9nID0gc3RhdGljX2Nhc3Q8U291cFNlc3Npb25GZWF0dXJlKj4oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0csIE5VTEwpKTsKLSAgICBnX3Np
Z25hbF9jb25uZWN0KGF1dGhEaWFsb2csICJjdXJyZW50LXRvcGxldmVsIiwgR19DQUxMQkFDSyhj
dXJyZW50VG9wbGV2ZWxDYWxsYmFjayksIE5VTEwpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVh
dHVyZShzZXNzaW9uLCBhdXRoRGlhbG9nKTsKLSAgICBnX29iamVjdF91bnJlZihhdXRoRGlhbG9n
KTsKLQogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1
ZSk7CiAKICNpZiBVU0UoQ0xVVFRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDI1NDMyMDMwZmU0NjY0M2VhZjI4NjMwYTJjNjMyNTllNjgzOTRkNDIuLjg1OTUxZDQxOTc2Nzky
ZjZmMmYwYjhlYTRjZWJlMjhlMDUxNDZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtOTU2LDggKzk1Niw2IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggXAotCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYkF1dGhEaWFsb2cuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9X
ZWJBdXRoRGlhbG9nLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NNYWluR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c01haW5HdGsuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2Vi
SWNvbkRhdGFiYXNlUHJveHkuY3BwIFwKQEAgLTEwOTcsNiArMTA5NSw3IEBAIHdlYmtpdDJfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRHJhZ0NsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViUG9wdXBNZW51R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODc2MjM0Zjg4
OTYxZGQ3OTY3N2YxNDU1NGI1MDUwNWQ1MzQ2ZTRiZi4uZmQ1OGE3ZWQwMzExMGY3NjJiZGYyYzIx
MThkOGIyM2ZhZjNiZTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTIwMCw2ICsyMDAsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkCiAgICAgcmV0dXJuIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkuc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2Uod2ViUGFnZSwgbV9mcmFtZSwgaWRlbnRpZmllcik7CiB9CiAKKyNpZiAhUExBVEZP
Uk0oR1RLKQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogewogICAgIC8vIEZJWE1FOiBB
dXRoZW50aWNhdGlvbiBpcyBhIHBlci1yZXNvdXJjZSBjb25jZXB0LCBidXQgd2UgZG9uJ3QgZG8g
cGVyLXJlc291cmNlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nlc3MgYXQgdGhlIEFQSSBsZXZlbCBx
dWl0ZSB5ZXQuCkBAIC0yMTEsNiArMjEyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2EKIAog
ICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hhcmVkKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKG1fZnJhbWUsIGNoYWxsZW5nZSk7CiB9CisjZW5kaWYKIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgICAgCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1NGFmZTIwYTY2M2Y1ZjUyNmRjODg3
YTE2YjJhOTM3YWVmOGMxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgSUdBTElBIFMuTC4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVu
dC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBXZWJD
b3JlOjpHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzsKK3VzaW5nIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOworCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7
CisgICAgR3RrQXV0aGVudGljYXRpb25EaWFsb2cqIGRpYWxvZyA9IG5ldyBHdGtBdXRoZW50aWNh
dGlvbkRpYWxvZygwLCBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwg
Y2hhbGxlbmdlLnNvdXBNZXNzYWdlKCksIGNoYWxsZW5nZS5zb3VwQXV0aCgpKTsKKyAgICBkaWFs
b2ctPnNob3coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFsb2cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmM2MzZWFiOWM2MGY3YzhmZWFlZDIyYzAxYjc1MmNlZjMzNDAyNGE2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFsb2cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQXV0aERpYWxvZy5oIgotCi0jaW5jbHVkZSA8V2ViQ29y
ZS9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oPgotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgR09i
amVjdCBwYXJlbnQ7Ci19IFdlYkF1dGhEaWFsb2c7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50OwotfSBXZWJBdXRoRGlhbG9nQ2xhc3M7Ci0KLXN0YXRpYyB2b2lk
IHdlYkF1dGhEaWFsb2dTZXNzaW9uRmVhdHVyZUluaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJm
YWNlKiwgZ3BvaW50ZXIpOwotCi1HX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJBdXRoRGlhbG9n
LCB3ZWJfYXV0aF9kaWFsb2csIEdfVFlQRV9PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoU09VUF9UWVBFX1NFU1NJT05fRkVBVFVSRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJBdXRoRGlhbG9nU2Vz
c2lvbkZlYXR1cmVJbml0KSkKLQotc3RhdGljIHZvaWQgd2ViX2F1dGhfZGlhbG9nX2NsYXNzX2lu
aXQoV2ViQXV0aERpYWxvZ0NsYXNzKikKLXsKLX0KLQotc3RhdGljIHZvaWQgd2ViX2F1dGhfZGlh
bG9nX2luaXQoV2ViQXV0aERpYWxvZyopCi17Ci19Ci0KLXN0YXRpYyB2b2lkIHNlc3Npb25BdXRo
ZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBTb3Vw
QXV0aCogYXV0aCwgZ2Jvb2xlYW4sIGdwb2ludGVyKQotewotICAgIFdlYkNvcmU6Okd0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nID0gbmV3IFdlYkNvcmU6Okd0a0F1dGhlbnRpY2F0
aW9uRGlhbG9nKDAsIHNlc3Npb24sIG1lc3NhZ2UsIGF1dGgpOwotICAgIGF1dGhEaWFsb2ctPnNo
b3coKTsKLX0KLQotc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSosIFNvdXBT
ZXNzaW9uKiBzZXNzaW9uKQotewotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwgImF1dGhl
bnRpY2F0ZSIsIEdfQ0FMTEJBQ0soc2Vzc2lvbkF1dGhlbnRpY2F0ZSksIDApOwotfQotCi1zdGF0
aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiwgU291cFNlc3Npb24qIHNlc3Npb24p
Ci17Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNlc3Npb24sIHJl
aW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHNlc3Npb25BdXRoZW50aWNhdGUpLCAwKTsKLX0KLQot
c3RhdGljIHZvaWQgd2ViQXV0aERpYWxvZ1Nlc3Npb25GZWF0dXJlSW5pdChTb3VwU2Vzc2lvbkZl
YXR1cmVJbnRlcmZhY2UqIGZlYXR1cmUsIGdwb2ludGVyKQotewotICAgIGZlYXR1cmUtPmF0dGFj
aCA9IGF0dGFjaDsKLSAgICBmZWF0dXJlLT5kZXRhY2ggPSBkZXRhY2g7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDllYWZlYTEwYzg4NTgxNGI5MDQ3ZWMwYzU0ZWQ4NjE3OGVkY2I2ZDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdl
YkF1dGhEaWFsb2dfaAotI2RlZmluZSBXZWJBdXRoRGlhbG9nX2gKLQotI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+Ci0KLSNkZWZpbmUgV0VCX1RZUEVfQVVUSF9ESUFMT0cgKHdlYl9hdXRoX2RpYWxv
Z19nZXRfdHlwZSgpKQotCi1HVHlwZSB3ZWJfYXV0aF9kaWFsb2dfZ2V0X3R5cGUoKTsKLQotI2Vu
ZGlmIC8vIFdlYkF1dGhEaWFsb2dfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDdkYWNjMjI2ZTgwOTI5YzhiZTM4NzY1
ZThiNThkNTRiOTUwMDA0ZWUuLmYxN2FjNmNlZWZkNDFkOGI2YWM1N2E0YjcwMGI0ZGJjMjlmMDI4
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
TWFpbkd0ay5jcHAKQEAgLTI5LDkgKzI5LDcgQEAKIAogI2RlZmluZSBMSUJTT1VQX1VTRV9VTlNU
QUJMRV9SRVFVRVNUX0FQSQogCi0jaW5jbHVkZSAiV2ViQXV0aERpYWxvZy5oIgogI2luY2x1ZGUg
IldLQmFzZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW5Mb29wLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJQcm9jZXNzLmg+CkBAIC02NiwxMiArNjQs
MTAgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJn
dltdKQogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWluKCkpOwogCi0gICAgU291cFNl
c3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBXRUJfVFlQ
RV9BVVRIX0RJQUxPRyk7Ci0KICAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFs
aWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCiAgICAgLy8gYWNjZXB0aW5nIGludmFsaWQgY2VydGlm
aWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQogICAgIC8vIGFkZGVkIGxhdGVyIHRv
IGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQgaW52YWxpZCBjZXJ0aWZpY2F0ZXMuCisgICAgU291
cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Np
b24oKTsKICAgICBnX29iamVjdF9zZXQoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX1NTTF9VU0VfU1lT
VEVNX0NBX0ZJTEUsIFRSVUUsCiAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9TU0xfU1RS
SUNULCBGQUxTRSwgTlVMTCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxZTJlMDFjY2Q0NWVmMTFhYmRiMGM4YzEzYTNmZDAwYTE2M2I0Yjcx
Li4wYjVmYzhhYzNjNTcwMDY0M2I0Y2Q0ODkyOTExMzk5NWFmMmJkN2JhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMTAtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHVEtdW1NvdXBdIEltcGxlbWVudCB0aGUgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBkaWFs
b2cgdmlhIFdlYkNvcmVTdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlIG5vIGxvbmdlciBuZWVkIHRvIHR1cm4gb2ZmIHRoZSBzb3VwIGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyBzb3VwIGZlYXR1cmUsCisgICAgICAgIGJlY2F1c2UgaXQncyBub3Qg
aW5zdGFsbGVkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHNldERlZmF1bHRzVG9Db25zaXN0ZW50U3RhdGVWYWx1ZXNGb3JUZXN0
aW5nKTogRG9uJ3QgdHVybiBvZmYgdGhlIGZlYXR1cmUgYW55IGxvbmdlci4KKwogMjAxMi0xMC0w
OSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdIFNo
YWRvdyBidWlsZHMgYXJlIG5vdCB3b3JraW5nIGFueW1vcmUuCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBmNTc0YzExZThlOGE0NmNhNzQ2YTNhNjRi
YmVkNjkwOGIwNDhkNjZmLi5hN2I1NzQ1Zjk3NjBkYjM3ZmJmZmJkNWQ5ZGRjMGQzMzMzYjgxMTUy
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTY0
NSwxMCArNjQ1LDYgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRTdGF0ZVZh
bHVlc0ZvclRlc3RpbmcoKQogewogICAgIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMo
KTsKIAotICAgIC8qIERpc2FibGUgdGhlIGRlZmF1bHQgYXV0aCBkaWFsb2cgZm9yIHRlc3Rpbmcg
Ki8KLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9u
KCk7Ci0gICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgV0VC
S0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRyk7Ci0KICNpZiBQTEFURk9STShYMTEpCiAgICAgd2Vi
a2l0X3dlYl9zZXR0aW5nc19hZGRfZXh0cmFfcGx1Z2luX2RpcmVjdG9yeSh3ZWJWaWV3LCBURVNU
X1BMVUdJTl9ESVIpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169238</attachid>
            <date>2012-10-17 12:57:57 -0700</date>
            <delta_ts>2012-10-22 10:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99351-20121017125643.patch</filename>
            <type>text/plain</type>
            <size>43910</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhNWM5NmEwZGYzNTY3
MzY5YzhhOGU1Y2Y2ODkyZDc3NTk0NjkwYi4uZWZlZjZhMTgyOWI5MDk5YWRiMTIxNjBmMjFjMWZm
ODk0ODVjMjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEwLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtTb3Vw
XSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9nIHZpYSBXZWJDb3Jl
U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnN0ZWFkIG9mIGNvbm5lY3RpbmcgdG8gdGhlIFNvdXBTZXNzaW9uOjphdXRoZW50aWNhdGUgc2ln
bmFsIGluIHRoZSBBUEkgbGF5ZXIKKyAgICAgICAgdmlhIGEgU291cFNlc3Npb25GZWF0dXJlLCBy
b3V0ZSB0aGUgbWVzc2FnZSB0aHJvdWdoIHRoZSB0eXBpY2FsIFdlYkNvcmUgYXV0aGVudGljYXRp
b24KKyAgICAgICAgbWVjaGFuaXNtLiBUaGlzIGlzIGEgc3RlcCBvbiB0aGUgcGF0aCB0byBoYXZp
bmcgZnVsbC1ibG93biBzdXBwb3J0IGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICBpbiB0aGUg
QVBJIGFsbG93aW5nIGZvciBjdXN0b20gYXV0aGVudGljYXRpb24gZGlhbG9ncyBhbmQgYmVoYXZp
b3IgaW4gY2xpZW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBj
aGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgdGhl
IG5ldyBpbXBsZW1lbnRhdGlvbiBmaWxlIGZvciB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBJbmNs
dWRlIEdUSysgaGVyZSBhcyB3ZWxsLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtBdXRoZW50
aWNhdGlvbkRpYWxvZy5jcHA6IEluc3RlYWQgb2YgY2FycnlpbmcgYSByYXcgcG9pbnRlciB0byBh
IFNvdXBBdXRoCisgICAgICAgIGNhcnJ5IGEgR1JlZlB0ciB3aGljaCB3aWxsIGFsbG93IHRoZSBk
aWFsb2cgdG8gYmUgdXNlZCBldmVuIGFmdGVyIHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQor
ICAgICAgICBpcyBkZXN0cm95ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nLmg6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaDogQWRkIGEgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1ldGhv
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoK
KyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBXZSBubyBsb25nZXIgbmVlZCB0byBz
dG9yZSBhIE5ldHdvcmtpbmdDb250ZXh0IGluIHRoZSBoYW5kbGUncworICAgICAgICBpbnRlcm5h
bCBkYXRhIHN0cnVjdHVyZS4gUmVtb3ZlIHRoZSBnZXR0ZXIgZm9yIHRoZSBpbml0aWF0aW5nIHBh
Z2UgSUQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmg6IEFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlCisgICAgICAgIHRoYXQgdGFrZXMgYSBiaXQgb2YgZGF0YSBmcm9tIHRoZSBoYW5kbGUgaW5j
bHVkaW5nIFNvdXBNZXNzYWdlIGFuZCBTb3VwQXV0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcDogQWRkZWQuIERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAg
IChSZXNvdXJjZUVycm9yKTogQWRkZWQgYSBmYWN0b3J5IGZvciBhdXRoZW50aWNhdGlvbiBlcnJv
ci5zCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6Oldl
YkNvcmVTeW5jaHJvbm91c0xvYWRlcik6IFdlIG5vIGxvbmdlciBwYXNzIGluIHRoZQorICAgICAg
ICBTb3VwU2Vzc2lvbiBzaW5jZSB0aGUgc3luY2hyb25vdXMgbG9hZGVyIGFsd2F5cyB1c2VzIHRo
ZSBkZWZhdWx0IHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNM
b2FkZXI6OmFkanVzdE1heENvbm5lY3Rpb25zKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlU3lu
Y2hyb25vdXNMb2FkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
SW50ZXJuYWw6OnNvdXBTZXNzaW9uKTogVXNlIHRoZSBkZWZhdWx0IFNvdXBTZXNzaW9uIGluc3Rl
YWQgb2YgdGhlCisgICAgICAgIG9uZSBmcm9tIHRoZSBjb250ZXh0IC0tIHRoZSBjb250ZXh0IGlz
IGFsd2F5cyBzdG9yaW5nIHRoZSBkZWZhdWx0IG9uZSBhbnl3YXkuCisgICAgICAgIChXZWJDb3Jl
OjpzZXRTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJRCk6IEp1c3QgZ2V0IHRoZSBwYWdlIGRpcmVj
dGx5IGZyb20gdGhlIE5ldHdvcmtpbmdDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KTogQWx3YXlzIHNldCB0aGUgImhhbmRsZSIg
ZGF0YSBvbiB0aGUgbWVzc2FnZS4KKyAgICAgICAgSXQncyBhbHdheXMgdXNlZCBub3cuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOiBEb24ndCBzdG9yZSB0aGUgTmV0
d29ya2luZ0NvbnRleHQgaW4gdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlCisgICAgICAgIGFu
ZCBnZXQgdGhlIGluaXRpYXRpbmcgcGFnZSBJRCBkaXJlY3RseSBmcm9tIHRoZSBOZXR3b3JraW5n
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOiBBZGRlZCB0aGlzIG1ldGhvZCB3aGljaCByb3V0ZXMKKyAg
ICAgICAgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB0byB0aGUgY2xpZW50LgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbCk6IEFkZGVkIGEgc3R1YiBmb3IgdGhpcyBtZXRob2QuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6IERvbid0
IHBhc3MgdGhlIHNlc3Npb24gdG8gdGhlIGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OmF1dGhl
bmljYXRlQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpkZWZhdWx0U2Vzc2lvbik6IENvbm5lY3QgdGhlIGF1dGhlbnRpY2F0ZSBjYWxsYmFjay4KKwog
MjAxMi0xMC0wOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgRml4IHRoZSBvcmRlciBvZiB0aGUgc3RhdGVtZW50cyBpbiBteSBwcmV2aW91cyBidWls
ZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMTdjODA4OGIwNzc1NWY4NDQyNjk0NDM2MWJjMTkz
Y2NkN2Q3Mjk3Yi4uNTJiMTNhODMwY2ZlNjVmYTVjNjEzZTQyNGE5ZmYxOTE1ZTA5NWU1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTE1ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtTb3VwXSBJbXBsZW1l
bnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9nIHZpYSBXZWJDb3JlU3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHVzaW5nIGEgY3VzdG9tIFNvdXBTZXNzaW9uRmVhdHVyZSB0byBzaG93IHRoZSBhdXRoZW50aWNh
dGlvbiBkaWFsb2csCisgICAgICAgIHNob3cgaXQgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgV2Vi
Q29yZSBtZXNzYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICBTaG93IHRoZSBkaWFs
b2cgd2hlbiB3ZSBuZWVkIHRvIGF1dGhlbnRpY2F0ZS4gQWxzbywgc28gbm90IHNob3cgdGhlIGRp
YWxvZworICAgICAgICBpZiB3ZSBhcmUgaW4gRFJUIG1vZGUuCisgICAgICAgICogd2Via2l0L3dl
YmtpdGdsb2JhbHMuY3BwOgorICAgICAgICAod2Via2l0SW5pdCk6IE5vIGxvbmdlciBpbnN0YWxs
IG91ciBTb3VwRmVhdHVyZS4KKwogMjAxMi0xMC0wNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJh
IEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBm
aXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNDY4OTc3Y2E4Y2IxMmZjODdkOTQxZjQ0MmFjYjBiOWM5MTQ5YmU0Zi4uMGM3NDUxMmRjNjU4
YTkyOTU3YzAyMmY1YTVjNGNlNmI2YzZlZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTEwLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXVtTb3VwXSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24g
ZGlhbG9nIHZpYSBXZWJDb3JlU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIGEgY3VzdG9tIFNvdXBTZXNzaW9uRmVh
dHVyZSB0byBzaG93IHRoZSBhdXRoZW50aWNhdGlvbgorICAgICAgICBkaWFsb2csIHNob3cgaXQg
dXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBtZXNzYWdlLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbTogUmVtb3ZlZCB0aGUgU291cFNlc3Npb25GZWF0dXJlIGZpbGVzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0KTogT25seSB1c2UgdGhlIGRlZmF1bHQgZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKKyAgICAgICAgZm9yIG5vbi1HVEsrIHBvcnRz
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IEFkZGVkCisg
ICAgICAgIGEgR1RLKy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiB0aGF0IHNob3dzIHRoZSBHdGtB
dXRoZW50aWNhdGlvbkRpYWxvZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlh
bG9nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9n
Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbkd0ayk6IERvbid0IGluc3RhbGwg
dGhlIGN1c3RvbSBzZXNzaW9uIGZlYXR1cmUuCisKIDIwMTItMTAtMDkgIFJpayBDYWJhbmllciAg
PGNhYmFuaWVyQGFkb2JlLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBjb21waWxlIGZsYWcg
Zm9yIGNvbXBvc2l0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhODJiM2My
MzdlMjA3ZjZmNDZmOTJmOTBlYjNmNTc2NmY3ZmJkNGE4Li5iNDgzZDhlZmRmZWNhOGQ0OTI0YjQ1
ZmY0NGE1YTA4NzZiZDUxMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2
OTUsNiArNDY5NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZUphclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llSmFyU291cC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGYwYTZjMzM1Y2NmOTY5MjZiNGIxMzE2OWY0MGU0MWNhODhlZWFjOWYuLmE2
Y2ZlZmMwNmY1MTU5MTNiNzdjYTA4ZTdjY2ZkYjk0MmQwYzg4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsCiAgICAgfQogICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUg
YSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscy4KICAgICAvLyBJZiB3ZSBjYW4n
dCBjb250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBh
bHRvZ2V0aGVyLgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENV
UkwpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwg
UExBVEZPUk0oR1RLKQogICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKICAgICBBU1NFUlQoIWhhbmRsZSgpLT5oYXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmNwcAppbmRleCBkNjVmNzRm
OTEzNWYyZTU2YTJjYWEzYTU0NjQ1ZTNjNmZmOWZlNDA1Li4zNmJkMzFiMWVhNTEzZjUyNTYyOWQ4
ZDkwMmJjZGMwZTU5YWZhODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrQXV0aGVudGljYXRpb25EaWFsb2cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBH
dGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6R3RrQXV0aGVudGljYXRpb25EaWFsb2coR3RrV2luZG93
KiBwYXJlbnRXaW5kb3csIFNvdXBTZQogICAgIGd0a19hbGlnbm1lbnRfc2V0X3BhZGRpbmcoR1RL
X0FMSUdOTUVOVChlbnRyeUNvbnRhaW5lciksIDAsIDAsIDAsIDApOwogICAgIGd0a19ib3hfcGFj
a19zdGFydChHVEtfQk9YKHZCb3gpLCBlbnRyeUNvbnRhaW5lciwgRkFMU0UsIEZBTFNFLCAwKTsK
IAotICAgIGNvbnN0IGNoYXIqIHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFsbShtX2F1dGgpOwor
ICAgIGNvbnN0IGNoYXIqIHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFsbShtX2F1dGguZ2V0KCkp
OwogICAgIC8vIENoZWNraW5nIHRoYXQgcmVhbG0gaXMgbm90IGFuIGVtcHR5IHN0cmluZy4KICAg
ICBib29sIGhhc1JlYWxtID0gKHJlYWxtICYmIHJlYWxtWzBdICE9ICdcMCcpOwogCkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6c2hvdygpCiB7CiAgICAg
Y29uc3QgY2hhciogdXNlcm5hbWUgPSAwOwogICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gMDsK
LSAgICBib29sIGhhdmVTYXZlZExvZ2luID0gZ2V0U2F2ZWRMb2dpbihtX2F1dGgsICZ1c2VybmFt
ZSwgJnBhc3N3b3JkKTsKKyAgICBib29sIGhhdmVTYXZlZExvZ2luID0gZ2V0U2F2ZWRMb2dpbiht
X2F1dGguZ2V0KCksICZ1c2VybmFtZSwgJnBhc3N3b3JkKTsKICAgICBzb3VwX3Nlc3Npb25fcGF1
c2VfbWVzc2FnZShtX3Nlc3Npb24sIG1fbWVzc2FnZS5nZXQoKSk7CiAgICAgZ3RrX2VudHJ5X3Nl
dF90ZXh0KEdUS19FTlRSWShtX2xvZ2luRW50cnkpLCB1c2VybmFtZSA/IHVzZXJuYW1lIDogIiIp
OwogICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkobV9wYXNzd29yZEVudHJ5KSwgcGFz
c3dvcmQgPyBwYXNzd29yZCA6ICIiKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEd0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nOjpzYXZlUGFzc3dvcmQoKQogCiAgICAgLy8gQW55dGhpbmcgYnV0IDQw
MSBhbmQgNXh4IG1lYW5zIHRoZSBwYXNzd29yZCB3YXMgYWNjZXB0ZWQuCiAgICAgaWYgKG1fbWVz
c2FnZS5nZXQoKS0+c3RhdHVzX2NvZGUgIT0gNDAxICYmIG1fbWVzc2FnZS5nZXQoKS0+c3RhdHVz
X2NvZGUgPCA1MDApCi0gICAgICAgIHNvdXBfYXV0aF9zYXZlX3Bhc3N3b3JkKG1fYXV0aCwgbV91
c2VybmFtZS5kYXRhKCksIG1fcGFzc3dvcmQuZGF0YSgpKTsKKyAgICAgICAgc291cF9hdXRoX3Nh
dmVfcGFzc3dvcmQobV9hdXRoLmdldCgpLCBtX3VzZXJuYW1lLmRhdGEoKSwgbV9wYXNzd29yZC5k
YXRhKCkpOwogCiAgICAgLy8gRGlzY29ubmVjdCB0aGUgY2FsbGJhY2suIElmIHRoZSBhdXRoZW50
aWNhdGlvbiBzdWNjZWVkZWQgd2UgYXJlIGRvbmUsCiAgICAgLy8gYW5kIGlmIGl0IGZhaWxlZCB3
ZSdsbCBjcmVhdGUgYSBuZXcgR3RrQXV0aGVudGljYXRpb25EaWFsb2cgYW5kIHdlJ2xsCkBAIC0y
NzgsNyArMjc4LDcgQEAgdm9pZCBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6YXV0aGVudGljYXRl
KCkKIHsKICAgICBjb25zdCBjaGFyICp1c2VybmFtZSA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtf
RU5UUlkobV9sb2dpbkVudHJ5KSk7CiAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQgPSBndGtfZW50
cnlfZ2V0X3RleHQoR1RLX0VOVFJZKG1fcGFzc3dvcmRFbnRyeSkpOwotICAgIHNvdXBfYXV0aF9h
dXRoZW50aWNhdGUobV9hdXRoLCB1c2VybmFtZSwgcGFzc3dvcmQpOworICAgIHNvdXBfYXV0aF9h
dXRoZW50aWNhdGUobV9hdXRoLmdldCgpLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogCiAjaWZkZWYg
U09VUF9UWVBFX1BBU1NXT1JEX01BTkFHRVIKICAgICBpZiAobV9yZW1lbWJlckNoZWNrQnV0dG9u
ICYmIGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04obV9yZW1l
bWJlckNoZWNrQnV0dG9uKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmgKaW5kZXggMjNmNmY1NTc0MWQ3OWE2N2M5OTYy
ZWQwNGRkZTY1NWMxOTMwYzU1Yi4uNzU4MjQxY2QzMzZkODMzNjU0NTk1NTBhMzhmMGUxNmQ0OTY4
YjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhl
bnRpY2F0aW9uRGlhbG9nLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBHdGtXaWRn
ZXQqIG1fZGlhbG9nOwogICAgIFNvdXBTZXNzaW9uKiBtX3Nlc3Npb247CiAgICAgR1JlZlB0cjxT
b3VwTWVzc2FnZT4gbV9tZXNzYWdlOwotICAgIFNvdXBBdXRoKiBtX2F1dGg7CisgICAgR1JlZlB0
cjxTb3VwQXV0aD4gbV9hdXRoOwogCiAgICAgR3RrV2lkZ2V0KiBtX2xvZ2luRW50cnk7CiAgICAg
R3RrV2lkZ2V0KiBtX3Bhc3N3b3JkRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggYjliZjM0ZmViMjI0NjE3ZThhODBkNjRh
MThmZTZlNDBiMjY4YTRhNy4uYzgxNzAwNGJkZWEzMDFiYTBmMmQyZjEyYjMxMWU2Yjc5NWRlY2Rk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaApAQCAtMTc0LDYgKzE3NCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SG9z
dEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZv
aWQgc2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNh
dGUqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCk7CisKKyNpZiBQ
TEFURk9STShHVEspCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CisjZW5kaWYKICNlbmRpZgogCiAgICAgLy8gVXNlZCB0byB3b3JrIGFyb3Vu
ZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQgYW55IG1vcmUgTlNVUkxDb25uZWN0aW9uIGNh
bGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20gdGhlIG9uZSB5b3UncmUgaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCmluZGV4IDYzZGYyODI0NTE1ZGI4ZGUxOTMzMTJkYmQ3NGIzYmYyNmQ2OTJkYzMuLmFj
YjExNzExOTUwZjA0MzgyM2RhYjEyZTk5NjBjOTk5YWJkODEzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CkBAIC0xOTEsOSArMTkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBt
X2J1ZmZlcjsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNp
Z25lZCBsb25nIG1fYm9keURhdGFTZW50OwotICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRl
eHQ+IG1fY29udGV4dDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCk7Ci0gICAg
ICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFU
KQogICAgICAgICBRTmV0d29ya1JlcGx5SGFuZGxlciogbV9qb2I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCmluZGV4IDQ5MmQ1YzIwMjNjMmU2OWRjZDA5NTcxYzA2OWU2ZTM0YzcyMTMwNTMu
LjMzY2JmYmJhOTc0NjVkZGZkMzU0Zjc4ZTRiYzRlYzJlOWU4MDIyOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKIAor
dHlwZWRlZiBzdHJ1Y3QgX1NvdXBBdXRoIFNvdXBBdXRoOwordHlwZWRlZiBzdHJ1Y3QgX1NvdXBN
ZXNzYWdlIFNvdXBNZXNzYWdlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7
CkBAIC00MSw4ICs0NCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFNvdXBNZXNzYWdlKiwgU291cEF1dGgqLCBib29sIHJldHJ5aW5nLCBB
dXRoZW50aWNhdGlvbkNsaWVudCopOworCiAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhl
bnRpY2F0aW9uQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbkNsaWVudC5n
ZXQoKTsgfQorICAgIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cE1lc3NhZ2UuZ2V0KCk7IH0KKyAgICBTb3VwQXV0aCogc291cEF1dGgoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXBBdXRoLmdldCgpOyB9CiAKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxTb3VwTWVz
c2FnZT4gbV9zb3VwTWVzc2FnZTsKKyAgICBHUmVmUHRyPFNvdXBBdXRoPiBtX3NvdXBBdXRoOwog
ICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjMyMzU5ODkzNGY4Y2M3OWY3ZTUzNDY2NmZiMzQyYWRhMzg0NTk1MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNvdXAuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIElHQUxJQSBTLkwuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUHJvdGVjdGlv
blNwYWNlU2VydmVyVHlwZSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSShTb3VwVVJJ
KiB1cmksIGJvb2wgaXNGb3JQcm94eSkKK3sKKyAgICBpZiAodXJpLT5zY2hlbWUgPT0gU09VUF9V
UklfU0NIRU1FX0hUVFBTKQorICAgICAgICByZXR1cm4gaXNGb3JQcm94eSA/IFByb3RlY3Rpb25T
cGFjZVByb3h5SFRUUFMgOiBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQUzsKKyAgICBpZiAodXJp
LT5zY2hlbWUgPT0gU09VUF9VUklfU0NIRU1FX0hUVFApCisgICAgICAgIHJldHVybiBpc0ZvclBy
b3h5ID8gUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQIDogUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UDsKKyAgICBpZiAodXJpLT5zY2hlbWUgPT0gU09VUF9VUklfU0NIRU1FX0ZUUCkKKyAgICAgICAg
cmV0dXJuIGlzRm9yUHJveHkgPyBQcm90ZWN0aW9uU3BhY2VQcm94eUZUUCA6IFByb3RlY3Rpb25T
cGFjZVNlcnZlckZUUDsKKyAgICByZXR1cm4gaXNGb3JQcm94eSA/IFByb3RlY3Rpb25TcGFjZVBy
b3h5SFRUUCA6IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7Cit9CisKK3N0YXRpYyBQcm90ZWN0
aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlRnJvbVNvdXBBdXRoQW5kTWVzc2FnZShTb3VwQXV0aCog
c291cEF1dGgsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIGNvbnN0IGNoYXIqIHNjaGVt
ZU5hbWUgPSBzb3VwX2F1dGhfZ2V0X3NjaGVtZV9uYW1lKHNvdXBBdXRoKTsKKyAgICBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZURlZmF1bHQ7CisgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoc2No
ZW1lTmFtZSwgImJhc2ljIikpCisgICAgICAgIHNjaGVtZSA9IFByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljOworICAgIGVsc2UgaWYgKCFnX2FzY2lpX3N0cmNhc2Vj
bXAoc2NoZW1lTmFtZSwgImRpZ2VzdCIpKQorICAgICAgICBzY2hlbWUgPSBQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBEaWdlc3Q7CisgICAgZWxzZSBpZiAoIWdfYXNjaWlf
c3RyY2FzZWNtcChzY2hlbWVOYW1lLCAibnRsbSIpKQorICAgICAgICBzY2hlbWUgPSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZU5UTE07CisgICAgZWxzZSBpZiAoIWdfYXNjaWlf
c3RyY2FzZWNtcChzY2hlbWVOYW1lLCAibmVnb3RpYXRlIikpCisgICAgICAgIHNjaGVtZSA9IFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lTmVnb3RpYXRlOworICAgIGVsc2UKKyAg
ICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3du
OworCisgICAgU291cFVSSSogc291cFVSSSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2Up
OworICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UoU3RyaW5nOjpmcm9tVVRGOChzb3VwX3VyaV9n
ZXRfaG9zdChzb3VwVVJJKSksIHNvdXBfdXJpX2dldF9wb3J0KHNvdXBVUkkpLAorICAgICAgICBw
cm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSShzb3VwVVJJLCBzb3VwX2F1dGhfaXNfZm9y
X3Byb3h5KHNvdXBBdXRoKSksCisgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc291cF9hdXRoX2dl
dF9yZWFsbShzb3VwQXV0aCkpLCBzY2hlbWUpOworfQorCitBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3Vw
QXV0aCogc291cEF1dGgsIGJvb2wgcmV0cnlpbmcsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjbGll
bnQpCisgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlRnJv
bVNvdXBBdXRoQW5kTWVzc2FnZShzb3VwQXV0aCwgc291cE1lc3NhZ2UpLAorICAgICAgICBDcmVk
ZW50aWFsKCksIC8vIHByb3Bvc2VkQ3JlZGVudGlhbHMKKyAgICAgICAgcmV0cnlpbmcgPyAwIDog
MSwKKyAgICAgICAgc291cE1lc3NhZ2UsIC8vIGZhaWx1cmVSZXNwb25zZQorICAgICAgICBSZXNv
dXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKHNvdXBNZXNzYWdlKSkKKyAgICAsIG1fc291
cE1lc3NhZ2Uoc291cE1lc3NhZ2UpCisgICAgLCBtX3NvdXBBdXRoKHNvdXBBdXRoKQorICAgICwg
bV9hdXRoZW50aWNhdGlvbkNsaWVudChjbGllbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VFcnJvci5oCmluZGV4IDc2NmRhMGIzMGQzMzI2ZWYyZjYzMWFmZmRmNzBkMWY3NDgyNDI5
MTMuLjBjYjVkYjc1YjlmMTc2YTZhYWIxZDIwMTM0MjljZjNhZDM0ZGU5MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApA
QCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgZ2VuZXJp
Y0lPRXJyb3IoR0Vycm9yKiwgU291cFJlcXVlc3QqKTsKICAgICBzdGF0aWMgUmVzb3VyY2VFcnJv
ciB0bHNFcnJvcihTb3VwUmVxdWVzdCosIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmlj
YXRlKik7CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdGltZW91dEVycm9yKGNvbnN0IFN0cmlu
ZyYgZmFpbGluZ1VSTCk7CisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgYXV0aGVudGljYXRpb25F
cnJvcihTb3VwTWVzc2FnZSopOwogCiAgICAgdW5zaWduZWQgdGxzRXJyb3JzKCkgY29uc3QgeyBy
ZXR1cm4gbV90bHNFcnJvcnM7IH0KICAgICBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
aW5kZXggZWU3NDhkY2VjNGJjYWMzN2MxYmZkNjllNDc0YzE3MmU5NzE1OTU5ZC4uMGY1ZTIxYTlh
MzJiOTkwMWIyM2NmNjExY2VlZTViODE0ZjU2NmExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBA
IC0zNSwxMSArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU3RyaW5n
IGZhaWxpbmdVUkkoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBBU1NFUlQoc291cFVSSSk7Cisg
ICAgR093blB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7
CisgICAgcmV0dXJuIHVyaS5nZXQoKTsKK30KKwogc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNv
dXBSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEFTU0VSVChyZXF1ZXN0KTsKLSAgICBHT3duUHRy
PGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291cF9yZXF1ZXN0X2dldF91cmkocmVxdWVz
dCksIEZBTFNFKSk7Ci0gICAgcmV0dXJuIHVyaS5nZXQoKTsKKyAgICByZXR1cm4gZmFpbGluZ1VS
SShzb3VwX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CiB9CiAKIFJlc291cmNlRXJyb3IgUmVz
b3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVycm9y
LCBTb3VwUmVxdWVzdCogcmVxdWVzdCkKQEAgLTUwLDYgKzU2LDEzIEBAIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVy
cm9yLCBTb3VwCiAgICAgICAgIGZhaWxpbmdVUkkocmVxdWVzdCksIFN0cmluZzo6ZnJvbVVURjgo
bWVzc2FnZS0+cmVhc29uX3BocmFzZSkpOwogfQogCitSZXNvdXJjZUVycm9yIFJlc291cmNlRXJy
b3I6OmF1dGhlbnRpY2F0aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KFNPVVBfSFRUUF9FUlJPUiksIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAorICAgICAgICBmYWlsaW5n
VVJJKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRGOChtZXNz
YWdlLT5yZWFzb25fcGhyYXNlKSk7Cit9CisKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6
Z2VuZXJpY0lPRXJyb3IoR0Vycm9yKiBlcnJvciwgU291cFJlcXVlc3QqIHJlcXVlc3QpCiB7CiAg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19JT19FUlJPUiksIGVy
cm9yLT5jb2RlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA2ZGExZmQxZDM2NWE5MTQwY2Ex
MzQyYTM4MGNlYzBkODYyN2E4YTM1Li44MWNmZDRiMTRlNGIwYWJiMWU0YTYyNGFkMDM0YjVhOTAx
Yjc3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNzgsMTAgKzc4LDkgQEAgY2xhc3Mg
V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyIDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIpOwogcHVi
bGljOgogCi0gICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU291cFNlc3Npb24qIHNlc3Npb24sIFZlY3Rv
cjxjaGFyPiYgZGF0YSkKKyAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
CiAgICAgICAgIDogbV9lcnJvcihlcnJvcikKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNl
KQotICAgICAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQogICAgICAgICAsIG1fZGF0YShkYXRhKQog
ICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiAgICAgewpAQCAtMTA1LDE0ICsxMDQsMTUgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RNYXhDb25uZWN0aW9ucyhpbnQgYWRqdXN0bWVudCkK
ICAgICB7CisgICAgICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRl
ZmF1bHRTZXNzaW9uKCk7CiAgICAgICAgIGludCBtYXhDb25uZWN0aW9ucywgbWF4Q29ubmVjdGlv
bnNQZXJIb3N0OwotICAgICAgICBnX29iamVjdF9nZXQobV9zZXNzaW9uLAorICAgICAgICBnX29i
amVjdF9nZXQoc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9NQVhf
Q09OTlMsICZtYXhDb25uZWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lP
Tl9NQVhfQ09OTlNfUEVSX0hPU1QsICZtYXhDb25uZWN0aW9uc1Blckhvc3QsCiAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKTsKICAgICAgICAgbWF4Q29ubmVjdGlvbnMgKz0gYWRqdXN0bWVudDsK
ICAgICAgICAgbWF4Q29ubmVjdGlvbnNQZXJIb3N0ICs9IGFkanVzdG1lbnQ7Ci0gICAgICAgIGdf
b2JqZWN0X3NldChtX3Nlc3Npb24sCisgICAgICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05OUywgbWF4Q29ubmVjdGlvbnMs
CiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fTUFYX0NPTk5TX1BFUl9IT1NULCBt
YXhDb25uZWN0aW9uc1Blckhvc3QsCiAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKQEAgLTE1
Niw3ICsxNTYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlc291cmNlRXJyb3ImIG1fZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSYgbV9yZXNwb25zZTsKLSAgICBTb3VwU2Vzc2lvbiog
bV9zZXNzaW9uOwogICAgIFZlY3RvcjxjaGFyPiYgbV9kYXRhOwogICAgIGJvb2wgbV9maW5pc2hl
ZDsKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9tYWluTG9vcDsKQEAgLTIyNiwxNiArMjI1LDYg
QEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogewog
fQogCi1zdGF0aWMgU291cFNlc3Npb24qIHNlc3Npb25Gcm9tQ29udGV4dChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCkKLXsKLSAgICByZXR1cm4gKGNvbnRleHQgJiYgY29udGV4dC0+aXNWYWxp
ZCgpKSA/IGNvbnRleHQtPnNvdXBTZXNzaW9uKCkgOiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNl
c3Npb24oKTsKLX0KLQotdWludDY0X3QgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6aW5pdGlhdGlu
Z1BhZ2VJRCgpCi17Ci0gICAgcmV0dXJuIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc1ZhbGlk
KCkpID8gbV9jb250ZXh0LT5pbml0aWF0aW5nUGFnZUlEKCkgOiAwOwotfQotCiBSZXNvdXJjZUhh
bmRsZTo6flJlc291cmNlSGFuZGxlKCkKIHsKICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRp
b24odGhpcywgdHJ1ZSk7CkBAIC0yNzMsNyArMjYyLDcgQEAgc3RhdGljIHZvaWQgZW5zdXJlU2Vz
c2lvbklzSW5pdGlhbGl6ZWQoU291cFNlc3Npb24qIHNlc3Npb24pCiAKIFNvdXBTZXNzaW9uKiBS
ZXNvdXJjZUhhbmRsZUludGVybmFsOjpzb3VwU2Vzc2lvbigpCiB7Ci0gICAgU291cFNlc3Npb24q
IHNlc3Npb24gPSBzZXNzaW9uRnJvbUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICBTb3Vw
U2Vzc2lvbiogc2Vzc2lvbiA9IFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwogICAg
IGVuc3VyZVNlc3Npb25Jc0luaXRpYWxpemVkKHNlc3Npb24pOwogICAgIHJldHVybiBzZXNzaW9u
OwogfQpAQCAtNjc0LDEzICs2NjMsMTMgQEAgc3RhdGljIHZvaWQgbmV0d29ya0V2ZW50Q2FsbGJh
Y2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmUKIAogc3Rh
dGljIGNvbnN0IGNoYXIqIGdTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJREtleSA9ICJ3ay1zb3Vw
LXJlcXVlc3QtaW5pdGlhaW5nLXBhZ2UtaWQiOwogCi1zdGF0aWMgdm9pZCBzZXRTb3VwUmVxdWVz
dEluaXRpYWluZ1BhZ2VJRChTb3VwUmVxdWVzdCogcmVxdWVzdCwgdWludDY0X3QgaW5pdGlhdGlu
Z1BhZ2VJRCkKK3N0YXRpYyB2b2lkIHNldFNvdXBSZXF1ZXN0SW5pdGlhaW5nUGFnZUlEKFNvdXBS
ZXF1ZXN0KiByZXF1ZXN0LCBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAo
IWluaXRpYXRpbmdQYWdlSUQpCisgICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVpbnQ2NF90KiBpbml0aWF0aW5nUGFnZUlEUHRy
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihmYXN0TWFsbG9jKHNpemVvZih1aW50NjRfdCkpKTsK
LSAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgKmluaXRp
YXRpbmdQYWdlSURQdHIgPSBjb250ZXh0LT5pbml0aWF0aW5nUGFnZUlEKCk7CiAgICAgZ19vYmpl
Y3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChyZXF1ZXN0KSwgZ19pbnRlcm5fc3RhdGljX3N0cmlu
ZyhnU291cFJlcXVlc3RJbml0aWFpbmdQYWdlSURLZXkpLCBpbml0aWF0aW5nUGFnZUlEUHRyLCBm
YXN0RnJlZSk7CiB9CiAKQEAgLTY5OCw2ICs2ODcsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3Vw
TWVzc2FnZUZvckhhbmRsZUFuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UgogICAgIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSA9IGQtPm1fc291cE1lc3NhZ2UuZ2V0KCk7
CiAgICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7CiAKKyAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiLCBoYW5kbGUpOwog
ICAgIGlmICghaGFuZGxlLT5zaG91bGRDb250ZW50U25pZmYoKSkKICAgICAgICAgc291cF9tZXNz
YWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZSwgU09VUF9UWVBFX0NPTlRFTlRfU05JRkZF
Uik7CiAKQEAgLTczNiw3ICs3MjYsNiBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3VwTWVzc2FnZUZv
ckhhbmRsZUFuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUgogICAgIGQt
Pm1fcmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5nKFJlc291cmNlTG9hZFRpbWluZzo6Y3Jl
YXRlKCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwgIm5l
dHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKG5ldHdvcmtFdmVudENhbGxiYWNrKSwgaGFuZGxlKTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksICJ3cm90ZS1ib2R5
IiwgR19DQUxMQkFDSyh3cm90ZUJvZHlDYWxsYmFjayksIGhhbmRsZSk7Ci0gICAgZ19vYmplY3Rf
c2V0X2RhdGEoR19PQkpFQ1QoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSksICJoYW5kbGUiLCBoYW5k
bGUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc4NSw5ICs3NzQsNiBAQCBib29s
IFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKICAgICAg
ICAgZC0+bV9maXJzdFJlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQog
Ci0gICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB0b3BsZXZlbDsg
bWF5IGJlIE5VTEwKLSAgICBkLT5tX2NvbnRleHQgPSBjb250ZXh0OwotCiAgICAgLy8gT25seSBh
bGxvdyB0aGUgUE9TVCBhbmQgR0VUIG1ldGhvZHMgZm9yIG5vbi1IVFRQIHJlcXVlc3RzLgogICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgpOwogICAgIGJv
b2wgaXNIVFRQRmFtaWx5UmVxdWVzdCA9IHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpOwpAQCAtODAxLDcgKzc4Nyw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBzZXRTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJRChkLT5tX3NvdXBSZXF1ZXN0LmdldCgp
LCBkLT5pbml0aWF0aW5nUGFnZUlEKCkpOworICAgIHNldFNvdXBSZXF1ZXN0SW5pdGlhaW5nUGFn
ZUlEKGQtPm1fc291cFJlcXVlc3QuZ2V0KCksIGNvbnRleHQpOwogCiAgICAgLy8gU2VuZCB0aGUg
cmVxdWVzdCBvbmx5IGlmIGl0J3Mgbm90IGJlZW4gZXhwbGljaXRseSBkZWZlcnJlZC4KICAgICBp
ZiAoIWQtPm1fZGVmZXJzTG9hZGluZykKQEAgLTg1NSw2ICs4NDEsMTggQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKGJvb2wgaWdub3JlU1NMRXJyb3JzKQogICAgIGdJ
Z25vcmVTU0xFcnJvcnMgPSBpZ25vcmVTU0xFcnJvcnM7CiB9CiAKKyNpZiBQTEFURk9STShHVEsp
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBpZiAoY2xp
ZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodGhpcywgY2hhbGxlbmdlKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKK3sKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCB3YWl0aW5nVG9TZW5kUmVxdWVz
dChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogewogICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9y
IGQtPm1fc291cFJlcXVlc3QgYmVjYXVzZSB0aGUgcmVxdWVzdCBtYXkgaGF2ZSByYWlzZWQgYSBm
YWlsdXJlCkBAIC05MTgsNyArOTE2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICBp
ZiAobG9hZGluZ1N5bmNocm9ub3VzUmVxdWVzdCkgLy8gSW4gcHJhY3RpY2UgdGhpcyBjYW5ub3Qg
aGFwcGVuLCBidXQgaWYgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXMsCiAgICAgICAgIHJldHVybjsg
ICAgICAgICAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGdvaW5n
IGludG8gYW4gaW5maW5pdGUgbG9vcCBvZiByZXF1ZXN0cy4KIAotICAgIFdlYkNvcmVTeW5jaHJv
bm91c0xvYWRlciBzeW5jTG9hZGVyKGVycm9yLCByZXNwb25zZSwgc2Vzc2lvbkZyb21Db250ZXh0
KGNvbnRleHQpLCBkYXRhKTsKKyAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgc3luY0xvYWRl
cihlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlID0gY3JlYXRlKGNvbnRleHQsIHJlcXVlc3QsICZzeW5jTG9hZGVyLCBmYWxzZSAvKmRlZmVy
c0xvYWRpbmcqLywgZmFsc2UgLypzaG91bGRDb250ZW50U25pZmYqLyk7CiAgICAgaWYgKCFoYW5k
bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMDgsNiArMTAwNiwxOSBAQCBzdGF0aWMgZ2Jvb2xl
YW4gcmVxdWVzdFRpbWVvdXRDYWxsYmFjayhncG9pbnRlciBkYXRhKQogICAgIHJldHVybiBGQUxT
RTsKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3N0YXRpYyB2b2lkIGF1dGhlbmljYXRlQ2FsbGJh
Y2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1
dGgqIHNvdXBBdXRoLCBnYm9vbGVhbiByZXRyeWluZykKK3sKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0
X2RhdGEoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFuZGxlIikpOworICAgIGlmICghaGFuZGxl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHBhc3MgYSBjbGll
bnQgaGVyZSwgYmVjYXVzZSBHVEsrIGRvZXMgbm90IHlldCB1c2UgdGhlIEF1dGhlbnRpY2F0aW9u
Q2xpZW50IHRvCisgICAgLy8gcmVzcG9uZCB0byB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
LS0gaW5zdGVhZCBkZWFsaW5nIHdpdGggdGhlIFNvdXAgb2JqZWN0cyBkaXJlY3RseS4KKyAgICBo
YW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5aW5nLCAwKSk7Cit9CisjZW5kaWYK
KwogU291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiB7CiAgICAg
c3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gMDsKQEAgLTEwMjgsNiArMTAzOSwxMCBAQCBT
b3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKICAgICAgICAgICAg
ICAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfUFJP
WFlfUkVTT0xWRVJfREVGQVVMVCwKICAgICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9V
U0VfVEhSRUFEX0NPTlRFWFQsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyNp
ZiBQTEFURk9STShHVEspCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1Qoc2Vzc2lv
biksICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLKGF1dGhlbmljYXRlQ2FsbGJhY2spLCAwKTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoR19PQkpFQ1Qoc2Vzc2lvbiksICJyZXF1ZXN0LXN0YXJ0ZWQiLCBHX0NBTExCQUNLKHJlcXVl
c3RTdGFydGVkQ2FsbGJhY2spLCAwKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDA4
NWY0MWM2YTNlOTBjYTMyYTZlZWNjYWZhYmRiY2JkYjAzMjljNWQuLmZmNmZkZTdhNzZmNWY4ZTc2
Mjk5MzNkZTczNTFmZjhkNjUyYzcwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXJHdGsuaCIKKyNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaCIKICNpbmNsdWRlICJFcnJvcnNHdGsuaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCkBAIC0zOSw3ICs0MCw5IEBACiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dEd0ay5oIgogI2luY2x1ZGUgIkZyYW1lVHJl
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkd0a0F1dGhlbnRpY2F0aW9u
RGlhbG9nLmgiCiAjaW5jbHVkZSAiR3RrUGx1Z2luV2lkZ2V0LmgiCisjaW5jbHVkZSAiR3RrVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCkBAIC0xOTYsOSAr
MTk5LDE1IEBAIEZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50
aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobV9mcmFtZSkpKTsKKyAgICBHdGtXaW5kb3cqIHRvcGxldmVsV2luZG93ID0gd2lkZ2V0SXNP
bnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSA/IEdUS19XSU5ET1codG9wbGV2ZWwpIDog
MDsKKyAgICBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZyogZGlhbG9nID0gbmV3IEd0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nKHRvcGxldmVsV2luZG93LCB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigp
LCBjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSwgY2hhbGxlbmdlLnNvdXBBdXRoKCkpOworICAgIGRp
YWxvZy0+c2hvdygpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCmluZGV4IGQyNzE1YTZh
MWQyMzRlODAwZmFmNjkyMGNlNWZiOTIxMjc2NjQzYTUuLjg4NjI5MjE2OTlhMzg1ZDA1MzFiZTJj
MjU1YzY1YzZlYzg0YjllMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xv
YmFscy5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0R3Rr
LmgiCi0jaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC00NSw3
ICs0NCw2IEBACiAjaW5jbHVkZSAid2Via2l0ZmF2aWNvbmRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRpY29uZGF0YWJhc2UuaCIK
LSNpbmNsdWRlICJ3ZWJraXRzb3VwYXV0aGRpYWxvZy5oIgogI2luY2x1ZGUgIndlYmtpdHNwZWxs
Y2hlY2tlci5oIgogI2luY2x1ZGUgIndlYmtpdHNwZWxsY2hlY2tlcmVuY2hhbnQuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJkYXRhYmFzZS5oIgpAQCAtMjA3LDMyICsyMDUsNiBAQCBXZWJLaXRXZWJQ
bHVnaW5EYXRhYmFzZSogd2Via2l0X2dldF93ZWJfcGx1Z2luX2RhdGFiYXNlKCkKICAgICByZXR1
cm4gZGF0YWJhc2U7CiB9CiAKLQotc3RhdGljIEd0a1dpZGdldCogY3VycmVudFRvcGxldmVsQ2Fs
bGJhY2soV2ViS2l0U291cEF1dGhEaWFsb2cqIGZlYXR1cmUsIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBncG9pbnRlciB1c2VyRGF0YSkKLXsKLSAgICBncG9pbnRlciBtZXNzYWdlRGF0YSA9IGdfb2Jq
ZWN0X2dldF9kYXRhKEdfT0JKRUNUKG1lc3NhZ2UpLCAicmVzb3VyY2VIYW5kbGUiKTsKLSAgICBp
ZiAoIW1lc3NhZ2VEYXRhKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KG1lc3NhZ2VEYXRhKTsK
LSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgIGlmICghZCkKLSAg
ICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBXZWJLaXQ6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRH
dGsqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRH
dGsqPihkLT5tX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0
dXJuIE5VTEw7Ci0KLSAgICBpZiAoIWNvbnRleHQtPmNvcmVGcmFtZSgpKQotICAgICAgICByZXR1
cm4gTlVMTDsKLQotICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSAgZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChjb250ZXh0LT5jb3JlRnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKLSAgICByZXR1cm4gd2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHRvcGxldmVsKSA/IHRvcGxldmVsIDogMDsKLX0KLQogLyoqCiAgKiB3ZWJraXRf
Z2V0X2ljb25fZGF0YWJhc2U6CiAgKgpAQCAtNTkwLDEzICs1NjIsNiBAQCB2b2lkIHdlYmtpdElu
aXQoKQogICAgIEdPd25QdHI8Z2NoYXI+IGljb25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXQiLCAiaWNvbmRhdGFiYXNlIiwgTlVMTCkp
OwogICAgIHdlYmtpdF9pY29uX2RhdGFiYXNlX3NldF9wYXRoKHdlYmtpdF9nZXRfaWNvbl9kYXRh
YmFzZSgpLCBpY29uRGF0YWJhc2VQYXRoLmdldCgpKTsKIAotICAgIFNvdXBTZXNzaW9uKiBzZXNz
aW9uID0gd2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKLQotICAgIFNvdXBTZXNzaW9uRmVh
dHVyZSogYXV0aERpYWxvZyA9IHN0YXRpY19jYXN0PFNvdXBTZXNzaW9uRmVhdHVyZSo+KGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBOVUxMKSk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChhdXRoRGlhbG9nLCAiY3VycmVudC10b3BsZXZlbCIsIEdfQ0FMTEJBQ0soY3Vy
cmVudFRvcGxldmVsQ2FsbGJhY2spLCBOVUxMKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1
cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7Ci0gICAgZ19vYmplY3RfdW5yZWYoYXV0aERpYWxvZyk7
Ci0KICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUp
OwogCiAjaWYgVVNFKENMVVRURVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAy
NTQzMjAzMGZlNDY2NDNlYWYyODYzMGEyYzYzMjU5ZTY4Mzk0ZDQyLi44NTk1MWQ0MTk3Njc5MmY2
ZjJmMGI4ZWE0Y2ViZTI4ZTA1MTQ2YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTk1Niw4ICs5NTYsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0
ay9XZWJBdXRoRGlhbG9nLmNwcCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2Vi
QXV0aERpYWxvZy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
TWFpbkd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYklj
b25EYXRhYmFzZVByb3h5LmNwcCBcCkBAIC0xMDk3LDYgKzEwOTUsNyBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YlBvcHVwTWVudUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDg3NjIzNGY4ODk2
MWRkNzk2NzdmMTQ1NTRiNTA1MDVkNTM0NmU0YmYuLmZkNThhN2VkMDMxMTBmNzYyYmRmMmMyMTE4
ZDhiMjNmYWYzYmUzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0y
MDAsNiArMjAwLDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZAogICAgIHJldHVybiB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCgpLnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKHdlYlBhZ2UsIG1fZnJhbWUsIGlkZW50aWZpZXIpOwogfQogCisjaWYgIVBMQVRGT1JN
KEdUSykKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKICAgICAvLyBGSVhNRTogQXV0
aGVudGljYXRpb24gaXMgYSBwZXItcmVzb3VyY2UgY29uY2VwdCwgYnV0IHdlIGRvbid0IGRvIHBl
ci1yZXNvdXJjZSBoYW5kbGluZyBpbiB0aGUgVUlQcm9jZXNzIGF0IHRoZSBBUEkgbGV2ZWwgcXVp
dGUgeWV0LgpAQCAtMjExLDYgKzIxMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hCiAKICAg
ICBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNoYXJlZCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShtX2ZyYW1lLCBjaGFsbGVuZ2UpOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpICAgIAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNTRhZmUyMGE2NjNmNWY1MjZkYzg4N2Ex
NmIyYTkzN2FlZjhjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIElHQUxJQSBTLkwuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCIKKworI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgV2ViQ29y
ZTo6R3RrQXV0aGVudGljYXRpb25EaWFsb2c7Cit1c2luZyBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQorewor
ICAgIEd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nKiBkaWFsb2cgPSBuZXcgR3RrQXV0aGVudGljYXRp
b25EaWFsb2coMCwgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGNo
YWxsZW5nZS5zb3VwTWVzc2FnZSgpLCBjaGFsbGVuZ2Uuc291cEF1dGgoKSk7CisgICAgZGlhbG9n
LT5zaG93KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjNjM2VhYjljNjBmN2M4ZmVhZWQyMmMwMWI3NTJjZWYzMzQwMjRhNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYkF1dGhEaWFsb2cuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUv
R3RrQXV0aGVudGljYXRpb25EaWFsb2cuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmpl
Y3QgcGFyZW50OwotfSBXZWJBdXRoRGlhbG9nOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgR09i
amVjdENsYXNzIHBhcmVudDsKLX0gV2ViQXV0aERpYWxvZ0NsYXNzOwotCi1zdGF0aWMgdm9pZCB3
ZWJBdXRoRGlhbG9nU2Vzc2lvbkZlYXR1cmVJbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFj
ZSosIGdwb2ludGVyKTsKLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViQXV0aERpYWxvZywg
d2ViX2F1dGhfZGlhbG9nLCBHX1RZUEVfT0JKRUNULAotICAgICAgICAgICAgICAgICAgICAgICAg
R19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViQXV0aERpYWxvZ1Nlc3Np
b25GZWF0dXJlSW5pdCkpCi0KLXN0YXRpYyB2b2lkIHdlYl9hdXRoX2RpYWxvZ19jbGFzc19pbml0
KFdlYkF1dGhEaWFsb2dDbGFzcyopCi17Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYl9hdXRoX2RpYWxv
Z19pbml0KFdlYkF1dGhEaWFsb2cqKQotewotfQotCi1zdGF0aWMgdm9pZCBzZXNzaW9uQXV0aGVu
dGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgU291cEF1
dGgqIGF1dGgsIGdib29sZWFuLCBncG9pbnRlcikKLXsKLSAgICBXZWJDb3JlOjpHdGtBdXRoZW50
aWNhdGlvbkRpYWxvZyogYXV0aERpYWxvZyA9IG5ldyBXZWJDb3JlOjpHdGtBdXRoZW50aWNhdGlv
bkRpYWxvZygwLCBzZXNzaW9uLCBtZXNzYWdlLCBhdXRoKTsKLSAgICBhdXRoRGlhbG9nLT5zaG93
KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqLCBTb3VwU2Vz
c2lvbiogc2Vzc2lvbikKLXsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50
aWNhdGUiLCBHX0NBTExCQUNLKHNlc3Npb25BdXRoZW50aWNhdGUpLCAwKTsKLX0KLQotc3RhdGlj
IHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSosIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQot
ewotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPihzZXNzaW9uQXV0aGVudGljYXRlKSwgMCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYkF1dGhEaWFsb2dTZXNzaW9uRmVhdHVyZUluaXQoU291cFNlc3Npb25GZWF0
dXJlSW50ZXJmYWNlKiBmZWF0dXJlLCBncG9pbnRlcikKLXsKLSAgICBmZWF0dXJlLT5hdHRhY2gg
PSBhdHRhY2g7Ci0gICAgZmVhdHVyZS0+ZGV0YWNoID0gZGV0YWNoOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ZWFmZWExMGM4ODU4MTRiOTA0N2VjMGM1NGVkODYxNzhlZGNiNmQ0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFsb2cuaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJB
dXRoRGlhbG9nX2gKLSNkZWZpbmUgV2ViQXV0aERpYWxvZ19oCi0KLSNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgotCi0jZGVmaW5lIFdFQl9UWVBFX0FVVEhfRElBTE9HICh3ZWJfYXV0aF9kaWFsb2df
Z2V0X3R5cGUoKSkKLQotR1R5cGUgd2ViX2F1dGhfZGlhbG9nX2dldF90eXBlKCk7Ci0KLSNlbmRp
ZiAvLyBXZWJBdXRoRGlhbG9nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCA3ZGFjYzIyNmU4MDkyOWM4YmUzODc2NWU4
YjU4ZDU0Yjk1MDAwNGVlLi5mMTdhYzZjZWVmZDQxZDhiNmFjNTdhNGI3MDBiNGRiYzI5ZjAyOGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFp
bkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01h
aW5HdGsuY3BwCkBAIC0yOSw5ICsyOSw3IEBACiAKICNkZWZpbmUgTElCU09VUF9VU0VfVU5TVEFC
TEVfUkVRVUVTVF9BUEkKIAotI2luY2x1ZGUgIldlYkF1dGhEaWFsb2cuaCIKICNpbmNsdWRlICJX
S0Jhc2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5oPgpAQCAtNjYsMTIgKzY0LDEw
IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSkKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKIAotICAgIFNvdXBTZXNz
aW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7
Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgV0VCX1RZUEVf
QVVUSF9ESUFMT0cpOwotCiAgICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZhbGlk
YXRlIGNlcnRpZmljYXRlcyB3ZSdyZQogICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRpZmlj
YXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKICAgICAvLyBhZGRlZCBsYXRlciB0byBs
ZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgorICAgIFNvdXBT
ZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9u
KCk7CiAgICAgZ19vYmplY3Rfc2V0KHNlc3Npb24sIFNPVVBfU0VTU0lPTl9TU0xfVVNFX1NZU1RF
TV9DQV9GSUxFLCBUUlVFLAogICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fU1NMX1NUUklD
VCwgRkFMU0UsIE5VTEwpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMWUyZTAxY2NkNDVlZjExYWJkYjBjOGMxM2EzZmQwMGExNjNiNGI3MS4u
MGI1ZmM4YWMzYzU3MDA2NDNiNGNkNDg5MjkxMTM5OTVhZjJiZDdiYSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTEwLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXVtTb3VwXSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9n
IHZpYSBXZWJDb3JlU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBubyBsb25nZXIgbmVlZCB0byB0dXJuIG9mZiB0aGUgc291cCBhdXRoZW50
aWNhdGlvbiBkaWFsb2cgc291cCBmZWF0dXJlLAorICAgICAgICBiZWNhdXNlIGl0J3Mgbm90IGlu
c3RhbGxlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5j
cHA6CisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lzdGVudFN0YXRlVmFsdWVzRm9yVGVzdGlu
Zyk6IERvbid0IHR1cm4gb2ZmIHRoZSBmZWF0dXJlIGFueSBsb25nZXIuCisKIDIwMTItMTAtMDkg
IEFsZXhpcyBNZW5hcmQgIDxhbGV4aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbR1RLXSBTaGFk
b3cgYnVpbGRzIGFyZSBub3Qgd29ya2luZyBhbnltb3JlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZjU3NGMxMWU4ZThhNDZjYTc0NmEzYTY0YmJl
ZDY5MDhiMDQ4ZDY2Zi4uYTdiNTc0NWY5NzYwZGIzN2ZiZmZiZDVkOWRkYzBkMzMzM2I4MTE1MiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC02NDUs
MTAgKzY0NSw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50U3RhdGVWYWx1
ZXNGb3JUZXN0aW5nKCkKIHsKICAgICByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCk7
CiAKLSAgICAvKiBEaXNhYmxlIHRoZSBkZWZhdWx0IGF1dGggZGlhbG9nIGZvciB0ZXN0aW5nICov
Ci0gICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigp
OwotICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKHNlc3Npb24sIFdFQktJ
VF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cpOwotCiAjaWYgUExBVEZPUk0oWDExKQogICAgIHdlYmtp
dF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3Rvcnkod2ViVmlldywgVEVTVF9Q
TFVHSU5fRElSKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169936</attachid>
            <date>2012-10-22 10:33:32 -0700</date>
            <delta_ts>2012-10-23 09:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99351-20121022103210.patch</filename>
            <type>text/plain</type>
            <size>41481</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhNWM5NmEwZGYzNTY3
MzY5YzhhOGU1Y2Y2ODkyZDc3NTk0NjkwYi4uMDZmZTExYmFmNzE4MjZjNGE0OGY0OGYyMmNjMDk3
NWIyODcwZjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtTb3Vw
XSBJbXBsZW1lbnQgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gZGlhbG9nIHZpYSBXZWJDb3Jl
U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTkzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnN0ZWFkIG9mIGNvbm5lY3RpbmcgdG8gdGhlIFNvdXBTZXNzaW9uOjphdXRoZW50aWNhdGUgc2ln
bmFsIGluIHRoZSBBUEkgbGF5ZXIKKyAgICAgICAgdmlhIGEgU291cFNlc3Npb25GZWF0dXJlLCBy
b3V0ZSB0aGUgbWVzc2FnZSB0aHJvdWdoIHRoZSB0eXBpY2FsIFdlYkNvcmUgYXV0aGVudGljYXRp
b24KKyAgICAgICAgbWVjaGFuaXNtLiBUaGlzIGlzIGEgc3RlcCBvbiB0aGUgcGF0aCB0byBoYXZp
bmcgZnVsbC1ibG93biBzdXBwb3J0IGZvciBhdXRoZW50aWNhdGlvbgorICAgICAgICBpbiB0aGUg
QVBJIGFsbG93aW5nIGZvciBjdXN0b20gYXV0aGVudGljYXRpb24gZGlhbG9ncyBhbmQgYmVoYXZp
b3IgaW4gY2xpZW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBj
aGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgdGhl
IG5ldyBpbXBsZW1lbnRhdGlvbiBmaWxlIGZvciB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBJbmNs
dWRlIEdUSysgaGVyZSBhcyB3ZWxsLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtBdXRoZW50
aWNhdGlvbkRpYWxvZy5jcHA6IEluc3RlYWQgb2YgY2FycnlpbmcgYSByYXcgcG9pbnRlciB0byBh
IFNvdXBBdXRoCisgICAgICAgIGNhcnJ5IGEgR1JlZlB0ciB3aGljaCB3aWxsIGFsbG93IHRoZSBk
aWFsb2cgdG8gYmUgdXNlZCBldmVuIGFmdGVyIHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQor
ICAgICAgICBpcyBkZXN0cm95ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRp
Y2F0aW9uRGlhbG9nLmg6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaDogQWRkIGEgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIG1ldGhv
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoK
KyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBSZW1vdmUgdGhlIGdldHRlciBmb3Ig
dGhlIGluaXRpYXRpbmcgcGFnZSBJRC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UKKyAgICAgICAgdGhhdCB0YWtlcyBhIGJpdCBvZiBkYXRhIGZy
b20gdGhlIGhhbmRsZSBpbmNsdWRpbmcgU291cE1lc3NhZ2UsIFNvdXBBdXRoLCBhbmQgU291cFNl
c3Npb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU291cC5jcHA6IEFkZGVkLiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAoUmVzb3VyY2VFcnJvcik6IEFkZGVkIGEg
ZmFjdG9yeSBmb3IgYXV0aGVudGljYXRpb24gZXJyb3JzLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0U291cFJlcXVlc3RJbml0aWFpbmdQYWdlSUQpOiBKdXN0IGdldCB0aGUgcGFnZSBkaXJl
Y3RseSBmcm9tIHRoZSBOZXR3b3JraW5nQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVNvdXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdCk6IEFsd2F5cyBzZXQgdGhlICJoYW5kbGUi
IGRhdGEgb24gdGhlIG1lc3NhZ2UuCisgICAgICAgIEl0J3MgYWx3YXlzIHVzZWQgbm93LgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KTogR2V0IHRoZSBpbml0aWF0aW5n
IHBhZ2UgSUQgZGlyZWN0bHkgZnJvbSB0aGUgTmV0d29ya2luZ0NvbnRleHQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KTogQWRkZWQgdGhpcyBtZXRob2Qgd2hpY2ggcm91dGVzCisgICAgICAgIHRoZSBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2UgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOiBBZGRl
ZCBhIHN0dWIgZm9yIHRoaXMgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOiBEb24ndCBwYXNzIHRoZSBzZXNzaW9uIHRv
IHRoZSBsb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjphdXRoZW5pY2F0ZUNhbGxiYWNrKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOiBD
b25uZWN0IHRoZSBhdXRoZW50aWNhdGUgY2FsbGJhY2suCisKIDIwMTItMTAtMDggIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCB0aGUgb3JkZXIg
b2YgdGhlIHN0YXRlbWVudHMgaW4gbXkgcHJldmlvdXMgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CmluZGV4IDE3YzgwODhiMDc3NTVmODQ0MjY5NDQzNjFiYzE5M2NjZDdkNzI5N2IuLjUyYjEzYTgz
MGNmZTY1ZmE1YzYxM2U0MjRhOWZmMTkxNWUwOTVlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0xMC0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bU291cF0gSW1wbGVtZW50IHRoZSBkZWZhdWx0IGF1dGhl
bnRpY2F0aW9uIGRpYWxvZyB2aWEgV2ViQ29yZVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhIGN1c3RvbSBTb3Vw
U2Vzc2lvbkZlYXR1cmUgdG8gc2hvdyB0aGUgYXV0aGVudGljYXRpb24gZGlhbG9nLAorICAgICAg
ICBzaG93IGl0IHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFdlYkNvcmUgbWVzc2FnZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgU2hvdyB0aGUgZGlhbG9nIHdoZW4gd2UgbmVlZCB0byBh
dXRoZW50aWNhdGUuIEFsc28sIHNvIG5vdCBzaG93IHRoZSBkaWFsb2cKKyAgICAgICAgaWYgd2Ug
YXJlIGluIERSVCBtb2RlLgorICAgICAgICAqIHdlYmtpdC93ZWJraXRnbG9iYWxzLmNwcDoKKyAg
ICAgICAgKHdlYmtpdEluaXQpOiBObyBsb25nZXIgaW5zdGFsbCBvdXIgU291cEZlYXR1cmUuCisK
IDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVp
cmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92
YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ2ODk3N2NhOGNiMTJmYzg3
ZDk0MWY0NDJhY2IwYjljOTE0OWJlNGYuLjBjNzQ1MTJkYzY1OGE5Mjk1N2MwMjJmNWE1YzRjZTZi
NmM2ZWQyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0xMC0xNSAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bU291cF0g
SW1wbGVtZW50IHRoZSBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB2aWEgV2ViQ29yZVN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5
MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5z
dGVhZCBvZiB1c2luZyBhIGN1c3RvbSBTb3VwU2Vzc2lvbkZlYXR1cmUgdG8gc2hvdyB0aGUgYXV0
aGVudGljYXRpb24KKyAgICAgICAgZGlhbG9nLCBzaG93IGl0IHVzaW5nIHRoZSBjb3JyZXNwb25k
aW5nIFdlYkNvcmUgbWVzc2FnZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IFJl
bW92ZWQgdGhlIFNvdXBTZXNzaW9uRmVhdHVyZSBmaWxlcy4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dCk6IE9ubHkgdXNlIHRoZSBkZWZhdWx0IGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlCisgICAgICAgIGZvciBub24tR1RLKyBwb3J0cy4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJGcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBBZGRlZAorICAgICAgICBhIEdUSystc3BlY2lm
aWMgaW1wbGVtZW50YXRpb24gdGhhdCBzaG93cyB0aGUgR3RrQXV0aGVudGljYXRpb25EaWFsb2cu
CisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc01haW5HdGspOiBEb24ndCBpbnN0YWxsIHRoZSBjdXN0b20gc2Vzc2lvbiBm
ZWF0dXJlLgorCiAyMDEyLTEwLTA5ICBSaWsgQ2FiYW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+
CiAKICAgICAgICAgQWRkIG1pc3NpbmcgY29tcGlsZSBmbGFnIGZvciBjb21wb3NpdGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYTgyYjNjMjM3ZTIwN2Y2ZjQ2ZjkyZjkwZWIz
ZjU3NjZmN2ZiZDRhOC4uYjQ4M2Q4ZWZkZmVjYThkNDkyNGI0NWZmNDRhNWEwODc2YmQ1MTE3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00Njk1LDYgKzQ2OTUsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmMGE2YzMz
NWNjZjk2OTI2YjRiMTMxNjlmNDBlNDFjYTg4ZWVhYzlmLi5hNmNmZWZjMDZmNTE1OTEzYjc3Y2Ew
OGU3Y2NmZGI5NDJkMGM4OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogICAgIH0K
ICAgICAvLyBPbmx5IHRoZXNlIHBsYXRmb3JtcyBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVlIHdp
dGhvdXQgY3JlZGVudGlhbHMuCiAgICAgLy8gSWYgd2UgY2FuJ3QgY29udGludWUgd2l0aCBjcmVk
ZW50aWFscywgd2UgbmVlZCB0byBjYW5jZWwgdGhlIGxvYWQgYWx0b2dldGhlci4KLSNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKQorI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykKICAgICBo
YW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxs
ZW5nZSk7CiAgICAgQVNTRVJUKCFoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1
dGhlbnRpY2F0aW9uRGlhbG9nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtB
dXRoZW50aWNhdGlvbkRpYWxvZy5jcHAKaW5kZXggZDY1Zjc0ZjkxMzVmMmU1NmEyY2FhM2E1NDY0
NWUzYzZmZjlmZTQwNS4uMzZiZDMxYjFlYTUxM2Y1MjU2MjlkOGQ5MDJiY2RjMGU1OWFmYTg1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0F1dGhlbnRpY2F0aW9u
RGlhbG9nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQXV0aGVudGlj
YXRpb25EaWFsb2cuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgR3RrQXV0aGVudGljYXRpb25EaWFs
b2c6Okd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nKEd0a1dpbmRvdyogcGFyZW50V2luZG93LCBTb3Vw
U2UKICAgICBndGtfYWxpZ25tZW50X3NldF9wYWRkaW5nKEdUS19BTElHTk1FTlQoZW50cnlDb250
YWluZXIpLCAwLCAwLCAwLCAwKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Qm94
KSwgZW50cnlDb250YWluZXIsIEZBTFNFLCBGQUxTRSwgMCk7CiAKLSAgICBjb25zdCBjaGFyKiBy
ZWFsbSA9IHNvdXBfYXV0aF9nZXRfcmVhbG0obV9hdXRoKTsKKyAgICBjb25zdCBjaGFyKiByZWFs
bSA9IHNvdXBfYXV0aF9nZXRfcmVhbG0obV9hdXRoLmdldCgpKTsKICAgICAvLyBDaGVja2luZyB0
aGF0IHJlYWxtIGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcuCiAgICAgYm9vbCBoYXNSZWFsbSA9IChy
ZWFsbSAmJiByZWFsbVswXSAhPSAnXDAnKTsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgR3Rr
QXV0aGVudGljYXRpb25EaWFsb2c6OnNob3coKQogewogICAgIGNvbnN0IGNoYXIqIHVzZXJuYW1l
ID0gMDsKICAgICBjb25zdCBjaGFyKiBwYXNzd29yZCA9IDA7Ci0gICAgYm9vbCBoYXZlU2F2ZWRM
b2dpbiA9IGdldFNhdmVkTG9naW4obV9hdXRoLCAmdXNlcm5hbWUsICZwYXNzd29yZCk7CisgICAg
Ym9vbCBoYXZlU2F2ZWRMb2dpbiA9IGdldFNhdmVkTG9naW4obV9hdXRoLmdldCgpLCAmdXNlcm5h
bWUsICZwYXNzd29yZCk7CiAgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2UobV9zZXNzaW9u
LCBtX21lc3NhZ2UuZ2V0KCkpOwogICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkobV9s
b2dpbkVudHJ5KSwgdXNlcm5hbWUgPyB1c2VybmFtZSA6ICIiKTsKICAgICBndGtfZW50cnlfc2V0
X3RleHQoR1RLX0VOVFJZKG1fcGFzc3dvcmRFbnRyeSksIHBhc3N3b3JkID8gcGFzc3dvcmQgOiAi
Iik7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBHdGtBdXRoZW50aWNhdGlvbkRpYWxvZzo6c2F2
ZVBhc3N3b3JkKCkKIAogICAgIC8vIEFueXRoaW5nIGJ1dCA0MDEgYW5kIDV4eCBtZWFucyB0aGUg
cGFzc3dvcmQgd2FzIGFjY2VwdGVkLgogICAgIGlmIChtX21lc3NhZ2UuZ2V0KCktPnN0YXR1c19j
b2RlICE9IDQwMSAmJiBtX21lc3NhZ2UuZ2V0KCktPnN0YXR1c19jb2RlIDwgNTAwKQotICAgICAg
ICBzb3VwX2F1dGhfc2F2ZV9wYXNzd29yZChtX2F1dGgsIG1fdXNlcm5hbWUuZGF0YSgpLCBtX3Bh
c3N3b3JkLmRhdGEoKSk7CisgICAgICAgIHNvdXBfYXV0aF9zYXZlX3Bhc3N3b3JkKG1fYXV0aC5n
ZXQoKSwgbV91c2VybmFtZS5kYXRhKCksIG1fcGFzc3dvcmQuZGF0YSgpKTsKIAogICAgIC8vIERp
c2Nvbm5lY3QgdGhlIGNhbGxiYWNrLiBJZiB0aGUgYXV0aGVudGljYXRpb24gc3VjY2VlZGVkIHdl
IGFyZSBkb25lLAogICAgIC8vIGFuZCBpZiBpdCBmYWlsZWQgd2UnbGwgY3JlYXRlIGEgbmV3IEd0
a0F1dGhlbnRpY2F0aW9uRGlhbG9nIGFuZCB3ZSdsbApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQg
R3RrQXV0aGVudGljYXRpb25EaWFsb2c6OmF1dGhlbnRpY2F0ZSgpCiB7CiAgICAgY29uc3QgY2hh
ciAqdXNlcm5hbWUgPSBndGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKG1fbG9naW5FbnRyeSkp
OwogICAgIGNvbnN0IGNoYXIgKnBhc3N3b3JkID0gZ3RrX2VudHJ5X2dldF90ZXh0KEdUS19FTlRS
WShtX3Bhc3N3b3JkRW50cnkpKTsKLSAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKG1fYXV0aCwg
dXNlcm5hbWUsIHBhc3N3b3JkKTsKKyAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKG1fYXV0aC5n
ZXQoKSwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKIAogI2lmZGVmIFNPVVBfVFlQRV9QQVNTV09SRF9N
QU5BR0VSCiAgICAgaWYgKG1fcmVtZW1iZXJDaGVja0J1dHRvbiAmJiBndGtfdG9nZ2xlX2J1dHRv
bl9nZXRfYWN0aXZlKEdUS19UT0dHTEVfQlVUVE9OKG1fcmVtZW1iZXJDaGVja0J1dHRvbikpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQXV0aGVudGljYXRp
b25EaWFsb2cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtBdXRoZW50aWNhdGlv
bkRpYWxvZy5oCmluZGV4IDIzZjZmNTU3NDFkNzlhNjdjOTk2MmVkMDRkZGU2NTVjMTkzMGM1NWIu
Ljc1ODI0MWNkMzM2ZDgzMzY1NDU5NTUwYTM4ZjBlMTZkNDk2OGI0MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgR3RrV2lkZ2V0KiBtX2RpYWxvZzsKICAgICBT
b3VwU2Vzc2lvbiogbV9zZXNzaW9uOwogICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+IG1fbWVzc2Fn
ZTsKLSAgICBTb3VwQXV0aCogbV9hdXRoOworICAgIEdSZWZQdHI8U291cEF1dGg+IG1fYXV0aDsK
IAogICAgIEd0a1dpZGdldCogbV9sb2dpbkVudHJ5OwogICAgIEd0a1dpZGdldCogbV9wYXNzd29y
ZEVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCmluZGV4IGI5YmYzNGZlYjIyNDYxN2U4YTgwZDY0YTE4ZmU2ZTQwYjI2OGE0YTcuLmM4
MTcwMDRiZGVhMzAxYmEwZjJkMmYxMmIzMTFlNmI3OTVkZWNkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTE3NCw2ICsxNzQs
MTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmlj
YXRlKGNvbnN0IFN0cmluZyYgaG9zdCwgR1Rsc0NlcnRpZmljYXRlKik7CiAgICAgc3RhdGljIHZv
aWQgc2V0SWdub3JlU1NMRXJyb3JzKGJvb2wpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CisgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVX
aXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworI2VuZGlm
CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB5b3Ug
ZG9uJ3QgZ2V0IGFueSBtb3JlIE5TVVJMQ29ubmVjdGlvbiBjYWxsYmFja3MgdW50aWwgeW91IHJl
dHVybiBmcm9tIHRoZSBvbmUgeW91J3JlIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA2M2RmMjgy
NDUxNWRiOGRlMTkzMzEyZGJkNzRiM2JmMjZkNjkyZGMzLi42NjNjZDA0OTQ2NjNiYzZjNDE2ZmUw
YTU4NWYzNmJhNTI4ZDZiY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTkzLDcgKzE5Myw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlEYXRhU2Vu
dDsKICAgICAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgICAg
IFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpOwotICAgICAgICB1aW50NjRfdCBpbml0aWF0aW5n
UGFnZUlEKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICAgICAgUU5ldHdvcmtSZXBs
eUhhbmRsZXIqIG1fam9iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAppbmRleCA0OTJkNWMy
MDIzYzJlNjlkY2QwOTU3MWMwNjllNmUzNGM3MjEzMDUzLi44NDcxM2M4ZDkzMzM1ZGU5MjAxNjAz
NDEwZjk0ODU3MzIxZWZiNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaApAQCAtMjgs
NiArMjgsOSBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9Tb3VwQXV0
aCBTb3VwQXV0aDsKK3R5cGVkZWYgc3RydWN0IF9Tb3VwTWVzc2FnZSBTb3VwTWVzc2FnZTsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1
YmxpYyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgewpAQCAtNDEsOCArNDQsMTcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGlj
YXRpb25DbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldCgp
OyB9CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU291cFNlc3Npb24qLCBTb3VwTWVzc2Fn
ZSosIFNvdXBBdXRoKiwgYm9vbCByZXRyeWluZywgQXV0aGVudGljYXRpb25DbGllbnQqKTsKIAor
ICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0KCk7IH0KKyAgICBTb3VwU2Vzc2lvbiog
c291cFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3NvdXBTZXNzaW9uLmdldCgpOyB9CisgICAg
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VwTWVzc2FnZS5n
ZXQoKTsgfQorICAgIFNvdXBBdXRoKiBzb3VwQXV0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cEF1
dGguZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3NvdXBT
ZXNzaW9uOworICAgIEdSZWZQdHI8U291cE1lc3NhZ2U+IG1fc291cE1lc3NhZ2U7CisgICAgR1Jl
ZlB0cjxTb3VwQXV0aD4gbV9zb3VwQXV0aDsKICAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DbGll
bnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZWU3MWViNmU4MGNkN2FhMzdmYmI3ZGFmZTQ4
OTdkNDUyMGFhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcApAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBJR0FMSUEgUy5MLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisKKyNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgcHJvdGVjdGlvblNw
YWNlU2VydmVyVHlwZUZyb21VUkkoU291cFVSSSogdXJpLCBib29sIGlzRm9yUHJveHkpCit7Cisg
ICAgaWYgKHVyaS0+c2NoZW1lID09IFNPVVBfVVJJX1NDSEVNRV9IVFRQUykKKyAgICAgICAgcmV0
dXJuIGlzRm9yUHJveHkgPyBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFBTIDogUHJvdGVjdGlvblNw
YWNlU2VydmVySFRUUFM7CisgICAgaWYgKHVyaS0+c2NoZW1lID09IFNPVVBfVVJJX1NDSEVNRV9I
VFRQKQorICAgICAgICByZXR1cm4gaXNGb3JQcm94eSA/IFByb3RlY3Rpb25TcGFjZVByb3h5SFRU
UCA6IFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFA7CisgICAgaWYgKHVyaS0+c2NoZW1lID09IFNP
VVBfVVJJX1NDSEVNRV9GVFApCisgICAgICAgIHJldHVybiBpc0ZvclByb3h5ID8gUHJvdGVjdGlv
blNwYWNlUHJveHlGVFAgOiBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJGVFA7CisgICAgcmV0dXJuIGlz
Rm9yUHJveHkgPyBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFAgOiBQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJIVFRQOworfQorCitzdGF0aWMgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZUZyb21T
b3VwQXV0aEFuZE1lc3NhZ2UoU291cEF1dGgqIHNvdXBBdXRoLCBTb3VwTWVzc2FnZSogbWVzc2Fn
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzY2hlbWVOYW1lID0gc291cF9hdXRoX2dldF9zY2hlbWVf
bmFtZShzb3VwQXV0aCk7CisgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUg
c2NoZW1lOworICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKHNjaGVtZU5hbWUsICJiYXNpYyIp
KQorICAgICAgICBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhU
VFBCYXNpYzsKKyAgICBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKHNjaGVtZU5hbWUsICJk
aWdlc3QiKSkKKyAgICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25T
Y2hlbWVIVFRQRGlnZXN0OworICAgIGVsc2UgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoc2NoZW1l
TmFtZSwgIm50bG0iKSkKKyAgICAgICAgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVOVExNOworICAgIGVsc2UgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoc2NoZW1l
TmFtZSwgIm5lZ290aWF0ZSIpKQorICAgICAgICBzY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZU5lZ290aWF0ZTsKKyAgICBlbHNlCisgICAgICAgIHNjaGVtZSA9IFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsKKworICAgIFNvdXBVUkkq
IHNvdXBVUkkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKTsKKyAgICByZXR1cm4gUHJv
dGVjdGlvblNwYWNlKFN0cmluZzo6ZnJvbVVURjgoc291cF91cmlfZ2V0X2hvc3Qoc291cFVSSSkp
LCBzb3VwX3VyaV9nZXRfcG9ydChzb3VwVVJJKSwKKyAgICAgICAgcHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZUZyb21VUkkoc291cFVSSSwgc291cF9hdXRoX2lzX2Zvcl9wcm94eShzb3VwQXV0aCkp
LAorICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNvdXBfYXV0aF9nZXRfcmVhbG0oc291cEF1dGgp
KSwgc2NoZW1lKTsKK30KKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBTb3VwQXV0aCogc291cEF1dGgsIGJvb2wgcmV0cnlpbmcsIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlv
blNwYWNlRnJvbVNvdXBBdXRoQW5kTWVzc2FnZShzb3VwQXV0aCwgc291cE1lc3NhZ2UpLAorICAg
ICAgICBDcmVkZW50aWFsKCksIC8vIHByb3Bvc2VkQ3JlZGVudGlhbHMKKyAgICAgICAgcmV0cnlp
bmcgPyAwIDogMSwgLy8gcHJldmlvdXNGYWlsdXJlQ291bnQKKyAgICAgICAgc291cE1lc3NhZ2Us
IC8vIGZhaWx1cmVSZXNwb25zZQorICAgICAgICBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlv
bkVycm9yKHNvdXBNZXNzYWdlKSkKKyAgICAsIG1fc291cFNlc3Npb24oc291cFNlc3Npb24pCisg
ICAgLCBtX3NvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKQorICAgICwgbV9zb3VwQXV0aChzb3VwQXV0
aCkKKyAgICAsIG1fYXV0aGVudGljYXRpb25DbGllbnQoY2xpZW50KQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCA3NjZkYTBiMzBkMzMyNmVmMmY2MzFhZmZkZjcw
ZDFmNzQ4MjQyOTEzLi4wY2I1ZGI3NWI5ZjE3NmE2YWFiMWQyMDEzNDI5Y2YzYWQzNGRlOTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUVycm9yLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZXNvdXJjZUVy
cm9yIGdlbmVyaWNJT0Vycm9yKEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAgc3RhdGljIFJl
c291cmNlRXJyb3IgdGxzRXJyb3IoU291cFJlcXVlc3QqLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdU
bHNDZXJ0aWZpY2F0ZSopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIHRpbWVvdXRFcnJvcihj
b25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpOworICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGF1dGhl
bnRpY2F0aW9uRXJyb3IoU291cE1lc3NhZ2UqKTsKIAogICAgIHVuc2lnbmVkIHRsc0Vycm9ycygp
IGNvbnN0IHsgcmV0dXJuIG1fdGxzRXJyb3JzOyB9CiAgICAgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGUuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
clNvdXAuY3BwCmluZGV4IGVlNzQ4ZGNlYzRiY2FjMzdjMWJmZDY5ZTQ3NGMxNzJlOTcxNTk1OWQu
LjBmNWUyMWE5YTMyYjk5MDFiMjNjZjYxMWNlZWU1YjgxNGY1NjZhMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JT
b3VwLmNwcApAQCAtMzUsMTEgKzM1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rh
dGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCit7CisgICAgQVNTRVJUKHNv
dXBVUkkpOworICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBGQUxTRSkpOworICAgIHJldHVybiB1cmkuZ2V0KCk7Cit9CisKIHN0YXRpYyBTdHJpbmcgZmFp
bGluZ1VSSShTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBBU1NFUlQocmVxdWVzdCk7Ci0g
ICAgR093blB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRf
dXJpKHJlcXVlc3QpLCBGQUxTRSkpOwotICAgIHJldHVybiB1cmkuZ2V0KCk7CisgICAgcmV0dXJu
IGZhaWxpbmdVUkkoc291cF9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOwogfQogCiBSZXNvdXJj
ZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vy
cm9yKiBlcnJvciwgU291cFJlcXVlc3QqIHJlcXVlc3QpCkBAIC01MCw2ICs1NiwxMyBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwg
R0Vycm9yKiBlcnJvciwgU291cAogICAgICAgICBmYWlsaW5nVVJJKHJlcXVlc3QpLCBTdHJpbmc6
OmZyb21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBS
ZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQor
eworICAgIEFTU0VSVChtZXNzYWdlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLCBtZXNzYWdlLT5zdGF0dXNfY29kZSwKKyAgICAg
ICAgZmFpbGluZ1VSSShzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJv
bVVURjgobWVzc2FnZS0+cmVhc29uX3BocmFzZSkpOworfQorCiBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OmdlbmVyaWNJT0Vycm9yKEdFcnJvciogZXJyb3IsIFNvdXBSZXF1ZXN0KiByZXF1
ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKEdfSU9f
RVJST1IpLCBlcnJvci0+Y29kZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNmRhMWZkMWQz
NjVhOTE0MGNhMTM0MmEzODBjZWMwZDg2MjdhOGEzNS4uNzE0OTcxYWM0NDc5ZWRjNGI5ZmJlN2Ni
OThhMWM1MjFmMGFlZjY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTIzMSwxMSArMjMx
LDYgQEAgc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uRnJvbUNvbnRleHQoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIChjb250ZXh0ICYmIGNvbnRleHQtPmlzVmFsaWQo
KSkgPyBjb250ZXh0LT5zb3VwU2Vzc2lvbigpIDogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNz
aW9uKCk7CiB9CiAKLXVpbnQ2NF90IFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmluaXRpYXRpbmdQ
YWdlSUQoKQotewotICAgIHJldHVybiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXNWYWxpZCgp
KSA/IG1fY29udGV4dC0+aW5pdGlhdGluZ1BhZ2VJRCgpIDogMDsKLX0KLQogUmVzb3VyY2VIYW5k
bGU6On5SZXNvdXJjZUhhbmRsZSgpCiB7CiAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9u
KHRoaXMsIHRydWUpOwpAQCAtNjc0LDEzICs2NjksMTMgQEAgc3RhdGljIHZvaWQgbmV0d29ya0V2
ZW50Q2FsbGJhY2soU291cE1lc3NhZ2UqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0
cmUKIAogc3RhdGljIGNvbnN0IGNoYXIqIGdTb3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJREtleSA9
ICJ3ay1zb3VwLXJlcXVlc3QtaW5pdGlhaW5nLXBhZ2UtaWQiOwogCi1zdGF0aWMgdm9pZCBzZXRT
b3VwUmVxdWVzdEluaXRpYWluZ1BhZ2VJRChTb3VwUmVxdWVzdCogcmVxdWVzdCwgdWludDY0X3Qg
aW5pdGlhdGluZ1BhZ2VJRCkKK3N0YXRpYyB2b2lkIHNldFNvdXBSZXF1ZXN0SW5pdGlhaW5nUGFn
ZUlEKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBpZiAoIWluaXRpYXRpbmdQYWdlSUQpCisgICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0
LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVpbnQ2NF90KiBpbml0aWF0aW5n
UGFnZUlEUHRyID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihmYXN0TWFsbG9jKHNpemVvZih1aW50
NjRfdCkpKTsKLSAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IGluaXRpYXRpbmdQYWdlSUQ7Cisg
ICAgKmluaXRpYXRpbmdQYWdlSURQdHIgPSBjb250ZXh0LT5pbml0aWF0aW5nUGFnZUlEKCk7CiAg
ICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChyZXF1ZXN0KSwgZ19pbnRlcm5fc3Rh
dGljX3N0cmluZyhnU291cFJlcXVlc3RJbml0aWFpbmdQYWdlSURLZXkpLCBpbml0aWF0aW5nUGFn
ZUlEUHRyLCBmYXN0RnJlZSk7CiB9CiAKQEAgLTY5OCw2ICs2OTMsNyBAQCBzdGF0aWMgYm9vbCBj
cmVhdGVTb3VwTWVzc2FnZUZvckhhbmRsZUFuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUgogICAgIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSA9IGQtPm1fc291cE1lc3Nh
Z2UuZ2V0KCk7CiAgICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZSk7CiAK
KyAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiLCBo
YW5kbGUpOwogICAgIGlmICghaGFuZGxlLT5zaG91bGRDb250ZW50U25pZmYoKSkKICAgICAgICAg
c291cF9tZXNzYWdlX2Rpc2FibGVfZmVhdHVyZShzb3VwTWVzc2FnZSwgU09VUF9UWVBFX0NPTlRF
TlRfU05JRkZFUik7CiAKQEAgLTczNiw3ICs3MzIsNiBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3Vw
TWVzc2FnZUZvckhhbmRsZUFuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UgogICAgIGQtPm1fcmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5nKFJlc291cmNlTG9hZFRp
bWluZzo6Y3JlYXRlKCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5n
ZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKG5ldHdvcmtFdmVudENhbGxiYWNrKSwg
aGFuZGxlKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksICJ3
cm90ZS1ib2R5IiwgR19DQUxMQkFDSyh3cm90ZUJvZHlDYWxsYmFjayksIGhhbmRsZSk7Ci0gICAg
Z19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSksICJoYW5k
bGUiLCBoYW5kbGUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc3Niw2ICs3NzEs
OSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCkKICAgICBpZiAoY29udGV4dCAmJiAhY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICAvLyBVc2VkIHRvIHNldCB0aGUga2VlcCB0cmFjayBvZiBjdXN0b20g
U291cFNlc3Npb25zIGZvciBwb3J0cyB0aGF0IHN1cHBvcnQgaXQgKEVGTCkuCisgICAgZC0+bV9j
b250ZXh0ID0gY29udGV4dDsKKwogICAgIGlmICghKGQtPm1fdXNlci5pc0VtcHR5KCkgfHwgZC0+
bV9wYXNzLmlzRW1wdHkoKSkpIHsKICAgICAgICAgLy8gSWYgY3JlZGVudGlhbHMgd2VyZSBzcGVj
aWZpZWQgZm9yIHRoaXMgcmVxdWVzdCwgYWRkIHRoZW0gdG8gdGhlIHVybCwKICAgICAgICAgLy8g
c28gdGhhdCB0aGV5IHdpbGwgYmUgcGFzc2VkIHRvIE5ldHdvcmtSZXF1ZXN0LgpAQCAtNzg1LDkg
Kzc4Myw2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0KQogICAgICAgICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRp
YWxzKTsKICAgICB9CiAKLSAgICAvLyBVc2VkIHRvIHNldCB0aGUgYXV0aGVudGljYXRpb24gZGlh
bG9nIHRvcGxldmVsOyBtYXkgYmUgTlVMTAotICAgIGQtPm1fY29udGV4dCA9IGNvbnRleHQ7Ci0K
ICAgICAvLyBPbmx5IGFsbG93IHRoZSBQT1NUIGFuZCBHRVQgbWV0aG9kcyBmb3Igbm9uLUhUVFAg
cmVxdWVzdHMuCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0gZmlyc3RSZXF1
ZXN0KCk7CiAgICAgYm9vbCBpc0hUVFBGYW1pbHlSZXF1ZXN0ID0gcmVxdWVzdC51cmwoKS5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCk7CkBAIC04MDEsNyArNzk2LDcgQEAgYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHNldFNvdXBSZXF1ZXN0SW5pdGlhaW5nUGFnZUlEKGQtPm1fc291
cFJlcXVlc3QuZ2V0KCksIGQtPmluaXRpYXRpbmdQYWdlSUQoKSk7CisgICAgc2V0U291cFJlcXVl
c3RJbml0aWFpbmdQYWdlSUQoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSwgY29udGV4dCk7CiAKICAg
ICAvLyBTZW5kIHRoZSByZXF1ZXN0IG9ubHkgaWYgaXQncyBub3QgYmVlbiBleHBsaWNpdGx5IGRl
ZmVycmVkLgogICAgIGlmICghZC0+bV9kZWZlcnNMb2FkaW5nKQpAQCAtODU1LDYgKzg1MCwxOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xF
cnJvcnMpCiAgICAgZ0lnbm9yZVNTTEVycm9ycyA9IGlnbm9yZVNTTEVycm9yczsKIH0KIAorI2lm
IFBMQVRGT1JNKEdUSykKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQor
eworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIHdhaXRp
bmdUb1NlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAgLy8gV2UgbmVl
ZCB0byBjaGVjayBmb3IgZC0+bV9zb3VwUmVxdWVzdCBiZWNhdXNlIHRoZSByZXF1ZXN0IG1heSBo
YXZlIHJhaXNlZCBhIGZhaWx1cmUKQEAgLTEwMDgsNiArMTAxNSwxOSBAQCBzdGF0aWMgZ2Jvb2xl
YW4gcmVxdWVzdFRpbWVvdXRDYWxsYmFjayhncG9pbnRlciBkYXRhKQogICAgIHJldHVybiBGQUxT
RTsKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3N0YXRpYyB2b2lkIGF1dGhlbmljYXRlQ2FsbGJh
Y2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1
dGgqIHNvdXBBdXRoLCBnYm9vbGVhbiByZXRyeWluZykKK3sKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0
X2RhdGEoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFuZGxlIikpOworICAgIGlmICghaGFuZGxl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHBhc3MgYSBjbGll
bnQgaGVyZSwgYmVjYXVzZSBHVEsrIGRvZXMgbm90IHlldCB1c2UgdGhlIEF1dGhlbnRpY2F0aW9u
Q2xpZW50IHRvCisgICAgLy8gcmVzcG9uZCB0byB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
LS0gaW5zdGVhZCBkZWFsaW5nIHdpdGggdGhlIFNvdXAgb2JqZWN0cyBkaXJlY3RseS4KKyAgICBo
YW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5aW5nLCAwKSk7Cit9
CisjZW5kaWYKKwogU291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigp
CiB7CiAgICAgc3RhdGljIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gMDsKQEAgLTEwMjgsOCArMTA0
OCwxMiBAQCBTb3VwU2Vzc2lvbiogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKICAg
ICAgICAgICAgICAgICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBFLCBTT1VQ
X1RZUEVfUFJPWFlfUkVTT0xWRVJfREVGQVVMVCwKICAgICAgICAgICAgICAgICAgICAgIFNPVVBf
U0VTU0lPTl9VU0VfVEhSRUFEX0NPTlRFWFQsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lv
biwgImF1dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0soYXV0aGVuaWNhdGVDYWxsYmFjayksIDApOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICAgICAgZ19zaWduYWxfY29ubmVj
dChHX09CSkVDVChzZXNzaW9uKSwgInJlcXVlc3Qtc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVxdWVz
dFN0YXJ0ZWRDYWxsYmFjayksIDApOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24s
ICJyZXF1ZXN0LXN0YXJ0ZWQiLCBHX0NBTExCQUNLKHJlcXVlc3RTdGFydGVkQ2FsbGJhY2spLCAw
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDA4NWY0MWM2YTNlOTBj
YTMyYTZlZWNjYWZhYmRiY2JkYjAzMjljNWQuLjQyZmI0N2MxNWMyNzFhYzc5OWEzNmQzYmE4YmYx
MWZlOGQ5NjRlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJET01PYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXJHdGsuaCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaCIKICNpbmNsdWRlICJFcnJvcnNHdGsuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCkBAIC0zOSw3ICs0MCw5IEBACiAjaW5jbHVkZSAiRnJh
bWVOZXR3b3JraW5nQ29udGV4dEd0ay5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmgiCiAj
aW5jbHVkZSAiR3RrUGx1Z2luV2lkZ2V0LmgiCisjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCkBAIC0xOTYsOSArMTk5LDE1IEBAIEZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKEdUS19XSURHRVQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobV9mcmFtZSkp
KTsKKyAgICBHdGtXaW5kb3cqIHRvcGxldmVsV2luZG93ID0gd2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHRvcGxldmVsKSA/IEdUS19XSU5ET1codG9wbGV2ZWwpIDogMDsKKyAgICBHdGtB
dXRoZW50aWNhdGlvbkRpYWxvZyogZGlhbG9nID0gbmV3IEd0a0F1dGhlbnRpY2F0aW9uRGlhbG9n
KHRvcGxldmVsV2luZG93LCBjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBN
ZXNzYWdlKCksIGNoYWxsZW5nZS5zb3VwQXV0aCgpKTsKKyAgICBkaWFsb2ctPnNob3coKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50
aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCBkMjcxNWE2YTFkMjM0ZTgwMGZhZjY5MjBj
ZTVmYjkyMTI3NjY0M2E1Li44ODYyOTIxNjk5YTM4NWQwNTMxYmUyYzI1NWM2NWM2ZWM4NGI5ZTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCkBAIC0yNSw3
ICsyNSw2IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVt
LmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dEd0ay5oIgotI2luY2x1ZGUgIkd0
a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNDUsNyArNDQsNiBAQAogI2luY2x1
ZGUgIndlYmtpdGZhdmljb25kYXRhYmFzZS5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0aWNvbmRhdGFiYXNlLmgiCi0jaW5jbHVkZSAid2Via2l0
c291cGF1dGhkaWFsb2cuaCIKICNpbmNsdWRlICJ3ZWJraXRzcGVsbGNoZWNrZXIuaCIKICNpbmNs
dWRlICJ3ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZGF0
YWJhc2UuaCIKQEAgLTIwNywzMiArMjA1LDYgQEAgV2ViS2l0V2ViUGx1Z2luRGF0YWJhc2UqIHdl
YmtpdF9nZXRfd2ViX3BsdWdpbl9kYXRhYmFzZSgpCiAgICAgcmV0dXJuIGRhdGFiYXNlOwogfQog
Ci0KLXN0YXRpYyBHdGtXaWRnZXQqIGN1cnJlbnRUb3BsZXZlbENhbGxiYWNrKFdlYktpdFNvdXBB
dXRoRGlhbG9nKiBmZWF0dXJlLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgdXNlckRh
dGEpCi17Ci0gICAgZ3BvaW50ZXIgbWVzc2FnZURhdGEgPSBnX29iamVjdF9nZXRfZGF0YShHX09C
SkVDVChtZXNzYWdlKSwgInJlc291cmNlSGFuZGxlIik7Ci0gICAgaWYgKCFtZXNzYWdlRGF0YSkK
LSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3Rh
dGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihtZXNzYWdlRGF0YSk7Ci0gICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKLSAgICBpZiAoIWQpCi0gICAgICAgIHJldHVybiBOVUxM
OwotCi0gICAgV2ViS2l0OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0R3RrKiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0R3RrKj4oZC0+bV9jb250ZXh0
LmdldCgpKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAg
aWYgKCFjb250ZXh0LT5jb3JlRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBH
dGtXaWRnZXQqIHRvcGxldmVsID0gIGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
Y29udGV4dC0+Y29yZUZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVu
dCgpKSk7Ci0gICAgcmV0dXJuIHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZl
bCkgPyB0b3BsZXZlbCA6IDA7Ci19Ci0KIC8qKgogICogd2Via2l0X2dldF9pY29uX2RhdGFiYXNl
OgogICoKQEAgLTU5MCwxMyArNTYyLDYgQEAgdm9pZCB3ZWJraXRJbml0KCkKICAgICBHT3duUHRy
PGdjaGFyPiBpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid2Via2l0IiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsKICAgICB3ZWJraXRfaWNv
bl9kYXRhYmFzZV9zZXRfcGF0aCh3ZWJraXRfZ2V0X2ljb25fZGF0YWJhc2UoKSwgaWNvbkRhdGFi
YXNlUGF0aC5nZXQoKSk7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IHdlYmtpdF9nZXRf
ZGVmYXVsdF9zZXNzaW9uKCk7Ci0KLSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhEaWFsb2cg
PSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1cmUqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfU09VUF9BVVRIX0RJQUxPRywgTlVMTCkpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXV0aERp
YWxvZywgImN1cnJlbnQtdG9wbGV2ZWwiLCBHX0NBTExCQUNLKGN1cnJlbnRUb3BsZXZlbENhbGxi
YWNrKSwgTlVMTCk7Ci0gICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhE
aWFsb2cpOwotICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEaWFsb2cpOwotCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnNldElnbm9yZVNTTEVycm9ycyh0cnVlKTsKIAogI2lmIFVTRShDTFVU
VEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjU0MzIwMzBmZTQ2NjQzZWFm
Mjg2MzBhMmM2MzI1OWU2ODM5NGQ0Mi4uODU5NTFkNDE5NzY3OTJmNmYyZjBiOGVhNGNlYmUyOGUw
NTE0NmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NTYsOCArOTU2LDYg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuaCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5j
cHAgXAotCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFsb2cuaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5j
cHAgXApAQCAtMTA5Nyw2ICsxMDk1LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRp
dG9yQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJQb3B1cE1lbnVHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4NzYyMzRmODg5NjFkZDc5Njc3ZjE0NTU0YjUw
NTA1ZDUzNDZlNGJmLi5mZDU4YTdlZDAzMTEwZjc2MmJkZjJjMjExOGQ4YjIzZmFmM2JlMzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMjAwLDYgKzIwMCw3IEBAIGJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQKICAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVS
ZXNvdXJjZUxvYWRDbGllbnQoKS5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh3ZWJQYWdlLCBt
X2ZyYW1lLCBpZGVudGlmaWVyKTsKIH0KIAorI2lmICFQTEFURk9STShHVEspCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgLy8gRklYTUU6IEF1dGhlbnRpY2F0aW9uIGlzIGEg
cGVyLXJlc291cmNlIGNvbmNlcHQsIGJ1dCB3ZSBkb24ndCBkbyBwZXItcmVzb3VyY2UgaGFuZGxp
bmcgaW4gdGhlIFVJUHJvY2VzcyBhdCB0aGUgQVBJIGxldmVsIHF1aXRlIHlldC4KQEAgLTIxMSw2
ICsyMTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYQogCiAgICAgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9mcmFt
ZSwgY2hhbGxlbmdlKTsKIH0KKyNlbmRpZgogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSAgICAKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZTE0NzM2NWU0Y2VmZDlkNmRiMThmMDUxMmIwNmYxM2MwODJhMGU4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBJR0FMSUEgUy5MLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtB
dXRoZW50aWNhdGlvbkRpYWxvZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIFdlYkNvcmU6Okd0a0F1dGhlbnRpY2F0
aW9uRGlhbG9nOwordXNpbmcgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBHdGtBdXRoZW50aWNh
dGlvbkRpYWxvZyogZGlhbG9nID0gbmV3IEd0a0F1dGhlbnRpY2F0aW9uRGlhbG9nKDAsIGNoYWxs
ZW5nZS5zb3VwU2Vzc2lvbigpLCBjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSwgY2hhbGxlbmdlLnNv
dXBBdXRoKCkpOworICAgIGRpYWxvZy0+c2hvdygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFs
b2cuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYzNlYWI5YzYwZjdjOGZlYWVkMjJjMDFi
NzUyY2VmMzM0MDI0YTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViQXV0aERpYWxvZy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJBdXRoRGlhbG9nLmgi
Ci0KLSNpbmNsdWRlIDxXZWJDb3JlL0d0a0F1dGhlbnRpY2F0aW9uRGlhbG9nLmg+Ci0KLXR5cGVk
ZWYgc3RydWN0IHsKLSAgICBHT2JqZWN0IHBhcmVudDsKLX0gV2ViQXV0aERpYWxvZzsKLQotdHlw
ZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnQ7Ci19IFdlYkF1dGhEaWFsb2dD
bGFzczsKLQotc3RhdGljIHZvaWQgd2ViQXV0aERpYWxvZ1Nlc3Npb25GZWF0dXJlSW5pdChTb3Vw
U2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2UqLCBncG9pbnRlcik7Ci0KLUdfREVGSU5FX1RZUEVfV0lU
SF9DT0RFKFdlYkF1dGhEaWFsb2csIHdlYl9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VT
U0lPTl9GRUFUVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYkF1dGhEaWFsb2dTZXNzaW9uRmVhdHVyZUluaXQpKQotCi1zdGF0aWMgdm9pZCB3ZWJf
YXV0aF9kaWFsb2dfY2xhc3NfaW5pdChXZWJBdXRoRGlhbG9nQ2xhc3MqKQotewotfQotCi1zdGF0
aWMgdm9pZCB3ZWJfYXV0aF9kaWFsb2dfaW5pdChXZWJBdXRoRGlhbG9nKikKLXsKLX0KLQotc3Rh
dGljIHZvaWQgc2Vzc2lvbkF1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIFNvdXBBdXRoKiBhdXRoLCBnYm9vbGVhbiwgZ3BvaW50ZXIpCi17Ci0g
ICAgV2ViQ29yZTo6R3RrQXV0aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsb2cgPSBuZXcgV2Vi
Q29yZTo6R3RrQXV0aGVudGljYXRpb25EaWFsb2coMCwgc2Vzc2lvbiwgbWVzc2FnZSwgYXV0aCk7
Ci0gICAgYXV0aERpYWxvZy0+c2hvdygpOwotfQotCi1zdGF0aWMgdm9pZCBhdHRhY2goU291cFNl
c3Npb25GZWF0dXJlKiwgU291cFNlc3Npb24qIHNlc3Npb24pCi17Ci0gICAgZ19zaWduYWxfY29u
bmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhzZXNzaW9uQXV0aGVudGlj
YXRlKSwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqLCBT
b3VwU2Vzc2lvbiogc2Vzc2lvbikKLXsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoc2Vzc2lvbiwgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oc2Vzc2lvbkF1dGhl
bnRpY2F0ZSksIDApOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJBdXRoRGlhbG9nU2Vzc2lvbkZlYXR1
cmVJbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSogZmVhdHVyZSwgZ3BvaW50ZXIpCi17
Ci0gICAgZmVhdHVyZS0+YXR0YWNoID0gYXR0YWNoOwotICAgIGZlYXR1cmUtPmRldGFjaCA9IGRl
dGFjaDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkF1
dGhEaWFsb2cuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkF1dGhEaWFsb2cu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVhZmVhMTBjODg1ODE0YjkwNDdlYzBj
NTRlZDg2MTc4ZWRjYjZkNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJBdXRoRGlhbG9nLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgV2ViQXV0aERpYWxvZ19oCi0jZGVmaW5lIFdlYkF1dGhEaWFsb2df
aAotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLQotI2RlZmluZSBXRUJfVFlQRV9BVVRIX0RJ
QUxPRyAod2ViX2F1dGhfZGlhbG9nX2dldF90eXBlKCkpCi0KLUdUeXBlIHdlYl9hdXRoX2RpYWxv
Z19nZXRfdHlwZSgpOwotCi0jZW5kaWYgLy8gV2ViQXV0aERpYWxvZ19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKaW5kZXggN2Rh
Y2MyMjZlODA5MjljOGJlMzg3NjVlOGI1OGQ1NGI5NTAwMDRlZS4uZjE3YWM2Y2VlZmQ0MWQ4YjZh
YzU3YTRiNzAwYjRkYmMyOWYwMjhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcApAQCAtMjksOSArMjksNyBAQAogCiAjZGVm
aW5lIExJQlNPVVBfVVNFX1VOU1RBQkxFX1JFUVVFU1RfQVBJCiAKLSNpbmNsdWRlICJXZWJBdXRo
RGlhbG9nLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HdGtBdXRo
ZW50aWNhdGlvbkRpYWxvZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nl
c3MuaD4KQEAgLTY2LDEyICs2NCwxMCBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3Rr
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6Om1h
aW4oKSk7CiAKLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90
eXBlKHNlc3Npb24sIFdFQl9UWVBFX0FVVEhfRElBTE9HKTsKLQogICAgIC8vIERlc3BpdGUgdXNp
bmcgc3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgd2UncmUKICAgICAvLyBhY2Nl
cHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCiAg
ICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNl
cnRpZmljYXRlcy4KKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOwogICAgIGdfb2JqZWN0X3NldChzZXNzaW9uLCBTT1VQ
X1NFU1NJT05fU1NMX1VTRV9TWVNURU1fQ0FfRklMRSwgVFJVRSwKICAgICAgICAgICAgICAgICAg
U09VUF9TRVNTSU9OX1NTTF9TVFJJQ1QsIEZBTFNFLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlMmUwMWNjZDQ1ZWYxMWFiZGIw
YzhjMTNhM2ZkMDBhMTYzYjRiNzEuLjBiNWZjOGFjM2M1NzAwNjQzYjRjZDQ4OTI5MTEzOTk1YWYy
YmQ3YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bU291cF0gSW1wbGVtZW50IHRoZSBkZWZhdWx0
IGF1dGhlbnRpY2F0aW9uIGRpYWxvZyB2aWEgV2ViQ29yZVN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzUxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gdHVy
biBvZmYgdGhlIHNvdXAgYXV0aGVudGljYXRpb24gZGlhbG9nIHNvdXAgZmVhdHVyZSwKKyAgICAg
ICAgYmVjYXVzZSBpdCdzIG5vdCBpbnN0YWxsZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3Rl
bnRTdGF0ZVZhbHVlc0ZvclRlc3RpbmcpOiBEb24ndCB0dXJuIG9mZiB0aGUgZmVhdHVyZSBhbnkg
bG9uZ2VyLgorCiAyMDEyLTEwLTA5ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0dUS10gU2hhZG93IGJ1aWxkcyBhcmUgbm90IHdvcmtpbmcgYW55bW9yZS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGY1NzRj
MTFlOGU4YTQ2Y2E3NDZhM2E2NGJiZWQ2OTA4YjA0OGQ2NmYuLmE3YjU3NDVmOTc2MGRiMzdmYmZm
YmQ1ZDlkZGMwZDMzMzNiODExNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcApAQCAtNjQ1LDEwICs2NDUsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFN0YXRlVmFsdWVzRm9yVGVzdGluZygpCiB7CiAgICAgcmVzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbHVlcygpOwogCi0gICAgLyogRGlzYWJsZSB0aGUgZGVmYXVsdCBhdXRo
IGRpYWxvZyBmb3IgdGVzdGluZyAqLwotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gd2Via2l0
X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKLSAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmVf
YnlfdHlwZShzZXNzaW9uLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HKTsKLQogI2lmIFBM
QVRGT1JNKFgxMSkKICAgICB3ZWJraXRfd2ViX3NldHRpbmdzX2FkZF9leHRyYV9wbHVnaW5fZGly
ZWN0b3J5KHdlYlZpZXcsIFRFU1RfUExVR0lOX0RJUik7CiAjZW5kaWYK
</data>
<flag name="review"
          id="183385"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>