<?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>173551</bug_id>
          
          <creation_ts>2017-06-19 09:46:18 -0700</creation_ts>
          <short_desc>[Cocoa] implement URLSession:task:needNewBodyStream: delegate method</short_desc>
          <delta_ts>2017-06-19 16:51:06 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320720</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-19 09:46:18 -0700</bug_when>
    <thetext>[Cocoa] implement URLSession:task:needNewBodyStream: delegate method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320725</commentid>
    <comment_count>1</comment_count>
      <attachid>313308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-19 09:57:58 -0700</bug_when>
    <thetext>Created attachment 313308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320726</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-19 09:58:55 -0700</bug_when>
    <thetext>rdar://problem/32250512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320736</commentid>
    <comment_count>3</comment_count>
      <attachid>313308</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-19 10:40:28 -0700</bug_when>
    <thetext>Comment on attachment 313308
Patch

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

Thanks, Darin!  I&apos;m going to look into getting this into landing condition.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:154
&gt; +    // FIXME: Is this guaranteed to be correct even when redirects are involved?
&gt; +    auto* body = networkDataTask-&gt;firstRequest().httpBody();

NSURLSessionTask has currentRequest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320824</commentid>
    <comment_count>4</comment_count>
      <attachid>313308</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-19 14:01:49 -0700</bug_when>
    <thetext>Comment on attachment 313308
Patch

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

&gt;&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:154
&gt;&gt; +    auto* body = networkDataTask-&gt;firstRequest().httpBody();
&gt; 
&gt; NSURLSessionTask has currentRequest

Ah, we do want the http body of the first request, even if redirected.  This is an HTTP POST request.

&gt; Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm:160
&gt; +    // FIXME: Is there a problem if some files are different in size since the original sizing?

I think if someone modifies a file as we are uploading it they&apos;re going to have a bad time anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320880</commentid>
    <comment_count>5</comment_count>
      <attachid>313340</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-19 16:16:17 -0700</bug_when>
    <thetext>Created attachment 313340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320888</commentid>
    <comment_count>6</comment_count>
      <attachid>313340</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-19 16:51:04 -0700</bug_when>
    <thetext>Comment on attachment 313340
Patch

Clearing flags on attachment: 313340

Committed r218517: &lt;http://trac.webkit.org/changeset/218517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320889</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-19 16:51:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313308</attachid>
            <date>2017-06-19 09:57:58 -0700</date>
            <delta_ts>2017-06-19 16:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173551-20170619095757.patch</filename>
            <type>text/plain</type>
            <size>42574</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2YjQzYzk5MDBiYmZj
NzkzZGEzY2VkYWE2ZGYwYzYxMjM5MDNiNC4uYTBlNzQyM2NiMTNkOGVjMmQ4NDFmYzJlMmNlODE3
YmUxYzkzNjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA2LTE5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGltcGxlbWVudCBV
UkxTZXNzaW9uOnRhc2s6bmVlZE5ld0JvZHlTdHJlYW06IGRlbGVnYXRlIG1ldGhvZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTUxCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzMyMjUwNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJl
bW92ZWQgTlNVUkxSZXF1ZXN0U1BJLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJv
ZHlDRlJlYWRTdHJlYW0pOiBGYWN0b3JlZCB0aGlzIG91dCBmcm9tIHNldEhUVFBCb2R5LgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SFRUUEJvZHkpOiBGYWN0b3JlZCBvdXQgdGhlIGZ1bmN0aW9uIGFi
b3ZlLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5o
OiBBZGRlZCBjcmVhdGVIVFRQQm9keUNGUmVhZFN0cmVhbS4KKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06IFVzZSBDRk5ldHdvcmtTUEku
aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaDogQWRkZWQgY3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKTogQWRkZWQvCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbTogVXNlIENGTmV0d29ya1NQSS5oLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOiBEaXR0by4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oOiBNb3Zl
ZCBTUEkgZGVjbGFyYXRpb25zIGZyb20KKyAgICAgICAgaGVyZSBpbnRvIENGTmV0d29ya1NQSS5o
LgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oOiBVc2UgI3ByYWdt
YSBvbmNlLCBjb25zb2xpZGF0ZWQgU1BJIHRoYXQgd2FzCisgICAgICAgIGRlZmluZWQgaW4gc2Nh
dHRlcmVkIGxvY2F0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTFJl
cXVlc3RTUEkuaDogUmVtb3ZlZC4gU3VwZXJjZWRlZCBieSBDRk5ldHdvcmtTUEkuaC4KKwogMjAx
Ny0wNi0xOSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE1pc3NpbmcgPGZ1bmN0aW9uYWw+IGluY2x1ZGVzIG1ha2UgYnVpbGRzIGZhaWwgd2l0
aCBHQ0MgNy54CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmVjMTNjNWYzOGU3YmRjYjVmM2FjNDQyYWY0ZTU1N2Y4
MzQ1YjQ5ZS4uOGJiMDczMmU4MWRkMGFjMTM1MGVhNTM3OWMzNTBiZDczMWY5ZmM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGltcGxlbWVudCBVUkxTZXNzaW9uOnRhc2s6bmVl
ZE5ld0JvZHlTdHJlYW06IGRlbGVnYXRlIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTUxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMy
MjUwNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAo
LVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgZXhpc3RpbmdUYXNrOl0pOiBBZGRlZCBoZWxwZXIg
bWV0aG9kLgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0
YXNrOmRpZFNlbmRCb2R5RGF0YTp0b3RhbEJ5dGVzU2VudDp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1Nl
bmQ6XSk6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIGV4aXN0aW5nVGFzazogbWV0aG9kLgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOm5lZWROZXdC
b2R5U3RyZWFtOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRl
IFVSTFNlc3Npb246dGFzazp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBleGlzdGluZ1Rhc2s6
IG1ldGhvZC4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246
dGFzazpfc2NoZW1lVXBncmFkZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVD
aGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS05ldHdv
cmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246
dGFzazpkaWRGaW5pc2hDb2xsZWN0aW5nTWV0cmljczpdKTogRGl0dG8uCisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNw
b25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZG93bmxv
YWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6Z2xvYmFsQWxsb3dzQ2VsbHVsYXJBY2Nlc3MpOiBEZWxldGVkLiBKdXN0IHVz
ZSBhIG5vcm1hbCBnbG9iYWwuCisgICAgICAgIChXZWJLaXQ6Omdsb2JhbExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcik6IERlbGV0ZWQuIEp1c3QgdXNlIGEgbm9ybWFsIGdsb2JhbC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKTogVXBkYXRlZCBmb3Igbm9ybWFsIGdsb2JhbC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2Nv
YSk6IERpdHRvLgorCiAyMDE3LTA2LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIEdUSysgQVBJIGZpbGVzIHRoYXQgY291
bGQgYmUgc2hhcmVkIHRvIGdsaWIgZGlycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdlYzM4NjBiMGE0NTBmMTBlMmM1YWMwMjFm
MzExOWUxZGJjZjA4ZGEuLjVjNWY1ZDY5OWJlMGU0OTdhYTZmNjQxMTViOWU0Y2I5ZTViOGVjMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE1NDQsNyArMTU0NCw2IEBACiAJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBB
TkdMRUluc3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUE3OTVDMTE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRB
cnJheXMuY3BwICovOyB9OwogCQkzMUFCNTAwMDEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3ND
b250ZXh0M0RJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQUI0RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHQzRElPUy5oICov
OyB9OwogCQkzMUIzMTNEQjFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQTFC
Njk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzFCMzEzREQxQjY5ODdEQjAwRjJBQUJD
IC8qIE5TVVJMUmVxdWVzdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFCMzEzREMxQjY5ODdEQjAwRjJBQUJDIC8qIE5TVVJMUmVxdWVzdFNQSS5o
ICovOyB9OwogCQkzMUIzMTNERjFCNjk4OEM1MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNERTFC
Njk4OEM1MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJLmggKi87IH07CiAJCTMxQkM3NDJEMUFB
RkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFCQzc0MkIxQUFGRjQ1
QzAwNkI0MzQwIC8qIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5jcHAgKi87IH07CiAJ
CTMxQkM3NDJFMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQkM3
NDJDMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaCAq
LzsgfTsKQEAgLTkyMjEsNyArOTIyMCw2IEBACiAJCTMxQTc5NUM1MTg4OEJBRDEwMDM4MkY5MCAv
KiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQU5HTEVJbnN0YW5jZWRBcnJheXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzFBQjRGRkYxMjI4NzhBMjAwMUE3REIwIC8qIEdyYXBoaWNzQ29udGV4dDNESU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNESU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQjMxM0RBMUI2OTg3MTYwMEYyQUFCQyAvKiBO
U1VSTENvbm5lY3Rpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNV
UkxDb25uZWN0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxQjMxM0RD
MUI2OTg3REIwMEYyQUFCQyAvKiBOU1VSTFJlcXVlc3RTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTlNVUkxSZXF1ZXN0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxQjMxM0RFMUI2OTg4QzUwMEYyQUFCQyAvKiBOU0J1dHRvbkNlbGxTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNCdXR0b25DZWxsU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQkM3NDJCMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmlt
YXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzFCQzc0MkMxQUFGRjQ1QzAwNkI0MzQwIC8qIENTU0FuaW1hdGlv
blRyaWdnZXJTY3JvbGxWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4ODgyLDcgKzE4ODgwLDYgQEAKIAkJCQkzMUIzMTNEQTFCNjk4NzE2MDBGMkFBQkMg
LyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCiAJCQkJQ0UxMjUyNTQxQTFCRUMwRTAwODY0NDgw
IC8qIE5TVVJMRG93bmxvYWRTUEkuaCAqLywKIAkJCQk2NTNFRjgzODE5QTA0M0FFMDA1MjIwMkMg
LyogTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmggKi8sCi0JCQkJMzFCMzEzREMxQjY5ODdEQjAw
RjJBQUJDIC8qIE5TVVJMUmVxdWVzdFNQSS5oICovLAogCQkJCTFBRUQzQkQ5MUQzRDVGMjYwMDk5
RkQ3OCAvKiBQYXNzS2l0U1BJLmggKi8sCiAJCQkJQ0VFMjdBQ0ExQkJCNTNBMjAwNzI0MDBBIC8q
IHB0aHJlYWRTUEkuaCAqLywKIAkJCQlDRTEyNTIzQzFBMTY3NkNEMDA4NjQ0ODAgLyogUXVhcnR6
Q29yZVNQSS5oICovLApAQCAtMjg5MTUsNyArMjg5MTIsNiBAQAogCQkJCTMxQjMxM0RCMUI2OTg3
MTYwMEYyQUFCQyAvKiBOU1VSTENvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
MTI1MjU1MUExQkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NThGNTQwMzE5QTFDOTI0MDA4OEZDOTIgLyogTlNVUkxGaWxlVHlwZU1hcHBpbmdz
U1BJLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMUIzMTNERDFCNjk4N0RCMDBGMkFBQkMgLyogTlNV
UkxSZXF1ZXN0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDc3QUMyRDFCRjJCOUEwMDA3MjQ3
MEEgLyogTlNWaWV3U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBDRjgxNzFCQ0Y1REUxMDA3
QTQ5MzcgLyogTlNXaW5kb3dTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREM4MTI1MUYx
MkQwMDNFRjI2OSAvKiBOdW1iZXJJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKaW5kZXggYThmNGMxY2JkZmQwMmM2MWQzNTM0Y2NlMWM5NGVmZTQ3MDRiOTExMC4u
MWZkMTBkMTMxMmVmZjY3YmYyMDVkNzJmOGI1ZTYwYWVkZWJhNGY4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjEsMzUgKzM2MSwxOSBAQCBzdGF0aWMgdm9pZCBm
b3JtRXZlbnRDYWxsYmFjayhDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUV2ZW50VHlw
ZSB0eXBlLCB2bwogICAgIH0KIH0KIAotdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIEZvcm1EYXRhKiBmb3JtRGF0YSkKK1JldGFpblB0cjxDRlJlYWRTdHJl
YW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsK
LSAgICBpZiAoIWZvcm1EYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIHNpemVf
dCBjb3VudCA9IGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKLQotICAgIC8vIEhhbmRsZSB0
aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3aXRoIG5v
IGZpbGVzLgotICAgIGlmIChjb3VudCA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFtKCkp
IHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0gZm9ybURhdGEtPmVs
ZW1lbnRzKClbMF07Ci0gICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1l
bnQ6OlR5cGU6OkRhdGEpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4ICo+
KGVsZW1lbnQubV9kYXRhLmRhdGEoKSksIGVsZW1lbnQubV9kYXRhLnNpemUoKSkpOwotICAgICAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3QsIGRhdGEuZ2V0KCkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0KLSAgICBSZWY8Rm9y
bURhdGE+IG5ld0Zvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwot
ICAgIGNvdW50ID0gbmV3Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOworICAgIGF1dG8gcmVz
b2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwogCi0gICAg
Ly8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gTlNVUkxDb25uZWN0aW9uIGRvZXNu
J3QgdXNlIGNodW5rZWQgbW9kZS4KKyAgICAvLyBQcmVjb21wdXRlIHRoZSBjb250ZW50IGxlbmd0
aCBzbyBDRk5ldHdvcmsgZG9lc24ndCB1c2UgY2h1bmtlZCBtb2RlLgogICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBsZW5ndGggPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewotICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBuZXdGb3JtRGF0
YS0+ZWxlbWVudHMoKVtpXTsKKworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHJlc29sdmVkRm9y
bURhdGEtPmVsZW1lbnRzKCkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RGF0YSkKICAgICAgICAgICAgIGxlbmd0aCArPSBlbGVtZW50Lm1f
ZGF0YS5zaXplKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gSWYgd2UncmUgc2Vu
ZGluZyB0aGUgZmlsZSByYW5nZSwgdXNlIHRoZSBleGlzdGluZyByYW5nZSBsZW5ndGggZm9yIG5v
dy4gV2Ugd2lsbCBkZXRlY3QgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCByaWdodCBiZWZv
cmUgd2UgcmVhZCB0aGUgZmlsZSBhbmQgYWJvcnQgdGhlIG9wZXJhdGlvbiBpZiBuZWNlc3Nhcnku
CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBzZW5kaW5nIHRoZSBmaWxlIHJhbmdlLCB1c2UgdGhl
IGV4aXN0aW5nIHJhbmdlIGxlbmd0aCBmb3Igbm93LgorICAgICAgICAgICAgLy8gV2Ugd2lsbCBk
ZXRlY3QgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCByaWdodCBiZWZvcmUgd2UgcmVhZCB0
aGUgZmlsZSBhbmQgYWJvcnQgdGhlIG9wZXJhdGlvbiBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAg
ICBpZiAoZWxlbWVudC5tX2ZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkg
ewogICAgICAgICAgICAgICAgIGxlbmd0aCArPSBlbGVtZW50Lm1fZmlsZUxlbmd0aDsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTQwMCwxNiArMzg0LDI5IEBAIHZvaWQgc2V0SFRUUEJv
ZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURhdGEpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBDcmVhdGUgYW5kIHNldCB0aGUgc3RyZWFtLgorICAg
IEZvcm1DcmVhdGlvbkNvbnRleHQgZm9ybUNvbnRleHQgPSB7IFdURk1vdmUocmVzb2x2ZWRGb3Jt
RGF0YSksIGxlbmd0aCB9OworICAgIENGUmVhZFN0cmVhbUNhbGxCYWNrc1YxIGNhbGxCYWNrcyA9
IHsgMSwgZm9ybUNyZWF0ZSwgZm9ybUZpbmFsaXplLCAwLCBmb3JtT3BlbiwgMCwgZm9ybVJlYWQs
IDAsIGZvcm1DYW5SZWFkLCBmb3JtQ2xvc2UsIGZvcm1Db3B5UHJvcGVydHksIDAsIDAsIGZvcm1T
Y2hlZHVsZSwgZm9ybVVuc2NoZWR1bGUgfTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlJlYWRTdHJl
YW1DcmVhdGUoMCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZjYWxsQmFja3MpLCAmZm9ybUNv
bnRleHQpKTsKK30KIAotICAgIC8vIFBhc3MgdGhlIGxlbmd0aCBhbG9uZyB3aXRoIHRoZSBmb3Jt
RGF0YSBzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlY29tcHV0ZWQuCi0gICAgRm9ybUNyZWF0
aW9uQ29udGV4dCBmb3JtQ29udGV4dCA9IHtXVEZNb3ZlKG5ld0Zvcm1EYXRhKSwgbGVuZ3RofTsK
K3ZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBGb3JtRGF0
YSogZm9ybURhdGEpCit7CisgICAgaWYgKCFmb3JtRGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ0ZSZWFkU3RyZWFtQ2FsbEJhY2tzVjEgY2FsbEJhY2tzID0geyAxLCBmb3JtQ3JlYXRlLCBm
b3JtRmluYWxpemUsIDAsIGZvcm1PcGVuLCAwLCBmb3JtUmVhZCwgMCwgZm9ybUNhblJlYWQsIGZv
cm1DbG9zZSwgZm9ybUNvcHlQcm9wZXJ0eSwgMCwgMCwgZm9ybVNjaGVkdWxlLCBmb3JtVW5zY2hl
ZHVsZQotICAgIH07Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gc3RyZWFtID0gYWRv
cHRDRihDRlJlYWRTdHJlYW1DcmVhdGUoMCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCZjYWxs
QmFja3MpLCAmZm9ybUNvbnRleHQpKTsKKyAgICAvLyBIYW5kbGUgdGhlIGNvbW1vbiBzcGVjaWFs
IGNhc2Ugb2Ygb25lIHBpZWNlIG9mIGZvcm0gZGF0YSwgd2l0aCBubyBmaWxlcy4KKyAgICBhdXRv
JiBlbGVtZW50cyA9IGZvcm1EYXRhLT5lbGVtZW50cygpOworICAgIGlmIChlbGVtZW50cy5zaXpl
KCkgPT0gMSAmJiAhZm9ybURhdGEtPmFsd2F5c1N0cmVhbSgpKSB7CisgICAgICAgIGF1dG8mIGVs
ZW1lbnQgPSBlbGVtZW50c1swXTsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RGF0YSkgeworICAgICAgICAgICAgYXV0byYgdmVjdG9yID0gZWxl
bWVudC5tX2RhdGE7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odmVjdG9yLmRhdGEoKSks
IHZlY3Rvci5zaXplKCkpKTsKKyAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0
Qm9keShyZXF1ZXN0LCBkYXRhLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KIAotICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1
ZXN0LCBzdHJlYW0uZ2V0KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0
cmVhbShyZXF1ZXN0LCBjcmVhdGVIVFRQQm9keUNGUmVhZFN0cmVhbSgqZm9ybURhdGEpLmdldCgp
KTsKIH0KIAogRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuaAppbmRleCBmOWE2ZDg3NThmMzQ5MmEyYzFhZmZlOGQwNGRhMWI1
NTg2NWIxYTI1Li5jOTUwYTJhNWM1NjY4NmVjN2FkYmQ2NDFjMDJjZmIzOGQ4NzY2MjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDEwIEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgRm9ybURhdGFTdHJlYW1DRk5ldF9oCi0jZGVmaW5lIEZvcm1E
YXRhU3RyZWFtQ0ZOZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVx
dWVzdCogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZjsKIHR5cGVkZWYgc3RydWN0IF9fQ0ZSZWFkU3Ry
ZWFtKiBDRlJlYWRTdHJlYW1SZWY7CkBAIC00MCwxMSArNDAsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRm9ybURhdGE7CiAKIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiwgRm9ybURhdGEqKTsKK1JldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhU
VFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJik7CiAKIEZvcm1EYXRhKiBodHRwQm9keUZyb21T
dHJlYW0oQ0ZSZWFkU3RyZWFtUmVmKTsKIAogQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5n
dGhQcm9wZXJ0eU5hbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
Rm9ybURhdGFTdHJlYW1DRk5ldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCBlNGZl
NTI0MGUyMmM3YzFmYjBjZTlkMTkyZWRhMWE2NjA0MzAzZjY1Li41Mzc4NzYzOTVmNTVkNzc2ZTcw
OGIwMzliNmNjODNjZDlhMWFjN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTI4
LDI3ICsyOCwxNiBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbXBvcnQgIkNGTmV0d29y
a1NQSS5oIgogI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1N
YWMuaCIKICNpbXBvcnQgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotQGludGVyZmFjZSBOU1VS
TFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChOU0FycmF5ICopY29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OwotKyAodm9pZClzZXREZWZhdWx0VGltZW91
dEludGVydmFsOihOU1RpbWVJbnRlcnZhbClzZWNvbmRzOwotLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9D
RlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJl
ZilyZXF1ZXN0OwotQGVuZAotCi1AaW50ZXJmYWNlIE5TTXV0YWJsZVVSTFJlcXVlc3QgKFdlYk11
dGFibGVOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAodm9pZClzZXRDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXk6KE5TQXJyYXkgKil0aGVFbmNvZGluZ0ZhbGxiYWNrQXJyYXk7
Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJl
cXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VSZXF1ZXN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VSZXF1ZXN0SU9TLm1tCmluZGV4IGQ2YTFhNDdjOTIxYTY4NzJiNDBjNzY3ODRhYzBhZDhj
MzA4OGIwNDIuLjNmZTM5YzJhYTdkYTcwYmExNWY3ZDhhMzBhZjE3ZDI0NWFiZjVhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVz
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJj
ZVJlcXVlc3RJT1MubW0KQEAgLTI4LDEwICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAK
LUBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoQ0ZV
UkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6
KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0OwotQGVuZAorI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKaW5kZXggZjE2N2RhYWVhNmI2
ODVjMWU2ODQ1ZDk5ZWQwOTIxMzU3OTM5MWZkMi4uYWQzMGM2NWVlZTU2OTdjNzY4ZmUxYzFiYzIz
NmE3NWQxYmY2OWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw4ICszMSw3IEBA
CiAjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBAY2xhc3MgTlNJbnB1dFN0cmVhbTsKIEBjbGFz
cyBOU011dGFibGVVUkxSZXF1ZXN0OwpAQCAtNDIsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGb3JtRGF0YTsKIAogdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1
ZXN0ICosIEZvcm1EYXRhKik7CitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNJbnB1dFN0cmVh
bT4gY3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKEZvcm1EYXRhJik7CiBGb3JtRGF0YSogaHR0
cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CiAKIENGU3RyaW5nUmVmIGZvcm1EYXRh
U3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCmluZGV4IGY0YTA0MTcz
MjVkM2ZkYzc2ZTZlNjdhZmY0YmQzZjVlM2Y5ZWY1NzAuLjQyNDBlZTBhY2U2NjU5NDIxMjFjY2Nk
NjExZGVlZTM1ZjgxZGUxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMxLDEzICszMSw5IEBACiAKICNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKIAotI2ltcG9y
dCAiRm9ybURhdGEuaCIKKyNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiRm9ybURh
dGFTdHJlYW1DRk5ldC5oIgogCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1
ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotQGVuZAotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQpAQCAtNDUsNiArNDEsMTEgQEAgdm9pZCBz
ZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBGb3JtRGF0YSogZm9ybURh
dGEpCiAgICAgc2V0SFRUUEJvZHkoY29uc3RfY2FzdDxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPihb
cmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSksIGZvcm1EYXRhKTsKIH0KIAorUmV0YWluUHRyPE5TSW5w
dXRTdHJlYW0+IGNyZWF0ZUhUVFBCb2R5TlNJbnB1dFN0cmVhbShGb3JtRGF0YSYgZm9ybURhdGEp
Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TlNJbnB1dFN0cmVhbSAqPihjcmVhdGVI
VFRQQm9keUNGUmVhZFN0cmVhbShmb3JtRGF0YSkuZ2V0KCkpOworfQorCiBGb3JtRGF0YSogaHR0
cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKnN0cmVhbSkKIHsKICAgICByZXR1cm4gaHR0
cEJvZHlGcm9tU3RyZWFtKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZSZWFkU3RyZWFtUmVmPihzdHJlYW0p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KaW5kZXggODZhMDgwMWIzNTdhNWQ2YWMxYWUyMWQwNGViZGQ1ODEy
NzVmOGU0MS4uMTRmOGE1NjViYTIwMmNlODQzMTViZDQ3MjZmY2MyZDdkYmNjOGFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KQEAgLTcwLDEwICs3MCw2IEBAIENGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25u
ZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKICNpbXBvcnQgIkNGTmV0
d29ya1NQSS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0
ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0KLUBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0ICgpCi0tIChD
RlVSTFJlcXVlc3RSZWYpIF9DRlVSTFJlcXVlc3Q7Ci1AZW5kCiAjZW5kaWYKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggZDA1ZWZhYjM3MjFiZGQ4YTc0
NmY1N2RmZjM1OGZiNzI5NzQ4N2Y0My4uOGM1Y2FiNGE0Y2M2ODk1ZTM2YmQ4ZTE2NGJiMzU2NDdh
MjVhNzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMjgsMTMgKzI4LDkgQEAKIAogI2lmIFBM
QVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVx
dWVzdERldGFpbHMpCi0tIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKLS0gKGlkKV9p
bml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7Ci1AZW5kCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQppbmRleCBmMDI1Y2ZiNzhjOGZkYzZmZmFm
Y2U2ZDFhNTNkMDg3ZWE5NWZkODQ1Li4zYWM4ZjcyMDg2YzI0M2Q4MjI0MTBhYzNlODk1NWI4OTc4
MmViMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KQEAg
LTMwLDggKzMwLDggQEAKIAogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNp
bXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCisjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5TVVJMUmVxdWVzdFNQSS5oIgogI2ltcG9ydCAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW1w
b3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCBkN2EzNGYwYjNhNTll
ZjllOGY5NzM5MWI4NzJjNzEyZGIyOTQxNTZlLi4wOGNlOGFmMTM4YWRiMDEwY2UxMTE3Mjg5ZWE4
ZjIwYmUxNDQzZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDggKzMwLDggQEAKIAogI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCisjaW1wb3J0
ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5TVVJMUmVx
dWVzdFNQSS5oIgogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBvcnQgIlJlc291cmNl
SGFuZGxlQ2xpZW50LmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTU4LDcgKzU4
LDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFJlc291cmNlSGFuZGxlKiloYW5kbGUKIAogLSAo
dm9pZClkZXRhY2hIYW5kbGUKIHsKLSAgICBtX2hhbmRsZSA9IDA7CisgICAgbV9oYW5kbGUgPSBu
dWxscHRyOwogCiAgICAgbV9yZXF1ZXN0UmVzdWx0ID0gbnVsbHB0cjsKICAgICBtX2NhY2hlZFJl
c3BvbnNlUmVzdWx0ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKaW5kZXggNjMyMDc4ZWFjODU3
M2ViMjQxNzQyN2IxZWQyNGIxNTVmNTc3Y2JlOS4uZDcyOTAzYjRiNWRhOGRiM2NiNDg5OWZmOGQ5
NjFlNWRlOWY1NWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKQEAgLTI4LDIwICsyOCwxMiBAQAogCiAj
aW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAKLSNpZmRlZiBfX09CSkNfXwotQGludGVyZmFjZSBO
U1VSTFJlc3BvbnNlIChEZXRhaWxzKQotLSAodm9pZClfc2V0TUlNRVR5cGU6KE5TU3RyaW5nICop
dHlwZTsKLUBlbmQKLQotQGNsYXNzIE5TVVJMQ29ubmVjdGlvbjsKLUBjbGFzcyBOU1VSTFJlcXVl
c3Q7Ci1AY2xhc3MgTlNVUkxSZXNwb25zZTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWZk
ZWYgX19PQkpDX18KIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRp
cmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzdCwgTlNV
UkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3BvbnNlKTsK
LX0KLSNlbmRpZiAvLyBfX09CSkNfXworI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNl
UmVmLCBib29sIGlzTWFpblJlc291cmNlTG9hZCk7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCAxOThmNWIyYmE0NDYzZGE4NDE1YzBl
Nzk0NjM3MGRiMjgzY2Y0ZDQ4Li44ZTc1MTZiNjRkNzFlY2RmMTc3MGM2M2FhNTFmMmI4N2VhYjJk
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5o
CkBAIC0yNSw4ICsyNSw3IEBACiAKICNwcmFnbWEgY2xhbmcgc3lzdGVtX2hlYWRlcgogCi0jaWZu
ZGVmIENGTmV0d29ya1NQSV9oCi0jZGVmaW5lIENGTmV0d29ya1NQSV9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNGTmV0d29ya0Nvbm5lY3Rpb25DYWNoZVNQSS5oIgogI2luY2x1ZGUgPENG
TmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTQ2LDcgKzQ1LDcgQEAKIC8vIEZJWE1FOiBSZW1vdmUg
dGhlIGRlZmluZWQoX19PQkpDX18pLWd1YXJkIG9uY2Ugd2UgZml4IDxyZGFyOi8vcHJvYmxlbS8x
OTAzMzYxMD4uCiAjaWYgZGVmaW5lZChfX09CSkNfXykgJiYgUExBVEZPUk0oQ09DT0EpCiAjaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZOU1VSTENvbm5lY3Rpb24uaD4KLSNlbmRpZiAvLyBkZWZpbmVkKF9f
T0JKQ19fKSAmJiBQTEFURk9STShDT0NPQSkKKyNlbmRpZgogCiAjZWxzZSAvLyAhUExBVEZPUk0o
V0lOKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIApAQCAtODMsNiArODIsNyBAQCB0eXBl
ZGVmIHZvaWQgKF5DRkNhY2hlZFVSTFJlc3BvbnNlQ2FsbEJhY2tCbG9jaykoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19PQkpDX18pCisKIEBpbnRlcmZh
Y2UgTlNVUkxDYWNoZSAoKQogLShpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWVtb3J5Q2FwYWNpdHk6
KE5TVUludGVnZXIpbWVtb3J5Q2FwYWNpdHkgZGlza0NhcGFjaXR5OihOU1VJbnRlZ2VyKWRpc2tD
YXBhY2l0eSByZWxhdGl2ZVBhdGg6KE5TU3RyaW5nICopcGF0aDsKIC0gKENGVVJMQ2FjaGVSZWYp
X0NGVVJMQ2FjaGU7CkBAIC05MSw5ICs5MSwxOCBAQCB0eXBlZGVmIHZvaWQgKF5DRkNhY2hlZFVS
TFJlc3BvbnNlQ2FsbEJhY2tCbG9jaykoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiBAaW50ZXJm
YWNlIE5TVVJMUmVxdWVzdCAoKQogKyAoTlNBcnJheSAqKWFsbG93c1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3Q6KE5TU3RyaW5nICopaG9zdDsKICsgKHZvaWQpc2V0QWxsb3dzU3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlOihOU0FycmF5ICopYWxsb3cgZm9ySG9zdDooTlNTdHJpbmcgKilo
b3N0OworKyAodm9pZClzZXREZWZhdWx0VGltZW91dEludGVydmFsOihOU1RpbWVJbnRlcnZhbClz
ZWNvbmRzOworLSAoTlNBcnJheSAqKWNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheTsKKy0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OworLSAoaWQpX2luaXRXaXRo
Q0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKKy0gKGlkKV9wcm9wZXJ0eUZv
cktleTooTlNTdHJpbmcgKilrZXk7CiAtICh2b2lkKV9zZXRQcm9wZXJ0eTooaWQpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKIEBlbmQKIAorQGludGVyZmFjZSBOU011dGFibGVVUkxSZXF1
ZXN0ICgpCistICh2b2lkKXNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eTooTlNBcnJheSAqKXRoZUVuY29kaW5nRmFsbGJhY2tBcnJheTsKK0BlbmQKKwogQGludGVyZmFj
ZSBOU1VSTFJlc3BvbnNlICgpCiArIChOU1VSTFJlc3BvbnNlICopX3Jlc3BvbnNlV2l0aENGVVJM
UmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2U7CiAtIChDRlVSTFJlc3BvbnNlUmVm
KV9DRlVSTFJlc3BvbnNlOwpAQCAtMTU0LDYgKzE2Myw3IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2Fj
aGVkVVJMUmVzcG9uc2VDYWxsQmFja0Jsb2NrKShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIFdU
Rl9FWFRFUk5fQ19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKFdJTikKKwogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNyZWF0ZShDRkFsbG9jYXRvclJlZiwgQ0ZTdHJp
bmdSZWYsIENGRGljdGlvbmFyeVJlZik7CiBDRlVSTENhY2hlUmVmIF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNhY2hlKENGQWxsb2NhdG9yUmVmLCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIApA
QCAtMTc0LDEwICsxODQsMTEgQEAgdm9pZCBfQ0ZIVFRQQ29va2llU3RvcmFnZUZsdXNoQ29va2ll
U3RvcmVzKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKIENGRGF0YVJlZiBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZUdldE1lbU1hcHBlZERhdGEoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0jaWZkZWYg
X19CTE9DS1NfXworI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX0JM
T0NLU19fKQogdm9pZCBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxs
QmFja0Jsb2NrKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYsIENGQ2FjaGVkVVJMUmVzcG9uc2VDYWxs
QmFja0Jsb2NrLCBkaXNwYXRjaF9xdWV1ZV90KTsKICNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQogCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRUUENvb2tpZUxvY2FsRmls
ZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQVmVyc2lvbjFfMTsKQEAg
LTIxOCw2ICsyMjksNyBAQCBDRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRo
SFRUUFJlc3BvbnNlKENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlZiwgQwogV1RGX0VYVEVSTl9DX0VO
RAogCiAjaWYgZGVmaW5lZChfX09CSkNfXykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCisK
IGVudW0gOiBOU1VJbnRlZ2VyIHsKICAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lFeGNsdXNp
dmVseUZyb21NYWluRG9jdW1lbnREb21haW4gPSAzLAogfTsKQEAgLTIyNiw2ICsyMzgsNyBAQCBl
bnVtIDogTlNVSW50ZWdlciB7CiAtKGlkKV9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6KENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpY2FjaGVkUmVzcG9uc2U7CiAtKENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpX0NGQ2FjaGVkVVJMUmVzcG9uc2U7CiBAZW5kCisKICNlbmRpZgogCiBXVEZfRVhURVJO
X0NfQkVHSU4KQEAgLTI3MSw2ICsyODQsOSBAQCBXVEZfRVhURVJOX0NfRU5ECiArICh2b2lkKV9z
ZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7
CiBAZW5kCiAjZW5kaWYKLSNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCi0jZW5kaWYgLy8g
Q0ZOZXR3b3JrU1BJX2gKK0BpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQorLSAodm9pZClfc2V0
TUlNRVR5cGU6KE5TU3RyaW5nICopdHlwZTsKK0BlbmQKKworI2VuZGlmIC8vIGRlZmluZWQoX19P
QkpDX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNV
UkxSZXF1ZXN0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxS
ZXF1ZXN0U1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZWQwMDIwMTM4NTFi
YWUzM2MyMWEyMjViNGNkNjM1MGY5N2E3ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05TVVJM
UmVxdWVzdFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UmVxdWVzdFByaXZhdGUuaD4KLQotI2Vsc2UKLQotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKCkK
LS0gKGlkKV9wcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLSNlbmRpZgot
Ci0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNmU1Y2JjMGU3ZDNjZWQyM2MzYzVhYjQxMTM0
MDQ2ZTE0OTdlODIzNy4uMjA5NjM5YjIwNTAxOWZjYjQzMjQ2ODg0MzNhNTQ0YzExMWQ3ODA3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zvcm1EYXRhU3RyZWFt
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC0xMTgsNiArMTE5LDE4IEBAIC0gKHZvaWQpc2Vzc2lvbkludmFsaWRhdGVk
CiAgICAgX3Nlc3Npb24gPSBudWxscHRyOwogfQogCistIChOZXR3b3JrRGF0YVRhc2tDb2NvYSop
ZXhpc3RpbmdUYXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzaworeworICAgIGlmICghX3Nlc3Np
b24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCF0YXNrKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IF93aXRo
Q3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9yZWRDcmVk
ZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHM7CisgICAgcmV0dXJuIF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIodGFz
ay50YXNrSWRlbnRpZmllciwgYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7Cit9CisKIC0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkaWRCZWNvbWVJbnZhbGlkV2l0aEVy
cm9yOihudWxsYWJsZSBOU0Vycm9yICopZXJyb3IKIHsKICAgICBBU1NFUlQoIV9zZXNzaW9uKTsK
QEAgLTEyNSwyNiArMTM4LDM1IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2lvbiBkaWRCZWNvbWVJbnZhbGlkV2l0aEVycm9yOihudWxsYWJsZSBOCiAKIC0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNr
ICopdGFzayBkaWRTZW5kQm9keURhdGE6KGludDY0X3QpYnl0ZXNTZW50IHRvdGFsQnl0ZXNTZW50
OihpbnQ2NF90KXRvdGFsQnl0ZXNTZW50IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZDooaW50NjRf
dCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQKIHsKLSAgICBpZiAoIV9zZXNzaW9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFs
cyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDog
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsK
LSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRl
bnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpCisgICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkKICAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT5kaWRTZW5kRGF0YSh0b3RhbEJ5dGVzU2VudCwgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKTsKIH0KIAotLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVz
dCAqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIG5lZWROZXdCb2R5U3RyZWFt
Oih2b2lkICheKShOU0lucHV0U3RyZWFtICpib2R5U3RyZWFtKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGlmICghX3Nlc3Npb24pIHsKKyAgICBhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2Vs
ZiBleGlzdGluZ1Rhc2s6dGFza107CisgICAgaWYgKCFuZXR3b3JrRGF0YVRhc2spIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBJcyB0aGlzIGd1YXJhbnRlZWQgdG8gYmUgY29ycmVjdCBldmVuIHdoZW4gcmVk
aXJlY3RzIGFyZSBpbnZvbHZlZD8KKyAgICBhdXRvKiBib2R5ID0gbmV0d29ya0RhdGFUYXNrLT5m
aXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOworICAgIGlmICghYm9keSkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRklY
TUU6IElzIHRoZXJlIGEgcHJvYmxlbSBpZiBzb21lIGZpbGVzIGFyZSBkaWZmZXJlbnQgaW4gc2l6
ZSBzaW5jZSB0aGUgb3JpZ2luYWwgc2l6aW5nPworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OmNyZWF0ZUhUVFBCb2R5TlNJbnB1dFN0cmVhbSgqYm9keSkuZ2V0KCkpOworfQorCistICh2
b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9u
VGFzayAqKXRhc2sgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNl
ICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1ZXN0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CiAg
ICAgYXV0byB0YXNrSWRlbnRpZmllciA9IHRhc2sudGFza0lkZW50aWZpZXI7CiAgICAgTE9HKE5l
dHdvcmtTZXNzaW9uLCAiJWxsdSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBmcm9tICVzIHRv
ICVzIiwgdGFza0lkZW50aWZpZXIsIHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3Ry
aW5nLCByZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKLSAgICAKLSAgICBh
dXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0
d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJ
ZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpIHsKKworICAgIGlmIChhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKICAgICAgICAgYXV0byBjb21w
bGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihyZXNwb25zZSwg
cmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKGF1dG8mIHJl
cXVlc3QpIHsKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0xNjMsMTYgKzE4NSwxMCBAQCAtICh2b2lk
KVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFz
ayAqKXRhc2sgd2lsbFBlcgogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayopdGFzayBfc2NoZW1lVXBncmFkZWQ6KE5TVVJM
UmVxdWVzdCopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1ZXN0
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBpZiAoIV9zZXNzaW9uKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBhdXRv
IHRhc2tJZGVudGlmaWVyID0gdGFzay50YXNrSWRlbnRpZmllcjsKICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlbGx1IF9zY2hlbWVVcGdyYWRlZCAlcyIsIHRhc2tJZGVudGlmaWVyLCByZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICAgICAKLSAgICBhdXRvIHN0b3JlZENy
ZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
OjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNr
ID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrSWRlbnRpZmllciwgc3RvcmVk
Q3JlZGVudGlhbHMpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4
aXN0aW5nVGFzazp0YXNrXSkgewogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9
IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2st
PndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoW3Rhc2sgY3VycmVudFJlcXVlc3RdLCByZXF1ZXN0LCBuaWwpLCBy
ZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oYXV0byYgcmVx
dWVzdCkgewogI2lmICFMT0dfRElTQUJMRUQKQEAgLTIwNiwxNiArMjIyLDEwIEBAIC0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilkYXRhCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vz
c2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBpZiAoIV9zZXNzaW9uKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSB0YXNrLnRhc2tJ
ZGVudGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxs
ZW5nZSIsIHRhc2tJZGVudGlmaWVyKTsKICAgICAKLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxz
ID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0
b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Np
b24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVk
ZW50aWFscykpIHsKKyAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3Rp
bmdUYXNrOnRhc2tdKSB7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAg
IGF1dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25JRCgpOwpAQCAtMjYwLDggKzI3MCw3
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VS
TFNlc3Npb25UYXNrICopdGFzayBkaWRDb21wCiAgICAgICAgIHJldHVybjsKIAogICAgIExPRyhO
ZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkQ29tcGxldGVXaXRoRXJyb3IgJUAiLCB0YXNrLnRhc2tJ
ZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9IF93aXRoQ3Jl
ZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50
aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHM7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFz
a0ZvcklkZW50aWZpZXIodGFzay50YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKQor
ICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10p
CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5l
dHdvcmtEYXRhVGFzay0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIGVsc2UgaWYgKGVycm9y
KSB7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uLT50YWtlRG93bmxvYWRJRCh0
YXNrLnRhc2tJZGVudGlmaWVyKTsKQEAgLTI4NCwxMiArMjkzLDggQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNr
IGRpZENvbXAKIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRh
c2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIGRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOihO
U1VSTFNlc3Npb25UYXNrTWV0cmljcyAqKW1ldHJpY3MKIHsKLSAgICBpZiAoIV9zZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZEZpbmlz
aENvbGxlY3RpbmdNZXRyaWNzIiwgdGFzay50YXNrSWRlbnRpZmllcik7Ci0gICAgYXV0byBzdG9y
ZWRDcmVkZW50aWFscyA9IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
OjpEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRh
VGFzayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIodGFzay50YXNrSWRlbnRpZmll
ciwgc3RvcmVkQ3JlZGVudGlhbHMpKSB7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9
IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewogICAgICAgICBOU1VSTFNlc3Npb25UYXNrVHJh
bnNhY3Rpb25NZXRyaWNzICptID0gbWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFzdE9iamVj
dDsKICAgICAgICAgTlNEYXRlICpmZXRjaFN0YXJ0RGF0ZSA9IG0uZmV0Y2hTdGFydERhdGU7CiAg
ICAgICAgIE5TVGltZUludGVydmFsIGRvbWFpbkxvb2t1cFN0YXJ0SW50ZXJ2YWwgPSBtLmRvbWFp
bkxvb2t1cFN0YXJ0RGF0ZSA/IFttLmRvbWFpbkxvb2t1cFN0YXJ0RGF0ZSB0aW1lSW50ZXJ2YWxT
aW5jZURhdGU6ZmV0Y2hTdGFydERhdGVdIDogLTE7CkBAIC0zNTIsMTUgKzM1Nyw5IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25U
YXNrICopdGFzayBkaWRGaW5pCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBpZiAoIV9zZXNzaW9uKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBkYXRhVGFzay50YXNrSWRlbnRpZmll
cjsKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSIsIHRh
c2tJZGVudGlmaWVyKTsKLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50
aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxz
IDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFs
czsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9y
SWRlbnRpZmllcih0YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKSB7CisgICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEF2
b2lkIE1JTUUgdHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQg
Tm90IE1vZGlmaWVkLgpAQCAtMzk3LDExICszOTYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0
YQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6
KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEKIHsKLSAgICBpZiAoIV9zZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
IHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcihkYXRhVGFzay50YXNr
SWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKQogICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
KTsKIH0KIApAQCAtNDIwLDggKzQxNSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzCiAgICAg
aWYgKCFfc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdG9yZWRDcmVkZW50
aWFscyA9IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxs
b3dTdG9yZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoc3Rv
cmVkQ3JlZGVudGlhbHMsICFfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJZGVudGlmaWVyKFtkb3dubG9h
ZFRhc2sgdGFza0lkZW50aWZpZXJdLCBzdG9yZWRDcmVkZW50aWFscyksICJUaGUgTmV0d29ya0Rh
dGFUYXNrIHNob3VsZCBiZSBkZXN0cm95ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGlkQmVjb21lRG93
bmxvYWRUYXNrIHJldHVybnMiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFbc2VsZiBleGlz
dGluZ1Rhc2s6ZG93bmxvYWRUYXNrXSwgIlRoZSBOZXR3b3JrRGF0YVRhc2sgc2hvdWxkIGJlIGRl
c3Ryb3llZCBpbW1lZGlhdGVseSBhZnRlciBkaWRCZWNvbWVEb3dubG9hZFRhc2sgcmV0dXJucyIp
OwogCiAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQoW2Rvd25sb2Fk
VGFzayB0YXNrSWRlbnRpZmllcl0pOwogICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRv
d25sb2FkSUQpKQpAQCAtNDM4LDExICs0MzIsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXNlc3Npb24gZG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhcwog
CiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5T
VVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkQmVjb21lRG93bmxvYWRUYXNrOihOU1VS
TFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2sKIHsKLSAgICBpZiAoIV9zZXNzaW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhD
cmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRl
bnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFU
YXNrRm9ySWRlbnRpZmllcihbZGF0YVRhc2sgdGFza0lkZW50aWZpZXJdLCBzdG9yZWRDcmVkZW50
aWFscykpIHsKKyAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdU
YXNrOmRhdGFUYXNrXSkgewogICAgICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3Rl
Y3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3du
bG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAgICBh
dXRvJiBkb3dubG9hZE1hbmFnZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5kb3dubG9hZE1hbmFnZXIoKTsKQEAgLTQ2MCw2ICs0NTAsMTMgQEAgQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICAKK3N0YXRpYyBib29sIGFsbG93c0NlbGx1bGFyQWNjZXNzIHsgdHJ1
ZSB9Oworc3RhdGljIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciogbGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorc3RhdGljIGJvb2wgc2Vzc2lv
bnNDcmVhdGVkID0gZmFsc2U7CisjZW5kaWYKKwogc3RhdGljIE5TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQoY29uc3QgV2ViQ29yZTo6U2Vzc2lvbklE
JiBzZXNzaW9uKQogewogICAgIGlmIChzZXNzaW9uLmlzRXBoZW1lcmFsKCkpIHsKQEAgLTQ3MCwx
OCArNDY3LDYgQEAgc3RhdGljIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b25Gb3JTZXNzaW9uSUQoY29uc3QgV2ViQ29yZTo6U2Vzc2kKICAgICByZXR1cm4gW05TVVJMU2Vz
c2lvbkNvbmZpZ3VyYXRpb24gZGVmYXVsdFNlc3Npb25Db25maWd1cmF0aW9uXTsKIH0KIAotc3Rh
dGljIGJvb2wmIGdsb2JhbEFsbG93c0NlbGx1bGFyQWNjZXNzKCkKLXsKLSAgICBzdGF0aWMgYm9v
bCBhbGxvd3NDZWxsdWxhckFjY2VzcyB7IHRydWUgfTsKLSAgICByZXR1cm4gYWxsb3dzQ2VsbHVs
YXJBY2Nlc3M7Ci19Ci0KLXN0YXRpYyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIqJiBnbG9i
YWxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoKQotewotICAgIHN0YXRpYyBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIqIGN1c3RvbVByb3RvY29sTWFuYWdlciB7IG51bGxwdHIgfTsKLSAg
ICByZXR1cm4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwotfQotCiBzdGF0aWMgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGdsb2JhbFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gc291cmNlQXBwbGlj
YXRpb25BdWRpdFRva2VuRGF0YTsKQEAgLTUwOCwxNCArNDkzLDEwIEBAIHN0YXRpYyBTdHJpbmcm
IGdsb2JhbENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpCiB9CiAjZW5kaWYKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKLXN0YXRpYyBib29sIHNlc3Npb25zQ3JlYXRlZCA9IGZhbHNlOwotI2Vu
ZGlmCi0KIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciogY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KQogewogICAgIEFTU0VSVCghc2Vzc2lvbnNDcmVhdGVkKTsKLSAgICBnbG9iYWxMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIoKSA9IGN1c3RvbVByb3RvY29sTWFuYWdlcjsKKyAgICBsZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXI7CiB9CiAgICAgCiB2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRh
dGEoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQpAQCAtNTM4LDcgKzUxOSw3IEBAIHZvaWQg
TmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYKICAgICAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0QWxs
b3dzQ2VsbHVsYXJBY2Nlc3MoYm9vbCB2YWx1ZSkKIHsKLSAgICBnbG9iYWxBbGxvd3NDZWxsdWxh
ckFjY2VzcygpID0gdmFsdWU7CisgICAgYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgPSB2YWx1ZTsKIH0K
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTU1Nyw3ICs1MzgsNyBAQCBSZWY8TmV0d29ya1Nlc3Np
b24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBMZQogTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRlZmF1bHRTZXNz
aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXR3b3Jr
U2Vzc2lvbiogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoV2ViQ29yZTo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGdsb2JhbExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlcigpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9u
ID0gJk5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgbGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKS5sZWFrUmVmKCk7CiAg
ICAgcmV0dXJuICpzZXNzaW9uOwogfQogCkBAIC01NzIsNyArNTUzLDcgQEAgTmV0d29ya1Nlc3Np
b25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBMZWdhY3lDdXMKIAogICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBjb25maWd1cmF0aW9uRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKIAotICAgIGlmICgh
Z2xvYmFsQWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSkKKyAgICBpZiAoIWFsbG93c0NlbGx1bGFyQWNj
ZXNzKQogICAgICAgICBjb25maWd1cmF0aW9uLmFsbG93c0NlbGx1bGFyQWNjZXNzID0gTk87CiAg
ICAgCiAgICAgaWYgKE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuaXNFbmFibGVkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313340</attachid>
            <date>2017-06-19 16:16:17 -0700</date>
            <delta_ts>2017-06-19 16:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173551-20170619161617.patch</filename>
            <type>text/plain</type>
            <size>43503</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA2LTE5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIGltcGxlbWVudCBVUkxT
ZXNzaW9uOnRhc2s6bmVlZE5ld0JvZHlTdHJlYW06IGRlbGVnYXRlIG1ldGhvZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTUxCisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzMyMjUwNTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGh0dHAvdGVzdHMvbWlzYy9mb3JtLWJsb2ItY2hh
bGxlbmdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogUmVtb3ZlZCBOU1VSTFJlcXVlc3RTUEkuaC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVI
VFRQQm9keUNGUmVhZFN0cmVhbSk6IEZhY3RvcmVkIHRoaXMgb3V0IGZyb20gc2V0SFRUUEJvZHku
CisgICAgICAgIChXZWJDb3JlOjpzZXRIVFRQQm9keSk6IEZhY3RvcmVkIG91dCB0aGUgZnVuY3Rp
b24gYWJvdmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0Lmg6IEFkZGVkIGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbTogVXNlIENGTmV0d29y
a1NQSS5oLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElP
Uy5tbTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5oOiBBZGRlZCBjcmVhdGVIVFRQQm9keU5TSW5wdXRTdHJlYW0uCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVIVFRQQm9keU5TSW5wdXRTdHJlYW0pOiBBZGRlZC8KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOiBVc2UgQ0ZOZXR3b3JrU1BJ
LmguCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1t
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmg6
IE1vdmVkIFNQSSBkZWNsYXJhdGlvbnMgZnJvbQorICAgICAgICBoZXJlIGludG8gQ0ZOZXR3b3Jr
U1BJLmguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6IFVzZSAj
cHJhZ21hIG9uY2UsIGNvbnNvbGlkYXRlZCBTUEkgdGhhdCB3YXMKKyAgICAgICAgZGVmaW5lZCBp
biBzY2F0dGVyZWQgbG9jYXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL05T
VVJMUmVxdWVzdFNQSS5oOiBSZW1vdmVkLiBTdXBlcmNlZGVkIGJ5IENGTmV0d29ya1NQSS5oLgor
CiAyMDE3LTA2LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBIGNsb25lZCBNZWRpYVN0cmVhbVRyYWNrIHNob3VsZCBtdXRlIGluZGVwZW5kZW50bHkgb3Ro
ZXIgdHJhY2tzIHVzaW5nIHRoZSBzYW1lIHNvdXJjZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE4NDk3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTQ0LDcgKzE1NDQsNiBAQAogCQkzMUE3OTVDODE4ODhCQ0I1MDAzODJG
OTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBNzk1QzExODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5z
dGFuY2VkQXJyYXlzLmNwcCAqLzsgfTsKIAkJMzFBQjUwMDAxMjI4NzhBMjAwMUE3REIwIC8qIEdy
YXBoaWNzQ29udGV4dDNESU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUFCNEZGRjEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3NDb250ZXh0M0RJ
T1MuaCAqLzsgfTsKIAkJMzFCMzEzREIxQjY5ODcxNjAwRjJBQUJDIC8qIE5TVVJMQ29ubmVjdGlv
blNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFC
MzEzREExQjY5ODcxNjAwRjJBQUJDIC8qIE5TVVJMQ29ubmVjdGlvblNQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxQjMxM0REMUI2OTg3REIw
MEYyQUFCQyAvKiBOU1VSTFJlcXVlc3RTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjMxM0RDMUI2OTg3REIwMEYyQUFCQyAvKiBOU1VSTFJlcXVl
c3RTUEkuaCAqLzsgfTsKIAkJMzFCMzEzREYxQjY5ODhDNTAwRjJBQUJDIC8qIE5TQnV0dG9uQ2Vs
bFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFC
MzEzREUxQjY5ODhDNTAwRjJBQUJDIC8qIE5TQnV0dG9uQ2VsbFNQSS5oICovOyB9OwogCQkzMUJD
NzQyRDFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQkM3NDJC
MUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwICov
OyB9OwogCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUJDNzQyQzFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZh
bHVlLmggKi87IH07CkBAIC05MjIwLDcgKzkyMTksNiBAQAogCQkzMUE3OTVDNTE4ODhCQUQxMDAz
ODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxQUI0RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHQzRElP
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRElP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUIzMTNEQTFCNjk4NzE2MDBGMkFB
QkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5TVVJMQ29ubmVjdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MUIzMTNEQzFCNjk4N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJMUmVxdWVzdFNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMUIzMTNERTFCNjk4OEM1MDBGMkFBQkMgLyogTlNCdXR0b25DZWxsU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TQnV0dG9uQ2VsbFNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUJDNzQyQjFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQkM3NDJDMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NB
bmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODg4MSw3ICsxODg3OSw2IEBACiAJCQkJMzFCMzEzREExQjY5ODcxNjAw
RjJBQUJDIC8qIE5TVVJMQ29ubmVjdGlvblNQSS5oICovLAogCQkJCUNFMTI1MjU0MUExQkVDMEUw
MDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggKi8sCiAJCQkJNjUzRUY4MzgxOUEwNDNBRTAw
NTIyMDJDIC8qIE5TVVJMRmlsZVR5cGVNYXBwaW5nc1NQSS5oICovLAotCQkJCTMxQjMxM0RDMUI2
OTg3REIwMEYyQUFCQyAvKiBOU1VSTFJlcXVlc3RTUEkuaCAqLywKIAkJCQkxQUVEM0JEOTFEM0Q1
RjI2MDA5OUZENzggLyogUGFzc0tpdFNQSS5oICovLAogCQkJCUNFRTI3QUNBMUJCQjUzQTIwMDcy
NDAwQSAvKiBwdGhyZWFkU1BJLmggKi8sCiAJCQkJQ0UxMjUyM0MxQTE2NzZDRDAwODY0NDgwIC8q
IFF1YXJ0ekNvcmVTUEkuaCAqLywKQEAgLTI4OTE1LDcgKzI4OTEyLDYgQEAKIAkJCQkzMUIzMTNE
QjFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTEyNTI1NTFBMUJFQzBFMDA4NjQ0ODAgLyogTlNVUkxEb3dubG9hZFNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU4RjU0MDMxOUExQzkyNDAwODhGQzkyIC8qIE5TVVJMRmlsZVR5cGVN
YXBwaW5nc1NQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzFCMzEzREQxQjY5ODdEQjAwRjJBQUJD
IC8qIE5TVVJMUmVxdWVzdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3N0FDMkQxQkYyQjlB
MDAwNzI0NzBBIC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwQ0Y4MTcxQkNG
NURFMTAwN0E0OTM3IC8qIE5TV2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RD
ODEyNTFGMTJEMDAzRUYyNjkgLyogTnVtYmVySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkocmV2aXNpb24gMjE4NDk3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYxLDM1ICszNjEsMTkgQEAgc3RhdGljIHZvaWQgZm9y
bUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZQogICAgIH0KIH0KIAotdm9pZCBzZXRIVFRQQm9keShD
Rk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIEZvcm1EYXRhKiBmb3JtRGF0YSkKK1JldGFp
blB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRh
JiBmb3JtRGF0YSkKIHsKLSAgICBpZiAoIWZvcm1EYXRhKQotICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAotICAgIHNpemVfdCBjb3VudCA9IGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKLQot
ICAgIC8vIEhhbmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9y
bSBkYXRhLCB3aXRoIG5vIGZpbGVzLgotICAgIGlmIChjb3VudCA9PSAxICYmICFmb3JtRGF0YS0+
YWx3YXlzU3RyZWFtKCkpIHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50
ID0gZm9ybURhdGEtPmVsZW1lbnRzKClbMF07Ci0gICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9
PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkRhdGEpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4ICo+KGVsZW1lbnQubV9kYXRhLmRhdGEoKSksIGVsZW1lbnQubV9kYXRhLnNp
emUoKSkpOwotICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3QsIGRhdGEuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQot
Ci0KLSAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9i
UmVmZXJlbmNlcygpOwotICAgIGNvdW50ID0gbmV3Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgp
OworICAgIGF1dG8gcmVzb2x2ZWRGb3JtRGF0YSA9IGZvcm1EYXRhLnJlc29sdmVCbG9iUmVmZXJl
bmNlcygpOwogCi0gICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gTlNVUkxD
b25uZWN0aW9uIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KKyAgICAvLyBQcmVjb21wdXRlIHRo
ZSBjb250ZW50IGxlbmd0aCBzbyBDRk5ldHdvcmsgZG9lc24ndCB1c2UgY2h1bmtlZCBtb2RlLgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGggPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQgPSBuZXdGb3JtRGF0YS0+ZWxlbWVudHMoKVtpXTsKKworICAgIGZvciAoYXV0byYgZWxlbWVu
dCA6IHJlc29sdmVkRm9ybURhdGEtPmVsZW1lbnRzKCkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQu
bV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RGF0YSkKICAgICAgICAgICAgIGxlbmd0
aCArPSBlbGVtZW50Lm1fZGF0YS5zaXplKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Ly8gSWYgd2UncmUgc2VuZGluZyB0aGUgZmlsZSByYW5nZSwgdXNlIHRoZSBleGlzdGluZyByYW5n
ZSBsZW5ndGggZm9yIG5vdy4gV2Ugd2lsbCBkZXRlY3QgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hh
bmdlZCByaWdodCBiZWZvcmUgd2UgcmVhZCB0aGUgZmlsZSBhbmQgYWJvcnQgdGhlIG9wZXJhdGlv
biBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBzZW5kaW5nIHRoZSBmaWxl
IHJhbmdlLCB1c2UgdGhlIGV4aXN0aW5nIHJhbmdlIGxlbmd0aCBmb3Igbm93LgorICAgICAgICAg
ICAgLy8gV2Ugd2lsbCBkZXRlY3QgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCByaWdodCBi
ZWZvcmUgd2UgcmVhZCB0aGUgZmlsZSBhbmQgYWJvcnQgdGhlIG9wZXJhdGlvbiBpZiBuZWNlc3Nh
cnkuCiAgICAgICAgICAgICBpZiAoZWxlbWVudC5tX2ZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSkgewogICAgICAgICAgICAgICAgIGxlbmd0aCArPSBlbGVtZW50Lm1fZmls
ZUxlbmd0aDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQwMCwxNiArMzg0LDI5IEBA
IHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiAKICAgICAgICAgfQogICAg
IH0KIAotICAgIC8vIENyZWF0ZSBhbmQgc2V0IHRoZSBzdHJlYW0uCisgICAgRm9ybUNyZWF0aW9u
Q29udGV4dCBmb3JtQ29udGV4dCA9IHsgV1RGTW92ZShyZXNvbHZlZEZvcm1EYXRhKSwgbGVuZ3Ro
IH07CisgICAgQ0ZSZWFkU3RyZWFtQ2FsbEJhY2tzVjEgY2FsbEJhY2tzID0geyAxLCBmb3JtQ3Jl
YXRlLCBmb3JtRmluYWxpemUsIG51bGxwdHIsIGZvcm1PcGVuLCBudWxscHRyLCBmb3JtUmVhZCwg
bnVsbHB0ciwgZm9ybUNhblJlYWQsIGZvcm1DbG9zZSwgZm9ybUNvcHlQcm9wZXJ0eSwgbnVsbHB0
ciwgbnVsbHB0ciwgZm9ybVNjaGVkdWxlLCBmb3JtVW5zY2hlZHVsZSB9OworICAgIHJldHVybiBh
ZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZShudWxscHRyLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4oJmNhbGxCYWNrcyksICZmb3JtQ29udGV4dCkpOworfQogCi0gICAgLy8gUGFzcyB0aGUgbGVu
Z3RoIGFsb25nIHdpdGggdGhlIGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVj
b21wdXRlZC4KLSAgICBGb3JtQ3JlYXRpb25Db250ZXh0IGZvcm1Db250ZXh0ID0ge1dURk1vdmUo
bmV3Rm9ybURhdGEpLCBsZW5ndGh9Owordm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIEZvcm1EYXRhKiBmb3JtRGF0YSkKK3sKKyAgICBpZiAoIWZvcm1EYXRh
KQorICAgICAgICByZXR1cm47CiAKLSAgICBDRlJlYWRTdHJlYW1DYWxsQmFja3NWMSBjYWxsQmFj
a3MgPSB7IDEsIGZvcm1DcmVhdGUsIGZvcm1GaW5hbGl6ZSwgMCwgZm9ybU9wZW4sIDAsIGZvcm1S
ZWFkLCAwLCBmb3JtQ2FuUmVhZCwgZm9ybUNsb3NlLCBmb3JtQ29weVByb3BlcnR5LCAwLCAwLCBm
b3JtU2NoZWR1bGUsIGZvcm1VbnNjaGVkdWxlCi0gICAgfTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFk
U3RyZWFtUmVmPiBzdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZSgwLCBzdGF0aWNf
Y2FzdDxjb25zdCB2b2lkKj4oJmNhbGxCYWNrcyksICZmb3JtQ29udGV4dCkpOworICAgIC8vIEhh
bmRsZSB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSBvZiBvbmUgcGllY2Ugb2YgZm9ybSBkYXRhLCB3
aXRoIG5vIGZpbGVzLgorICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybURhdGEtPmVsZW1lbnRzKCk7
CisgICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxICYmICFmb3JtRGF0YS0+YWx3YXlzU3RyZWFt
KCkpIHsKKyAgICAgICAgYXV0byYgZWxlbWVudCA9IGVsZW1lbnRzWzBdOworICAgICAgICBpZiAo
ZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpEYXRhKSB7CisgICAgICAg
ICAgICBhdXRvJiB2ZWN0b3IgPSBlbGVtZW50Lm1fZGF0YTsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNpemUoKSkpOworICAgICAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3QsIGRhdGEuZ2V0KCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3QsIHN0cmVhbS5nZXQoKSk7CisgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3QsIGNyZWF0ZUhUVFBCb2R5Q0ZSZWFk
U3RyZWFtKCpmb3JtRGF0YSkuZ2V0KCkpOwogfQogCiBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3Ry
ZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaAkocmV2aXNp
b24gMjE4NDk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsy
NiwxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvcm1EYXRhU3RyZWFtQ0ZOZXRf
aAotI2RlZmluZSBGb3JtRGF0YVN0cmVhbUNGTmV0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIHR5cGVkZWYg
c3RydWN0IF9DRlVSTFJlcXVlc3QqIENGTXV0YWJsZVVSTFJlcXVlc3RSZWY7CiB0eXBlZGVmIHN0
cnVjdCBfX0NGUmVhZFN0cmVhbSogQ0ZSZWFkU3RyZWFtUmVmOwpAQCAtNDAsMTEgKzQwLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvcm1EYXRhOwogCiB2b2lkIHNldEhUVFBCb2R5
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIEZvcm1EYXRhKik7CitSZXRhaW5QdHI8Q0ZSZWFkU3Ry
ZWFtUmVmPiBjcmVhdGVIVFRQQm9keUNGUmVhZFN0cmVhbShGb3JtRGF0YSYpOwogCiBGb3JtRGF0
YSogaHR0cEJvZHlGcm9tU3RyZWFtKENGUmVhZFN0cmVhbVJlZik7CiAKIENGU3RyaW5nUmVmIGZv
cm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCShyZXZpc2lvbiAyMTg0OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwyNyArMjgsMTYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW1wb3J0ICJDRk5l
dHdvcmtTUEkuaCIKICNpbXBvcnQgIkZpbGVTeXN0ZW0uaCIKICNpbXBvcnQgIkZvcm1EYXRhU3Ry
ZWFtTWFjLmgiCiAjaW1wb3J0ICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbXBvcnQgIlJlc291cmNl
UmVxdWVzdENGTmV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLQogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLUBpbnRlcmZhY2Ug
TlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQotLSAoTlNBcnJheSAqKWNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKLSsgKHZvaWQpc2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbDooTlNUaW1lSW50ZXJ2YWwpc2Vjb25kczsKLS0gKENGVVJMUmVxdWVzdFJl
ZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVl
c3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotQGludGVyZmFjZSBOU011dGFibGVVUkxSZXF1ZXN0IChX
ZWJNdXRhYmxlTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKHZvaWQpc2V0Q29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OihOU0FycmF5ICopdGhlRW5jb2RpbmdGYWxsYmFja0Fy
cmF5OwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5TVVJMUmVxdWVzdCAqUmVzb3Vy
Y2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNl
UmVxdWVzdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHJldmlzaW9uIDIxODQ5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAotQGlu
dGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChDRlVSTFJl
cXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKLS0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZV
UkxSZXF1ZXN0UmVmKXJlcXVlc3Q7Ci1AZW5kCisjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDIxODQ5
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDggKzMxLDcgQEAKICNpZiAhVVNF
KENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLXR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9DRlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIEBjbGFzcyBOU0lucHV0U3RyZWFtOwogQGNsYXNzIE5TTXV0YWJs
ZVVSTFJlcXVlc3Q7CkBAIC00Miw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEZvcm1EYXRhOwogCiB2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9y
bURhdGEqKTsKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0lucHV0U3RyZWFtPiBjcmVhdGVI
VFRQQm9keU5TSW5wdXRTdHJlYW0oRm9ybURhdGEmKTsKIEZvcm1EYXRhKiBodHRwQm9keUZyb21T
dHJlYW0oTlNJbnB1dFN0cmVhbSAqKTsKIAogQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5n
dGhQcm9wZXJ0eU5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShyZXZpc2lvbiAyMTg0OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDgsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxMyArMzEsOSBA
QAogCiAjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiAKLSNpbXBvcnQgIkZvcm1EYXRhLmgiCisj
aW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIK
IAotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChD
RlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QsIEZvcm1E
YXRhKiBmb3JtRGF0YSkKQEAgLTQ1LDYgKzQxLDExIEBAIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRh
YmxlVVJMUmVxdWVzdCAqcmUKICAgICBzZXRIVFRQQm9keShjb25zdF9jYXN0PENGTXV0YWJsZVVS
TFJlcXVlc3RSZWY+KFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKSwgZm9ybURhdGEpOwogfQogCitS
ZXRhaW5QdHI8TlNJbnB1dFN0cmVhbT4gY3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKEZvcm1E
YXRhJiBmb3JtRGF0YSkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOU0lucHV0U3Ry
ZWFtICo+KGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKGZvcm1EYXRhKS5nZXQoKSk7Cit9CisK
IEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqc3RyZWFtKQogewog
ICAgIHJldHVybiBodHRwQm9keUZyb21TdHJlYW0ocmVpbnRlcnByZXRfY2FzdDxDRlJlYWRTdHJl
YW1SZWY+KHN0cmVhbSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIxODQ5NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMCArNzAsNiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NG
VVJMQ29ubmVjdGlvbkNvcHlUaW1pCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5o
IgotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKSBfQ0ZV
UkxSZXF1ZXN0OwotQGVuZAogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbQkocmV2aXNpb24gMjE4NDk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxMyArMjgsOSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJDRk5l
dHdvcmtTUEkuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi1AaW50ZXJm
YWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVz
dFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJl
cXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjE4NDk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKKyNpbXBvcnQgIkNGTmV0d29ya1NQ
SS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTlNVUkxSZXF1ZXN0U1BJLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGVDbGllbnQu
aCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2
aXNpb24gMjE4NDk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDgg
KzMwLDggQEAKIAogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uTWFjLmgiCisjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5TVVJMUmVxdWVzdFNQSS5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW1wb3J0ICJS
ZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTU4LDcgKzU4LDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6
KFJlc291cmNlSGFuZGxlKiloYQogCiAtICh2b2lkKWRldGFjaEhhbmRsZQogewotICAgIG1faGFu
ZGxlID0gMDsKKyAgICBtX2hhbmRsZSA9IG51bGxwdHI7CiAKICAgICBtX3JlcXVlc3RSZXN1bHQg
PSBudWxscHRyOwogICAgIG1fY2FjaGVkUmVzcG9uc2VSZXN1bHQgPSBudWxscHRyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDIxODQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyMCArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCi0jaWZkZWYgX19P
QkpDX18KLUBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoRGV0YWlscykKLS0gKHZvaWQpX3NldE1J
TUVUeXBlOihOU1N0cmluZyAqKXR5cGU7Ci1AZW5kCi0KLUBjbGFzcyBOU1VSTENvbm5lY3Rpb247
Ci1AY2xhc3MgTlNVUkxSZXF1ZXN0OwotQGNsYXNzIE5TVVJMUmVzcG9uc2U7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKworI2lmZGVmIF9fT0JKQ19fCiBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3Bv
bnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAq
Y3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAq
cmVkaXJlY3RSZXNwb25zZSk7Ci19Ci0jZW5kaWYgLy8gX19PQkpDX18KKyNlbmRpZgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpOworCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oCShy
ZXZpc2lvbiAyMTg0OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDcgQEAKIAogI3ByYWdtYSBjbGFu
ZyBzeXN0ZW1faGVhZGVyCiAKLSNpZm5kZWYgQ0ZOZXR3b3JrU1BJX2gKLSNkZWZpbmUgQ0ZOZXR3
b3JrU1BJX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrQ29ubmVjdGlvbkNh
Y2hlU1BJLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgpAQCAtNDYsNyArNDUs
NyBAQAogLy8gRklYTUU6IFJlbW92ZSB0aGUgZGVmaW5lZChfX09CSkNfXyktZ3VhcmQgb25jZSB3
ZSBmaXggPHJkYXI6Ly9wcm9ibGVtLzE5MDMzNjEwPi4KICNpZiBkZWZpbmVkKF9fT0JKQ19fKSAm
JiBQTEFURk9STShDT0NPQSkKICNpbXBvcnQgPENGTmV0d29yay9DRk5TVVJMQ29ubmVjdGlvbi5o
PgotI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pICYmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlm
CiAKICNlbHNlIC8vICFQTEFURk9STShXSU4pICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQog
CkBAIC04Myw2ICs4Miw3IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VDYWxs
QmEKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX09CSkNfXykKKwogQGludGVyZmFjZSBOU1VSTENh
Y2hlICgpCiAtKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTooTlNVSW50ZWdl
ciltZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6KE5TVUludGVnZXIpZGlza0NhcGFjaXR5IHJl
bGF0aXZlUGF0aDooTlNTdHJpbmcgKilwYXRoOwogLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNo
ZTsKQEAgLTkxLDkgKzkxLDE4IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VD
YWxsQmEKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0ICgpCiArIChOU0FycmF5ICopYWxsb3dzU3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDooTlNTdHJpbmcgKilob3N0OwogKyAodm9pZClz
ZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGU6KE5TQXJyYXkgKilhbGxvdyBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3Q7CisrICh2b2lkKXNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWw6KE5T
VGltZUludGVydmFsKXNlY29uZHM7CistIChOU0FycmF5ICopY29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5OworLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7Cist
IChpZClfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0OworLSAo
aWQpX3Byb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKIC0gKHZvaWQpX3NldFByb3BlcnR5
OihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwogQGVuZAogCitAaW50ZXJmYWNlIE5T
TXV0YWJsZVVSTFJlcXVlc3QgKCkKKy0gKHZvaWQpc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5OihOU0FycmF5ICopdGhlRW5jb2RpbmdGYWxsYmFja0FycmF5OworQGVu
ZAorCiBAaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKCkKICsgKE5TVVJMUmVzcG9uc2UgKilfcmVz
cG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZTsKIC0gKENG
VVJMUmVzcG9uc2VSZWYpX0NGVVJMUmVzcG9uc2U7CkBAIC0xNTQsNiArMTYzLDcgQEAgdHlwZWRl
ZiB2b2lkICheQ0ZDYWNoZWRVUkxSZXNwb25zZUNhbGxCYQogV1RGX0VYVEVSTl9DX0JFR0lOCiAK
ICNpZiAhUExBVEZPUk0oV0lOKQorCiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIF9DRlVSTFN0b3Jh
Z2VTZXNzaW9uQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBDRlN0cmluZ1JlZiwgQ0ZEaWN0aW9uYXJ5
UmVmKTsKIENGVVJMQ2FjaGVSZWYgX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2FjaGUoQ0ZBbGxv
Y2F0b3JSZWYsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwogCkBAIC0xNzQsMTAgKzE4NCwxMSBA
QCB2b2lkIF9DRkhUVFBDb29raWVTdG9yYWdlRmx1c2hDb29raWVTdG9yCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKIENGRGF0YVJlZiBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0jaWZkZWYgX19CTE9DS1NfXworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX0JMT0NLU19fKQogdm9pZCBfQ0ZDYWNoZWRV
UkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYsIENGQ2FjaGVkVVJMUmVzcG9uc2VDYWxsQmFja0Jsb2NrLCBkaXNwYXRjaF9xdWV1
ZV90KTsKICNlbmRpZgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBleHRlcm4gQ0ZTdHJp
bmdSZWYgY29uc3Qga0NGSFRUUENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZIVFRQVmVyc2lvbjFfMTsKQEAgLTIxOCw2ICsyMjksNyBAQCBDRlVSTFJl
c3BvbnNlUmVmIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoCiBXVEZfRVhURVJOX0NfRU5ECiAKICNp
ZiBkZWZpbmVkKF9fT0JKQ19fKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwogZW51bSA6
IE5TVUludGVnZXIgewogICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJv
bU1haW5Eb2N1bWVudERvbWFpbiA9IDMsCiB9OwpAQCAtMjI2LDYgKzIzOCw3IEBAIGVudW0gOiBO
U1VJbnRlZ2VyIHsKIC0oaWQpX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTooQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiljYWNoZWRSZXNwb25zZTsKIC0oQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZilf
Q0ZDYWNoZWRVUkxSZXNwb25zZTsKIEBlbmQKKwogI2VuZGlmCiAKIFdURl9FWFRFUk5fQ19CRUdJ
TgpAQCAtMjcxLDYgKzI4NCw5IEBAIFdURl9FWFRFUk5fQ19FTkQKICsgKHZvaWQpX3NldFNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKIEBlbmQK
ICNlbmRpZgotI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKLSNlbmRpZiAvLyBDRk5ldHdv
cmtTUElfaAorQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlICgpCistICh2b2lkKV9zZXRNSU1FVHlw
ZTooTlNTdHJpbmcgKil0eXBlOworQGVuZAorCisjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9OU1VSTFJlcXVlc3RTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvTlNVUkxS
ZXF1ZXN0U1BJLmgJKHJldmlzaW9uIDIxODQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jb2NvYS9OU1VSTFJlcXVlc3RTUEkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+Ci0KLSNlbHNlCi0KLUBpbnRlcmZhY2Ug
TlNVUkxSZXF1ZXN0ICgpCi0tIChpZClfcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopa2V5Owot
QGVuZAotCi0jZW5kaWYKLQotCi0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODQ5NykKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE3LTA2LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIGltcGxlbWVudCBVUkxTZXNzaW9uOnRhc2s6bmVlZE5ld0JvZHlTdHJlYW06IGRlbGVn
YXRlIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNTUxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzMyMjUwNTEyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBleGlzdGluZ1Rhc2s6XSk6IEFkZGVkIGhlbHBlciBtZXRob2QuCisgICAgICAgICgt
W1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkU2VuZEJvZHlEYXRh
OnRvdGFsQnl0ZXNTZW50OnRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZDpdKToKKyAgICAgICAgVXBk
YXRlZCB0byB1c2UgZXhpc3RpbmdUYXNrOiBtZXRob2QuCisgICAgICAgICgtW1dLTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6bmVlZE5ld0JvZHlTdHJlYW06XSk6IEFkZGVk
LgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOndp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIGV4aXN0aW5nVGFzazogbWV0aG9kLgorICAgICAgICAo
LVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOl9zY2hlbWVVcGdyYWRl
ZDpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Np
b25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6IERpdHRvLgorICAgICAgICAo
LVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZEZpbmlzaENvbGxl
Y3RpbmdNZXRyaWNzOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVn
YXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkV3JpdGVEYXRh
OnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpk
aWRCZWNvbWVEb3dubG9hZFRhc2s6XSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxB
bGxvd3NDZWxsdWxhckFjY2Vzcyk6IERlbGV0ZWQuIEp1c3QgdXNlIGEgbm9ybWFsIGdsb2JhbC4K
KyAgICAgICAgKFdlYktpdDo6Z2xvYmFsTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTogRGVs
ZXRlZC4gSnVzdCB1c2UgYSBub3JtYWwgZ2xvYmFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpOiBVcGRhdGVkIGZv
ciBub3JtYWwgZ2xvYmFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpz
ZXRBbGxvd3NDZWxsdWxhckFjY2Vzcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpkZWZhdWx0U2Vzc2lvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKTogRGl0dG8uCisKIDIwMTct
MDYtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEEgY2xv
bmVkIE1lZGlhU3RyZWFtVHJhY2sgc2hvdWxkIG11dGUgaW5kZXBlbmRlbnRseSBvdGhlciB0cmFj
a3MgdXNpbmcgdGhlIHNhbWUgc291cmNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlz
aW9uIDIxODQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9y
bURhdGFTdHJlYW1NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTExOCw2ICsxMTksMTggQEAgLSAodm9pZClzZXNzaW9u
SW52YWxpZGF0ZWQKICAgICBfc2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAKKy0gKE5ldHdvcmtEYXRh
VGFza0NvY29hKilleGlzdGluZ1Rhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrCit7CisgICAg
aWYgKCFfc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXRhc2sp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBhbGxvd1N0b3JlZENyZWRlbnRp
YWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFsczsKKyAgICByZXR1cm4gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRl
bnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKK30K
KwogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRpZEJlY29tZUlu
dmFsaWRXaXRoRXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKillcnJvcgogewogICAgIEFTU0VSVCgh
X3Nlc3Npb24pOwpAQCAtMTI1LDI2ICsxMzgsMzMgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzZXNzaQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkU2VuZEJvZHlEYXRhOihpbnQ2
NF90KWJ5dGVzU2VudCB0b3RhbEJ5dGVzU2VudDooaW50NjRfdCl0b3RhbEJ5dGVzU2VudCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQ6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kCiB7
Ci0gICAgaWYgKCFfc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBzdG9yZWRD
cmVkZW50aWFscyA9IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
czo6QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpE
b05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFz
ayA9IF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIodGFzay50YXNrSWRlbnRpZmllciwg
c3RvcmVkQ3JlZGVudGlhbHMpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2Vs
ZiBleGlzdGluZ1Rhc2s6dGFza10pCiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkU2VuZERh
dGEodG90YWxCeXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiB9CiAKLS0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25U
YXNrICopdGFzayB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25U
YXNrICopdGFzayBuZWVkTmV3Qm9keVN0cmVhbToodm9pZCAoXikoTlNJbnB1dFN0cmVhbSAqYm9k
eVN0cmVhbSkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBpZiAoIV9zZXNzaW9uKSB7CisgICAg
YXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdOworICAgIGlm
ICghbmV0d29ya0RhdGFUYXNrKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBib2R5ID0gbmV0d29ya0RhdGFUYXNr
LT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOworICAgIGlmICghYm9keSkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlOU0lucHV0U3RyZWFtKCpib2R5
KS5nZXQoKSk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lv
biB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29t
cGxldGlvbkhhbmRsZXIKK3sKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gdGFzay50YXNrSWRl
bnRpZmllcjsKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uIGZyb20gJXMgdG8gJXMiLCB0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UuVVJMLmFi
c29sdXRlU3RyaW5nLlVURjhTdHJpbmcsIHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhT
dHJpbmcpOwotICAgIAotICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHMgPSBfd2l0aENyZWRlbnRp
YWxzID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMg
OiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJ
ZGVudGlmaWVyKHRhc2sudGFza0lkZW50aWZpZXIsIHN0b3JlZENyZWRlbnRpYWxzKSkgeworCisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkg
ewogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKHJlc3BvbnNlLCByZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNr
SWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgewogI2lmICFMT0dfRElTQUJMRUQKQEAgLTE2Mywx
NiArMTgzLDEwIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIAog
LSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vz
c2lvblRhc2sqKXRhc2sgX3NjaGVtZVVwZ3JhZGVkOihOU1VSTFJlcXVlc3QqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMUmVxdWVzdCopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgaWYgKCFfc2Vzc2lvbikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IHRh
c2sudGFza0lkZW50aWZpZXI7CiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBfc2NoZW1l
VXBncmFkZWQgJXMiLCB0YXNrSWRlbnRpZmllciwgcmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAgICAgCi0gICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9IF93aXRoQ3Jl
ZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9yZWRDcmVkZW50
aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHM7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9uLT5kYXRhVGFz
a0ZvcklkZW50aWZpZXIodGFza0lkZW50aWZpZXIsIHN0b3JlZENyZWRlbnRpYWxzKSkgeworICAg
IGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsK
ICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT53aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KFt0
YXNrIGN1cnJlbnRSZXF1ZXN0XSwgcmVxdWVzdCwgbmlsKSwgcmVxdWVzdCwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsKICNpZiAhTE9HX0RJ
U0FCTEVECkBAIC0yMDYsMTYgKzIyMCwxMCBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lv
biB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBp
ZiAoIV9zZXNzaW9uKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSB0YXNrLnRhc2tJZGVu
dGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5n
ZSIsIHRhc2tJZGVudGlmaWVyKTsKICAgICAKLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0g
X3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9y
ZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24t
PmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50
aWFscykpIHsKKyAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdU
YXNrOnRhc2tdKSB7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAgICAgICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIGF1
dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25JRCgpOwpAQCAtMjYwLDggKzI2OCw3IEBA
IC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRDb21wbGV0ZVdpdGhFcnJvciAl
QCIsIHRhc2sudGFza0lkZW50aWZpZXIsIGVycm9yKTsKLSAgICBhdXRvIHN0b3JlZENyZWRlbnRp
YWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxv
d1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nl
c3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRD
cmVkZW50aWFscykpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0
aW5nVGFzazp0YXNrXSkKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRDb21wbGV0ZVdpdGhF
cnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAg
ZWxzZSBpZiAoZXJyb3IpIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPnRh
a2VEb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIpOwpAQCAtMjg0LDEyICsyOTEsOCBAQCAt
ICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAKIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFz
ayBkaWRGaW5pc2hDb2xsZWN0aW5nTWV0cmljczooTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgKilt
ZXRyaWNzCiB7Ci0gICAgaWYgKCFfc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRGaW5pc2hDb2xsZWN0aW5nTWV0cmljcyIsIHRhc2su
dGFza0lkZW50aWZpZXIpOwotICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHMgPSBfd2l0aENyZWRl
bnRpYWxzID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlh
bHMgOiBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRp
YWxzOwotICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tG
b3JJZGVudGlmaWVyKHRhc2sudGFza0lkZW50aWZpZXIsIHN0b3JlZENyZWRlbnRpYWxzKSkgewor
ICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10p
IHsKICAgICAgICAgTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbSA9IG1ldHJp
Y3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CiAgICAgICAgIE5TRGF0ZSAqZmV0Y2hT
dGFydERhdGUgPSBtLmZldGNoU3RhcnREYXRlOwogICAgICAgICBOU1RpbWVJbnRlcnZhbCBkb21h
aW5Mb29rdXBTdGFydEludGVydmFsID0gbS5kb21haW5Mb29rdXBTdGFydERhdGUgPyBbbS5kb21h
aW5Mb29rdXBTdGFydERhdGUgdGltZUludGVydmFsU2luY2VEYXRlOmZldGNoU3RhcnREYXRlXSA6
IC0xOwpAQCAtMzUyLDE1ICszNTUsOSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3NpCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbikpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBpZiAoIV9zZXNzaW9uKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvblJlc3BvbnNlQ2FuY2VsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBkYXRhVGFzay50YXNrSWRlbnRpZmllcjsKICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVSZXNwb25zZSIsIHRhc2tJZGVudGlm
aWVyKTsKLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBp
ZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmll
cih0YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHMpKSB7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEF2b2lkIE1JTUUg
dHlwZSBzbmlmZmluZyBpZiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjayBhcyAzMDQgTm90IE1vZGlm
aWVkLgpAQCAtMzk3LDExICszOTQsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3NpCiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayBkaWRSZWNlaXZlRGF0YToo
TlNEYXRhICopZGF0YQogewotICAgIGlmICghX3Nlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHMgPSBfd2l0aENyZWRlbnRpYWxzID8gV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsczo6RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgIGlmIChhdXRv
KiBuZXR3b3JrRGF0YVRhc2sgPSBfc2Vzc2lvbi0+ZGF0YVRhc2tGb3JJZGVudGlmaWVyKGRhdGFU
YXNrLnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFscykpCisgICAgaWYgKGF1dG8qIG5l
dHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pCiAgICAgICAgIG5l
dHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSkpOwogfQogCkBAIC00MjAsOCArNDEzLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihO
U1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmICghX3Nlc3Npb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gc3RvcmVkQ3JlZGVudGlhbHMgPSBfd2l0aENyZWRlbnRpYWxzID8gV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsczo6RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0VfVU5VU0VEKHN0b3JlZENyZWRlbnRpYWxzLCAhX3Nlc3Npb24tPmRhdGFU
YXNrRm9ySWRlbnRpZmllcihbZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXSwgc3RvcmVkQ3Jl
ZGVudGlhbHMpLCAiVGhlIE5ldHdvcmtEYXRhVGFzayBzaG91bGQgYmUgZGVzdHJveWVkIGltbWVk
aWF0ZWx5IGFmdGVyIGRpZEJlY29tZURvd25sb2FkVGFzayByZXR1cm5zIik7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghW3NlbGYgZXhpc3RpbmdUYXNrOmRvd25sb2FkVGFza10sICJUaGUgTmV0
d29ya0RhdGFUYXNrIHNob3VsZCBiZSBkZXN0cm95ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGlkQmVj
b21lRG93bmxvYWRUYXNrIHJldHVybnMiKTsKIAogICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNz
aW9uLT5kb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdKTsKICAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3du
bG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkKQEAgLTQzOCwxMSArNDMwLDcgQEAg
LSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogCiAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopZGF0YVRhc2sgZGlkQmVjb21lRG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9h
ZFRhc2sgKilkb3dubG9hZFRhc2sKIHsKLSAgICBpZiAoIV9zZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHN0b3JlZENyZWRlbnRpYWxzID0gX3dpdGhDcmVkZW50aWFscyA/IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkRvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBp
ZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmll
cihbZGF0YVRhc2sgdGFza0lkZW50aWZpZXJdLCBzdG9yZWRDcmVkZW50aWFscykpIHsKKyAgICBp
ZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOmRhdGFUYXNrXSkg
ewogICAgICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRh
VGFzaygqbmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29y
a0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAgICBhdXRvJiBkb3dubG9hZE1h
bmFnZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFn
ZXIoKTsKQEAgLTQ2MCw2ICs0NDgsMTMgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Np
b24gKilzZXNzaQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKK3N0YXRpYyBib29sIGFsbG93
c0NlbGx1bGFyQWNjZXNzIHsgdHJ1ZSB9Oworc3RhdGljIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlciogbGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOworCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorc3RhdGljIGJvb2wgc2Vzc2lvbnNDcmVhdGVkID0gZmFsc2U7CisjZW5kaWYKKwogc3RhdGlj
IE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQoY29u
c3QgV2ViQ29yZTo6U2Vzc2lvbklEJiBzZXNzaW9uKQogewogICAgIGlmIChzZXNzaW9uLmlzRXBo
ZW1lcmFsKCkpIHsKQEAgLTQ3MCwxOCArNDY1LDYgQEAgc3RhdGljIE5TVVJMU2Vzc2lvbkNvbmZp
Z3VyYXRpb24gKmNvbmZpZwogICAgIHJldHVybiBbTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBk
ZWZhdWx0U2Vzc2lvbkNvbmZpZ3VyYXRpb25dOwogfQogCi1zdGF0aWMgYm9vbCYgZ2xvYmFsQWxs
b3dzQ2VsbHVsYXJBY2Nlc3MoKQotewotICAgIHN0YXRpYyBib29sIGFsbG93c0NlbGx1bGFyQWNj
ZXNzIHsgdHJ1ZSB9OwotICAgIHJldHVybiBhbGxvd3NDZWxsdWxhckFjY2VzczsKLX0KLQotc3Rh
dGljIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciomIGdsb2JhbExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcigpCi17Ci0gICAgc3RhdGljIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciog
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyIHsgbnVsbHB0ciB9OwotICAgIHJldHVybiBjdXN0b21Qcm90
b2NvbE1hbmFnZXI7Ci19Ci0KIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZ2xvYmFsU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDRkRhdGFSZWY+PiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRh
OwpAQCAtNTA4LDE0ICs0OTEsMTAgQEAgc3RhdGljIFN0cmluZyYgZ2xvYmFsQ1REYXRhQ29ubmVj
dGlvblNlcgogfQogI2VuZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi1zdGF0aWMgYm9vbCBz
ZXNzaW9uc0NyZWF0ZWQgPSBmYWxzZTsKLSNlbmRpZgotCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29j
b2E6OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcihMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIqIGN1c3RvbVByb3RvY29sTWFuYWdlcikKIHsKICAgICBBU1NFUlQoIXNlc3Npb25zQ3Jl
YXRlZCk7Ci0gICAgZ2xvYmFsTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKCkgPSBjdXN0b21Q
cm90b2NvbE1hbmFnZXI7CisgICAgbGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOwogfQogICAgIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkKQEAgLTUzOCw3ICs1MTcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJj
ZUFwcGxpCiAgICAgCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldEFsbG93c0NlbGx1bGFy
QWNjZXNzKGJvb2wgdmFsdWUpCiB7Ci0gICAgZ2xvYmFsQWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9
IHZhbHVlOworICAgIGFsbG93c0NlbGx1bGFyQWNjZXNzID0gdmFsdWU7CiB9CiAKICNpZiBQTEFU
Rk9STShJT1MpCkBAIC01NTcsNyArNTM2LDcgQEAgUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOgogTmV0d29ya1Nlc3Npb24mIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRlZmF1
bHRTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBO
ZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIGdsb2JhbExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcigpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIE5ldHdvcmtTZXNzaW9uKiBz
ZXNzaW9uID0gJk5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgbGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKS5sZWFrUmVm
KCk7CiAgICAgcmV0dXJuICpzZXNzaW9uOwogfQogCkBAIC01NzIsNyArNTUxLDcgQEAgTmV0d29y
a1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogCiAgICAgTlNVUkxTZXNzaW9uQ29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQobV9z
ZXNzaW9uSUQpOwogCi0gICAgaWYgKCFnbG9iYWxBbGxvd3NDZWxsdWxhckFjY2VzcygpKQorICAg
IGlmICghYWxsb3dzQ2VsbHVsYXJBY2Nlc3MpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxsb3dz
Q2VsbHVsYXJBY2Nlc3MgPSBOTzsKICAgICAKICAgICBpZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0
b24oKS5pc0VuYWJsZWQoKSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODUxNSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTE5
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NvY29hXSBpbXBsZW1lbnQgVVJMU2Vzc2lvbjp0YXNrOm5lZWROZXdCb2R5U3RyZWFtOiBkZWxl
Z2F0ZSBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MzU1MQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMjI1MDUxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2Mv
Zm9ybS1ibG9iLWNoYWxsZW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbWlzYy9mb3JtLWJsb2ItY2hhbGxlbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYmFzaWMtZWNoby1wb3N0LnBocDogQWRkZWQuCisKIDIw
MTctMDYtMTkgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGp1
c3RlZCB0ZXN0IGVjcGVjdGFpb25zIGZvciB3ZWJydGMvbGlid2VicnRjL2Rlc2NyaXB0aW9uR2V0
dGVycy5odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zvcm0tYmxvYi1j
aGFsbGVuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9mb3JtLWJsb2ItY2hhbGxlbmdlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1ibG9iLWNoYWxsZW5nZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUmVzcG9uc2U6IFVw
bG9hZGVkIGJsb2IgZGF0YTogYmxvYmRhdGEKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2Zvcm0tYmxvYi1jaGFsbGVuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1ibG9iLWNoYWxsZW5nZS5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLWJsb2ItY2hhbGxlbmdlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKK2Zv
cm1EYXRhLmFwcGVuZCgiZGF0YSIsIG5ldyBCbG9iKFsiYmxvYmRhdGEiXSkpOworCit2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rp
b24gKCkgeworICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7CisgICAgICAgIGFsZXJ0KCJS
ZXNwb25zZTogIiArIHhoci5yZXNwb25zZVRleHQpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Owor
eGhyLm9wZW4oIlBPU1QiLCAicmVzb3VyY2VzL2Jhc2ljLWVjaG8tcG9zdC5waHAiLCB0cnVlLCAi
dGVzdHVzZXIiLCAidGVzdHBhc3N3b3JkIik7Cit4aHIuc2VuZChmb3JtRGF0YSk7Cis8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvYmFzaWMtZWNo
by1wb3N0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzL2Jhc2ljLWVjaG8tcG9zdC5waHAJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9iYXNpYy1lY2hvLXBvc3QucGhwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTYgQEAKKzw/cGhwCitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0
b3JlIik7CitoZWFkZXIoIkNvbm5lY3Rpb246IGNsb3NlIik7CitpZiAoIWlzc2V0KCRfU0VSVkVS
WydQSFBfQVVUSF9VU0VSJ10pIAorICAgIHx8ICFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcn
XSkpIHsKKyAgICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiVGVzdFJl
YWxtXCIiKTsKKyAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQnKTsKKyAgICBl
Y2hvICJQbGVhc2Ugc2VuZCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCI7CisgICAgZXhpdDsKK30K
KworJG15ZmlsZSA9IGZvcGVuKCRfRklMRVNbImRhdGEiXVsidG1wX25hbWUiXSwgInIiKSBvciBk
aWUoIlVuYWJsZSB0byBvcGVuIGZpbGUhIik7CitlY2hvICJVcGxvYWRlZCBibG9iIGRhdGE6ICI7
CitlY2hvIGZyZWFkKCRteWZpbGUsJF9GSUxFU1siZGF0YSJdWyJzaXplIl0pOworZmNsb3NlKCRt
eWZpbGUpOworPz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>