<?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>131024</bug_id>
          
          <creation_ts>2014-04-01 02:49:03 -0700</creation_ts>
          <short_desc>[UNIX] Reorganize and cleanup main functions of GTK and EFL ports</short_desc>
          <delta_ts>2014-05-23 02:58:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996201</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-01 02:49:03 -0700</bug_when>
    <thetext>We currently have main functions in Source/WebKit2/gtk/MainGtk.cpp and Source/WebKit2/gtk/MainEfl.cpp for the WebProcess and Source/WebKit2/unix/NetworkMainUnix.cpp and Source/WebKit2/unix/PluginMainUnix.cpp for the network and plugin processes. We should move main functions to WebProcess, NetworkProcess and PluginProcess dirs. Also, in some cases like the NetworkProcess we share the main function, but we need a lot of ifdefs for the platform specific initializations, and the common code is indeed common to all other processes. We could move the common code to Share and use it for all the child processes, with an interface to add the platform specific initializations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996203</commentid>
    <comment_count>1</comment_count>
      <attachid>228260</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-01 02:55:40 -0700</bug_when>
    <thetext>Created attachment 228260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996211</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-01 03:46:49 -0700</bug_when>
    <thetext>hmm, I think this approach doesn&apos;t work, I&apos;m trying a new one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996219</commentid>
    <comment_count>3</comment_count>
      <attachid>228267</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-01 04:57:06 -0700</bug_when>
    <thetext>Created attachment 228267
Updated patch

Slightly different approach to ensure that main() functions only depend on a public symbol in the libs like current code does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996220</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-01 04:58:06 -0700</bug_when>
    <thetext>Attachment 228267 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/efl/NetworkProcessMainEfl.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/NetworkProcess/gtk/NetworkProcessMainGtk.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996225</commentid>
    <comment_count>5</comment_count>
      <attachid>228269</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-01 05:18:05 -0700</bug_when>
    <thetext>Created attachment 228269
Try to fix EFL build

Use WK_EXPORT instead of WTF_EXPORT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996226</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-01 05:19:00 -0700</bug_when>
    <thetext>Attachment 228269 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/efl/NetworkProcessMainEfl.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/NetworkProcess/gtk/NetworkProcessMainGtk.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011007</commentid>
    <comment_count>7</comment_count>
      <attachid>228269</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-05-22 10:16:05 -0700</bug_when>
    <thetext>Comment on attachment 228269
Try to fix EFL build

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

I&apos;m unsure how much complexity and code this saves, it doesn&apos;t look like a lot, but I you&apos;re probably a better judge of that than me. One thing that bothers me is that in theory we could use these same implementations for Gtk on Windows, say, but I guess Unix is still sensible as a name since we&apos;d be using GNU libraries even on windows, so r=me.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Move main function implementation files to &lt;process-dir&gt;/EntryPoint/unix/ProcessNameMain.cpp

add &lt;&gt; around ProcessName to be clearer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011200</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-23 01:35:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 228269 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228269&amp;action=review

Thanks for the review.

&gt; I&apos;m unsure how much complexity and code this saves, it doesn&apos;t look like a lot, but I you&apos;re probably a better judge of that than me. One thing that bothers me is that in theory we could use these same implementations for Gtk on Windows, say, but I guess Unix is still sensible as a name since we&apos;d be using GNU libraries even on windows, so r=me.

Well, this is more about keeping consistency than saving code. When I moved the NEWS file to Source/WebKit2/gtk I noticed there was a MainGtk.cpp file there. And I thought Main what? it ended up being the main function of the WebProcess. When we only had one process, it probably was less confusing, but still misplaced, it should be in Source/WebKit2/WebProcess/gtk at least. Then I looked at the different main functions, and noticed that in some cases we were sharing the implementation with EFL (but with a full of ifdefs) and in others every port had its own file. So, I took a look at what apple did for the entry points, and inspired by the mac implementation I reorganized the &quot;unix&quot; entry points.

&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        Move main function implementation files to &lt;process-dir&gt;/EntryPoint/unix/ProcessNameMain.cpp
&gt; 
&gt; add &lt;&gt; around ProcessName to be clearer?

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011201</commentid>
    <comment_count>9</comment_count>
      <attachid>231951</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-23 01:36:16 -0700</bug_when>
    <thetext>Created attachment 231951
Rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011202</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-23 01:39:11 -0700</bug_when>
    <thetext>Attachment 231951 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/efl/NetworkProcessMainEfl.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/NetworkProcess/gtk/NetworkProcessMainGtk.cpp:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011213</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-23 02:58:34 -0700</bug_when>
    <thetext>Committed r169255: &lt;http://trac.webkit.org/changeset/169255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228260</attachid>
            <date>2014-04-01 02:55:40 -0700</date>
            <delta_ts>2014-04-01 04:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-unix-main.diff</filename>
            <type>text/plain</type>
            <size>61314</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YjBhMzExLi5iYTFmNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTQtMDQtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBSZW9yZ2FuaXplIGFuZCBjbGVhbnVwIG1haW4gZnVuY3Rpb25z
IG9mIEdUSyBhbmQgRUZMIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzEwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIG1haW4gZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZmlsZXMgdG8g
PHByb2Nlc3MtZGlyPi9FbnRyeVBvaW50L3VuaXgvUHJvY2Vzc05hbWVVbml4LmNwcAorICAgICAg
ICBmaWxlcyB0aGF0IGFyZSBub3cgc2hhcmVkIGJ5IEdUSyBhbmQgRUZMIHBvcnRzLiBUaGlzIGZp
bGVzIGNhbGwgYQorICAgICAgICBuZXcgbWV0aG9kIENoaWxkUHJvY2Vzc01haW4gdGhhdCBjb250
YWlucyB0aGUgY29tbW9uIGNvZGUgYW5kIHVzZXMKKyAgICAgICAgYSBoZWxwZXIgY2xhc3MgZm9y
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBHVEsrIGFuZCBFRkwgcG9ydHMKKyAgICAgICAg
aW1wbGVtZW50IHRoYXQgaGVscGVyIGNsYXNzIGZvciBldmVyeSBwcm9jZXNzIHR5cGUuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvTmV0d29ya1Byb2Nlc3NNYWlu
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3Bw
LgorICAgICAgICAobWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQ
cm9jZXNzTWFpbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzTWFpbkVmbC5oLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3Jr
UHJvY2Vzc01haW5FZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvdW5peC9OZXR3
b3JrTWFpblVuaXguY3BwLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01haW46OnBs
YXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFpbjo6
cGxhdGZvcm1GaW5hbGl6ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQ
cm9jZXNzTWFpbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91
bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9n
dGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluOjpwbGF0Zm9ybUZpbmFsaXplKToKKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9ndGsvTWFpbkd0ay5jcHAuCisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW4u
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguaC4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6d2Via2l0WEVycm9yKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW46OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluOjpwYXJzZUNvbW1hbmRMaW5lKToKKyAgICAg
ICAgKiBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuaC4KKyAgICAgICAgKFdl
YktpdDo6Q2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBhcnNlQ29tbWFuZExpbmUpOgorICAgICAgICAq
IFNoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oLgorICAgICAg
ICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBsYXRmb3JtRmluYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6aW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYktpdDIvZWZsL01haW5FZmwuY3BwLgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW4uaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzTWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc01haW46OnBsYXRmb3JtRmluYWxpemUpOgorICAgICAgICAoZHVtbXlFeHRlbnNpb25F
cnJvckhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NNYWluLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzTWFpbkVmbC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWlu
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW46OnBsYXRmb3JtSW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluOjpwbGF0Zm9ybUZpbmFsaXpl
KToKKwogMjAxNC0wMy0zMSAgUGV0ZXIgTW9sbmFyICA8cG1vbG5hci51LXN6ZWdlZEBwYXJ0bmVy
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIEJ1aWxkZml4IGFmdGVyIHIxNjY0OTcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvTmV0d29y
a1Byb2Nlc3NNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjcyZTMzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluLmNwcApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW4uaCIK
KworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gQ2hpbGRQ
cm9jZXNzTWFpbjxOZXR3b3JrUHJvY2VzcywgTmV0d29ya1Byb2Nlc3NNYWluPihhcmdjLCBhcmd2
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3
b3JrUHJvY2Vzc01haW4uaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3
b3JrUHJvY2Vzc01haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzJi
NjBjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Vm
bC9OZXR3b3JrUHJvY2Vzc01haW4uaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1Byb2Nlc3NN
YWluX2gKKyNkZWZpbmUgTmV0d29ya1Byb2Nlc3NNYWluX2gKKworI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc01haW4uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNz
TWFpbiBmaW5hbDogcHVibGljIENoaWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtRmluYWxpemUoKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVmMmNiNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vz
c01haW5FZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENv
bXBhbnkgMTAwIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNYWluLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW5jbHVkZSA8
RWNvcmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgorI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2Jvb2wgTmV0d29ya1Byb2Nlc3NNYWluOjpwbGF0Zm9ybUluaXRpYWxp
emUoKQoreworICAgIGlmICghZWNvcmVfaW5pdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0
dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBOZXR3b3JrUHJvY2Vzc01haW46OnBsYXRmb3JtRmluYWxpemUoKQoreworICAgIGlmIChTb3Vw
Q2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5j
YWNoZSgpKSB7CisgICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAg
c291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgfQorCisgICAgZWNvcmVfc2h1dGRvd24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3Rr
L05ldHdvcmtQcm9jZXNzTWFpbi5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3Rr
L05ldHdvcmtQcm9jZXNzTWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjUzMmI2MGNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc01haW5faAorI2RlZmluZSBOZXR3b3JrUHJvY2Vzc01haW5faAorCisjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzTWFpbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1By
b2Nlc3NNYWluIGZpbmFsOiBwdWJsaWMgQ2hpbGRQcm9jZXNzTWFpbkJhc2UgeworcHVibGljOgor
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWlu
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTYzZDhkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQ
cm9jZXNzTWFpbkd0ay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwIEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYWluLmgiCisK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0
d29ya1Nlc3Npb24uaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIE5ldHdvcmtQcm9jZXNz
TWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3Rl
bSBDQXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCisgICAgLy8gYWNjZXB0aW5nIGlu
dmFsaWQgY2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQorICAgIC8vIGFk
ZGVkIGxhdGVyIHRvIGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQgaW52YWxpZCBjZXJ0aWZpY2F0
ZXMuCisgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGlj
eShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVzZVN5c3RlbUNBRmlsZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NNYWluOjpwbGF0Zm9ybUZpbmFsaXplKCkKK3sK
KyAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1
bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNo
ZSk7CisgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJv
Y2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0
d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0
YzY2YTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9O
ZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwIEluYy4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oIgotCi0jaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKLQotI2luY2x1ZGUgIldLQmFzZS5oIgotI2luY2x1ZGUgIldlYktp
dDJJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4K
LSNpbmNsdWRlIDxXZWJLaXQyL05ldHdvcmtQcm9jZXNzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KLQotI2lmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxFY29yZS5o
PgotI2VuZGlmCi0KLSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNl
bmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdLX0VYUE9SVCBpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
Ci17Ci0gICAgaWYgKGFyZ2MgIT0gMikKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSNpZiBQTEFURk9S
TShFRkwpCi0gICAgaWYgKCFlY29yZV9pbml0KCkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAg
aWYgKCFlY29yZV9tYWluX2xvb3BfZ2xpYl9pbnRlZ3JhdGUoKSkKLSAgICAgICAgcmV0dXJuIDE7
Ci0jZW5kaWYKLQotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7Ci0KLSAgICBTb3VwTmV0d29ya1Nl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsK
LQotICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwotCi0gICAgV2ViS2l0OjpDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJz
LmNvbm5lY3Rpb25JZGVudGlmaWVyID0gc29ja2V0OwotCi0gICAgTmV0d29ya1Byb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7Ci0KLSNpZiBVU0UoU09VUCkKLSAgICAvLyBE
ZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCi0g
ICAgLy8gYWNjZXB0aW5nIGludmFsaWQgY2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkg
d2lsbCBiZQotICAgIC8vIGFkZGVkIGxhdGVyIHRvIGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQg
aW52YWxpZCBjZXJ0aWZpY2F0ZXMuCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVzZVN5c3RlbUNBRmls
ZSk7Ci0jZW5kaWYKLQotICAgIFJ1bkxvb3A6OnJ1bigpOwotCi0jaWYgVVNFKFNPVVApCi0gICAg
aWYgKFNvdXBDYWNoZSogc291cENhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLmNhY2hlKCkpIHsKLSAgICAgICAgc291cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUpOwot
ICAgICAgICBzb3VwX2NhY2hlX2R1bXAoc291cENhY2hlKTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYjYyZWRhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6
ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55
IDEwMCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTmV0d29ya1Byb2Nlc3NNYWluVW5peF9oCi0j
ZGVmaW5lIE5ldHdvcmtQcm9jZXNzTWFpblVuaXhfaAotCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJu
ICJDIiB7Ci1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NNYWluVW5peF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDAwZjVjMWIuLjUxZjJkNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xLDEwICsxLDEwIEBACiBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKKyAgICBOZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcAor
CiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiAgICAgTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyU291cC5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKIAot
ICAgIE5ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKLQogICAg
IFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAogCkBAIC01NCw2ICs1NCw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKIAorICAgIFNoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCisKICAgICBVSVBy
b2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcApAQCAtMjIyLDEzICsyMjQsMTQgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIK
LSAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvdW5peCIKKyAgICAiJHtXRUJLSVQy
X0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9ybS9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9T
aGFyZWQvRG93bmxvYWRzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9zb3VwIgorICAgICIke1dFQktJVDJfRElSfS9TaGFy
ZWQvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2NhaXJvIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2VmbCIKQEAgLTI5MywxMSArMjk2LDEx
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfTElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYlBy
b2Nlc3NfU09VUkNFUwotICAgIGVmbC9NYWluRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQ
b2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcAogKQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJv
Y2Vzc19TT1VSQ0VTCi0gICAgICAgIHVuaXgvTmV0d29ya01haW5Vbml4LmNwcAorICAgIE5ldHdv
cmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIGxp
c3QoQVBQRU5EIFdlYlByb2Nlc3NfTElCUkFSSUVTCkBAIC00MDksNyArNDEyLDcgQEAgaWYgKEVO
QUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UGx1Z2luUHJv
Y2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTfSkKIAogICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nl
c3NfU09VUkNFUwotICAgICAgICAke1dFQktJVDJfRElSfS91bml4L1BsdWdpbk1haW5Vbml4LmNw
cAorICAgICAgICAke1dFQktJVDJfRElSfS9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpbi5jcHAKICAgICApCiAKICAgICBpZiAoRU5BQkxFX0VDT1JFX1gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDVkZmM2OGIuLmY0NmE3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0yMSwxMiArMjEsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRF
bnVtVHlwZXMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9X
ZWJLaXRNYXJzaGFsLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNz
TWFpbkd0ay5jcHAKKwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
clNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dFNvdXAuY3BwCiAKLSAgICBOZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVu
aXguY3BwCi0KICAgICBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQ
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKIApAQCAtNzUsNiArNzUsOCBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwCiAKKyAgICBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNw
cAorCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCiAKQEAgLTM5NywxMiArMzk5LDEzIEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQi
CisgICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQcm9jZXNzL2d0ayIKICAgICAiJHtXRUJLSVQy
X0RJUn0vU2hhcmVkL0FQSS9jL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Eb3du
bG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ayIKICAgICAiJHtXRUJL
SVQyX0RJUn0vU2hhcmVkL3NvdXAiCi0gICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQcm9jZXNz
L3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91bml4IgogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgpA
QCAtNDM4LDExICs0NDEsMTEgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9S
SUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUwotICAgIGd0ay9NYWluR3Rr
LmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcAog
KQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTCi0gICAgdW5peC9OZXR3b3Jr
TWFpblVuaXguY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC91bml4L05ldHdvcmtQ
cm9jZXNzTWFpbi5jcHAKICkKIAogc2V0KFNoYXJlZFdlYktpdDJMaWJyYXJpZXMKQEAgLTU1NSw2
ICs1NTgsOCBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQogCiAgICAgICAgIFBsYXRmb3Jt
L3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIAorICAgICAgICBQbHVnaW5Qcm9jZXNzL0VudHJ5
UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKKwogICAgICAgICBQbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKICAgICAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAgICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5jcHAKQEAgLTYwMSw2ICs2MDYsOCBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQogCiAg
ICAgICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKKyAgICAg
ICAgU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAKKwogICAgICAgICBVSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAogCiAgICAgICAgIFVJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtNjE3LDggKzYyNCw2IEBAIGlmIChFTkFC
TEVfUExVR0lOX1BST0NFU1MpCiAKICAgICAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKIAotICAgICAgICB1bml4L1BsdWdpbk1haW5Vbml4
LmNwcAotCiAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfS9QbHVnaW5Db250
cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VT
X1dFQktJVDJfRElSfS9QbHVnaW5Qcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCkBAIC02NTgsNyArNjYzLDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VT
UykKIAogICAgICMgR1RLMyBQbHVnaW5Qcm9jZXNzCiAgICAgbGlzdChBUFBFTkQgUGx1Z2luUHJv
Y2Vzc19TT1VSQ0VTCi0gICAgICAgIHVuaXgvUGx1Z2luTWFpblVuaXguY3BwCisgICAgICAgIFBs
dWdpblByb2Nlc3MvRW50cnlQb2ludC91bml4L1BsdWdpblByb2Nlc3NNYWluLmNwcAogICAgICkK
IAogZW5kaWYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC91bml4L1BsdWdpblByb2Nlc3NNYWluLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC91bml4L1BsdWdpblBy
b2Nlc3NNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjJjODMw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBv
aW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluLmgiCisKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxQbHVnaW5Qcm9j
ZXNzLCBQbHVnaW5Qcm9jZXNzTWFpbj4oYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNDE1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5faAorI2RlZmluZSBQbHVnaW5Qcm9jZXNz
TWFpbl9oCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBQbHVnaW5Qcm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENoaWxkUHJvY2Vz
c01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXpl
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCA2
YTRjMjZlLi45ZTQ5ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNCBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4K
ICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgKgpAQCAtMjYsMTAw
ICsyNiw3NyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzTWFpblVuaXguaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbi5oIgogCiAjaWYg
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgotI2luY2x1ZGUg
IldlYktpdDJJbml0aWFsaXplLmgiCi0jaW5jbHVkZSA8bGliZ2VuLmg+Ci0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKICNpZiBQTEFURk9STShH
VEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2lmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkKLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2VuZGlmCiAjZWxpZiBQ
TEFURk9STShFRkwpICYmIEhBVkVfRUNPUkVfWAogI2luY2x1ZGUgPEVjb3JlX1guaD4KICNlbmRp
ZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNp
ZmRlZiBYUF9VTklYCisjaWYgZGVmaW5lZChYUF9VTklYKQogCiAjaWYgIUxPR19ESVNBQkxFRAog
c3RhdGljIGNvbnN0IGNoYXIgeEVycm9yU3RyaW5nW10gPSAiVGhlIHByb2dyYW0gJyVzJyByZWNl
aXZlZCBhbiBYIFdpbmRvdyBTeXN0ZW0gZXJyb3IuXG4iCiAgICAgIlRoaXMgcHJvYmFibHkgcmVm
bGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKICAgICAiVGhlIGVycm9yIHdhcyAn
JXMnLlxuIgogICAgICIgIChEZXRhaWxzOiBzZXJpYWwgJWxkIGVycm9yX2NvZGUgJWQgcmVxdWVz
dF9jb2RlICVkIG1pbm9yX2NvZGUgJWQpXG4iOwotI2VuZGlmIC8qICFMT0dfRElTQUJMRUQgKi8K
KyNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLXN0YXRpYyBjaGFyKiBwcm9ncmFtTmFtZSA9IDA7
CitzdGF0aWMgQ1N0cmluZyBwcm9ncmFtTmFtZTsKIAogc3RhdGljIGludCB3ZWJraXRYRXJyb3Io
RGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKIHsKICAgICBjaGFyIGVycm9y
TWVzc2FnZVs2NF07CiAgICAgWEdldEVycm9yVGV4dCh4ZGlzcGxheSwgZXJyb3ItPmVycm9yX2Nv
ZGUsIGVycm9yTWVzc2FnZSwgNjMpOwogCi0gICAgTE9HKFBsdWdpbnMsIHhFcnJvclN0cmluZywK
LSAgICAgICAgcHJvZ3JhbU5hbWUsIGVycm9yTWVzc2FnZSwKLSAgICAgICAgZXJyb3ItPnNlcmlh
bCwgZXJyb3ItPmVycm9yX2NvZGUsCi0gICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVycm9y
LT5taW5vcl9jb2RlKTsKKyAgICBMT0coUGx1Z2lucywgeEVycm9yU3RyaW5nLCBwcm9ncmFtTmFt
ZS5kYXRhKCksIGVycm9yTWVzc2FnZSwgZXJyb3ItPnNlcmlhbCwgZXJyb3ItPmVycm9yX2NvZGUs
IGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVycm9yLT5taW5vcl9jb2RlKTsKIAogICAgIHJldHVybiAw
OwogfQotI2VuZGlmCisjZW5kaWYgLy8gWFBfVU5JWAogCi1XS19FWFBPUlQgaW50IFBsdWdpblBy
b2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhciogYXJndltdKQorYm9vbCBQbHVnaW5Qcm9jZXNz
TWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKLSAgICBib29sIHNjYW5QbHVnaW4gPSAhc3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIp
OwotI2VuZGlmCi0gICAgQVNTRVJUX1VOVVNFRChhcmdjLCBhcmdjID09IDMpOwotCiAjaWYgUExB
VEZPUk0oR1RLKQotICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CisgICAgZ3RrX2luaXQobnVs
bHB0ciwgbnVsbHB0cik7CiAjZWxpZiBQTEFURk9STShFRkwpCiAjaWZkZWYgSEFWRV9FQ09SRV9Y
CiAgICAgaWYgKCFlY29yZV94X2luaXQoMCkpCiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzTWFpbjo6cGFyc2VDb21t
YW5kTGluZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgQVNTRVJUKGFyZ2MgPT0gMyk7
CisgICAgaWYgKGFyZ2MgIT0gMykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgaWYgKHNjYW5QbHVnaW4pIHsKLSAgICAgICAgU3RyaW5n
IHBsdWdpblBhdGgoYXJndlsyXSk7Ci0gICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6
OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF
OwotICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwotICAgIH0KLSNlbmRpZgorICAgIGlmICgh
c3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpKQorICAgICAgICBleGl0KE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpzY2FuUGx1Z2luKGFyZ3ZbMl0pID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlM
VVJFKTsKIAotICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUgaGFu
ZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKLSAgICAvLyBleGl0cyB0aGUg
cHJvY2Vzcy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1Z3Ms
IHdlIGluc3RhbGwgYQotICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3YXJu
aW5nIHdoZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KICNpZiBkZWZpbmVk
KFhQX1VOSVgpCi0gICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKKyAgICBwcm9n
cmFtTmFtZSA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShhcmd2WzBdKS51dGY4KCk7CiAgICAg
WFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3IpOwogI2VuZGlmCiAKLSAgICBpbnQgc29ja2V0
ID0gYXRvaShhcmd2WzFdKTsKLQotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRp
ZmllciA9IHNvY2tldDsKLSAgICBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZCgicGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKLQotICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6
c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKLQotICAgIFJ1bkxvb3A6OnJ1bigpOwot
Ci0gICAgcmV0dXJuIDA7CisgICAgbV9wYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmFkZCgicGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKKyAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFp
bkJhc2U6OnBhcnNlQ29tbWFuZExpbmUoYXJnYywgYXJndik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NNYWluVW5peC5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
NDBjNTk2YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgv
UGx1Z2luUHJvY2Vzc01haW5Vbml4LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbHVnaW5Qcm9jZXNzTWFp
blVuaXhfaAotI2RlZmluZSBQbHVnaW5Qcm9jZXNzTWFpblVuaXhfaAotCi0jaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1
cwotZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluVW5peChpbnQg
YXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNw
bHVzCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01h
aW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNz
TWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGQ1M2YyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFp
bi5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29s
IENoaWxkUHJvY2Vzc01haW5CYXNlOjpwYXJzZUNvbW1hbmRMaW5lKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBBU1NFUlQoYXJnYyA+PSAyKTsKKyAgICBpZiAoYXJnYyA8IDIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmll
ciA9IGF0b2koYXJndlsxXSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFBy
b2Nlc3NNYWluLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWlu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyY2IwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uaApA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ2hpbGRQcm9jZXNzTWFpbl9oCisjZGVmaW5lIENoaWxkUHJvY2Vz
c01haW5faAorCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViS2l0Mklu
aXRpYWxpemUuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgQ2hpbGRQcm9jZXNzTWFpbkJhc2UgeworcHVibGljOgorICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIHsgfQorCisgICAgY29uc3QgQ2hpbGRQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKworcHJvdGVjdGVkOgorICAgIENoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGlsZFByb2Nlc3NUeXBlLCB0eXBlbmFtZSBDaGlsZFByb2Nlc3NNYWluVHlwZT4KK2lu
dCBDaGlsZFByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBDaGlsZFBy
b2Nlc3NNYWluVHlwZSBjaGlsZE1haW47CisKKyAgICBpZiAoIWNoaWxkTWFpbi5wbGF0Zm9ybUlu
aXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIEluaXRpYWxp
emVXZWJLaXQyKCk7CisKKyAgICBpZiAoIWNoaWxkTWFpbi5wYXJzZUNvbW1hbmRMaW5lKGFyZ2Ms
IGFyZ3YpKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgQ2hpbGRQcm9jZXNz
VHlwZTo6c2hhcmVkKCkuaW5pdGlhbGl6ZShjaGlsZE1haW4uaW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzKCkpOworICAgIFJ1bkxvb3A6OnJ1bigpOworICAgIGNoaWxkTWFpbi5wbGF0Zm9ybUZpbmFs
aXplKCk7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIENoaWxkUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZTdhMDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQ
cm9jZXNzTWFpbi5jcHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc01haW4uaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAg
IHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFdlYlByb2Nlc3MsIFdlYlByb2Nlc3NNYWluPihhcmdj
LCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NNYWluLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNz
TWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOTE2NjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQcm9jZXNzTWFpbl9oCisjZGVmaW5lIFdlYlByb2Nl
c3NNYWluX2gKKworI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4uaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NNYWluIGZpbmFsOiBwdWJsaWMgQ2hpbGRQcm9jZXNz
TWFpbkJhc2UgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJQcm9jZXNzTWFp
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNz
TWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bkVmbC5jcHAKaW5kZXggN2FjYzhlYy4uMjQ4YjRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcApAQCAtMjQsMjQgKzI0LDE0
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNYWlu
RWZsLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01haW4uaCIKIAotI2luY2x1ZGUgIlByb3h5UmVz
b2x2ZXJTb3VwLmgiCi0jaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRp
YWxpemUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNp
bmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8RWZyZWV0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgotI2luY2x1
ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWZk
ZWYgSEFWRV9FQ09SRV9YCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgpAQCAtNTgsMTkgKzQ4LDE1IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV0tfRVhQ
T1JUIGludCBXZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciogYXJndltdKQorYm9vbCBX
ZWJQcm9jZXNzTWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICAvLyBXZWJQcm9jZXNz
IHNob3VsZCBiZSBsYXVuY2hlZCB3aXRoIGFuIG9wdGlvbi4KLSAgICBpZiAoYXJnYyAhPSAyKQot
ICAgICAgICByZXR1cm4gMTsKLQogICAgIGlmICghZWluYV9pbml0KCkpCi0gICAgICAgIHJldHVy
biAxOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWVjb3JlX2luaXQoKSkgewog
ICAgICAgICAvLyBDb3VsZCBub3QgaW5pdCBlY29yZS4KICAgICAgICAgZWluYV9zaHV0ZG93bigp
OwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogI2lm
ZGVmIEhBVkVfRUNPUkVfWApAQCAtODIsNyArNjgsNyBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nl
c3NNYWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgIC8vIGRlcGVuZCBvbiBl
Y29yZV94IGZ1bmN0aW9uYWxpdHkuCiAgICAgICAgIGVjb3JlX3NodXRkb3duKCk7CiAgICAgICAg
IGVpbmFfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAjZW5kaWYKIApAQCAtOTIsNyArNzgsNyBAQCBXS19FWFBPUlQgaW50IFdlYlBy
b2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjZW5kaWYKICAgICAgICAgZWNv
cmVfc2h1dGRvd24oKTsKICAgICAgICAgZWluYV9zaHV0ZG93bigpOwotICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghZWRqZV9pbml0KCkp
IHsKQEAgLTEwMiw3ICs4OCw3IEBAIFdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICNlbmRpZgogICAgICAgICBlY29yZV9zaHV0ZG93bigpOwog
ICAgICAgICBlaW5hX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAzNSwgMCkKQEAg
LTExMCwyMSArOTYsMTQgQEAgV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJn
YywgY2hhciogYXJndltdKQogI2VuZGlmCiAKICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGli
X2ludGVncmF0ZSgpKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIEluaXRpYWxpemVXZWJLaXQy
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOworICAgIHJldHVy
biB0cnVlOworfQogCi0gICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0KLSAgICBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0
ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gc29ja2V0OwotCi0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKLQotICAgIFJ1bkxvb3A6OnJ1bigpOwotCit2
b2lkIFdlYlByb2Nlc3NNYWluOjpwbGF0Zm9ybUZpbmFsaXplKCkKK3sKICAgICBpZiAoU291cENh
Y2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2Fj
aGUoKSkgewogICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7CiAgICAgICAgIHNv
dXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOwpAQCAtMTM3LDkgKzExNiw2IEBAIFdLX0VYUE9SVCBp
bnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICNlbmRpZgogICAg
IGVjb3JlX3NodXRkb3duKCk7CiAgICAgZWluYV9zaHV0ZG93bigpOwotCi0gICAgcmV0dXJuIDA7
Ci0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzRkNDc0My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzTWFpbkVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2Nlc3NNYWluRWZsX2gKLSNkZWZpbmUg
V2ViUHJvY2Vzc01haW5FZmxfaAotCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci1XS19F
WFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAv
LyBleHRlcm4gIkMiCi0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJQcm9jZXNzTWFpbkVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMzkxNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW4uaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJvY2Vz
c01haW5faAorI2RlZmluZSBXZWJQcm9jZXNzTWFpbl9oCisKKyNpbmNsdWRlICJDaGlsZFByb2Nl
c3NNYWluLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzTWFpbiBm
aW5hbDogcHVibGljIENoaWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtRmluYWxpemUoKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDU3ZDRhYjMuLmJlYTk3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWlu
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFp
bkd0ay5jcHAKQEAgLTI1LDYxICsyNSw0MiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNYWlu
LmgiCiAKLSNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0
d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nlc3MuaD4KICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGliaW50bC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5HdGso
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK2Jvb2wgV2ViUHJvY2Vzc01haW46OnBsYXRmb3JtSW5p
dGlhbGl6ZSgpCiB7Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMik7Ci0KICNpZm5kZWYgTkRFQlVHCiAg
ICAgaWYgKGdfZ2V0ZW52KCJXRUJLSVQyX1BBVVNFX1dFQl9QUk9DRVNTX09OX0xBVU5DSCIpKQog
ICAgICAgICBzbGVlcCgzMCk7CiAjZW5kaWYKLQotICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7
CisgICAgZ3RrX2luaXQobnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBiaW5kdGV4dGRvbWFpbihH
RVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7CiAgICAgYmluZF90ZXh0ZG9tYWlu
X2NvZGVzZXQoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKIAotICAgIEluaXRpYWxpemVXZWJL
aXQyKCk7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKLQotICAgIENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMu
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBzb2NrZXQ7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwotCiAgICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0g
Q0FzIHRvIHZhbGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQogICAgIC8vIGFjY2VwdGluZyBpbnZh
bGlkIGNlcnRpZmljYXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKICAgICAvLyBhZGRl
ZCBsYXRlciB0byBsZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVz
LgogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3ko
U291cE5ldHdvcmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOworICAgIHJldHVybiB0cnVl
OworfQogCi0gICAgUnVuTG9vcDo6cnVuKCk7Ci0KK3ZvaWQgV2ViUHJvY2Vzc01haW46OnBsYXRm
b3JtRmluYWxpemUoKQorewogICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3
b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7CiAgICAgICAgIHNvdXBfY2Fj
aGVfZmx1c2goc291cENhY2hlKTsKICAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7
CiAgICAgfQotCi0gICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGFmODMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYlByb2Nlc3NNYWluR3RrX2gKLSNkZWZpbmUgV2ViUHJvY2Vzc01haW5HdGtfaAotCi0j
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWlu
R3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYgLy8g
X19jcGx1c3BsdXMKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJQcm9j
ZXNzTWFpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvTWFpbkVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9lZmwvTWFpbkVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGMwNjIwM2EuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZWZsL01haW5FZmwuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiV2ViUHJvY2Vzc01haW5FZmwuaCIKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQotewotICAgIHJldHVybiBXZWJLaXQ6OldlYlByb2Nlc3NNYWluRWZsKGFyZ2MsIGFy
Z3YpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwIGIvU291
cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxNmY4OTkwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL2d0ay9NYWluR3RrLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc01haW5HdGsuaCIKLQotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQotewotICAgIHJldHVybiBXZWJLaXQ6OldlYlByb2Nlc3NNYWluR3Rr
KGFyZ2MsIGFyZ3YpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvdW5peC9OZXR3b3Jr
TWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvdW5peC9OZXR3b3JrTWFpblVuaXguY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjA0ZmQzLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3VuaXgvTmV0d29ya01haW5Vbml4LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBTemVnZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
LQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIKLQotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQotewotICAgIHJldHVybiBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFp
bihhcmdjLCBhcmd2KTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwN2Y5YTBkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2lu
TWFpblVuaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9u
cyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIK
LQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICAgIHJldHVybiBXZWJLaXQ6
OlBsdWdpblByb2Nlc3NNYWluVW5peChhcmdjLCBhcmd2KTsKLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228267</attachid>
            <date>2014-04-01 04:57:06 -0700</date>
            <delta_ts>2014-04-01 05:18:05 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-unix-main2.diff</filename>
            <type>text/plain</type>
            <size>54167</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YjBhMzExLi5jN2E2NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTQtMDQtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBSZW9yZ2FuaXplIGFuZCBjbGVhbnVwIG1haW4gZnVuY3Rpb25z
IG9mIEdUSyBhbmQgRUZMIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzEwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIG1haW4gZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZmlsZXMgdG8g
PHByb2Nlc3MtZGlyPi9FbnRyeVBvaW50L3VuaXgvUHJvY2Vzc05hbWVNYWluLmNwcAorICAgICAg
ICBmaWxlcyB0aGF0IGFyZSBub3cgc2hhcmVkIGJ5IEdUSyBhbmQgRUZMIHBvcnRzLiBUaGVzZSBm
aWxlcyBjYWxsIGEKKyAgICAgICAgbWFpbiBtZXRob2QgdGhhdCB3cmFwcyBhIG5ldyBtZXRob2Qg
Q2hpbGRQcm9jZXNzTWFpbiB0aGF0IGNvbnRhaW5zCisgICAgICAgIHRoZSBjb21tb24gY29kZSBh
bmQgdXNlcyBhIGhlbHBlciBjbGFzcyBmb3IgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAg
IGNvZGUuIEdUSysgYW5kIEVGTCBwb3J0cyBpbXBsZW1lbnQgdGhhdCBoZWxwZXIgY2xhc3MgZm9y
IGV2ZXJ5IHByb2Nlc3MgdHlwZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvZWZsL01haW5FZmwuY3BwLgorICAgICAgICAobWFpbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3Jr
UHJvY2Vzc01haW5HdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvdW5peC9O
ZXR3b3JrUHJvY2Vzc01haW5Vbml4Lmg6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9FbnRy
eVBvaW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d2Via2l0WEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5V
bml4Lmg6CisgICAgICAgICogU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmgu
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc01haW5CYXNlOjpwYXJzZUNvbW1hbmRMaW5l
KToKKyAgICAgICAgKiBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5oLgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBsYXRmb3JtRmluYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6aW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwLgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAoZHVtbXlFeHRlbnNpb25FcnJv
ckhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5Vbml4KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5oLgorCiAyMDE0
LTAzLTMxICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQnVpbGRmaXggYWZ0ZXIgcjE2NjQ5Ny4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01h
aW4uY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC91bml4L05l
dHdvcmtQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGQ0Mjg3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBOZXR3b3Jr
UHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGUyMmVhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAx
MDAgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzTWFpbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8
RWNvcmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgorI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENo
aWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWVjb3JlX2luaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2lu
dGVncmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVu
dCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXRmb3JtRmlu
YWxpemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFNvdXBDYWNoZSogc291cENhY2hl
ID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpIHsKKyAgICAg
ICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAgICAgIHNvdXBfY2Fj
aGVfZHVtcChzb3VwQ2FjaGUpOworICAgICAgICB9CisKKyAgICAgICAgZWNvcmVfc2h1dGRvd24o
KTsKKyAgICB9Cit9OworCitpbnQgTmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCit7CisgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmtQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0YjYxNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJv
Y2Vzc01haW5HdGsuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIK
KworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NN
YWluLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENoaWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoK
KyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICAv
LyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3Jl
CisgICAgICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRpZmljYXRlcyBieSBkZWZhdWx0LiBO
ZXcgQVBJIHdpbGwgYmUKKyAgICAgICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2Nl
cHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4KKyAgICAgICAgU291cE5ldHdvcmtTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNT
TFVzZVN5c3RlbUNBRmlsZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZv
aWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoU291cENh
Y2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2Fj
aGUoKSkgeworICAgICAgICAgICAgc291cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUpOworICAgICAg
ICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CitpbnQgTmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7Cisg
ICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNz
TWFpbj4oYXJnYywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGM2NmE3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21w
YW55IDEwMCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzTWFpblVuaXguaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLSNpbmNsdWRl
ICJXS0Jhc2UuaCIKLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci0KLSNpZiBQTEFU
Rk9STShFRkwpCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNz
TWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQotewotICAgIGlmIChhcmdjICE9IDIpCi0gICAg
ICAgIHJldHVybiAxOwotCi0jaWYgUExBVEZPUk0oRUZMKQotICAgIGlmICghZWNvcmVfaW5pdCgp
KQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50
ZWdyYXRlKCkpCi0gICAgICAgIHJldHVybiAxOwotI2VuZGlmCi0KLSAgICBJbml0aWFsaXplV2Vi
S2l0MigpOwotCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVw
SFRUUFByb3h5RnJvbUVudmlyb25tZW50KCk7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2
WzFdKTsKLQotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tl
dDsKLQotICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMp
OwotCi0jaWYgVVNFKFNPVVApCi0gICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZh
bGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQotICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRp
ZmljYXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKLSAgICAvLyBhZGRlZCBsYXRlciB0
byBsZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgotICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdv
cmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOwotI2VuZGlmCi0KLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotI2lmIFVTRShTT1VQKQotICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIHNv
dXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKLSAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBD
YWNoZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gMDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5V
bml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNz
TWFpblVuaXguaAppbmRleCBjYjYyZWRhLi5mMDAyZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXgu
aApAQCAtMjcsMTUgKzI3LDEzIEBACiAjaWZuZGVmIE5ldHdvcmtQcm9jZXNzTWFpblVuaXhfaAog
I2RlZmluZSBOZXR3b3JrUHJvY2Vzc01haW5Vbml4X2gKIAotI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKLVdLX0VYUE9SVCBpbnQgTmV0
d29ya1Byb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAvLyBleHRlcm4gIkMi
Ci0jZW5kaWYgLy8gX19jcGx1c3BsdXMKK1dURl9FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFp
blVuaXgoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMDBmNWMxYi4uYmUyZjExMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEsMTAgKzEsMTAgQEAKIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUworICAgIE5ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwu
Y3BwCisKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKICAg
ICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXJTb3VwLmNw
cAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNw
cAogCi0gICAgTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcAot
CiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0v
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAKQEAgLTU0LDYgKzU0LDggQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcAogCisgICAgU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAKKwogICAg
IFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCkBAIC0yMjIsNiArMjI0LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFu
dCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZsIgogICAgICIke1dFQktJ
VDJfRElSfS9OZXR3b3JrUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9y
bS9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCkBAIC0yMjksNiAr
MjMyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1NoYXJlZC9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCisgICAgIiR7V0VC
S0lUMl9ESVJ9L1NoYXJlZC91bml4IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L0MvY2Fpcm8iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRl
ZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsIgpAQCAt
MjQxLDYgKzI0NSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKKyAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTI5MywxMSArMjk4LDExIEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfTElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09V
UkNFUwotICAgIGVmbC9NYWluRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQb2ludC91bml4
L1dlYlByb2Nlc3NNYWluLmNwcAogKQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VS
Q0VTCi0gICAgICAgIHVuaXgvTmV0d29ya01haW5Vbml4LmNwcAorICAgIE5ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIGxpc3QoQVBQRU5E
IFdlYlByb2Nlc3NfTElCUkFSSUVTCkBAIC00MDksNyArNDE0LDcgQEAgaWYgKEVOQUJMRV9QTFVH
SU5fUFJPQ0VTUykKICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UGx1Z2luUHJvY2Vzc19JTkNM
VURFX0RJUkVDVE9SSUVTfSkKIAogICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNF
UwotICAgICAgICAke1dFQktJVDJfRElSfS91bml4L1BsdWdpbk1haW5Vbml4LmNwcAorICAgICAg
ICAke1dFQktJVDJfRElSfS9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9j
ZXNzTWFpbi5jcHAKICAgICApCiAKICAgICBpZiAoRU5BQkxFX0VDT1JFX1gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDVkZmM2OGIuLjMxNjgwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC0yMSwxMiArMjEsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMu
Y3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRNYXJz
aGFsLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5j
cHAKKwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlclNvdXAuY3Bw
CiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
CiAKLSAgICBOZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCi0K
ICAgICBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKIApAQCAtNzUsNiArNzUsOCBAQCBsaXN0KEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVy
c1NvdXAuY3BwCiAKKyAgICBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcAorCiAgICAg
VUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuY3BwCiAKQEAgLTM5NywxMiArMzk5LDE0IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9z
b3VwIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQiCisgICAgIiR7
V0VCS0lUMl9ESVJ9L05ldHdvcmtQcm9jZXNzL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vTmV0
d29ya1Byb2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0FQSS9jL2d0ayIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vU2hhcmVkL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCi0g
ICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1NoYXJlZC91bml4IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fp
cm8iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9ndGsiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgpAQCAtNDE1LDYgKzQxOSw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvZ3RrIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3NvdXAiCisgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9X
ZWJQYWdlL2F0ayIKQEAgLTQzOCwxMSArNDQzLDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5D
TFVERV9ESVJFQ1RPUklFUwogKQogCiBsaXN0KEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKLSAg
ICBndGsvTWFpbkd0ay5jcHAKKyAgICBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9j
ZXNzTWFpbi5jcHAKICkKIAogbGlzdChBUFBFTkQgTmV0d29ya1Byb2Nlc3NfU09VUkNFUwotICAg
IHVuaXgvTmV0d29ya01haW5Vbml4LmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQv
dW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIHNldChTaGFyZWRXZWJLaXQyTGlicmFy
aWVzCkBAIC01NTUsNiArNTYwLDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKIAogICAg
ICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAKKyAgICAgICAgUGx1Z2lu
UHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwCisKICAgICAgICAg
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCiAgICAgICAgIFBsdWdpblBy
b2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogICAgICAgICBQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuY3BwCkBAIC02MDEsNiArNjA4LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5f
UFJPQ0VTUykKIAogICAgICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcAogCisgICAgICAgIFNoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCisKICAgICAg
ICAgVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKIAogICAgICAgICBVSVBy
b2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTYxNyw4ICs2MjYs
NiBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQogCiAgICAgICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCiAKLSAgICAgICAgdW5peC9Q
bHVnaW5NYWluVW5peC5jcHAKLQogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJ
Un0vUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAKICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNjU4LDcgKzY2NSw3IEBAIGlmIChFTkFCTEVf
UExVR0lOX1BST0NFU1MpCiAKICAgICAjIEdUSzMgUGx1Z2luUHJvY2VzcwogICAgIGxpc3QoQVBQ
RU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUwotICAgICAgICB1bml4L1BsdWdpbk1haW5Vbml4LmNw
cAorICAgICAgICBQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFp
bi5jcHAKICAgICApCiAKIGVuZGlmICgpICMgRU5BQkxFX1BMVUdJTl9QUk9DRVNTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQv
dW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2RmNTA5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvRW50cnlQb2ludC91bml4L1BsdWdpblByb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBQbHVn
aW5Qcm9jZXNzTWFpblVuaXgoYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmlu
ZGV4IDZhNGMyNmUuLmUwNzFjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDE0IElnYWxpYSBTLkwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCkBAIC0z
MCw5NiArMzAsODIgQEAKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzc01haW4uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
c2NhcGVQbHVnaW4uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxsaWJnZW4uaD4KLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwogI2lmIFBMQVRGT1JNKEdUSykK
ICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaWYgUExBVEZPUk0oWDExKSAmJiBkZWZpbmVkKEdES19X
SU5ET1dJTkdfWDExKQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKICNlbGlmIFBMQVRG
T1JNKEVGTCkgJiYgSEFWRV9FQ09SRV9YCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgogI2VuZGlmCiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmZGVm
IFhQX1VOSVgKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCiAKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0
aWMgY29uc3QgY2hhciB4RXJyb3JTdHJpbmdbXSA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVk
IGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKICAgICAiVGhpcyBwcm9iYWJseSByZWZsZWN0
cyBhIGJ1ZyBpbiBhIGJyb3dzZXIgcGx1Z2luLlxuIgogICAgICJUaGUgZXJyb3Igd2FzICclcycu
XG4iCiAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2Nv
ZGUgJWQgbWlub3JfY29kZSAlZClcbiI7Ci0jZW5kaWYgLyogIUxPR19ESVNBQkxFRCAqLworI2Vu
ZGlmIC8vICFMT0dfRElTQUJMRUQKIAotc3RhdGljIGNoYXIqIHByb2dyYW1OYW1lID0gMDsKK3N0
YXRpYyBDU3RyaW5nIHByb2dyYW1OYW1lOwogCiBzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNw
bGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQqIGVycm9yKQogewogICAgIGNoYXIgZXJyb3JNZXNz
YWdlWzY0XTsKICAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwg
ZXJyb3JNZXNzYWdlLCA2Myk7CiAKLSAgICBMT0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAotICAg
ICAgICBwcm9ncmFtTmFtZSwgZXJyb3JNZXNzYWdlLAotICAgICAgICBlcnJvci0+c2VyaWFsLCBl
cnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1p
bm9yX2NvZGUpOworICAgIExPRyhQbHVnaW5zLCB4RXJyb3JTdHJpbmcsIHByb2dyYW1OYW1lLmRh
dGEoKSwgZXJyb3JNZXNzYWdlLCBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwgZXJy
b3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwogCiAgICAgcmV0dXJuIDA7CiB9
Ci0jZW5kaWYKLQotV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKLXsKLSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBib29s
IHNjYW5QbHVnaW4gPSAhc3RyY21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOwotI2VuZGlmCi0g
ICAgQVNTRVJUX1VOVVNFRChhcmdjLCBhcmdjID09IDMpOworI2VuZGlmIC8vIFhQX1VOSVgKIAor
Y2xhc3MgUGx1Z2luUHJvY2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFz
ZSB7CitwdWJsaWM6CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAg
IHsKICNpZiBQTEFURk9STShHVEspCi0gICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKKyAgICAg
ICAgZ3RrX2luaXQobnVsbHB0ciwgbnVsbHB0cik7CiAjZWxpZiBQTEFURk9STShFRkwpCiAjaWZk
ZWYgSEFWRV9FQ09SRV9YCi0gICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisgICAgICAgIGlmICgh
ZWNvcmVfeF9pbml0KDApKQogI2VuZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBJbml0aWFsaXplV2ViS2l0MigpOwotCi0jaWYg
UExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgaWYgKHNjYW5QbHVnaW4pIHsKLSAgICAgICAg
U3RyaW5nIHBsdWdpblBhdGgoYXJndlsyXSk7Ci0gICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5N
b2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gRVhJVF9G
QUlMVVJFOwotICAgICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0jZW5kaWYKIAotICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMg
dGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKLSAgICAv
LyBleGl0cyB0aGUgcHJvY2Vzcy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8g
cGx1Z2luIGJ1Z3MsIHdlIGluc3RhbGwgYQotICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRv
IHNob3cgYSB3YXJuaW5nIHdoZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4K
LSNpZiBkZWZpbmVkKFhQX1VOSVgpCi0gICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBd
KTsKLSAgICBYU2V0RXJyb3JIYW5kbGVyKHdlYmtpdFhFcnJvcik7Ci0jZW5kaWYKKyAgICBib29s
IHBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGFyZ2MgPT0gMyk7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsK
KyAgICAgICAgaWYgKCFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIikpCisgICAgICAgICAg
ICBleGl0KE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKGFyZ3ZbMl0pID8gRVhJVF9T
VUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIAotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9u
SWRlbnRpZmllciA9IHNvY2tldDsKLSAgICBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmFkZCgicGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKLQotICAgIFdlYktpdDo6UGx1Z2luUHJv
Y2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyNpZiBkZWZpbmVkKFhQX1VO
SVgpCisgICAgICAgIHByb2dyYW1OYW1lID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKGFyZ3Zb
MF0pLnV0ZjgoKTsKKyAgICAgICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3IpOworI2Vu
ZGlmCiAKLSAgICBSdW5Mb29wOjpydW4oKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLmV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgicGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKKyAgICAgICAgcmV0
dXJuIENoaWxkUHJvY2Vzc01haW5CYXNlOjpwYXJzZUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YpOwor
ICAgIH0KK307CiAKLSAgICByZXR1cm4gMDsKK2ludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFBsdWdp
blByb2Nlc3MsIFBsdWdpblByb2Nlc3NNYWluPihhcmdjLCBhcmd2KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmgKaW5kZXggNTQwYzU5NmEuLmRjYWJmMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpblVuaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2lu
UHJvY2Vzc01haW5Vbml4LmgKQEAgLTI3LDE2ICsyNywxNCBAQAogI2lmbmRlZiBQbHVnaW5Qcm9j
ZXNzTWFpblVuaXhfaAogI2RlZmluZSBQbHVnaW5Qcm9jZXNzTWFpblVuaXhfaAogCi0jaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi0jaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewotV0tf
RVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7
Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cworV1RGX0VYUE9SVCBpbnQg
UGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01haW5faAorI2VuZGlm
IC8vIFBsdWdpblByb2Nlc3NNYWluVW5peF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91
bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjYyOGJlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5p
eC9DaGlsZFByb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgQ2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBhcnNlQ29tbWFu
ZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIEFTU0VSVChhcmdjID49IDIpOwor
ICAgIGlmIChhcmdjIDwgMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9wYXJhbWV0
ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gYXRvaShhcmd2WzFdKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
dW5peC9DaGlsZFByb2Nlc3NNYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2YyY2IwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91bml4
L0NoaWxkUHJvY2Vzc01haW4uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hpbGRQcm9jZXNzTWFpbl9o
CisjZGVmaW5lIENoaWxkUHJvY2Vzc01haW5faAorCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgi
CisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ2hpbGRQcm9jZXNzTWFpbkJhc2Ugewor
cHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIHsgfQorCisgICAg
Y29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBpbml0aWFsaXphdGlv
blBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKworcHJvdGVjdGVk
OgorICAgIENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGlsZFByb2Nlc3NUeXBlLCB0eXBlbmFtZSBDaGls
ZFByb2Nlc3NNYWluVHlwZT4KK2ludCBDaGlsZFByb2Nlc3NNYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBDaGlsZFByb2Nlc3NNYWluVHlwZSBjaGlsZE1haW47CisKKyAgICBpZiAo
IWNoaWxkTWFpbi5wbGF0Zm9ybUluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJ
TFVSRTsKKworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBpZiAoIWNoaWxkTWFpbi5w
YXJzZUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YpKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF
OworCisgICAgQ2hpbGRQcm9jZXNzVHlwZTo6c2hhcmVkKCkuaW5pdGlhbGl6ZShjaGlsZE1haW4u
aW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKCkpOworICAgIFJ1bkxvb3A6OnJ1bigpOworICAgIGNo
aWxkTWFpbi5wbGF0Zm9ybUZpbmFsaXplKCk7CisKKyAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIENoaWxkUHJvY2Vzc01haW5f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgv
V2ViUHJvY2Vzc01haW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50
L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZjNjM3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc01haW5Vbml4LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2ludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzc01haW5V
bml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9l
ZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCmluZGV4IDdhY2M4ZWMuLmNiZWIzMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAK
QEAgLTI0LDI0ICsyNCwxNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJQcm9jZXNzTWFpbkVmbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluVW5peC5oIgog
Ci0jaW5jbHVkZSAiUHJveHlSZXNvbHZlclNvdXAuaCIKLSNpbmNsdWRlICJXS0Jhc2UuaCIKLSNp
bmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4u
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRl
IDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPEVmcmVldC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29y
a1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nlc3MuaD4KICNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmZGVmIEhBVkVfRUNPUkVfWAogI2luY2x1ZGUgPEVjb3JlX1guaD4K
QEAgLTU4LDg4ICs1MCw4MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKLXsKLSAgICAvLyBXZWJQcm9jZXNzIHNob3VsZCBiZSBsYXVuY2hlZCB3aXRo
IGFuIG9wdGlvbi4KLSAgICBpZiAoYXJnYyAhPSAyKQotICAgICAgICByZXR1cm4gMTsKLQotICAg
IGlmICghZWluYV9pbml0KCkpCi0gICAgICAgIHJldHVybiAxOworY2xhc3MgV2ViUHJvY2Vzc01h
aW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAgYm9v
bCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFlaW5h
X2luaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZWNvcmVfaW5p
dCgpKSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBpbml0IGVjb3JlLgotICAgICAgICBlaW5hX3No
dXRkb3duKCk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICAgICAgaWYgKCFlY29yZV9p
bml0KCkpIHsKKyAgICAgICAgICAgIC8vIENvdWxkIG5vdCBpbml0IGVjb3JlLgorICAgICAgICAg
ICAgZWluYV9zaHV0ZG93bigpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBYU2V0RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKGR1
bW15RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKTsKLQotICAgIGlmICghZWNvcmVfeF9pbml0KDApKSB7
Ci0gICAgICAgIC8vIENvdWxkIG5vdCBpbml0IGVjb3JlX3guCi0gICAgICAgIC8vIFBsYXRmb3Jt
U2NyZWVuRWZsIGFuZCBzeXN0ZW1CZWVwKCkgZnVuY3Rpb25zCi0gICAgICAgIC8vIGRlcGVuZCBv
biBlY29yZV94IGZ1bmN0aW9uYWxpdHkuCi0gICAgICAgIGVjb3JlX3NodXRkb3duKCk7Ci0gICAg
ICAgIGVpbmFfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgICAgICBY
U2V0RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKGR1bW15RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKTsKKwor
ICAgICAgICBpZiAoIWVjb3JlX3hfaW5pdCgwKSkgeworICAgICAgICAgICAgLy8gQ291bGQgbm90
IGluaXQgZWNvcmVfeC4KKyAgICAgICAgICAgIC8vIFBsYXRmb3JtU2NyZWVuRWZsIGFuZCBzeXN0
ZW1CZWVwKCkgZnVuY3Rpb25zCisgICAgICAgICAgICAvLyBkZXBlbmQgb24gZWNvcmVfeCBmdW5j
dGlvbmFsaXR5LgorICAgICAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIGVp
bmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogI2Vu
ZGlmCiAKLSAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CisgICAgICAgIGlmICghZWNvcmVf
ZXZhc19pbml0KCkpIHsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICAgICAgZWNvcmVfeF9zaHV0
ZG93bigpOworICAgICAgICAgICAgZWNvcmVfeF9zaHV0ZG93bigpOwogI2VuZGlmCi0gICAgICAg
IGVjb3JlX3NodXRkb3duKCk7Ci0gICAgICAgIGVpbmFfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0
dXJuIDE7Ci0gICAgfQorICAgICAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgICAg
IGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQog
Ci0gICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7
CisgICAgICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgICAgIGVjb3JlX2V2YXNfc2h1
dGRvd24oKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICAgICAgZWNvcmVfeF9zaHV0ZG93bigp
OworICAgICAgICAgICAgZWNvcmVfeF9zaHV0ZG93bigpOwogI2VuZGlmCi0gICAgICAgIGVjb3Jl
X3NodXRkb3duKCk7Ci0gICAgICAgIGVpbmFfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0dXJuIDE7
Ci0gICAgfQorICAgICAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIGVpbmFf
c2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogCiAjaWYg
IUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAzNSwgMCkKLSAgICBnX3R5cGVfaW5pdCgpOworICAgICAg
ICBnX3R5cGVfaW5pdCgpOwogI2VuZGlmCiAKLSAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGli
X2ludGVncmF0ZSgpKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIEluaXRpYWxpemVXZWJLaXQy
KCk7Ci0KLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQ
UHJveHlGcm9tRW52aXJvbm1lbnQoKTsKLQotICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0p
OworICAgICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9
IHNvY2tldDsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVy
cyk7Ci0KLSAgICBSdW5Mb29wOjpydW4oKTsKLQotICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNo
ZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7Ci0gICAg
ICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKLSAgICAgICAgc291cF9jYWNoZV9kdW1w
KHNvdXBDYWNoZSk7CisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBlZGplX3NodXRkb3duKCk7Ci0gICAgZWNvcmVfZXZhc19zaHV0ZG93bigp
OworICAgIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNz
aW9uKCkuY2FjaGUoKSkgeworICAgICAgICAgICAgc291cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUp
OworICAgICAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBlZGplX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsK
ICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBlY29yZV94X3NodXRkb3duKCk7CisgICAgICAgIGVj
b3JlX3hfc2h1dGRvd24oKTsKICNlbmRpZgotICAgIGVjb3JlX3NodXRkb3duKCk7Ci0gICAgZWlu
YV9zaHV0ZG93bigpOwotCi0gICAgcmV0dXJuIDA7CisgICAgICAgIGVjb3JlX3NodXRkb3duKCk7
CisgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICB9Cit9OwogCitpbnQgV2ViUHJvY2Vzc01h
aW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gQ2hpbGRQcm9jZXNz
TWFpbjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9l
ZmwvV2ViUHJvY2Vzc01haW5FZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NNYWluRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZDQ3NDMu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01h
aW5FZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJQcm9jZXNzTWFpbkVmbF9oCi0jZGVmaW5lIFdlYlByb2Nlc3NNYWlu
RWZsX2gKLQotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotV0tfRVhQT1JUIGludCBXZWJQ
cm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgot
I2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViUHJvY2Vzc01haW5FZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDU3ZDRhYjMuLmRmY2ExNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5j
cHAKQEAgLTI1LDYxICsyNSw1MSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluVW5peC5o
IgogCi0jaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgorI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4u
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29y
a1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nlc3MuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGliaW50bC5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVdLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5HdGsoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLXsKLSAgICBBU1NFUlQoYXJnYyA9PSAyKTsKLQorY2xhc3Mg
V2ViUHJvY2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFzZSB7CitwdWJs
aWM6CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAgIHsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgaWYgKGdfZ2V0ZW52KCJXRUJLSVQyX1BBVVNFX1dFQl9QUk9DRVNTX09O
X0xBVU5DSCIpKQotICAgICAgICBzbGVlcCgzMCk7CisgICAgICAgIGlmIChnX2dldGVudigiV0VC
S0lUMl9QQVVTRV9XRUJfUFJPQ0VTU19PTl9MQVVOQ0giKSkKKyAgICAgICAgICAgIHNsZWVwKDMw
KTsKICNlbmRpZgorICAgICAgICBndGtfaW5pdChudWxscHRyLCBudWxscHRyKTsKIAotICAgIGd0
a19pbml0KCZhcmdjLCAmYXJndik7Ci0KLSAgICBiaW5kdGV4dGRvbWFpbihHRVRURVhUX1BBQ0tB
R0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gICAgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoR0VU
VEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLQotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7Ci0KLSAg
ICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKyAgICAgICAgYmluZHRleHRkb21haW4oR0VU
VEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOworICAgICAgICBiaW5kX3RleHRkb21h
aW5fY29kZXNldChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwogCi0gICAgQ2hpbGRQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25u
ZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlu
aXRpYWxpemUocGFyYW1ldGVycyk7Ci0KLSAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMg
dG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCi0gICAgLy8gYWNjZXB0aW5nIGludmFsaWQg
Y2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQotICAgIC8vIGFkZGVkIGxh
dGVyIHRvIGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQgaW52YWxpZCBjZXJ0aWZpY2F0ZXMuCi0g
ICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3Vw
TmV0d29ya1Nlc3Npb246OlNTTFVzZVN5c3RlbUNBRmlsZSk7Ci0KLSAgICBSdW5Mb29wOjpydW4o
KTsKKyAgICAgICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZhbGlkYXRlIGNlcnRp
ZmljYXRlcyB3ZSdyZQorICAgICAgICAvLyBhY2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMg
YnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCisgICAgICAgIC8vIGFkZGVkIGxhdGVyIHRvIGxl
dCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQgaW52YWxpZCBjZXJ0aWZpY2F0ZXMuCisgICAgICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdv
cmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246
OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgewotICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNv
dXBDYWNoZSk7Ci0gICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOworICAgIHZvaWQg
cGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoU291cENhY2hl
KiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUo
KSkgeworICAgICAgICAgICAgc291cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUpOworICAgICAgICAg
ICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgICAgIH0KICAgICB9Cit9OwogCi0g
ICAgcmV0dXJuIDA7CitpbnQgV2ViUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJn
dikKK3sKKyAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNz
TWFpbj4oYXJnYywgYXJndik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGFmODMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YlByb2Nlc3NNYWluR3RrX2gKLSNkZWZpbmUgV2ViUHJvY2Vzc01haW5HdGtfaAotCi0jaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3RrKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYgLy8gX19jcGx1
c3BsdXMKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJQcm9jZXNzTWFp
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vz
c01haW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01h
aW5Vbml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxYmU4YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvdW5peC9XZWJQcm9jZXNz
TWFpblVuaXguaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJvY2Vzc01haW5Vbml4X2gKKyNkZWZp
bmUgV2ViUHJvY2Vzc01haW5Vbml4X2gKKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2V4dGVybiAiQyIgeworV1RGX0VYUE9SVCBpbnQgV2Vi
UHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvY2Vzc01haW5Vbml4X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL2VmbC9NYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL2VmbC9NYWlu
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA2MjAzYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvTWFpbkVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNzTWFp
bkVmbC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJu
IFdlYktpdDo6V2ViUHJvY2Vzc01haW5FZmwoYXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9ndGsvTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvTWFpbkd0
ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2Zjg5OTAuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJXZWJQ
cm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0g
ICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGsoYXJnYywgYXJndik7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE2MDRmZDMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvdW5peC9OZXR3b3Jr
TWFpblVuaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJbmMuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCi0jaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNYWluVW5peC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0g
ICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKGFyZ2MsIGFyZ3YpOwotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5N
YWluVW5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZjlhMGQuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5Vbml4
KGFyZ2MsIGFyZ3YpOwotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228269</attachid>
            <date>2014-04-01 05:18:05 -0700</date>
            <delta_ts>2014-05-23 01:36:16 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk2-unix-main3.diff</filename>
            <type>text/plain</type>
            <size>53903</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YjBhMzExLi5jN2E2NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTQtMDQtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBSZW9yZ2FuaXplIGFuZCBjbGVhbnVwIG1haW4gZnVuY3Rpb25z
IG9mIEdUSyBhbmQgRUZMIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzEwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIG1haW4gZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZmlsZXMgdG8g
PHByb2Nlc3MtZGlyPi9FbnRyeVBvaW50L3VuaXgvUHJvY2Vzc05hbWVNYWluLmNwcAorICAgICAg
ICBmaWxlcyB0aGF0IGFyZSBub3cgc2hhcmVkIGJ5IEdUSyBhbmQgRUZMIHBvcnRzLiBUaGVzZSBm
aWxlcyBjYWxsIGEKKyAgICAgICAgbWFpbiBtZXRob2QgdGhhdCB3cmFwcyBhIG5ldyBtZXRob2Qg
Q2hpbGRQcm9jZXNzTWFpbiB0aGF0IGNvbnRhaW5zCisgICAgICAgIHRoZSBjb21tb24gY29kZSBh
bmQgdXNlcyBhIGhlbHBlciBjbGFzcyBmb3IgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAg
IGNvZGUuIEdUSysgYW5kIEVGTCBwb3J0cyBpbXBsZW1lbnQgdGhhdCBoZWxwZXIgY2xhc3MgZm9y
IGV2ZXJ5IHByb2Nlc3MgdHlwZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9p
bnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvZWZsL01haW5FZmwuY3BwLgorICAgICAgICAobWFpbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3Jr
UHJvY2Vzc01haW5HdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvdW5peC9O
ZXR3b3JrUHJvY2Vzc01haW5Vbml4Lmg6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9FbnRy
eVBvaW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAuCisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d2Via2l0WEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5V
bml4Lmg6CisgICAgICAgICogU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmgu
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc01haW5CYXNlOjpwYXJzZUNvbW1hbmRMaW5l
KToKKyAgICAgICAgKiBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5oLgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBsYXRmb3JtRmluYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6aW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwLgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAoZHVtbXlFeHRlbnNpb25FcnJv
ckhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5Vbml4KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5oLgorCiAyMDE0
LTAzLTMxICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQnVpbGRmaXggYWZ0ZXIgcjE2NjQ5Ny4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01h
aW4uY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC91bml4L05l
dHdvcmtQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGQ0Mjg3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBOZXR3b3Jr
UHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9lZmwvTmV0d29ya1Byb2Nlc3NNYWluRWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGUyMmVhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVm
bC5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAx
MDAgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01h
aW5Vbml4LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW5jbHVkZSAiQ2hp
bGRQcm9jZXNzTWFpbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8
RWNvcmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgorI2luY2x1
ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENo
aWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWVjb3JlX2luaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2lu
dGVncmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVu
dCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXRmb3JtRmlu
YWxpemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFNvdXBDYWNoZSogc291cENhY2hl
ID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpIHsKKyAgICAg
ICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAgICAgIHNvdXBfY2Fj
aGVfZHVtcChzb3VwQ2FjaGUpOworICAgICAgICB9CisKKyAgICAgICAgZWNvcmVfc2h1dGRvd24o
KTsKKyAgICB9Cit9OworCitpbnQgTmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCit7CisgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmtQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0YjYxNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJv
Y2Vzc01haW5HdGsuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIK
KworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NN
YWluLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENoaWxkUHJvY2Vzc01haW5CYXNlIHsKK3B1YmxpYzoK
KyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICAv
LyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3Jl
CisgICAgICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRpZmljYXRlcyBieSBkZWZhdWx0LiBO
ZXcgQVBJIHdpbGwgYmUKKyAgICAgICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2Nl
cHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmljYXRlcy4KKyAgICAgICAgU291cE5ldHdvcmtTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNT
TFVzZVN5c3RlbUNBRmlsZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZv
aWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoU291cENh
Y2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2Fj
aGUoKSkgeworICAgICAgICAgICAgc291cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUpOworICAgICAg
ICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CitpbnQgTmV0d29ya1Byb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7Cisg
ICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW48TmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtQcm9jZXNz
TWFpbj4oYXJnYywgYXJndik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGM2NmE3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluVW5peC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21w
YW55IDEwMCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzTWFpblVuaXguaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0KLSNpbmNsdWRl
ICJXS0Jhc2UuaCIKLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci0KLSNpZiBQTEFU
Rk9STShFRkwpCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNz
TWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQotewotICAgIGlmIChhcmdjICE9IDIpCi0gICAg
ICAgIHJldHVybiAxOwotCi0jaWYgUExBVEZPUk0oRUZMKQotICAgIGlmICghZWNvcmVfaW5pdCgp
KQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50
ZWdyYXRlKCkpCi0gICAgICAgIHJldHVybiAxOwotI2VuZGlmCi0KLSAgICBJbml0aWFsaXplV2Vi
S2l0MigpOwotCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVw
SFRUUFByb3h5RnJvbUVudmlyb25tZW50KCk7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2
WzFdKTsKLQotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tl
dDsKLQotICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMp
OwotCi0jaWYgVVNFKFNPVVApCi0gICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZh
bGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQotICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRp
ZmljYXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKLSAgICAvLyBhZGRlZCBsYXRlciB0
byBsZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgotICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdv
cmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOwotI2VuZGlmCi0KLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotI2lmIFVTRShTT1VQKQotICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIHNv
dXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKLSAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBD
YWNoZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gMDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5V
bml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNz
TWFpblVuaXguaAppbmRleCBjYjYyZWRhLi5lNmNmMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXgu
aApAQCAtMzEsMTEgKzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihp
bnQgYXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3Bs
dXNwbHVzCitXS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggMDBmNWMxYi4uYmUyZjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTEsMTAgKzEsMTAgQEAKIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUworICAgIE5l
dHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwuY3BwCisKICAgICBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXJTb3VwLmNwcAogICAgIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCi0gICAgTmV0d29ya1By
b2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcAotCiAgICAgUGxhdGZvcm0vSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwCiAKQEAgLTU0LDYgKzU0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAKICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAg
U2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAKKwogICAgIFVJUHJvY2Vzcy9EZWZhdWx0
VW5kb0NvbnRyb2xsZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XS1ZpZXcuY3BwCkBAIC0yMjIsNiArMjI0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKKyAgICAiJHtXRUJLSVQy
X0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9OZXR3b3JrUHJv
Y2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9ybS9lZmwiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCkBAIC0yMjksNiArMjMyLDcgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJl
ZC9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2VmbCIKICAgICAi
JHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91
bml4IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsIgpAQCAtMjQxLDYgKzI0NSw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKKyAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcyIKQEAgLTI5MywxMSArMjk4LDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfTElC
UkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUwotICAgIGVmbC9NYWlu
RWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNw
cAogKQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTCi0gICAgICAgIHVuaXgv
TmV0d29ya01haW5Vbml4LmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9O
ZXR3b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfTElCUkFS
SUVTCkBAIC00MDksNyArNDE0LDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBp
bmNsdWRlX2RpcmVjdG9yaWVzKCR7UGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTfSkK
IAogICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUwotICAgICAgICAke1dFQktJ
VDJfRElSfS91bml4L1BsdWdpbk1haW5Vbml4LmNwcAorICAgICAgICAke1dFQktJVDJfRElSfS9Q
bHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKICAgICAp
CiAKICAgICBpZiAoRU5BQkxFX0VDT1JFX1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDVkZmM2OGIuLjMxNjgwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMSwxMiAr
MjEsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMuY3BwCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRNYXJzaGFsLmNwcAogCisgICAgTmV0
d29ya1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAKKwogICAgIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlclNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nl
c3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKLSAgICBOZXR3b3JrUHJv
Y2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCi0KICAgICBQbGF0Zm9ybS9JUEMv
dW5peC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKIApAQCAtNzUsNiArNzUsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
IAogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKKyAgICBT
aGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcAorCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRV
bmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CiAKQEAgLTM5NywxMiArMzk5LDE0IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQiCisgICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdv
cmtQcm9jZXNzL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvdW5peCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0FQSS9jL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1NoYXJlZC9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0
ayIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCi0gICAgIiR7V0VCS0lUMl9ESVJ9
L05ldHdvcmtQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91bml4Igog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9zb3VwIgpAQCAtNDE1LDYgKzQxOSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZ3RrIgogICAg
ICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3NvdXAiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dl
YlByb2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ayIKQEAgLTQz
OCwxMSArNDQzLDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
KQogCiBsaXN0KEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKLSAgICBndGsvTWFpbkd0ay5jcHAK
KyAgICBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKICkKIAog
bGlzdChBUFBFTkQgTmV0d29ya1Byb2Nlc3NfU09VUkNFUwotICAgIHVuaXgvTmV0d29ya01haW5V
bml4LmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vz
c01haW4uY3BwCiApCiAKIHNldChTaGFyZWRXZWJLaXQyTGlicmFyaWVzCkBAIC01NTUsNiArNTYw
LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKIAogICAgICAgICBQbGF0Zm9ybS91bml4
L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAKKyAgICAgICAgUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50
L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwCisKICAgICAgICAgUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCiAgICAgICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAogICAgICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
CkBAIC02MDEsNiArNjA4LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKIAogICAgICAg
ICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgICAgIFNo
YXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCisKICAgICAgICAgVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKIAogICAgICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTYxNyw4ICs2MjYsNiBAQCBpZiAoRU5BQkxFX1BM
VUdJTl9QUk9DRVNTKQogCiAgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCiAKLSAgICAgICAgdW5peC9QbHVnaW5NYWluVW5peC5jcHAK
LQogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJL
SVQyX0RJUn0vUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKICAgICAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApAQCAtNjU4LDcgKzY2NSw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAK
ICAgICAjIEdUSzMgUGx1Z2luUHJvY2VzcwogICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nlc3Nf
U09VUkNFUwotICAgICAgICB1bml4L1BsdWdpbk1haW5Vbml4LmNwcAorICAgICAgICBQbHVnaW5Q
cm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKICAgICApCiAKIGVu
ZGlmICgpICMgRU5BQkxFX1BMVUdJTl9QUk9DRVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmNTA5MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC91
bml4L1BsdWdpblByb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzTWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBQbHVnaW5Qcm9jZXNzTWFpblVuaXgo
YXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDZhNGMyNmUuLmUwNzFj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEln
YWxpYSBTLkwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCkBAIC0zMCw5NiArMzAsODIgQEAKIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4u
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
LSNpbmNsdWRlIDxsaWJnZW4uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3Rr
Lmg+Ci0jaWYgUExBVEZPUk0oWDExKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotI2lu
Y2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgSEFWRV9F
Q09SRV9YCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmZGVmIFhQX1VOSVgKKyNpZiBkZWZp
bmVkKFhQX1VOSVgpCiAKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgY29uc3QgY2hhciB4RXJy
b3JTdHJpbmdbXSA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3Rl
bSBlcnJvci5cbiIKICAgICAiVGhpcyBwcm9iYWJseSByZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dz
ZXIgcGx1Z2luLlxuIgogICAgICJUaGUgZXJyb3Igd2FzICclcycuXG4iCiAgICAgIiAgKERldGFp
bHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAl
ZClcbiI7Ci0jZW5kaWYgLyogIUxPR19ESVNBQkxFRCAqLworI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQKIAotc3RhdGljIGNoYXIqIHByb2dyYW1OYW1lID0gMDsKK3N0YXRpYyBDU3RyaW5nIHByb2dy
YW1OYW1lOwogCiBzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVy
cm9yRXZlbnQqIGVycm9yKQogewogICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKICAgICBYR2V0
RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7
CiAKLSAgICBMT0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAotICAgICAgICBwcm9ncmFtTmFtZSwg
ZXJyb3JNZXNzYWdlLAotICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwK
LSAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOworICAgIExP
RyhQbHVnaW5zLCB4RXJyb3JTdHJpbmcsIHByb2dyYW1OYW1lLmRhdGEoKSwgZXJyb3JNZXNzYWdl
LCBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3ItPnJlcXVlc3RfY29kZSwg
ZXJyb3ItPm1pbm9yX2NvZGUpOwogCiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKLQotV0tfRVhQ
T1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLXsK
LSNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBib29sIHNjYW5QbHVnaW4gPSAhc3Ry
Y21wKGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOwotI2VuZGlmCi0gICAgQVNTRVJUX1VOVVNFRChh
cmdjLCBhcmdjID09IDMpOworI2VuZGlmIC8vIFhQX1VOSVgKIAorY2xhc3MgUGx1Z2luUHJvY2Vz
c01haW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAgIHsKICNpZiBQTEFURk9STShH
VEspCi0gICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKKyAgICAgICAgZ3RrX2luaXQobnVsbHB0
ciwgbnVsbHB0cik7CiAjZWxpZiBQTEFURk9STShFRkwpCiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0g
ICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisgICAgICAgIGlmICghZWNvcmVfeF9pbml0KDApKQog
I2VuZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKLSAgICBJbml0aWFsaXplV2ViS2l0MigpOwotCi0jaWYgUExVR0lOX0FSQ0hJVEVDVFVS
RShYMTEpCi0gICAgaWYgKHNjYW5QbHVnaW4pIHsKLSAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgo
YXJndlsyXSk7Ci0gICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4o
cGx1Z2luUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgICAgICBy
ZXR1cm4gRVhJVF9TVUNDRVNTOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0jZW5kaWYK
IAotICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUgaGFuZGxlZCBi
eSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKLSAgICAvLyBleGl0cyB0aGUgcHJvY2Vz
cy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1Z3MsIHdlIGlu
c3RhbGwgYQotICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3YXJuaW5nIHdo
ZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KLSNpZiBkZWZpbmVkKFhQX1VO
SVgpCi0gICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKLSAgICBYU2V0RXJyb3JI
YW5kbGVyKHdlYmtpdFhFcnJvcik7Ci0jZW5kaWYKKyAgICBib29sIHBhcnNlQ29tbWFuZExpbmUo
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFy
Z2MgPT0gMyk7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKyAgICAgICAgaWYgKCFzdHJj
bXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIikpCisgICAgICAgICAgICBleGl0KE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpzY2FuUGx1Z2luKGFyZ3ZbMl0pID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlM
VVJFKTsKIAotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tl
dDsKLSAgICBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicGx1Z2luLXBh
dGgiLCBhcmd2WzJdKTsKLQotICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5p
dGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisgICAgICAgIHByb2dy
YW1OYW1lID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKGFyZ3ZbMF0pLnV0ZjgoKTsKKyAgICAg
ICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3IpOworI2VuZGlmCiAKLSAgICBSdW5Mb29w
OjpydW4oKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFk
ZCgicGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKKyAgICAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01h
aW5CYXNlOjpwYXJzZUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YpOworICAgIH0KK307CiAKLSAgICBy
ZXR1cm4gMDsKK2ludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQoreworICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFBsdWdpblByb2Nlc3MsIFBsdWdpblBy
b2Nlc3NNYWluPihhcmdjLCBhcmd2KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01h
aW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmgKaW5kZXggNTQwYzU5NmEuLjc3OThhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmgK
QEAgLTMxLDEyICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmZGVmIF9fY3Bs
dXNwbHVzCiBleHRlcm4gIkMiIHsKLVdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYgLy8gX19j
cGx1c3BsdXMKK1dLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBj
aGFyKiogYXJndik7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUGx1
Z2luUHJvY2Vzc01haW5faAorI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluVW5peF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOGJlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NNYWluLmgiCisKKyNp
bmNsdWRlIDxzdGRsaWIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgQ2hpbGRQcm9j
ZXNzTWFpbkJhc2U6OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIEFTU0VSVChhcmdjID49IDIpOworICAgIGlmIChhcmdjIDwgMikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gYXRvaShh
cmd2WzFdKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyY2IwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ2hpbGRQcm9jZXNzTWFpbl9oCisjZGVmaW5lIENoaWxkUHJvY2Vzc01haW5faAorCisj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
Q2hpbGRQcm9jZXNzTWFpbkJhc2UgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUluaXRpYWxpemUoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBhcnNlQ29t
bWFuZExpbmUoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1GaW5hbGl6ZSgpIHsgfQorCisgICAgY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KKworcHJvdGVjdGVkOgorICAgIENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGlsZFBy
b2Nlc3NUeXBlLCB0eXBlbmFtZSBDaGlsZFByb2Nlc3NNYWluVHlwZT4KK2ludCBDaGlsZFByb2Nl
c3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBDaGlsZFByb2Nlc3NNYWluVHlw
ZSBjaGlsZE1haW47CisKKyAgICBpZiAoIWNoaWxkTWFpbi5wbGF0Zm9ybUluaXRpYWxpemUoKSkK
KyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7
CisKKyAgICBpZiAoIWNoaWxkTWFpbi5wYXJzZUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YpKQorICAg
ICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgQ2hpbGRQcm9jZXNzVHlwZTo6c2hhcmVk
KCkuaW5pdGlhbGl6ZShjaGlsZE1haW4uaW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzKCkpOworICAg
IFJ1bkxvb3A6OnJ1bigpOworICAgIGNoaWxkTWFpbi5wbGF0Zm9ybUZpbmFsaXplKCk7CisKKyAg
ICByZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIENoaWxkUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNjM3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5j
cHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01haW5Vbml4LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAg
ICByZXR1cm4gV2ViUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCmluZGV4IDdh
Y2M4ZWMuLmNiZWIzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NNYWluRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTI0LDI0ICsyNCwxNiBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWFpbkVmbC5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NNYWluVW5peC5oIgogCi0jaW5jbHVkZSAiUHJveHlSZXNvbHZlclNvdXAuaCIK
LSNpbmNsdWRlICJXS0Jhc2UuaCIKLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2lu
Y2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RWRqZS5o
PgogI2luY2x1ZGUgPEVmcmVldC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dl
YlByb2Nlc3MuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmZGVmIEhBVkVfRUNPUkVf
WAogI2luY2x1ZGUgPEVjb3JlX1guaD4KQEAgLTU4LDg4ICs1MCw4MiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdLX0VYUE9SVCBpbnQgV2ViUHJv
Y2Vzc01haW5FZmwoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLXsKLSAgICAvLyBXZWJQcm9jZXNz
IHNob3VsZCBiZSBsYXVuY2hlZCB3aXRoIGFuIG9wdGlvbi4KLSAgICBpZiAoYXJnYyAhPSAyKQot
ICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmICghZWluYV9pbml0KCkpCi0gICAgICAgIHJldHVy
biAxOworY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWlu
QmFzZSB7CitwdWJsaWM6CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFlaW5hX2luaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghZWNvcmVfaW5pdCgpKSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBpbml0
IGVjb3JlLgotICAgICAgICBlaW5hX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiAxOwotICAg
IH0KKyAgICAgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgICAgIC8vIENvdWxkIG5v
dCBpbml0IGVjb3JlLgorICAgICAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBYU2V0
RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKGR1bW15RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKTsKLQotICAg
IGlmICghZWNvcmVfeF9pbml0KDApKSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBpbml0IGVjb3Jl
X3guCi0gICAgICAgIC8vIFBsYXRmb3JtU2NyZWVuRWZsIGFuZCBzeXN0ZW1CZWVwKCkgZnVuY3Rp
b25zCi0gICAgICAgIC8vIGRlcGVuZCBvbiBlY29yZV94IGZ1bmN0aW9uYWxpdHkuCi0gICAgICAg
IGVjb3JlX3NodXRkb3duKCk7Ci0gICAgICAgIGVpbmFfc2h1dGRvd24oKTsKLSAgICAgICAgcmV0
dXJuIDE7Ci0gICAgfQorICAgICAgICBYU2V0RXh0ZW5zaW9uRXJyb3JIYW5kbGVyKGR1bW15RXh0
ZW5zaW9uRXJyb3JIYW5kbGVyKTsKKworICAgICAgICBpZiAoIWVjb3JlX3hfaW5pdCgwKSkgewor
ICAgICAgICAgICAgLy8gQ291bGQgbm90IGluaXQgZWNvcmVfeC4KKyAgICAgICAgICAgIC8vIFBs
YXRmb3JtU2NyZWVuRWZsIGFuZCBzeXN0ZW1CZWVwKCkgZnVuY3Rpb25zCisgICAgICAgICAgICAv
LyBkZXBlbmQgb24gZWNvcmVfeCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgZWNvcmVfc2h1
dGRvd24oKTsKKyAgICAgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgp
KSB7CisgICAgICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKICNpZmRlZiBIQVZFX0VDT1JF
X1gKLSAgICAgICAgZWNvcmVfeF9zaHV0ZG93bigpOworICAgICAgICAgICAgZWNvcmVfeF9zaHV0
ZG93bigpOwogI2VuZGlmCi0gICAgICAgIGVjb3JlX3NodXRkb3duKCk7Ci0gICAgICAgIGVpbmFf
c2h1dGRvd24oKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgICAgICAgICAgZWNvcmVf
c2h1dGRvd24oKTsKKyAgICAgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQogCi0gICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAg
ICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAg
ICAgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAg
ICAgICAgZWNvcmVfeF9zaHV0ZG93bigpOworICAgICAgICAgICAgZWNvcmVfeF9zaHV0ZG93bigp
OwogI2VuZGlmCi0gICAgICAgIGVjb3JlX3NodXRkb3duKCk7Ci0gICAgICAgIGVpbmFfc2h1dGRv
d24oKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgICAgICAgICAgZWNvcmVfc2h1dGRv
d24oKTsKKyAgICAgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQogCiAjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAzNSwgMCkKLSAg
ICBnX3R5cGVfaW5pdCgpOworICAgICAgICBnX3R5cGVfaW5pdCgpOwogI2VuZGlmCiAKLSAgICBp
ZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKQotICAgICAgICByZXR1cm4gMTsK
LQotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7Ci0KLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsKLQotICAgIGlu
dCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOworICAgICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9n
bGliX2ludGVncmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVy
cy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7Ci0KLSAgICBSdW5Mb29wOjpydW4oKTsKLQotICAg
IGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsK
LSAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7CisgICAgICAgIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBlZGplX3NodXRkb3duKCk7Ci0g
ICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0
d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICAgICAgc291
cF9jYWNoZV9mbHVzaChzb3VwQ2FjaGUpOworICAgICAgICAgICAgc291cF9jYWNoZV9kdW1wKHNv
dXBDYWNoZSk7CisgICAgICAgIH0KKworICAgICAgICBlZGplX3NodXRkb3duKCk7CisgICAgICAg
IGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBlY29yZV94
X3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX3hfc2h1dGRvd24oKTsKICNlbmRpZgotICAgIGVj
b3JlX3NodXRkb3duKCk7Ci0gICAgZWluYV9zaHV0ZG93bigpOwotCi0gICAgcmV0dXJuIDA7Cisg
ICAgICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICB9
Cit9OwogCitpbnQgV2ViUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sK
KyAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNzTWFpbj4o
YXJnYywgYXJndik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM0ZDQ3NDMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQcm9jZXNzTWFpbkVmbF9o
Ci0jZGVmaW5lIFdlYlByb2Nlc3NNYWluRWZsX2gKLQotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotV0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciogYXJn
dltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUHJvY2Vzc01haW5FZmxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4
IDU3ZDRhYjMuLmRmY2ExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKQEAgLTI1LDYxICsyNSw1MSBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NNYWluVW5peC5oIgogCi0jaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgorI2lu
Y2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dl
YlByb2Nlc3MuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGliaW50bC5oPgog
I2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdLX0VYUE9SVCBp
bnQgV2ViUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLXsKLSAgICBBU1NF
UlQoYXJnYyA9PSAyKTsKLQorY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGls
ZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUo
KSBvdmVycmlkZQorICAgIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKGdfZ2V0ZW52KCJXRUJL
SVQyX1BBVVNFX1dFQl9QUk9DRVNTX09OX0xBVU5DSCIpKQotICAgICAgICBzbGVlcCgzMCk7Cisg
ICAgICAgIGlmIChnX2dldGVudigiV0VCS0lUMl9QQVVTRV9XRUJfUFJPQ0VTU19PTl9MQVVOQ0gi
KSkKKyAgICAgICAgICAgIHNsZWVwKDMwKTsKICNlbmRpZgorICAgICAgICBndGtfaW5pdChudWxs
cHRyLCBudWxscHRyKTsKIAotICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7Ci0KLSAgICBiaW5k
dGV4dGRvbWFpbihHRVRURVhUX1BBQ0tBR0UsIFBBQ0tBR0VfTE9DQUxFX0RJUik7Ci0gICAgYmlu
ZF90ZXh0ZG9tYWluX2NvZGVzZXQoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLQotICAgIElu
aXRpYWxpemVXZWJLaXQyKCk7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKyAg
ICAgICAgYmluZHRleHRkb21haW4oR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIp
OworICAgICAgICBiaW5kX3RleHRkb21haW5fY29kZXNldChHRVRURVhUX1BBQ0tBR0UsICJVVEYt
OCIpOwogCi0gICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKLQotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7Ci0KLSAgICAvLyBE
ZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCi0g
ICAgLy8gYWNjZXB0aW5nIGludmFsaWQgY2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkg
d2lsbCBiZQotICAgIC8vIGFkZGVkIGxhdGVyIHRvIGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQg
aW52YWxpZCBjZXJ0aWZpY2F0ZXMuCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vz
c2lvbigpLnNldFNTTFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVzZVN5c3RlbUNBRmls
ZSk7Ci0KLSAgICBSdW5Mb29wOjpydW4oKTsKKyAgICAgICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0
ZW0gQ0FzIHRvIHZhbGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQorICAgICAgICAvLyBhY2NlcHRp
bmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJlCisgICAg
ICAgIC8vIGFkZGVkIGxhdGVyIHRvIGxldCBjbGllbnQgYWNjZXB0L2Rpc2NhcmQgaW52YWxpZCBj
ZXJ0aWZpY2F0ZXMuCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KS5zZXRTU0xQb2xpY3koU291cE5ldHdvcmtTZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBpZiAoU291cENhY2hlKiBzb3VwQ2Fj
aGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgewotICAg
ICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7Ci0gICAgICAgIHNvdXBfY2FjaGVfZHVt
cChzb3VwQ2FjaGUpOworICAgIHZvaWQgcGxhdGZvcm1GaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoU291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246
OmRlZmF1bHRTZXNzaW9uKCkuY2FjaGUoKSkgeworICAgICAgICAgICAgc291cF9jYWNoZV9mbHVz
aChzb3VwQ2FjaGUpOworICAgICAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNoZSk7Cisg
ICAgICAgIH0KICAgICB9Cit9OwogCi0gICAgcmV0dXJuIDA7CitpbnQgV2ViUHJvY2Vzc01haW5V
bml4KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFp
bjxXZWJQcm9jZXNzLCBXZWJQcm9jZXNzTWFpbj4oYXJnYywgYXJndik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc01haW5HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlBy
b2Nlc3NNYWluR3RrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGFmODMuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5H
dGsuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlvbnMgQ29weXJp
Z2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByb2Nlc3NNYWluR3RrX2gKLSNkZWZpbmUgV2ViUHJv
Y2Vzc01haW5HdGtfaAotCi0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQg
aW50IFdlYlByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfSAvLyBleHRl
cm4gIkMiCi0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBXZWJQcm9jZXNzTWFpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZTYxZDIwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvdW5peC9XZWJQcm9jZXNzTWFpblVuaXguaApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
UHJvY2Vzc01haW5Vbml4X2gKKyNkZWZpbmUgV2ViUHJvY2Vzc01haW5Vbml4X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitleHRlcm4gIkMi
IHsKK1dLX0VYUE9SVCBpbnQgV2ViUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJn
dik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvY2Vzc01h
aW5Vbml4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9NYWluRWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL2VmbC9NYWluRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzA2MjAzYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvTWFpbkVmbC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJXZWJQcm9jZXNzTWFpbkVmbC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW5FZmwoYXJnYywgYXJn
dik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvTWFpbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9ndGsvTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE2Zjg5OTAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGso
YXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtN
YWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2MDRmZDMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvdW5peC9OZXR3b3JrTWFpblVuaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJ
bmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQot
Ci0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oIgotCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWlu
KGFyZ2MsIGFyZ3YpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3ZjlhMGQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5N
YWluVW5peC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25z
IENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6
UGx1Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOwotfQo=
</data>
<flag name="review"
          id="252556"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231951</attachid>
            <date>2014-05-23 01:36:16 -0700</date>
            <delta_ts>2014-05-23 01:36:16 -0700</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>wk2-entry-points.diff</filename>
            <type>text/plain</type>
            <size>53951</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4N2M4Yzg4Li41YTBhOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTQtMDUtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBSZW9yZ2FuaXplIGFuZCBjbGVhbnVwIG1haW4gZnVuY3Rpb25z
IG9mIEdUSyBhbmQgRUZMIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzEwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEuCisKKyAgICAgICAgTW92ZSBtYWluIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGZp
bGVzIHRvIDxwcm9jZXNzLWRpcj4vRW50cnlQb2ludC91bml4LzxQcm9jZXNzTmFtZT5NYWluLmNw
cAorICAgICAgICBmaWxlcyB0aGF0IGFyZSBub3cgc2hhcmVkIGJ5IEdUSyBhbmQgRUZMIHBvcnRz
LiBUaGVzZSBmaWxlcyBjYWxsIGEKKyAgICAgICAgbWFpbiBtZXRob2QgdGhhdCB3cmFwcyBhIG5l
dyBtZXRob2QgQ2hpbGRQcm9jZXNzTWFpbiB0aGF0IGNvbnRhaW5zCisgICAgICAgIHRoZSBjb21t
b24gY29kZSBhbmQgdXNlcyBhIGhlbHBlciBjbGFzcyBmb3IgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
CisgICAgICAgIGNvZGUuIEdUSysgYW5kIEVGTCBwb3J0cyBpbXBsZW1lbnQgdGhhdCBoZWxwZXIg
Y2xhc3MgZm9yIGV2ZXJ5IHByb2Nlc3MgdHlwZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvZWZsL01haW5FZmwuY3BwLgorICAgICAgICAobWFpbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2d0
ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcC4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4Lmg6CisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9FbnRyeVBvaW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAuCisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6d2Via2l0WEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01haW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4Lmg6CisgICAgICAgICogU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NN
YWluRWZsLmguCisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc01haW5CYXNlOjpwYXJzZUNv
bW1hbmRMaW5lKToKKyAgICAgICAgKiBTaGFyZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0
ay5oLgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6cGxhdGZvcm1Jbml0
aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkJhc2U6OnBsYXRmb3Jt
RmluYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluQmFzZTo6aW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwLgorICAgICAgICAo
bWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAoZHVtbXlFeHRl
bnNpb25FcnJvckhhbmRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc01haW5Vbml4
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5o
LgorCiAyMDE0LTA1LTIyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBIYXZlIHRoZSBkZWNvZGVkIGVsZW1lbnQgaW4gVmVjdG9yQXJndW1lbnRDb2Rlcjo6
ZGVjb2RlKCkgbW92ZWQgaW50byBWZWN0b3I6OmFwcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvTmV0d29ya1Byb2Nlc3NNYWlu
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3
b3JrUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhk
NDI4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9F
bnRyeVBvaW50L3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gTmV0d29ya1By
b2Nlc3NNYWluVW5peChhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvZWZsL05ldHdvcmtQcm9jZXNzTWFpbkVmbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlMjJlYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwu
Y3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAw
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNYWlu
VW5peC5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNoaWxk
UHJvY2Vzc01haW4uaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEVj
b3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KKyNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGls
ZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFlY29yZV9pbml0KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFlY29yZV9tYWluX2xvb3BfZ2xpYl9pbnRl
Z3JhdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQo
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBwbGF0Zm9ybUZpbmFs
aXplKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7CisgICAgICAg
ICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7CisgICAgICAgICAgICBzb3VwX2NhY2hl
X2R1bXAoc291cENhY2hlKTsKKyAgICAgICAgfQorCisgICAgICAgIGVjb3JlX3NodXRkb3duKCk7
CisgICAgfQorfTsKKworaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQoreworICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPE5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrUHJvY2Vzc01haW4+KGFyZ2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nlc3NNYWluR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2d0ay9OZXR3b3JrUHJvY2Vzc01haW5HdGsu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NGI2MTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9ndGsvTmV0d29ya1Byb2Nl
c3NNYWluR3RrLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmgiCisK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWFp
bi5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Tb3Vw
TmV0d29ya1Nlc3Npb24uaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJv
Y2Vzc01haW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6Cisg
ICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8g
RGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZhbGlkYXRlIGNlcnRpZmljYXRlcyB3ZSdyZQor
ICAgICAgICAvLyBhY2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3
IEFQSSB3aWxsIGJlCisgICAgICAgIC8vIGFkZGVkIGxhdGVyIHRvIGxldCBjbGllbnQgYWNjZXB0
L2Rpc2NhcmQgaW52YWxpZCBjZXJ0aWZpY2F0ZXMuCisgICAgICAgIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdvcmtTZXNzaW9uOjpTU0xV
c2VTeXN0ZW1DQUZpbGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lk
IHBsYXRmb3JtRmluYWxpemUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKFNvdXBDYWNo
ZSogc291cENhY2hlID0gU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hl
KCkpIHsKKyAgICAgICAgICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAg
ICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOworICAgICAgICB9CisgICAgfQorfTsKKwor
aW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAg
IHJldHVybiBDaGlsZFByb2Nlc3NNYWluPE5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrUHJvY2Vzc01h
aW4+KGFyZ2MsIGFyZ3YpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIxYjY4Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFu
eSAxMDAgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c01haW5Vbml4LmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCi0jaW5jbHVkZSAi
V0tCYXNlLmgiCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYktpdC9OZXR3b3JrUHJvY2Vz
cy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci0KLSNpZiBQTEFURk9S
TShFRkwpCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0jaW5j
bHVkZSA8bGlic291cC9zb3VwLmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFp
bihpbnQgYXJnYywgY2hhciogYXJndltdKQotewotICAgIGlmIChhcmdjICE9IDIpCi0gICAgICAg
IHJldHVybiAxOwotCi0jaWYgUExBVEZPUk0oRUZMKQotICAgIGlmICghZWNvcmVfaW5pdCgpKQot
ICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdy
YXRlKCkpCi0gICAgICAgIHJldHVybiAxOwotI2VuZGlmCi0KLSAgICBJbml0aWFsaXplV2ViS2l0
MigpOwotCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldHVwSFRU
UFByb3h5RnJvbUVudmlyb25tZW50KCk7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFd
KTsKLQotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsK
LQotICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwot
Ci0jaWYgVVNFKFNPVVApCi0gICAgLy8gRGVzcGl0ZSB1c2luZyBzeXN0ZW0gQ0FzIHRvIHZhbGlk
YXRlIGNlcnRpZmljYXRlcyB3ZSdyZQotICAgIC8vIGFjY2VwdGluZyBpbnZhbGlkIGNlcnRpZmlj
YXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKLSAgICAvLyBhZGRlZCBsYXRlciB0byBs
ZXQgY2xpZW50IGFjY2VwdC9kaXNjYXJkIGludmFsaWQgY2VydGlmaWNhdGVzLgotICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zZXRTU0xQb2xpY3koU291cE5ldHdvcmtT
ZXNzaW9uOjpTU0xVc2VTeXN0ZW1DQUZpbGUpOwotI2VuZGlmCi0KLSAgICBSdW5Mb29wOjpydW4o
KTsKLQotI2lmIFVTRShTT1VQKQotICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIHNvdXBf
Y2FjaGVfZmx1c2goc291cENhY2hlKTsKLSAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBDYWNo
ZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFp
blVuaXguaAppbmRleCA2YTU2YmQ4Li5mYTA2NGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguaApA
QCAtMzEsMTEgKzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZmRlZiBfX2NwbHVz
cGx1cwogZXh0ZXJuICJDIiB7Ci1XS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNw
bHVzCitXS19FWFBPUlQgaW50IE5ldHdvcmtQcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggZmM0MzM5ZS4uMjU2MDU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTEsMTAgKzEsMTAgQEAKIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUworICAgIE5ldHdv
cmtQcm9jZXNzL2VmbC9OZXR3b3JrUHJvY2Vzc01haW5FZmwuY3BwCisKICAgICBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXJTb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNz
L3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCi0gICAgTmV0d29ya1Byb2Nl
c3MvdW5peC9OZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNwcAotCiAgICAgUGxhdGZvcm0vSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCiAKQEAgLTUyLDYgKzUyLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAK
ICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hh
cmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAKKwogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5k
b0NvbnRyb2xsZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS1ZpZXcuY3BwCkBAIC0yMTksNiArMjIxLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKKyAgICAiJHtXRUJLSVQyX0RJ
Un0vTmV0d29ya1Byb2Nlc3MvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9OZXR3b3JrUHJvY2Vz
cy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9ybS9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9BUEkvYy9lZmwiCkBAIC0yMjYsNiArMjI5LDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9E
b3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2VmbCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91bml4
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsIgpAQCAtMjM4LDYgKzI0Miw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mvc291cCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcyIKQEAgLTI5MCwxMSArMjk1LDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfTElCUkFS
SUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUwotICAgIGVmbC9NYWluRWZs
LmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcAog
KQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTCi0gICAgICAgIHVuaXgvTmV0
d29ya01haW5Vbml4LmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3
b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfTElCUkFSSUVT
CkBAIC00MDYsNyArNDExLDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKICAgICBpbmNs
dWRlX2RpcmVjdG9yaWVzKCR7UGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTfSkKIAog
ICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUwotICAgICAgICAke1dFQktJVDJf
RElSfS91bml4L1BsdWdpbk1haW5Vbml4LmNwcAorICAgICAgICAke1dFQktJVDJfRElSfS9QbHVn
aW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKICAgICApCiAK
ICAgICBpZiAoRU5BQkxFX0VDT1JFX1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGVj
MGE0NGEuLmQ0MjRlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMiwxMiArMjIs
MTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRFbnVtVHlwZXMuY3BwCiAgICAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCS0lUMkdUS19BUElfRElSfS9XZWJLaXRNYXJzaGFsLmNwcAogCisgICAgTmV0d29y
a1Byb2Nlc3MvZ3RrL05ldHdvcmtQcm9jZXNzTWFpbkd0ay5jcHAKKwogICAgIE5ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlclNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mv
c291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKLSAgICBOZXR3b3JrUHJvY2Vz
cy91bml4L05ldHdvcmtQcm9jZXNzTWFpblVuaXguY3BwCi0KICAgICBQbGF0Zm9ybS9JUEMvdW5p
eC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKIApAQCAtNzUsNiArNzUsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAog
ICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKKyAgICBTaGFy
ZWQvdW5peC9DaGlsZFByb2Nlc3NNYWluLmNwcAorCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRv
Q29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCiAK
QEAgLTM5NywxMiArMzk5LDE0IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQiCisgICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQ
cm9jZXNzL2d0ayIKKyAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvdW5peCIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0FQSS9jL2d0ayIKICAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2d0ayIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCi0gICAgIiR7V0VCS0lUMl9ESVJ9L05l
dHdvcmtQcm9jZXNzL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91bml4IgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvQy9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvQy9zb3VwIgpAQCAtNDE1LDYgKzQxOSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvZ3RrIgogICAgICIk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL3NvdXAiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlBy
b2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ayIKQEAgLTQzOCwx
MSArNDQzLDExIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogKQog
CiBsaXN0KEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKLSAgICBndGsvTWFpbkd0ay5jcHAKKyAg
ICBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKICkKIAogbGlz
dChBUFBFTkQgTmV0d29ya1Byb2Nlc3NfU09VUkNFUwotICAgIHVuaXgvTmV0d29ya01haW5Vbml4
LmNwcAorICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01h
aW4uY3BwCiApCiAKIHNldChTaGFyZWRXZWJLaXQyTGlicmFyaWVzCkBAIC01OTUsNiArNjAwLDgg
QEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKIAogICAgICAgICBQbGF0Zm9ybS91bml4L1No
YXJlZE1lbW9yeVVuaXguY3BwCiAKKyAgICAgICAgUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW4uY3BwCisKICAgICAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwCiAgICAgICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAogICAgICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBA
IC02NDIsNiArNjQ5LDggQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKIAogICAgICAgICBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgICAgIFNoYXJl
ZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCisKICAgICAgICAgVUlQcm9jZXNzL0xhdW5jaGVy
L1Byb2Nlc3NMYXVuY2hlci5jcHAKIAogICAgICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTY1OCw4ICs2NjcsNiBAQCBpZiAoRU5BQkxFX1BMVUdJ
Tl9QUk9DRVNTKQogCiAgICAgICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwCiAKLSAgICAgICAgdW5peC9QbHVnaW5NYWluVW5peC5jcHAKLQog
ICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vUGx1Z2luQ29udHJvbGxlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQy
X0RJUn0vUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKICAgICAgICAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcApAQCAtNjk5LDcgKzcwNiw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1MpCiAKICAg
ICAjIEdUSzMgUGx1Z2luUHJvY2VzcwogICAgIGxpc3QoQVBQRU5EIFBsdWdpblByb2Nlc3NfU09V
UkNFUwotICAgICAgICB1bml4L1BsdWdpbk1haW5Vbml4LmNwcAorICAgICAgICBQbHVnaW5Qcm9j
ZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKICAgICApCiAKIGVuZGlm
ICgpICMgRU5BQkxFX1BMVUdJTl9QUk9DRVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFp
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmNTA5MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC91bml4
L1BsdWdpblByb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
TWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoYXJn
YywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDZhNGMyNmUuLmUwNzFjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9j
ZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IElnYWxp
YSBTLkwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCkBAIC0zMCw5NiArMzAsODIgQEAKIAogI2lm
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKLSNp
bmNsdWRlIDxsaWJnZW4uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKwogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+
Ci0jaWYgUExBVEZPUk0oWDExKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotI2luY2x1
ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgSEFWRV9FQ09S
RV9YCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmZGVmIFhQX1VOSVgKKyNpZiBkZWZpbmVk
KFhQX1VOSVgpCiAKICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgY29uc3QgY2hhciB4RXJyb3JT
dHJpbmdbXSA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBl
cnJvci5cbiIKICAgICAiVGhpcyBwcm9iYWJseSByZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIg
cGx1Z2luLlxuIgogICAgICJUaGUgZXJyb3Igd2FzICclcycuXG4iCiAgICAgIiAgKERldGFpbHM6
IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClc
biI7Ci0jZW5kaWYgLyogIUxPR19ESVNBQkxFRCAqLworI2VuZGlmIC8vICFMT0dfRElTQUJMRUQK
IAotc3RhdGljIGNoYXIqIHByb2dyYW1OYW1lID0gMDsKK3N0YXRpYyBDU3RyaW5nIHByb2dyYW1O
YW1lOwogCiBzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9y
RXZlbnQqIGVycm9yKQogewogICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKICAgICBYR2V0RXJy
b3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CiAK
LSAgICBMT0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAotICAgICAgICBwcm9ncmFtTmFtZSwgZXJy
b3JNZXNzYWdlLAotICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAg
ICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOworICAgIExPRyhQ
bHVnaW5zLCB4RXJyb3JTdHJpbmcsIHByb2dyYW1OYW1lLmRhdGEoKSwgZXJyb3JNZXNzYWdlLCBl
cnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJy
b3ItPm1pbm9yX2NvZGUpOwogCiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKLQotV0tfRVhQT1JU
IGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLXsKLSNp
ZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBib29sIHNjYW5QbHVnaW4gPSAhc3RyY21w
KGFyZ3ZbMV0sICItc2NhblBsdWdpbiIpOwotI2VuZGlmCi0gICAgQVNTRVJUX1VOVVNFRChhcmdj
LCBhcmdjID09IDMpOworI2VuZGlmIC8vIFhQX1VOSVgKIAorY2xhc3MgUGx1Z2luUHJvY2Vzc01h
aW4gZmluYWw6IHB1YmxpYyBDaGlsZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAgYm9v
bCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQorICAgIHsKICNpZiBQTEFURk9STShHVEsp
Ci0gICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKKyAgICAgICAgZ3RrX2luaXQobnVsbHB0ciwg
bnVsbHB0cik7CiAjZWxpZiBQTEFURk9STShFRkwpCiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAg
aWYgKCFlY29yZV94X2luaXQoMCkpCisgICAgICAgIGlmICghZWNvcmVfeF9pbml0KDApKQogI2Vu
ZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiAKLSAgICBJbml0aWFsaXplV2ViS2l0MigpOwotCi0jaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCi0gICAgaWYgKHNjYW5QbHVnaW4pIHsKLSAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgoYXJn
dlsyXSk7Ci0gICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1
Z2luUGF0aCkpCi0gICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgICAgICByZXR1
cm4gRVhJVF9TVUNDRVNTOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0jZW5kaWYKIAot
ICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0
aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKLSAgICAvLyBleGl0cyB0aGUgcHJvY2Vzcy4g
U2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1Z3MsIHdlIGluc3Rh
bGwgYQotICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3YXJuaW5nIHdoZW4g
YSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KLSNpZiBkZWZpbmVkKFhQX1VOSVgp
Ci0gICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKLSAgICBYU2V0RXJyb3JIYW5k
bGVyKHdlYmtpdFhFcnJvcik7Ci0jZW5kaWYKKyAgICBib29sIHBhcnNlQ29tbWFuZExpbmUoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFyZ2Mg
PT0gMyk7CisgICAgICAgIGlmIChhcmdjICE9IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKyAgICAgICAgaWYgKCFzdHJjbXAo
YXJndlsxXSwgIi1zY2FuUGx1Z2luIikpCisgICAgICAgICAgICBleGl0KE5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjpzY2FuUGx1Z2luKGFyZ3ZbMl0pID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJF
KTsKIAotICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsK
LSAgICBwYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicGx1Z2luLXBhdGgi
LCBhcmd2WzJdKTsKLQotICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlh
bGl6ZShwYXJhbWV0ZXJzKTsKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisgICAgICAgIHByb2dyYW1O
YW1lID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKGFyZ3ZbMF0pLnV0ZjgoKTsKKyAgICAgICAg
WFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3IpOworI2VuZGlmCiAKLSAgICBSdW5Mb29wOjpy
dW4oKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgi
cGx1Z2luLXBhdGgiLCBhcmd2WzJdKTsKKyAgICAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW5C
YXNlOjpwYXJzZUNvbW1hbmRMaW5lKGFyZ2MsIGFyZ3YpOworICAgIH0KK307CiAKLSAgICByZXR1
cm4gMDsKK2ludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQor
eworICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFBsdWdpblByb2Nlc3MsIFBsdWdpblByb2Nl
c3NNYWluPihhcmdjLCBhcmd2KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5V
bml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01h
aW5Vbml4LmgKaW5kZXggZDlkNjk5ZC4uZjc5YzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguaApAQCAt
MzEsMTIgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewotV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVz
cGx1cworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQbHVnaW5Q
cm9jZXNzTWFpbl9oCisjZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4YmU2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uY3BwCkBAIC0wLDAgKzEsNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01haW4uaCIKKworI2luY2x1
ZGUgPHN0ZGxpYi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBDaGlsZFByb2Nlc3NN
YWluQmFzZTo6cGFyc2VDb21tYW5kTGluZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
QVNTRVJUKGFyZ2MgPj0gMik7CisgICAgaWYgKGFyZ2MgPCAyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX3BhcmFtZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIgPSBhdG9pKGFyZ3Zb
MV0pOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC91bml4L0NoaWxkUHJvY2Vzc01haW4uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjJjYjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL3VuaXgvQ2hpbGRQcm9jZXNzTWFpbi5oCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDaGlsZFByb2Nlc3NNYWluX2gKKyNkZWZpbmUgQ2hpbGRQcm9jZXNzTWFpbl9oCisKKyNpbmNs
dWRlICJDaGlsZFByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDaGls
ZFByb2Nlc3NNYWluQmFzZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFyc2VDb21tYW5k
TGluZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUZp
bmFsaXplKCkgeyB9CisKKyAgICBjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIGluaXRpYWxpemF0aW9uUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQorCitwcm90ZWN0ZWQ6CisgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoaWxkUHJvY2Vz
c1R5cGUsIHR5cGVuYW1lIENoaWxkUHJvY2Vzc01haW5UeXBlPgoraW50IENoaWxkUHJvY2Vzc01h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIENoaWxkUHJvY2Vzc01haW5UeXBlIGNo
aWxkTWFpbjsKKworICAgIGlmICghY2hpbGRNYWluLnBsYXRmb3JtSW5pdGlhbGl6ZSgpKQorICAg
ICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworCisgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKwor
ICAgIGlmICghY2hpbGRNYWluLnBhcnNlQ29tbWFuZExpbmUoYXJnYywgYXJndikpCisgICAgICAg
IHJldHVybiBFWElUX0ZBSUxVUkU7CisKKyAgICBDaGlsZFByb2Nlc3NUeXBlOjpzaGFyZWQoKS5p
bml0aWFsaXplKGNoaWxkTWFpbi5pbml0aWFsaXphdGlvblBhcmFtZXRlcnMoKSk7CisgICAgUnVu
TG9vcDo6cnVuKCk7CisgICAgY2hpbGRNYWluLnBsYXRmb3JtRmluYWxpemUoKTsKKworICAgIHJl
dHVybiBFWElUX1NVQ0NFU1M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gQ2hpbGRQcm9jZXNzTWFpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM2MzdmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcApA
QCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWFpblVuaXguaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJl
dHVybiBXZWJQcm9jZXNzTWFpblVuaXgoYXJnYywgYXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKaW5kZXggYzYyNWI3
MC4uY2JlYjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc01haW5FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NNYWluRWZsLmNwcApAQCAtMjQsMjQgKzI0LDE2IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluRWZsLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01haW5Vbml4LmgiCiAKLSNpbmNsdWRlICJQcm94eVJlc29sdmVyU291cC5oIgotI2lu
Y2x1ZGUgIldLQmFzZS5oIgotI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisjaW5jbHVk
ZSAiQ2hpbGRQcm9jZXNzTWFpbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxFY29yZS5oPgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFZGplLmg+CiAj
aW5jbHVkZSA8RWZyZWV0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYktpdC9XZWJQcm9j
ZXNzLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZmRlZiBIQVZFX0VDT1JFX1gKICNp
bmNsdWRlIDxFY29yZV9YLmg+CkBAIC01OCw4OCArNTAsODIgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XS19FWFBPUlQgaW50IFdlYlByb2Nlc3NN
YWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17Ci0gICAgLy8gV2ViUHJvY2VzcyBzaG91
bGQgYmUgbGF1bmNoZWQgd2l0aCBhbiBvcHRpb24uCi0gICAgaWYgKGFyZ2MgIT0gMikKLSAgICAg
ICAgcmV0dXJuIDE7Ci0KLSAgICBpZiAoIWVpbmFfaW5pdCgpKQotICAgICAgICByZXR1cm4gMTsK
K2NsYXNzIFdlYlByb2Nlc3NNYWluIGZpbmFsOiBwdWJsaWMgQ2hpbGRQcm9jZXNzTWFpbkJhc2Ug
eworcHVibGljOgorICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghZWluYV9pbml0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoIWVjb3JlX2luaXQoKSkgewotICAgICAgICAvLyBDb3VsZCBub3QgaW5pdCBlY29y
ZS4KLSAgICAgICAgZWluYV9zaHV0ZG93bigpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Cisg
ICAgICAgIGlmICghZWNvcmVfaW5pdCgpKSB7CisgICAgICAgICAgICAvLyBDb3VsZCBub3QgaW5p
dCBlY29yZS4KKyAgICAgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgWFNldEV4dGVu
c2lvbkVycm9ySGFuZGxlcihkdW1teUV4dGVuc2lvbkVycm9ySGFuZGxlcik7Ci0KLSAgICBpZiAo
IWVjb3JlX3hfaW5pdCgwKSkgewotICAgICAgICAvLyBDb3VsZCBub3QgaW5pdCBlY29yZV94Lgot
ICAgICAgICAvLyBQbGF0Zm9ybVNjcmVlbkVmbCBhbmQgc3lzdGVtQmVlcCgpIGZ1bmN0aW9ucwot
ICAgICAgICAvLyBkZXBlbmQgb24gZWNvcmVfeCBmdW5jdGlvbmFsaXR5LgotICAgICAgICBlY29y
ZV9zaHV0ZG93bigpOwotICAgICAgICBlaW5hX3NodXRkb3duKCk7Ci0gICAgICAgIHJldHVybiAx
OwotICAgIH0KKyAgICAgICAgWFNldEV4dGVuc2lvbkVycm9ySGFuZGxlcihkdW1teUV4dGVuc2lv
bkVycm9ySGFuZGxlcik7CisKKyAgICAgICAgaWYgKCFlY29yZV94X2luaXQoMCkpIHsKKyAgICAg
ICAgICAgIC8vIENvdWxkIG5vdCBpbml0IGVjb3JlX3guCisgICAgICAgICAgICAvLyBQbGF0Zm9y
bVNjcmVlbkVmbCBhbmQgc3lzdGVtQmVlcCgpIGZ1bmN0aW9ucworICAgICAgICAgICAgLy8gZGVw
ZW5kIG9uIGVjb3JlX3ggZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIGVjb3JlX3NodXRkb3du
KCk7CisgICAgICAgICAgICBlaW5hX3NodXRkb3duKCk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkgewor
ICAgICAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0g
ICAgICAgIGVjb3JlX3hfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIGVjb3JlX3hfc2h1dGRvd24o
KTsKICNlbmRpZgotICAgICAgICBlY29yZV9zaHV0ZG93bigpOwotICAgICAgICBlaW5hX3NodXRk
b3duKCk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICAgICAgICAgIGVjb3JlX3NodXRk
b3duKCk7CisgICAgICAgICAgICBlaW5hX3NodXRkb3duKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KIAotICAgIGlmICghZWRqZV9pbml0KCkpIHsKLSAgICAgICAgZWNv
cmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAg
ICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgICAg
IGVjb3JlX3hfc2h1dGRvd24oKTsKKyAgICAgICAgICAgIGVjb3JlX3hfc2h1dGRvd24oKTsKICNl
bmRpZgotICAgICAgICBlY29yZV9zaHV0ZG93bigpOwotICAgICAgICBlaW5hX3NodXRkb3duKCk7
Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICAgICAgICAgIGVjb3JlX3NodXRkb3duKCk7
CisgICAgICAgICAgICBlaW5hX3NodXRkb3duKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KIAogI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzUsIDApCi0gICAgZ190
eXBlX2luaXQoKTsKKyAgICAgICAgZ190eXBlX2luaXQoKTsKICNlbmRpZgogCi0gICAgaWYgKCFl
Y29yZV9tYWluX2xvb3BfZ2xpYl9pbnRlZ3JhdGUoKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAg
ICBJbml0aWFsaXplV2ViS2l0MigpOwotCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0
U2Vzc2lvbigpLnNldHVwSFRUUFByb3h5RnJvbUVudmlyb25tZW50KCk7Ci0KLSAgICBpbnQgc29j
a2V0ID0gYXRvaShhcmd2WzFdKTsKKyAgICAgICAgaWYgKCFlY29yZV9tYWluX2xvb3BfZ2xpYl9p
bnRlZ3JhdGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMuY29u
bmVjdGlvbklkZW50aWZpZXIgPSBzb2NrZXQ7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5p
bml0aWFsaXplKHBhcmFtZXRlcnMpOwotCi0gICAgUnVuTG9vcDo6cnVuKCk7Ci0KLSAgICBpZiAo
U291cENhY2hlKiBzb3VwQ2FjaGUgPSBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9u
KCkuY2FjaGUoKSkgewotICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBDYWNoZSk7Ci0gICAg
ICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2FjaGUpOworICAgICAgICBTb3VwTmV0d29ya1Nlc3Np
b246OmRlZmF1bHRTZXNzaW9uKCkuc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZWRqZV9zaHV0ZG93bigpOwotICAgIGVj
b3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICB2b2lkIHBsYXRmb3JtRmluYWxpemUoKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKFNvdXBDYWNoZSogc291cENhY2hlID0gU291cE5ldHdvcmtT
ZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLmNhY2hlKCkpIHsKKyAgICAgICAgICAgIHNvdXBfY2Fj
aGVfZmx1c2goc291cENhY2hlKTsKKyAgICAgICAgICAgIHNvdXBfY2FjaGVfZHVtcChzb3VwQ2Fj
aGUpOworICAgICAgICB9CisKKyAgICAgICAgZWRqZV9zaHV0ZG93bigpOworICAgICAgICBlY29y
ZV9ldmFzX3NodXRkb3duKCk7CiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgZWNvcmVfeF9zaHV0
ZG93bigpOworICAgICAgICBlY29yZV94X3NodXRkb3duKCk7CiAjZW5kaWYKLSAgICBlY29yZV9z
aHV0ZG93bigpOwotICAgIGVpbmFfc2h1dGRvd24oKTsKLQotICAgIHJldHVybiAwOworICAgICAg
ICBlY29yZV9zaHV0ZG93bigpOworICAgICAgICBlaW5hX3NodXRkb3duKCk7CisgICAgfQorfTsK
IAoraW50IFdlYlByb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
cmV0dXJuIENoaWxkUHJvY2Vzc01haW48V2ViUHJvY2VzcywgV2ViUHJvY2Vzc01haW4+KGFyZ2Ms
IGFyZ3YpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxNzRmYjY4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUHJvY2Vzc01haW5FZmxfaAotI2Rl
ZmluZSBXZWJQcm9jZXNzTWFpbkVmbF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewot
V0tfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciogYXJndltdKTsK
LX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUHJvY2Vzc01haW5FZmxfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDQ3MWMw
MDcuLmY0YWMzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NNYWluR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzTWFpbkd0ay5jcHAKQEAgLTI1LDYxICsyNSw1MiBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NNYWluVW5peC5oIgogCi0jaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgorI2luY2x1ZGUg
IkNoaWxkUHJvY2Vzc01haW4uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRlIDxXZWJLaXQvV2ViUHJvY2Vz
cy5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV0tfRVhQT1JUIGludCBXZWJQ
cm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKQotewotICAgIEFTU0VSVChhcmdj
ID09IDIpOwotCitjbGFzcyBXZWJQcm9jZXNzTWFpbiBmaW5hbDogcHVibGljIENoaWxkUHJvY2Vz
c01haW5CYXNlIHsKK3B1YmxpYzoKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJy
aWRlCisgICAgewogI2lmbmRlZiBOREVCVUcKLSAgICBpZiAoZ19nZXRlbnYoIldFQktJVDJfUEFV
U0VfV0VCX1BST0NFU1NfT05fTEFVTkNIIikpCi0gICAgICAgIHNsZWVwKDMwKTsKKyAgICAgICAg
aWYgKGdfZ2V0ZW52KCJXRUJLSVQyX1BBVVNFX1dFQl9QUk9DRVNTX09OX0xBVU5DSCIpKQorICAg
ICAgICAgICAgc2xlZXAoMzApOwogI2VuZGlmCiAKLSAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3Yp
OwotCi0gICAgYmluZHRleHRkb21haW4oR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9E
SVIpOwotICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KEdFVFRFWFRfUEFDS0FHRSwgIlVURi04
Iik7Ci0KLSAgICBJbml0aWFsaXplV2ViS2l0MigpOwotCi0gICAgaW50IHNvY2tldCA9IGF0b2ko
YXJndlsxXSk7CisgICAgICAgIGd0a19pbml0KG51bGxwdHIsIG51bGxwdHIpOwogCi0gICAgQ2hp
bGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1l
dGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKKyAgICAgICAgYmluZHRleHRkb21h
aW4oR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOworICAgICAgICBiaW5kX3Rl
eHRkb21haW5fY29kZXNldChHRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKLQotICAgIC8vIERlc3BpdGUg
dXNpbmcgc3lzdGVtIENBcyB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgd2UncmUKLSAgICAvLyBh
Y2NlcHRpbmcgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgYnkgZGVmYXVsdC4gTmV3IEFQSSB3aWxsIGJl
Ci0gICAgLy8gYWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlk
IGNlcnRpZmljYXRlcy4KLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCku
c2V0U1NMUG9saWN5KFNvdXBOZXR3b3JrU2Vzc2lvbjo6U1NMVXNlU3lzdGVtQ0FGaWxlKTsKLQot
ICAgIFJ1bkxvb3A6OnJ1bigpOworICAgICAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMg
dG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCisgICAgICAgIC8vIGFjY2VwdGluZyBpbnZh
bGlkIGNlcnRpZmljYXRlcyBieSBkZWZhdWx0LiBOZXcgQVBJIHdpbGwgYmUKKyAgICAgICAgLy8g
YWRkZWQgbGF0ZXIgdG8gbGV0IGNsaWVudCBhY2NlcHQvZGlzY2FyZCBpbnZhbGlkIGNlcnRpZmlj
YXRlcy4KKyAgICAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpLnNldFNT
TFBvbGljeShTb3VwTmV0d29ya1Nlc3Npb246OlNTTFVzZVN5c3RlbUNBRmlsZSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KIAotICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNv
dXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIHNv
dXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKLSAgICAgICAgc291cF9jYWNoZV9kdW1wKHNvdXBD
YWNoZSk7CisgICAgdm9pZCBwbGF0Zm9ybUZpbmFsaXplKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmIChTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVs
dFNlc3Npb24oKS5jYWNoZSgpKSB7CisgICAgICAgICAgICBzb3VwX2NhY2hlX2ZsdXNoKHNvdXBD
YWNoZSk7CisgICAgICAgICAgICBzb3VwX2NhY2hlX2R1bXAoc291cENhY2hlKTsKKyAgICAgICAg
fQogICAgIH0KK307CiAKLSAgICByZXR1cm4gMDsKK2ludCBXZWJQcm9jZXNzTWFpblVuaXgoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFdlYlBy
b2Nlc3MsIFdlYlByb2Nlc3NNYWluPihhcmdjLCBhcmd2KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzTWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01h
aW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUxOGNkMy4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBXZWJQcm9jZXNzTWFp
bkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotV0tfRVhQT1JUIGludCBXZWJQ
cm9jZXNzTWFpbkd0ayhpbnQgYXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgot
I2VuZGlmIC8vIF9fY3BsdXNwbHVzCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy91bml4L1dlYlByb2Nlc3NNYWluVW5peC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy91
bml4L1dlYlByb2Nlc3NNYWluVW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjIwOWFkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3VuaXgvV2ViUHJvY2Vzc01haW5Vbml4LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlByb2Nlc3NN
YWluVW5peF9oCisjZGVmaW5lIFdlYlByb2Nlc3NNYWluVW5peF9oCisKKyNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitleHRlcm4gIkMiIHsKK1dLX0VY
UE9SVCBpbnQgV2ViUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiogYXJndik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUHJvY2Vzc01haW5Vbml4X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9NYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL2VmbC9NYWluRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA2MjAz
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvTWFpbkVmbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJX
ZWJQcm9jZXNzTWFpbkVmbC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17
Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW5FZmwoYXJnYywgYXJndik7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9ndGsvTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2Zjg5OTAu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZ3RrL01haW5HdGsuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90
b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJXZWJQcm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW5HdGsoYXJnYywgYXJn
dik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L05ldHdvcmtNYWluVW5peC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE2MDRmZDMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
dW5peC9OZXR3b3JrTWFpblVuaXguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCBJbmMuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotCi0jaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNYWluVW5peC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWluKGFyZ2MsIGFy
Z3YpOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
dW5peC9QbHVnaW5NYWluVW5peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3
ZjlhMGQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFBvcnRpb25zIENvcHlyaWdo
dCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgotCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOwotfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>