<?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>82121</bug_id>
          
          <creation_ts>2012-03-24 01:23:26 -0700</creation_ts>
          <short_desc>Notifications should be in Modules/notifications</short_desc>
          <delta_ts>2012-07-07 18:03:12 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79327</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>aestes</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>587039</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-24 01:23:26 -0700</bug_when>
    <thetext>Notifications should be in Modules/notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587040</commentid>
    <comment_count>1</comment_count>
      <attachid>133624</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-24 01:25:08 -0700</bug_when>
    <thetext>Created attachment 133624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587041</commentid>
    <comment_count>2</comment_count>
      <attachid>133624</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-24 01:37:09 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12128047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587045</commentid>
    <comment_count>3</comment_count>
      <attachid>133624</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-24 01:39:44 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12123964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587046</commentid>
    <comment_count>4</comment_count>
      <attachid>133624</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-24 01:40:12 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12131011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587050</commentid>
    <comment_count>5</comment_count>
      <attachid>133624</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-24 01:46:44 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12132003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587051</commentid>
    <comment_count>6</comment_count>
      <attachid>133624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-24 01:51:17 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12131010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587052</commentid>
    <comment_count>7</comment_count>
      <attachid>133624</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-24 01:52:04 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12131013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587054</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-24 01:55:12 -0700</bug_when>
    <thetext>The diff is screwed up somehow.   I think because I&apos;m adding the whole directory?  /me is confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587056</commentid>
    <comment_count>9</comment_count>
      <attachid>133624</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-24 01:59:36 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

Attachment 133624 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12123962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588223</commentid>
    <comment_count>10</comment_count>
      <attachid>133624</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-26 15:49:13 -0700</bug_when>
    <thetext>Comment on attachment 133624
Patch

I need to make a version of this patch that, you know, compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653111</commentid>
    <comment_count>11</comment_count>
      <attachid>148488</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-19 19:42:37 -0700</bug_when>
    <thetext>Created attachment 148488
Patch for EFL and GTK port

Hello Adam,

I wonder whether you will submit modified patch. Anyway, to help you, I make a patch for EFL and GTK ports. However, if you are busy to make this patch again, I would like to submit a patch in order to support all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653142</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-19 20:32:50 -0700</bug_when>
    <thetext>Thank you.  I&apos;ve gotten distracted by other patches.  If you work up a patch here, I&apos;d be happy to review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653178</commentid>
    <comment_count>13</comment_count>
      <attachid>148501</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-19 21:37:41 -0700</bug_when>
    <thetext>Created attachment 148501
Patch for EFL ,GTK and QT port

Thank you for your consideration. This patch is for EFL, GTK and QT ports for now. I&apos;m gonna submit a patch which supports Chromium, Mac and Win ports as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653184</commentid>
    <comment_count>14</comment_count>
      <attachid>148501</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-19 21:55:47 -0700</bug_when>
    <thetext>Comment on attachment 148501
Patch for EFL ,GTK and QT port

Attachment 148501 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13007092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653188</commentid>
    <comment_count>15</comment_count>
      <attachid>148501</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-19 22:01:25 -0700</bug_when>
    <thetext>Comment on attachment 148501
Patch for EFL ,GTK and QT port

Attachment 148501 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13002101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653190</commentid>
    <comment_count>16</comment_count>
      <attachid>148501</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 22:06:24 -0700</bug_when>
    <thetext>Comment on attachment 148501
Patch for EFL ,GTK and QT port

Attachment 148501 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13008095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653709</commentid>
    <comment_count>17</comment_count>
      <attachid>148614</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-20 11:40:30 -0700</bug_when>
    <thetext>Created attachment 148614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653737</commentid>
    <comment_count>18</comment_count>
      <attachid>148614</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 12:00:49 -0700</bug_when>
    <thetext>Comment on attachment 148614
Patch

Attachment 148614 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13005271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653796</commentid>
    <comment_count>19</comment_count>
      <attachid>148614</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 12:56:04 -0700</bug_when>
    <thetext>Comment on attachment 148614
Patch

Attachment 148614 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12998322</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658834</commentid>
    <comment_count>20</comment_count>
      <attachid>148614</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 13:33:15 -0700</bug_when>
    <thetext>Comment on attachment 148614
Patch

This doesn&apos;t appear to build on mac or win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662199</commentid>
    <comment_count>21</comment_count>
      <attachid>150603</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-03 07:13:22 -0700</bug_when>
    <thetext>Created attachment 150603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662201</commentid>
    <comment_count>22</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-03 07:15:47 -0700</bug_when>
    <thetext>This patch is for all ports except for win port. I&apos;m still working on win port as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662212</commentid>
    <comment_count>23</comment_count>
      <attachid>150603</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-03 07:41:36 -0700</bug_when>
    <thetext>Comment on attachment 150603
Patch

Attachment 150603 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13139175</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662796</commentid>
    <comment_count>24</comment_count>
      <attachid>150747</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-04 02:42:00 -0700</bug_when>
    <thetext>Created attachment 150747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663293</commentid>
    <comment_count>25</comment_count>
      <attachid>150747</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-04 21:42:53 -0700</bug_when>
    <thetext>Comment on attachment 150747
Patch

Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663322</commentid>
    <comment_count>26</comment_count>
      <attachid>150747</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 23:02:58 -0700</bug_when>
    <thetext>Comment on attachment 150747
Patch

Clearing flags on attachment: 150747

Committed r121882: &lt;http://trac.webkit.org/changeset/121882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663323</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-04 23:03:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664275</commentid>
    <comment_count>28</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-07-06 15:14:37 -0700</bug_when>
    <thetext>I pointed DerivedSource.make to the new location for notifications idl files in &lt;http://trac.webkit.org/changeset/122036&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664434</commentid>
    <comment_count>29</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-07 18:03:12 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; I pointed DerivedSource.make to the new location for notifications idl files in &lt;http://trac.webkit.org/changeset/122036&gt;.

I&apos;m sorry. I missed it. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133624</attachid>
            <date>2012-03-24 01:25:08 -0700</date>
            <delta_ts>2012-06-20 11:39:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82121-20120324012507.patch</filename>
            <type>text/plain</type>
            <size>123456</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAzLTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTm90aWZpY2F0aW9ucyBzaG91bGQg
YmUgaW4gTW9kdWxlcy9ub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MjEyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBub3RpZmljYXRpb25zIGRpcmVjdG9yeSBpcyBub3cgKGFs
bW9zdCEpIHNlbGYtY29udGFpbmVkLiAgVGhpcworICAgICAgICBwYXRjaCBtb3ZlcyBpdCB0byB0
aGUgTW9kdWxlcyBkaXJlY3RvcnkuICBUaGUgb25lIHJlbWFpbmluZyBkZXBlbmRlbmN5CisgICAg
ICAgIGlzIGluIFdvcmtlclRocmVhZCwgd2hpY2ggd2lsbCByZXF1aXJlIHNvbWUgbW9yZSBzdHVk
eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxl
cy9ub3RpZmljYXRpb25zOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
LgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJpOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9j
b3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBub3RpZmljYXRpb25zOiBSZW1vdmVkLgorICAgICAg
ICAqIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg6IFJlbW92ZWQu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOiBSZW1vdmVkLgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
Lmg6IFJlbW92ZWQuCisgICAgICAgICogbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5pZGw6IFJlbW92ZWQuCisKIDIwMTItMDMtMjMgIFNoYXduIFNpbmdoICA8c2hhd25z
aW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbmNvcnJlY3QgcmVwbGlj
YSBvcmlnaW5UcmFuc2Zvcm0gdXNlZCBpbiBDQ0RhbWFnZVRyYWNrZXIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMTE5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ZpbGVzeXN0ZW0iCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvZ2VvbG9jYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvaW5kZXhlZGRiIgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViYXVkaW8iCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvd2Vic29ja2V0cyIKQEAgLTMwLDcgKzMxLDYgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2xvYWRlci9pY29uIgogICAgICIke1dFQkNPUkVfRElSfS9tYXRobWwiCi0gICAgIiR7
V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvYW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9w
YWdlL3Njcm9sbGluZyIKQEAgLTE2MjYsMTggKzE2MjYsMTggQEAgRU5ESUYgKCkKIAogSUYgKEVO
QUJMRV9OT1RJRklDQVRJT05TKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAg
ICAgICBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCi0gICAgICAgIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAotICAgICAgICBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcAotICAgICAgICBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisg
ICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5j
cHAKICAgICApCiAKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwotICAgICAgICBu
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCi0gICAgICAgIG5vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmlkbAotICAgICAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5pZGwKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
CisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisg
ICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5p
ZGwKICAgICApCiBFTkRJRiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
biBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpbyBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2Vic29ja2V0cyBcCkBAIC00Niw3ICs0Nyw2IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
Q29yZSkvaHRtbC90cmFjayBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2Vi
Q29yZSkvbG9hZGVyL2FwcGNhY2hlIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAog
ICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAgICAkKFdl
YkNvcmUpL3N0b3JhZ2UgXApAQCAtMTA0LDYgKzEwNCwxMCBAQCBCSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0
SW5kZXhlZERhdGFiYXNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCkBAIC0z
ODQsMTAgKzM4OCw2IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rv
ci9TY3JpcHRQcm9maWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0UHJv
ZmlsZU5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNh
dGlvbkNhY2hlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmlkbCBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGwgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9BYnN0cmFjdFZpZXcuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL3BhZ2UvQmFySW5mby5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9Db25z
b2xlLmlkbCBcCkBAIC05MTMsMTIgKzkxMywxMiBAQCBwcmVwcm9jZXNzX2lkbHNfc2NyaXB0ID0g
cGVybCAkKGFkZHByZWZpCiAjIEpTIGJpbmRpbmdzIGdlbmVyYXRvcgogCiBJRExfSU5DTFVERVMg
PSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29y
ZSkvZG9tIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkgXAogICAgICQoV2ViQ29yZSkvaHRtbCBc
CiAgICAgJChXZWJDb3JlKS9jc3MgXAogICAgICQoV2ViQ29yZSkvcGFnZSBcCi0gICAgJChXZWJD
b3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNvcmUpL3htbCBcCiAgICAgJChXZWJDb3Jl
KS9zdmcKIApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTExOTgz
KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNiArMTI5LDEwIEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29u
dGV4dEluZGV4ZWREYXRhYmFzZS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbE1lcmdlci5pZGwgXApAQCAtMzk3LDEwICs0MDEsNiBAQCBJRExfQklORElOR1MgKz0g
XAogICAgICQkUFdEL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAgICAgJCRQV0QvaW5z
cGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCBcCiAgICAgJCRQV0QvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5pZGwgXAotICAgICQkUFdEL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5p
ZGwgXAogICAgICQkUFdEL3BhZ2UvQmFySW5mby5pZGwgXAogICAgICQkUFdEL3BhZ2UvQ29uc29s
ZS5pZGwgXAogICAgICQkUFdEL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiAxMTE5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMgXApAQCAtNDUsNyArNDYsNiBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZyBcCkBAIC03ODMsNiArNzgzLDcgQEAgSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRk
YiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJzb2NrZXRzIFwKQEAgLTc5Niw3ICs3OTcsNiBAQCBJRExfUEFUSCA6PSBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL3RyYWNrIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAg
ICAgJChXZWJDb3JlKS9sb2FkZXIvYXBwY2FjaGUgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0
aW9ucyBcCiAgICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAog
ICAgICQoV2ViQ29yZSkvc3RvcmFnZSBcCkBAIC05NDMsNiArOTQzLDcgQEAgRVhUUkFfRElTVCAr
PSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQoc2hlbGwgbHMg
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlLyouaWRs
KSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzLyouaWRsKSBcCkBAIC05NTUsNyArOTU2LDYgQEAgRVhUUkFfRElTVCArPSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvaHRtbC8qLmlkbCkgXAogCSQoc2hlbGwgbHMg
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci8qLmlkbCkgXAogCSQoc2hlbGwgbHMg
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS8qLmlkbCkgXAotCSQoc2hl
bGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvKi5pZGwpIFwKIAkk
KHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlLyouaWRsKSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGx1Z2lucy8qLmlkbCkgXAogCSQoc2hlbGwg
bHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvKi5pZGwpIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNjgzLDYgKzY4Myw4IEBA
IGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nl
c3Npb25EZXNjcmlwdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9T
aWduYWxpbmdDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJO
b2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaWRsIFwKQEAgLTkxNSw4ICs5MTcsNiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkk
KFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAJJChXZWJDb3JlKS9pbnNw
ZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0JJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwgXAotCSQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaWRsIFwKIAkkKFdlYkNvcmUpL3BhZ2UvQmFySW5mby5pZGwgXAogCSQoV2ViQ29yZSkv
cGFnZS9Db25zb2xlLmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBA
IC0xMTM1LDYgKzExMzUsMTcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBcCkBAIC0yODQyLDE3ICsyODUzLDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmggXAotCVNvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAotCVNvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggXAotCVNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNp
b24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsMTIgQEAgU09VUkNFUyArPSBcCiAgICAgTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmln
YXRvckdlb2xvY2F0aW9uLmNwcCBcCiAgICAgXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9E
T01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAgXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuY3BwIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5jcHAgXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5jcHAgXAorICAgIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0
YWJhc2UuY3BwIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1NRTERhdGFiYXNl
LmNwcCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgXApAQCAtOTgwLDEx
ICs5ODYsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IFwKICAgICBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXAogICAgIGxvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKLSAgICBub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXApAQCAtMTUzOSw2ICsxNTQwLDEz
IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNh
bGxiYWNrLmggXAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25PcHRpb25zLmggXAog
ICAgIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5o
IFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBcCisgICAgTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCisgICAgXAogICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5n
ZVZlcnNpb25XcmFwcGVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93U1FM
RGF0YWJhc2UuaCBcCkBAIC0yMDgyLDEyICsyMDkwLDYgQEAgSEVBREVSUyArPSBcCiAgICAgbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBcCiAgICAgbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmggXAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIFwKLSAgICBub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBc
Ci0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBcCi0gICAgbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmggXAotICAgIG5vdGlmaWNhdGlvbnMvV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmggXAogICAgIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsNiArMTIsMjEgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2dlb2xvY2F0
aW9uL1Bvc2l0aW9uRXJyb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9nZW9sb2NhdGlvbi9Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9nZW9sb2NhdGlv
bi9Qb3NpdGlvbk9wdGlvbnMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNsaWVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlRGV0YWlscy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlckNsaWVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9y
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oJywK
KyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudENhbGxiYWNrLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmgnLApAQCAtMTk0
LDIxICsyMDksNiBAQAogICAgICAgICAgICAgJ2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aCcsCiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQ2xpZW50LmgnLAogICAg
ICAgICAgICAgJ2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMuaCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxFcnJvci5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldC5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNl
dFJvd0xpc3QuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnRDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQ2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DbGllbnQuaCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25Db250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ2hyb21lLmgnLAogICAg
ICAgICAgICAgJ3BhZ2UvQ2hyb21lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ29uc29s
ZS5oJywKQEAgLTgwNSw2ICs4MDUsMTAgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlkbCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbCcsCkBAIC0xMDk4LDEwICsxMTAyLDYgQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGwnLAogICAgICAgICAgICAgJ2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0
aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5pZGwnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuaWRsJywKICAgICAgICAgICAgICdwYWdlL0Fic3RyYWN0Vmlldy5p
ZGwnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5pZGwnLAogICAgICAgICAgICAgJ3BhZ2Uv
Q29uc29sZS5pZGwnLApAQCAtMTQ5NSw2ICsxNDk1LDE2IEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAnLAorICAgICAgICAgICAg
J01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL1dv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNo
L1NwZWVjaEdyYW1tYXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0
LmNwcCcsCkBAIC0yODg5LDE2ICsyODk5LDYgQEAKICAgICAgICAgICAgICdtYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNw
cCcsCiAgICAgICAgICAgICAnbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgnLAotICAgICAgICAg
ICAgJ25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAnLAotICAgICAgICAg
ICAgJ25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oJywKLSAgICAgICAgICAg
ICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250
cm9sbGVyLmNwcCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250
cm9sbGVyLmgnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMuY3BwJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvQmFySW5mby5oJywKICAgICAgICAgICAgICdwYWdlL0Nocm9tZS5jcHAnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBAIElOQ0xVREVQQVRIICs9
IFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkJFNPVVJDRV9E
SVIvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvaW5kZXhl
ZGRiIFwKKyAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwKICAgICAkJFNP
VVJDRV9ESVIvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvd2Vi
ZGF0YWJhc2UgXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL3dlYnNvY2tldHMgXApAQCAtNDcs
NyArNDgsNiBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2xvYWRlci9jYWNo
ZSBcCiAgICAgJCRTT1VSQ0VfRElSL2xvYWRlci9pY29uIFwKICAgICAkJFNPVVJDRV9ESVIvbWF0
aG1sIFwKLSAgICAkJFNPVVJDRV9ESVIvbm90aWZpY2F0aW9ucyBcCiAgICAgJCRTT1VSQ0VfRElS
L3BhZ2UgXAogICAgICQkU09VUkNFX0RJUi9wYWdlL2FuaW1hdGlvbiBcCiAgICAgJCRTT1VSQ0Vf
RElSL3BhZ2UvcXQgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJ
KHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgICAnLi4vTW9kdWxlcy9p
bnRlbnRzJywKICAgICAgICcuLi9Nb2R1bGVzL2luZGV4ZWRkYicsCiAgICAgICAnLi4vTW9kdWxl
cy9tZWRpYXN0cmVhbScsCisgICAgICAnLi4vTW9kdWxlcy9ub3RpZmljYXRpb25zJywKICAgICAg
ICcuLi9Nb2R1bGVzL3NwZWVjaCcsCiAgICAgICAnLi4vTW9kdWxlcy93ZWJhdWRpbycsCiAgICAg
ICAnLi4vTW9kdWxlcy93ZWJkYXRhYmFzZScsCkBAIC05Miw3ICs5Myw2IEBACiAgICAgICAnLi4v
bG9hZGVyL2NhY2hlJywKICAgICAgICcuLi9sb2FkZXIvaWNvbicsCiAgICAgICAnLi4vbWF0aG1s
JywKLSAgICAgICcuLi9ub3RpZmljYXRpb25zJywKICAgICAgICcuLi9wYWdlJywKICAgICAgICcu
Li9wYWdlL2FuaW1hdGlvbicsCiAgICAgICAnLi4vcGFnZS9jaHJvbWl1bScsCkBAIC05NzksMTMg
Kzk3OSwxMyBAQAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvZmlsZXN5
c3RlbScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9pbmRleGVkZGIn
LAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvbWVkaWFzdHJlYW0nLAor
ICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvbm90aWZpY2F0aW9ucycsCiAg
ICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy93ZWJhdWRpbycsCiAgICAgICAg
ICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy93ZWJkYXRhYmFzZScsCiAgICAgICAgICAg
ICAgICctLWluY2x1ZGUnLCAnLi4vY3NzJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcu
Li9kb20nLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL2ZpbGVhcGknLAogICAgICAg
ICAgICAgICAnLS1pbmNsdWRlJywgJy4uL2h0bWwnLAotICAgICAgICAgICAgICAnLS1pbmNsdWRl
JywgJy4uL25vdGlmaWNhdGlvbnMnLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL3Bh
Z2UnLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL3BsdWdpbnMnLAogICAgICAgICAg
ICAgICAnLS1pbmNsdWRlJywgJy4uL3N0b3JhZ2UnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDUzNCw2ICsyNDUzNCw0NiBAQAogCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZp
bHRlcgorCQkJCU5hbWU9Im5vdGlmaWNhdGlvbnMiCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlv
bnMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVs
ZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5v
dGlmaWNhdGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNlbnRlci5jcHAi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxN
b2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG5vdGlmaWNh
dGlvbnNcTm90aWZpY2F0aW9uQ2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXFdvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJCTxG
aWx0ZXIKIAkJCQlOYW1lPSJ3ZWJkYXRhYmFzZSIKIAkJCQk+CiAJCQkJPEZpbGUKQEAgLTUzOTE5
LDQ2ICs1Mzk1OSw2IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCi0JCQlO
YW1lPSJub3RpZmljYXRpb25zIgotCQkJPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XG5vdGlmaWNhdGlvbnNcRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcRE9NV2lu
ZG93Tm90aWZpY2F0aW9ucy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90
aWZpY2F0aW9uLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIKLQkJCQk+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3Rp
ZmljYXRpb25DZW50ZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DbGllbnQuaCIKLQkJCQk+Ci0J
CQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xX
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCiAJ
CQlOYW1lPSJlZGl0aW5nIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEx
MTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNw
cm9wcwkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
JChQcm9qZWN0RGlyKS4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGZpbGVz
eXN0ZW0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZ2VvbG9jYXRpb24mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcaW5kZXhlZGRiJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFiYXNlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxNb2R1bGVzXHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vz
c2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcanNjJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVk
aXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVhcGkmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVy
aW5nXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3ZnJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3Nc
Z2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNpYWxpemF0aW9uJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZh
dWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxwYXJzZXImcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0
b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Ym
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxjYWNoZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXG1hdGht
bCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmlt
YXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xsaW5nJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbW9jayZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmsmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXGNhJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xm
aWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0
ZXJzXGFybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3Bl
bnR5cGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5z
Zm9ybXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlciZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFxwYXJzZXImcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1h
dGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdccHJvcGVydGllcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cdGVzdGluZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3
b3JrZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVx6bGliJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVv
dDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmls
ZXN5c3RlbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xnZW9sb2NhdGlvbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRleGVkZGImcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
TW9kdWxlc1x3ZWJzb2NrZXRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmls
aXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxi
cmlkZ2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGpzYyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5n
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxmaWxlYXBpJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxyZW5kZXJpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xt
YXRobWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVy
aWMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXphdGlvbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cZG9tJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdCZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxjYW52YXMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxccGFyc2VyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxodG1sXHNoYWRvdyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclxhcHBjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFy
Y2hpdmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxtYXRobWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXHNjcm9sbGlu
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2smcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxu
ZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1xjYSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcZmlsdGVyc1xhcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXImcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWxccGFy
c2VyJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHRlc3RpbmcmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0cyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVc
SmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFk
ZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGVcemxpYiZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
Il9fV0lOMzJfXztESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NPTlRFWFRfTUVOVVMiCiAJ
CVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9Ildl
YkNvcmVQcmVmaXguaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlG
b3J3YXJkaW5nSGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkocmV2aXNpb24gMTExOTgzKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAko
d29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQCB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5cY29uZmlnLmgiICIlCiB4Y29weSAveSAvZCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcb2Jq
XFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXE1vZHVsZXNcZmlsZXN5
c3RlbVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5cTW9kdWxlc1xnZW9sb2NhdGlvblwqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIl
XGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxNb2R1bGVzXHdl
YmRhdGFiYXNlXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIK
IHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxNb2R1bGVzXHdlYnNvY2tldHNcKi5oIiAiJUNP
TkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXGFjY2Vzc2liaWxpdHlcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgpAQCAtMzYsNyArMzcsNiBAQCB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5caGlzdG9yeVwqLmgiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5caGlzdG9yeVxjZlwq
LmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAv
ZCAiJVByb2plY3REaXIlLi5caHRtbFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNs
dWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5caHRtbFxwYXJzZXJcKi5o
IiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoteGNvcHkgL3kgL2Qg
IiVQcm9qZWN0RGlyJS4uXG5vdGlmaWNhdGlvbnNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJ
UiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGNzc1wqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGFuaW1h
dGlvblwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMTE5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg0Myw5ICs4NDMsNiBAQAogCQkzMTI4
OEU3MzBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU2RjBFMzAwNUQ2MDAz
NjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmggKi87IH07CiAJCTMxMjg4RTc0MEUzMDA1
RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjg4RTcwMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCAqLzsgfTsKIAkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJL
aXRDU1NLZXlmcmFtZXNSdWxlLmggKi87IH07Ci0JCTMxMjhDQTY4MTQ3MzMxNTIwMDc0QzcyQSAv
KiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjhDQTY3MTQ3MzMxNTIwMDc0QzcyQSAvKiBOb3RpZmljYXRp
b25Db250cm9sbGVyLmNwcCAqLzsgfTsKLQkJMzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8qIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250
cm9sbGVyLmggKi87IH07Ci0JCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3
MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAg
LyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcCAqLzsgfTsKIAkJMzEzMTNGNjYxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRl
ckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIu
aCAqLzsgfTsKIAkJMzEzOEE5RTUxNDc0NDM0NjAwQjBFRDEyIC8qIFN0eWxlU2hhZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM4QTlFNDE0NzQ0
MzQ2MDBCMEVEMTIgLyogU3R5bGVTaGFkZXIuaCAqLzsgfTsKQEAgLTkxNywxNSArOTE0LDExIEBA
CiAJCTMxRkIxQTZDMTIwQTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIx
QTZCMTIwQTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLzsg
fTsKIAkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzE0QUNFOTEwODky
MDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLzsgfTsKIAkJMzMxNEFDRUMxMDg5
MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhj
ZXB0aW9uQmFzZS5oICovOyB9OwotCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZp
Y2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTMx
MDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbi5jcHAgKi87IH07CiAJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdFMSAvKiBK
U05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggKi87IH07
CiAJCTMzNTAzQ0E1MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMTEw
MTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OwogCQkzMzUw
M0NBNjEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0EyMTAxNzlBRDcwMDNC
NDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oICovOyB9OwogCQkzMzUwM0NDMDEwMTc5QzFB
MDAzQjQ3RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NCRjEwMTc5QzFBMDAzQjQ3
RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAgKi87IH07Ci0JCTMzNTAzQ0M3
MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5v
dGlmaWNhdGlvbi5jcHAgKi87IH07Ci0JCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzM5MENBNTEwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5j
cHAgKi87IH07Ci0JCTMzOTBDQTU2MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBD
QTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLzsgfTsKIAkJMzM5
QjVCNjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAy
IC8qIENvb2tpZXNTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMzQzBDQ0Q0MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5w
dXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzND
MENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi87IH07CiAJCTMz
QzBDQ0Q1MTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3
RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLzsgfTsKQEAgLTM0NzcsNiArMzQ3MCwxNyBAQAogCQk5
NzhEMDdDQTE0NUExMDE2MDA5NjkwOEQgLyogU1ZHRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEQwN0M5MTQ1QTEwMTYwMDk2OTA4
RCAvKiBTVkdFeGNlcHRpb24uY3BwICovOyB9OwogCQk5NzhEMDdDQzE0NUExMDJFMDA5NjkwOEQg
LyogWFBhdGhFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc4RDA3Q0IxNDVBMTAyRTAwOTY5MDhEIC8qIFhQYXRoRXhjZXB0aW9uLmNw
cCAqLzsgfTsKIAkJOTc4RDA3Q0UxNDVBMTAzNzAwOTY5MDhEIC8qIFhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3OEQwN0NEMTQ1QTEwMzcwMDk2OTA4RCAvKiBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAg
Ki87IH07CisJCTk3OTQ5RDA2MTUxREI3REMwMDc5NEI4MSAvKiBET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
OTQ5Q0Y3MTUxREI3REMwMDc5NEI4MSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsg
fTsKKwkJOTc5NDlEMDcxNTFEQjdEQzAwNzk0QjgxIC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OTQ5Q0Y4
MTUxREI3REMwMDc5NEI4MSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi87IH07CisJCTk3
OTQ5RDA5MTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5NDlDRkExNTFEQjdEQzAwNzk0Qjgx
IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi87IH07CisJCTk3OTQ5RDBBMTUxREI3REMwMDc5NEI4MSAv
KiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3OTQ5Q0ZCMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Nzk0OUQwQzE1MURC
N0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OTQ5Q0ZEMTUxREI3REMwMDc5NEI4MSAvKiBO
b3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OworCQk5Nzk0OUQwRDE1MURCN0RDMDA3OTRCODEg
LyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzk0OUNGRTE1MURCN0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ2Vu
dGVyLmggKi87IH07CisJCTk3OTQ5RDBGMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25D
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
OTQ5RDAwMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5Nzk0OUQxMDE1MURCN0RD
MDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzk0OUQwMTE1MURCN0RDMDA3OTRCODEgLyog
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi87IH07CisJCTk3OTQ5RDExMTUxREI3REMwMDc5
NEI4MSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzk0OUQwMjE1MURCN0RDMDA3OTRCODEgLyogTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5oICovOyB9OworCQk5Nzk0OUQxMjE1MURCN0RDMDA3OTRCODEgLyog
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5NDlEMDMxNTFEQjdEQzAwNzk0QjgxIC8qIFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKKwkJOTc5NDlEMTMxNTFEQjdEQzAwNzk0Qjgx
IC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzk0OUQwNDE1MURCN0RDMDA3OTRCODEgLyogV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMuaCAqLzsgfTsKIAkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNC
IC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwICovOyB9OwogCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdh
dGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0FBM0NB
NTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYg
LyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi87IH07CkBAIC0zNTA3LDggKzM1MTEsNiBAQAogCQk5
N0FBQkQyRDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFC
RDEyMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
ICovOyB9OwogCQk5N0IxRjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc1NjlFMDAxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCAq
LzsgfTsKIAkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzU2
OUUwMjEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLzsgfTsK
LQkJOTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTI0MTUx
QzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi87IH07Ci0JCTk3QjM4
RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTIzMTUxQzQyNjQw
MDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKIAkJOTdCQzY5REEx
NTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8q
IEFic3RyYWN0RGF0YWJhc2UuY3BwICovOyB9OwogCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMg
LyogQWJzdHJhY3REYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JD
NjlEQzE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDgxNTA1RjA3NjAw
MUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLzsgfTsKQEAgLTM1ODIsOCArMzU4
NCw2IEBACiAJCTk3RTRBMTI2MTRGNEM1RDQwMDg3MEU0MyAvKiBOYXZpZ2F0b3JSZWdpc3RlclBy
b3RvY29sSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTczMEJFMTUxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyLmggKi87IH07CiAJCTk3RTRBMTI3MTRGNEM1RDcwMDg3MEU0MyAvKiBOYXZpZ2F0
b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzMwQkUxNDE0RUYyODZCMDBERjA2QjkgLyogTmF2aWdhdG9y
UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuY3BwICovOyB9OwogCQk5N0VGN0RGRTEwN0U1NUI3MDBE
N0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlw
dENvbnRyb2xsZXJCYXNlLmNwcCAqLzsgfTsKLQkJOTdGOEU2NjUxNTFENEE0QjAwRDJEMTgxIC8q
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RjhFNjYxMTUxRDRBM0YwMEQyRDE4MSAvKiBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgKi87IH07Ci0JCTk3RjhFNjY2MTUxRDRBNEUwMEQyRDE4
MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdGOEU2NjIxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zLmggKi87IH07CiAJCTk4NDI2NEYxMTJENTI4MEEwMDBEODhB
NCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5ODQyNjRFRjEyRDUyODBBMDAwRDg4QTQgLyogTGlua0xvYWRlckNsaWVu
dC5oICovOyB9OwogCQk5ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVC
Qjk2QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi87IH07CiAJCTk4
NUJCOTZFMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QzEzQTk0MDU4MDA3QTBC
NjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oICovOyB9OwpAQCAtNzcxNCw4ICs3NzE0LDYgQEAKIAkJ
MzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNzAwRTMwMDVENjAwMzYxOUFFIC8qIFdl
YktpdENTU0tleWZyYW1lc1J1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lc1J1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyOENBNjcxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHBhdGggPSBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25Db250cm9s
bGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEzMTNGNjQxNDQzQjM1RTAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdFJlbmRlcmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzhBOUU0MTQ3NDQzNDYwMEIwRUQxMiAvKiBT
dHlsZVNoYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVNoYWRl
ci5oOyBwYXRoID0gc3R5bGUvU3R5bGVTaGFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTc3OTUsMTggKzc3OTMsMTEgQEAKIAkJMzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8q
IEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25C
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAw
MEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMz
RjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMzRjcwNEYwRkI0OUNBMjAw
OEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBO
b3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSBOb3Rp
ZmljYXRpb25DbGllbnQuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdF
MSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMz
NTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMzUwM0NBMTEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRp
b25DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0NBMjEwMTc5
QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzM1MDNDQkYxMDE3OUMxQTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNh
dGlvbnNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNE
ZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMzNTAzQ0M2MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uLmNwcDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzM5MENBNTEwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuY3Bw
OyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0
aW9uQ2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlv
bkNlbnRlci5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9u
Q2VudGVyLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8q
IENvb2tpZXNTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29r
aWVzU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDIxMTJD
NUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzM0MwQ0NEMzExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDUsNiArMTA0MzYsMjEgQEAKIAkJOTc4RDA3
QzkxNDVBMTAxNjAwOTY5MDhEIC8qIFNWR0V4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NzhEMDdDQjE0NUExMDJFMDA5NjkwOEQgLyogWFBhdGhFeGNlcHRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhFeGNlcHRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzhEMDdDRDE0NUExMDM3MDA5NjkwOEQg
LyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5Nzk0OUNGNzE1MURCN0RDMDA3OTRCODEgLyogRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlD
RjgxNTFEQjdEQzAwNzk0QjgxIC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oOyBwYXRoID0g
TW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlDRjkxNTFEQjdEQzAwNzk0QjgxIC8qIERPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaWRsOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzk0OUNGQTE1MURC
N0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5jcHA7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlD
RkIxNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlDRkMx
NTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzk0OUNGRDE1MURCN0RD
MDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHBhdGggPSBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTc5NDlDRkUxNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuaDsg
cGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlDRkYxNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlm
aWNhdGlvbkNlbnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzk0OUQwMDE1MURCN0RDMDA3OTRC
ODEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5vdGlmaWNhdGlvbkNsaWVudC5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzk0OUQw
MTE1MURCN0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsg
cGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDlEMDIxNTFEQjdEQzAwNzk0QjgxIC8q
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTc5NDlEMDMxNTFEQjdEQzAwNzk0QjgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmNwcDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3OTQ5RDA0
MTUxREI3REMwMDc5NEI4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOyBw
YXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3OTQ5RDA1MTUxREI3REMwMDc5NEI4MSAv
KiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRp
b25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblNjaGVk
dWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEw
MDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdBQTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldEhlYWRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDc2LDkgKzEwNDgyLDYgQEAKIAkJOTdBQUJE
MTAxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg7
IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdBQUJEMTExNEZBMDlENTAwNzQ1N0FFIC8q
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDsg
cGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QUFCRDEyMTRGQTA5RDUwMDc0
NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOyBw
YXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3QjM4RTIzMTUxQzQyNjQwMDQ2MjJF
OSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTdCMzhFMjQxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3QjM4RTI1MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01X
aW5kb3dOb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBET01XaW5kb3dO
b3RpZmljYXRpb25zLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ2MTUwNUYwNzYw
MDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3REYXRhYmFzZS5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTY3LDkgKzEwNTcwLDYgQEAK
IAkJOTdFNDAyOEQxM0E2OTZFRDAwOTEzRDY3IC8qIEljb25Db250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEljb25Db250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFNDAyOEUxM0E2OTZFRDAwOTEzRDY3IC8qIEljb25D
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb25Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUY3REZEMTA3RTU1QjcwMEQ3
QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTk3RjhFNjYxMTUxRDRBM0YwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdG
OEU2NjIxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
Lmg7IHBhdGggPSBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3RjhFNjYzMTUxRDRBM0YwMEQyRDE4MSAvKiBX
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4
NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTg1QkI5NkIxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1JlbEF0dHJp
YnV0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4NUJCOTZDMTNBOTQwNTgw
MDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpbmtSZWxBdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzNjU0LDcgKzEzNjU0LDYgQEAKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5z
cGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCiAJ
CQkJRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREIC8qIG1hdGhtbCAqLywKLQkJCQkzMzNGNzAzRDBG
QjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYz
MDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxh
dGZvcm0gKi8sCiAJCQkJNURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBA
IC0xNDQyNiwyOCArMTQ0MjUsNiBAQAogCQkJbmFtZSA9IGFuaW1hdGlvbjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBub3Rp
ZmljYXRpb25zICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQk5N0IzOEUyMzE1MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAg
Ki8sCi0JCQkJOTdCMzhFMjQxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaCAqLywKLQkJCQk5N0IzOEUyNTE1MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5pZGwgKi8sCi0JCQkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNh
dGlvbi5jcHAgKi8sCi0JCQkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5oICovLAotCQkJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRs
ICovLAotCQkJCTMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwICovLAotCQkJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50
ZXIuaCAqLywKLQkJCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbCAqLywKLQkJCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9u
Q2xpZW50LmggKi8sCi0JCQkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuY3BwICovLAotCQkJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3Rp
ZmljYXRpb25Db250cm9sbGVyLmggKi8sCi0JCQkJOTdGOEU2NjExNTFENEEzRjAwRDJEMTgxIC8q
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCAqLywKLQkJCQk5N0Y4RTY2MjE1MUQ0QTNG
MDBEMkQxODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCAqLywKLQkJCQk5N0Y4RTY2
MzE1MUQ0QTNGMDBEMkQxODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsICovLAot
CQkJKTsKLQkJCW5hbWUgPSBub3RpZmljYXRpb25zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKIAkJMzM1MDNDOUMxMDE3OUE5QTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbnMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTcxMDgsNiArMTcw
ODUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8q
IGdlb2xvY2F0aW9uICovLAogCQkJCTk3MTJBNTUzMTUwMDRFM0MwMDQ4QUYxMCAvKiBpbmRleGVk
ZGIgKi8sCisJCQkJOTc5NDlDRjYxNTFEQjc4MjAwNzk0QjgxIC8qIG5vdGlmaWNhdGlvbnMgKi8s
CiAJCQkJOTdCQzY5RDUxNTA1RjA1NDAwMUI3NEFDIC8qIHdlYmRhdGFiYXNlICovLAogCQkJCTk3
QUFCQ0Y3MTRGQTA5QjUwMDc0NTdBRSAvKiB3ZWJzb2NrZXRzICovLAogCQkJKTsKQEAgLTE3MzYw
LDYgKzE3MzM4LDI4IEBACiAJCQluYW1lID0gZmlsZWFwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTk3OTQ5Q0Y2MTUxREI3ODIwMDc5NEI4MSAvKiBub3RpZmljYXRpb25z
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5Nzk0OUNG
NzE1MURCN0RDMDA3OTRCODEgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgKi8sCisJCQkJ
OTc5NDlDRjgxNTFEQjdEQzAwNzk0QjgxIC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCAqLywK
KwkJCQk5Nzk0OUNGOTE1MURCN0RDMDA3OTRCODEgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwgKi8sCisJCQkJOTc5NDlDRkExNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbi5jcHAg
Ki8sCisJCQkJOTc5NDlDRkIxNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbi5oICovLAor
CQkJCTk3OTQ5Q0ZDMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb24uaWRsICovLAorCQkJ
CTk3OTQ5Q0ZEMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovLAor
CQkJCTk3OTQ5Q0ZFMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLywK
KwkJCQk5Nzk0OUNGRjE1MURCN0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAq
LywKKwkJCQk5Nzk0OUQwMDE1MURCN0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Ki8sCisJCQkJOTc5NDlEMDExNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwICovLAorCQkJCTk3OTQ5RDAyMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmggKi8sCisJCQkJOTc5NDlEMDMxNTFEQjdEQzAwNzk0QjgxIC8qIFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmNwcCAqLywKKwkJCQk5Nzk0OUQwNDE1MURCN0RDMDA3OTRCODEg
LyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCAqLywKKwkJCQk5Nzk0OUQwNTE1MURCN0RD
MDA3OTRCODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBub3RpZmljYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJOTdBQUJDRjcxNEZBMDlCNTAwNzQ1N0FFIC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjI0NjcsNyArMjI0NjcsNyBAQAogCQkJ
CTg1OTg5REQxMEFDQzhCQkQwMEEwQkM1MSAvKiBET01XaGVlbEV2ZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MDNCOTk3MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3MTJBNUFFMTUwMDRFREEwMDQ4QUYxMCAvKiBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3QjM4RTI3MTUxQzQyNzEwMDQ2
MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk5Nzk0
OUQwNzE1MURCN0RDMDA3OTRCODEgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdEMkFEMDQxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzNTE1MDVGMDgxMDAxQjc0QUMgLyogRE9NV2lu
ZG93U1FMRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNUFFNUFDMTQ5MjVGNUIwMDRE
NTc3NiAvKiBET01XcmFwcGVyVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzY0NCwxMCAr
MjM2NDQsMTAgQEAKIAkJCQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0
eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9k
ZVdpdGhJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkUwQTE5NDVEMDAwQThFRjVG
IC8qIE5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5
MTEgLyogTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMzkwQ0E1NjBGRkMxNTdC
MDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMzUw
M0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQkzMTI4Q0E2QjE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5NDlEMEExNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5NDlEMEQxNTFEQjdEQzAwNzk0QjgxIC8q
IE5vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5NDlEMEYxNTFEQjdE
QzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5
NDlEMTExNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEIwRDdFMkI4MjAwN0MzOTgzIC8qIE5QX2pzb2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAzQTgzQzggLyogbnBh
cGkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1ODMsNyArMjQ1ODMsNyBAQAogCQkJCUYzODIwODk3
MTQ3RDM1RjkwMDEwQkMwNiAvKiBXb3JrZXJDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFNDM0NjQ5MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzEyQTYxMjE1MDA5MENFMDA0OEFGMTAgLyogV29ya2VyQ29udGV4dEluZGV4
ZWREYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTdGOEU2NjYxNTFENEE0RTAwRDJEMTgx
IC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk5Nzk0
OUQxMzE1MURCN0RDMDA3OTRCODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJFNDM0NjRCMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJDb250ZXh0
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTYwMTUwNUYwODEwMDFCNzRBQyAvKiBX
b3JrZXJDb250ZXh0U1FMRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDc0MkUxMTM0
MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjIwLDcgKzI1NjIwLDcgQEAKIAkJCQk4NUM3RjVFODBBQUZCQUZCMDA0MDE0REQgLyogRE9N
V2hlZWxFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1QUQxNTAwNEVEQTAw
NDhBRjEwIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk5N0IzOEUyODE1MUM0MjczMDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5Nzk0OUQwNjE1MURCN0RDMDA3OTRCODEgLyogRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0QyQUQwMzE0QjgyM0E2MDA5
M0RGMzIgLyogRE9NV2luZG93UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZB
MzQxNTA1RjA4MTAwMUI3NEFDIC8qIERPTVdpbmRvd1NRTERhdGFiYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNTNEQTQ4MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yNjgzNCw5ICsyNjgzNCw5IEBACiAJCQkJODU0RkU3MzQwQTIy
OTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Y1
RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFQTdFQkYwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTMzNTAzQ0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlm
aWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMTI4Q0E2ODE0NzMzMTUyMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5
Nzk0OUQwOTE1MURCN0RDMDA3OTRCODEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTk3OTQ5RDBDMTUxREI3REMwMDc5NEI4MSAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOTc5NDlEMTAxNTFEQjdEQzAwNzk0QjgxIC8qIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMEEwRDdFMkI4MjAw
N0MzOTgzIC8qIE5QX2pzb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDBEMEQ3
RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGNTJF
MTExNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzU3OSw3ICsyNzU3OSw3IEBACiAJCQkJRjM4MjA4OTYxNDdEMzVGOTAwMTBCQzA2
IC8qIFdvcmtlckNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0ODBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzEyQTYxMTE1MDA5MENFMDA0OEFGMTAgLyogV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk5N0Y4RTY2NTE1MUQ0QTRCMDBEMkQxODEgLyogV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc5NDlEMTIxNTFE
QjdEQzAwNzk0QjgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3QkM2QTVGMTUwNUYwODEwMDFCNzRBQyAvKiBXb3JrZXJDb250ZXh0U1FMRGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8q
IFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFMjY0MzAxNDc0
ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5jcHAJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0KLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQot
Ci0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cp
Ci0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3ctPmZyYW1lKCkpCi0gICAgLCBtX3dpbmRv
dyh3aW5kb3cpCi17Ci19Ci0KLURPTVdpbmRvd05vdGlmaWNhdGlvbnM6On5ET01XaW5kb3dOb3Rp
ZmljYXRpb25zKCkKLXsKLX0KLQotRE9NV2luZG93Tm90aWZpY2F0aW9ucyogRE9NV2luZG93Tm90
aWZpY2F0aW9uczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc3VwcGxlbWVudE5hbWUsICgiRE9NV2luZG93Tm90aWZpY2F0
aW9ucyIpKTsKLSAgICBET01XaW5kb3dOb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RE9NV2luZG93Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXcgRE9NV2luZG93Tm90aWZpY2F0aW9ucyh3aW5kb3cpOwotICAg
ICAgICBTdXBwbGVtZW50PERPTVdpbmRvdz46OnByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnRO
YW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50
OwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtp
dE5vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cpCi17Ci0gICAgcmV0dXJuIERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OmZyb20od2luZG93KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOwotfQot
Ci12b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZSgpCi17Ci0gICAg
bV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIgPSBtX25vdGlmaWNhdGlvbkNlbnRlci5yZWxl
YXNlKCk7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgpOwotfQotCi12
b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lKEZyYW1lKiBmcmFtZSkK
LXsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWUoZnJhbWUpOwotICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyID0gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFz
ZSgpOwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMoKQotewotICAgIGlmICghbV93aW5kb3ctPmlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChtX25vdGlmaWNh
dGlvbkNlbnRlcikKLSAgICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOwot
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV93aW5kb3ctPmRvY3VtZW50KCk7Ci0gICAgaWYg
KCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogcHJvdmlkZXIgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpj
bGllbnRGcm9tKHBhZ2UpOwotICAgIGlmIChwcm92aWRlcikgCi0gICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVy
KTsgICAgCi0KLSAgICByZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaAkocmV2aXNpb24g
MTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmlj
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01XaW5kb3dOb3RpZmljYXRpb25zX2gK
LSNkZWZpbmUgRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN1
cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV2luZG93
OwotY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwotCi1jbGFzcyBET01XaW5kb3dOb3RpZmljYXRp
b25zIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NV2luZG93PiwgcHVibGljIERPTVdpbmRvd1Byb3Bl
cnR5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5ET01XaW5kb3dOb3RpZmljYXRpb25zKCk7Ci0K
LSAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKERPTVdp
bmRvdyopOwotICAgIHN0YXRpYyBET01XaW5kb3dOb3RpZmljYXRpb25zKiBmcm9tKERPTVdpbmRv
dyopOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZShGcmFtZSopIE9WRVJSSURFOwotCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IERPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7Ci0KLSAg
ICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIERPTVdp
bmRvdyogbV93aW5kb3c7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmlj
YXRpb25DZW50ZXI7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNwZW5kZWRO
b3RpZmljYXRpb25DZW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQotCi0jZW5kaWYgLy8gRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgd2luZG93IHsKLQotICAgIGludGVyZmFj
ZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElP
TlMsCi0gICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAgICBdIERPTVdpbmRvd05vdGlm
aWNhdGlvbnMgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGlt
ZV0gTm90aWZpY2F0aW9uQ2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7Ci0gICAgfTsKLQotfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAko
cmV2aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKLQotI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Ob3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbigpCi0gICAgOiBBY3RpdmVET01PYmplY3QoMCwgdGhpcykKLXsK
LX0KLQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQsIHRoaXMpCi0gICAgLCBtX2lzSFRNTCh0cnVlKQotICAgICwgbV9zdGF0ZShJZGxlKQotICAg
ICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCi17Ci0gICAgaWYgKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1p
c3Npb25BbGxvd2VkKSB7Ci0gICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bV9ub3RpZmljYXRpb25VUkwgPSB1cmw7Ci19Ci0KLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQotICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2lzSFRNTChmYWxzZSkKLSAgICAsIG1f
dGl0bGUodGl0bGUpCi0gICAgLCBtX2JvZHkoYm9keSkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAg
ICAsIG1fbm90aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQotewotICAgIGlmIChtX25vdGlmaWNh
dGlvbkNlbnRlci0+Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJt
aXNzaW9uQWxsb3dlZCkgewotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1faWNvbiA9IGljb25VUkkuaXNFbXB0eSgpID8gS1VSTCgpIDog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKLSAgICBpZiAo
IW1faWNvbi5pc0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1Ob3RpZmljYXRpb246On5O
b3RpZmljYXRpb24oKSAKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBMb2FkaW5nKSB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWwoKTsKLSAgICB9Ci19Ci0KLVBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBLVVJMJiB1
cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAoteyAKLSAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmws
IGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKLSAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5l
ZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwotfQotCi1QYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAoteyAKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgaWNvblVS
SSwgY29udGV4dCwgZWMsIHByb3ZpZGVyKSkpOwotICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElm
TmVlZGVkKCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck5vdGlmaWNhdGlvbjsKLX0KLQotdm9p
ZCBOb3RpZmljYXRpb246OnNob3coKSAKLXsKLSNpZiBQTEFURk9STShRVCkKLSAgICBpZiAoaWNv
blVSTCgpLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBTZXQgdGhlIHN0YXRlIGJlZm9yZSBhY3R1
YWxseSBzaG93aW5nLCBiZWNhdXNlCi0gICAgICAgIC8vIGhhbmRsaW5nIG9mIG9uZGlzcGxheSBt
YXkgcmVseSBvbiB0aGF0LgotICAgICAgICBpZiAobV9zdGF0ZSA9PSBJZGxlKSB7Ci0gICAgICAg
ICAgICBtX3N0YXRlID0gU2hvd2luZzsKLSAgICAgICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkpCi0gICAgICAgICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNs
aWVudCgpLT5zaG93KHRoaXMpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0
TG9hZGluZygpOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChtX3N0YXRlID09IElkbGUg
JiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKSB7Ci0gICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKTsKLSAgICAgICAgbV9zdGF0ZSA9IFNob3dp
bmc7Ci0gICAgfQotI2Vsc2UKLSAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCi0gICAgaWYg
KG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkgJiYgbV9u
b3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpKQotICAgICAgICBtX3N0YXRl
ID0gU2hvd2luZzsKLSNlbmRpZgotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6Y2FuY2VsKCkgCi17
Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBJZGxlOgotICAgICAgICBicmVhazsK
LSAgICBjYXNlIExvYWRpbmc6Ci0gICAgICAgIG1fc3RhdGUgPSBDYW5jZWxsZWQ7Ci0gICAgICAg
IHN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2hvd2luZzoKLSAgICAg
ICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKLSAgICAgICAgICAgIG1fbm90
aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+Y2FuY2VsKHRoaXMpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENhbmNlbGxlZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1FdmVudFRh
cmdldERhdGEqIE5vdGlmaWNhdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEqIE5vdGlmaWNhdGlvbjo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgQWN0
aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAgaWYgKG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5jbGllbnQoKSkKLSAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgp
LT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0
aW9uOjpzdGFydExvYWRpbmcoKQotewotICAgIGlmIChtX3N0YXRlICE9IElkbGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9zdGF0ZSA9IExv
YWRpbmc7Ci0gICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25z
LnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5kQ2FsbGJhY2tzOwotICAgIG9wdGlvbnMuc25p
ZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7Ci0gICAgb3B0aW9ucy5wcmVmbGlnaHRQb2xp
Y3kgPSBDb25zaWRlclByZWZsaWdodDsKLSAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5ID0gQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzOwotICAgIG1fbG9hZGVyID0gVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgUmVzb3VyY2VS
ZXF1ZXN0KGljb25VUkwoKSksIG9wdGlvbnMpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6c3Rv
cExvYWRpbmcoKQotewotICAgIG1faWNvbkRhdGEgPSAwOwotICAgIFJlZlB0cjxUaHJlYWRhYmxl
TG9hZGVyPiBwcm90ZWN0KG1fbG9hZGVyKTsKLSAgICBtX2xvYWRlci0+Y2FuY2VsKCk7Ci19Ci0K
LXZvaWQgTm90aWZpY2F0aW9uOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaW50IHN0YXR1cyA9IHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8
IHN0YXR1cyA+IDI5OSkpIHsKLSAgICAgICAgc3RvcExvYWRpbmcoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2ljb25EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLX0KLQot
dm9pZCBOb3RpZmljYXRpb246OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQotewotICAgIG1faWNvbkRhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb246OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywg
ZG91YmxlKQotewotICAgIGZpbmlzaExvYWRpbmcoKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCi17Ci0gICAgZmluaXNoTG9hZGluZygpOwot
fQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQotewotICAgIGZp
bmlzaExvYWRpbmcoKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OmZpbmlzaExvYWRpbmcoKQot
ewotICAgIGlmIChtX3N0YXRlID09IExvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNo
b3codGhpcykpCi0gICAgICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKLSAgICB9Ci0gICAgdW5z
ZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aFNob3dFdmVudCgpCi17Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zaG93RXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6
ZGlzcGF0Y2hDbGlja0V2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12
b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2
ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaAkocmV2aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIE5vdGlmaWNhdGlvbl9oICAKLSNkZWZpbmUgTm90aWZpY2F0aW9uX2gKLQotI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKLSNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLWNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFRocmVhZGFibGVMb2FkZXI7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNh
dGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIE5vdGlmaWNhdGlvbigpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhj
ZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IHByb3ZpZGVyKTsKLSAgICAKLSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKLQot
ICAgIHZvaWQgc2hvdygpOwotICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICBib29sIGlzSFRNTCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNIVE1MOyB9Ci0gICAgdm9pZCBzZXRIVE1MKGJvb2wgaXNIVE1M
KSB7IG1faXNIVE1MID0gaXNIVE1MOyB9Ci0gICAgCi0gICAgS1VSTCB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQotICAgIHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1f
bm90aWZpY2F0aW9uVVJMID0gdXJsOyB9Ci0gICAgCi0gICAgS1VSTCBpY29uVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9pY29uOyB9Ci0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90
aXRsZTsgfQotICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9Ci0KLSAg
ICBTdHJpbmcgZGlyKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KLSAgICB2b2lkIHNl
dERpcihjb25zdCBTdHJpbmcmIGRpcikgeyBtX2RpcmVjdGlvbiA9IGRpcjsgfQotICAgIAotICAg
IFN0cmluZyByZXBsYWNlSWQoKSBjb25zdCB7IHJldHVybiBtX3JlcGxhY2VJZDsgfQotICAgIHZv
aWQgc2V0UmVwbGFjZUlkKGNvbnN0IFN0cmluZyYgcmVwbGFjZUlkKSB7IG1fcmVwbGFjZUlkID0g
cmVwbGFjZUlkOyB9Ci0KLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGRpcigpID09ICJydGwiID8gUlRMIDogTFRSOyB9Ci0KLSAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHNob3cpOwotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
LSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRpc3BsYXkpOwotI2VuZGlmCi0g
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7Ci0gICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihjbGljayk7Ci0gICAgCi0gICAgdm9pZCBkaXNwYXRjaENsaWNrRXZlbnQoKTsK
LSAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2
ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaFNob3dFdmVudCgpOwotCi0gICAgdXNpbmcgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRp
b24+OjpkZXJlZjsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQotICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpOwotCi0gICAgdm9pZCBzdG9wTG9hZGluZygpOwotCi0gICAgU2hhcmVkQnVmZmVy
KiBpY29uRGF0YSgpIHsgcmV0dXJuIG1faWNvbkRhdGEuZ2V0KCk7IH0KLSAgICB2b2lkIHJlbGVh
c2VJY29uRGF0YSgpIHsgbV9pY29uRGF0YSA9IDA7IH0KLQotICAgIC8vIERlcHJlY2F0ZWQuIFVz
ZSBmdW5jdGlvbnMgZnJvbSBOb3RpZmljYXRpb25DZW50ZXIuCi0gICAgdm9pZCBkZXRhY2hQcmVz
ZW50ZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUg
ZmluaXNoVGltZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwotCi1wcml2YXRl
OgotICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwotICAgIE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0
IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwotCi0gICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLQotICAgIHZvaWQgc3RhcnRM
b2FkaW5nKCk7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKCk7Ci0KLSAgICBib29sIG1faXNIVE1M
OwotCi0gICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgotICAgIEtVUkwgbV9pY29uOwotICAgIFN0
cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2JvZHk7Ci0gICAgLy8gRklYTUU6IERlcHJlY2F0
ZSBIVE1MIE5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX25vdGlmaWNhdGlvblVSTDsKLQotICAg
IFN0cmluZyBtX2RpcmVjdGlvbjsKLSAgICBTdHJpbmcgbV9yZXBsYWNlSWQ7Ci0KLSAgICBlbnVt
IE5vdGlmaWNhdGlvblN0YXRlIHsKLSAgICAgICAgSWRsZSA9IDAsCi0gICAgICAgIExvYWRpbmcg
PSAxLAotICAgICAgICBTaG93aW5nID0gMiwKLSAgICAgICAgQ2FuY2VsbGVkID0gMwotICAgIH07
Ci0KLSAgICBOb3RpZmljYXRpb25TdGF0ZSBtX3N0YXRlOwotCi0gICAgUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Ci0gICAgCi0gICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1f
bG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1faWNvbkRhdGE7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uc19o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
CShyZXZpc2lvbiAxMTE5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7
Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExF
R0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgICAgIEV2
ZW50VGFyZ2V0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKLSAgICBdIE5vdGlmaWNhdGlvbiB7
Ci0gICAgICAgIHZvaWQgc2hvdygpOwotICAgICAgICB2b2lkIGNhbmNlbCgpOwotCi0gICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2hvdzsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGlzcGxheTsKLSNlbmRpZgotICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmNsb3NlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOwot
Ci0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyOwotICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHJlcGxhY2VJZDsKLQotICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAg
ICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dnQpCi0gICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci0KLX0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNl
bnRlci5jcHAJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgi
Ci0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5o
IgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVy
PiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPiBub3RpZmljYXRpb25DZW50ZXIoYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNl
bnRlcihjb250ZXh0LCBjbGllbnQpKSk7Ci0gICAgbm90aWZpY2F0aW9uQ2VudGVyLT5zdXNwZW5k
SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKLX0K
LQotTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi0gICAgOiBBY3Rp
dmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKLXsKLX0K
LQotaW50IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKCkKLXsKLSAgICBpZiAo
IWNsaWVudCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiBO
b3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7Ci0KLSAgICBzd2l0Y2ggKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlmaWNhdGlv
bnMoKSkgewotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0FsbG93OgotICAgICAgICBy
ZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZDsKLSAgICBjYXNlIFNl
Y3VyaXR5T3JpZ2luOjpBbHdheXNEZW55OgotICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xp
ZW50OjpQZXJtaXNzaW9uRGVuaWVkOwotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFzazoKLSAg
ICAgICAgcmV0dXJuIG1fY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bV9jbGllbnQtPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQot
Ci12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQotewotICAgIGlmICghY2xpZW50KCkgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNoIChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25z
KCkpIHsKLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNBbGxvdzoKLSAgICBjYXNlIFNl
Y3VyaXR5T3JpZ2luOjpBbHdheXNEZW55OiB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFkZChOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIodGhpcywgY2FsbGJh
Y2spKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpB
c2s6Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgY2FsbGJhY2spOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6c3RvcCgp
Ci17Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5j
YW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBtX2NsaWVudC0+Y2xlYXJOb3RpZmljYXRpb25zKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
Ci0gICAgbV9jbGllbnQgPSAwOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVz
dFRpbWVkT3V0KE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNr
KiByZXF1ZXN0KQotewotICAgIG1fY2FsbGJhY2tzLnJlbW92ZShyZXF1ZXN0KTsKLX0KLQotUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4g
Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFu
ZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBjYWxsYmFjaykKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjayA9IGFkb3B0UmVmKG5ldyBO
b3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhjZW50ZXIsIGNh
bGxiYWNrKSk7Ci0gICAgcmVxdWVzdENhbGxiYWNrLT5zdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJu
IHJlcXVlc3RDYWxsYmFjay5yZWxlYXNlKCk7Ci19Ci0KLU5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90
aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2soTm90
aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFj
aykKLSAgICA6IG1fbm90aWZpY2F0aW9uQ2VudGVyKGNlbnRlcikKLSAgICAsIG1fdGltZXIodGhp
cywgJk5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjp0aW1l
ckZpcmVkKQotICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKLXsKLX0KLQotdm9pZCBOb3RpZmlj
YXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6c3RhcnRUaW1lcigpCi17
Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uQ2Vu
dGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Tm90aWZp
Y2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+KikKLXsKLSAgICBtX2Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5yZXF1ZXN0
VGltZWRPdXQodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmgJKHJldmlzaW9uIDExMTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTExICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAotI2RlZmluZSBOb3RpZmljYXRpb25DZW50ZXJf
aAotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJUaW1lci5o
IgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBOb3RpZmljYXRpb25DbGllbnQ7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIE5vdGlm
aWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmlj
YXRpb25DbGllbnQqKTsKLQotICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1M
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7
Ci0gICAgICAgIGlmICghY2xpZW50KCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoVVJJ
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGljb25VUkksIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAg
ewotICAgICAgICBpZiAoIWNsaWVudCgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJJLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGVjLCB0aGlzKTsKLSAgICB9Ci0KLSAgICBOb3RpZmljYXRpb25DbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0KLSAgICBpbnQgY2hlY2tQZXJt
aXNzaW9uKCk7Ci0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4pOwotCi0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotcHJpdmF0ZToK
LSAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNh
dGlvbkNsaWVudCopOwotCi0gICAgY2xhc3MgTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrIDog
cHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJh
Y2s+IGNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVyKiwgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KTsKLSAgICAgICAgdm9pZCBzdGFydFRpbWVyKCk7Ci0gICAgICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+Kik7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKE5vdGlmaWNhdGlvbkNl
bnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0KLSAgICAgICAgUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Ci0gICAgICAgIFRpbWVyPE5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gbV90aW1lcjsKLSAgICAgICAgUmVmUHRyPFZvaWRDYWxs
YmFjaz4gbV9jYWxsYmFjazsKLSAgICB9OwotCi0gICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoTm90
aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKik7Ci0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIG1f
Y2xpZW50OwotICAgIEhhc2hTZXQ8UmVmUHRyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4g
PiBtX2NhbGxiYWNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0K
LSNlbmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAkocmV2aXNpb24gMTEx
OTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAg
aW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9U
SUZJQ0FUSU9OUywKLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgICAgICBPbWl0Q29uc3Ry
dWN0b3IKLSAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7Ci0jaWYgIWRlZmluZWQoRU5BQkxFX1RF
WFRfTk9USUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZ
Ci0gICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihp
biBET01TdHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSNlbmRpZgotICAgICAgIFtW
OEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgaWNv
blVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7Ci0KLSAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7Ci0gICAgICAgW0N1c3Rv
bV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwotICAg
IH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaAkocmV2aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uQ2xpZW50X2gKLSNkZWZpbmUgTm90aWZpY2F0
aW9uQ2xpZW50X2gKLQotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1j
bGFzcyBOb3RpZmljYXRpb247Ci1jbGFzcyBLVVJMOwotY2xhc3MgUGFnZTsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudCB7Ci0KLXB1Ymxp
YzoKLSAgICBlbnVtIFBlcm1pc3Npb24gewotICAgICAgICBQZXJtaXNzaW9uQWxsb3dlZCwgLy8g
VXNlciBoYXMgYWxsb3dlZCBub3RpZmljYXRpb25zCi0gICAgICAgIFBlcm1pc3Npb25Ob3RBbGxv
d2VkLCAvLyBVc2VyIGhhcyBub3QgeWV0IGFsbG93ZWQKLSAgICAgICAgUGVybWlzc2lvbkRlbmll
ZCAvLyBVc2VyIGhhcyBleHBsaWNpdGx5IGRlbmllZCBwZXJtaXNzaW9uCi0gICAgfTsKLQotICAg
IC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCi0gICAgdmlydHVhbCBi
b29sIHNob3coTm90aWZpY2F0aW9uKikgPSAwOwotCi0gICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5v
dGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmUgY2FuY2VsZWQuCi0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKSA9IDA7Ci0KLSAgICAvLyBXaGVuIHRo
ZSB1c2VyIGNsb3NlcyBhIHBhZ2UsIG9yIHF1aXRzIHRoZSBjbGllbnQgYXBwbGljYXRpb24sIGFs
bCBvZiB0aGUgcGFnZSdzCi0gICAgLy8gYXNzb2NpYXRlZCBub3RpZmljYXRpb25zIGFyZSBjbGVh
cmVkLgotICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIHsgfQotICAgIAotICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGF0IGEg
Tm90aWZpY2F0aW9uIG9iamVjdCBoYXMgYmVlbiBkZXN0cm95ZWQKLSAgICAvLyAoc3VjaCBhcyBi
eSBhIHBhZ2UgdHJhbnNpdGlvbikuIFRoZSBwcmVzZW50ZXIgbWF5IGNvbnRpbnVlIHNob3dpbmcK
LSAgICAvLyB0aGUgbm90aWZpY2F0aW9uLCBidXQgbXVzdCBub3QgYXR0ZW1wdCB0byBjYWxsIHRo
ZSBldmVudCBoYW5kbGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVz
dHJveWVkKE5vdGlmaWNhdGlvbiopID0gMDsKLQotICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRl
ciB0aGUgY29udHJvbGxlciBhdHRhY2hlZCB0byB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQu
Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7
Ci0KLSAgICAvLyBSZXF1ZXN0cyB1c2VyIHBlcm1pc3Npb24gdG8gc2hvdyBkZXNrdG9wIG5vdGlm
aWNhdGlvbnMgZnJvbSBhIHBhcnRpY3VsYXIKLSAgICAvLyBzY3JpcHQgY29udGV4dC4gVGhlIGNh
bGxiYWNrIHBhcmFtZXRlciBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIHVzZXIgaGFzCi0gICAgLy8g
bWFkZSBhIGRlY2lzaW9uLgotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSA9IDA7Ci0KLSAg
ICAvLyBDYW5jZWwgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzIGZvciB0aGUgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dAotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKLQotICAgIC8vIENoZWNrcyB0aGUgY3VycmVu
dCBsZXZlbCBvZiBwZXJtaXNzaW9uLgotICAgIHZpcnR1YWwgUGVybWlzc2lvbiBjaGVja1Blcm1p
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgfk5vdGlmaWNhdGlvbkNsaWVudCgpIHsgfQotfTsKLQotdm9pZCBwcm92aWRlTm90aWZp
Y2F0aW9uKFBhZ2UqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoUGFnZSogcGFnZSwgTm90aWZpY2F0
aW9uQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1fY2xpZW50KGNs
aWVudCkKLXsKLX0KLQotTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6fk5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIoKQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmaWNh
dGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLX0KLQotUGFzc093blB0cjxOb3RpZmljYXRpb25D
b250cm9sbGVyPiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoUGFnZSogcGFnZSwgTm90
aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb3Rp
ZmljYXRpb25Db250cm9sbGVyKHBhZ2UsIGNsaWVudCkpOwotfQotCi1Ob3RpZmljYXRpb25DbGll
bnQqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20oUGFnZSogcGFnZSkKLXsKLSAg
ICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OmZyb20ocGFnZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jbGllbnQo
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG5hbWUsICgiTm90aWZpY2F0aW9uQ29udHJvbGxlciIpKTsKLSAgICByZXR1
cm4gbmFtZTsKLX0KLQotdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlm
aWNhdGlvbkNsaWVudCogY2xpZW50KQotewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnBy
b3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBO
b3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUocGFnZSwgY2xpZW50KSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTEx
OTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0q
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0qIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0qLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJf
aAotI2RlZmluZSBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKLQotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7Ci0K
LWNsYXNzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm90aWZpY2F0aW9uQ29udHJvbGxlcik7Ci1wdWJs
aWM6Ci0gICAgfk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKLQotICAgIHN0YXRpYyBQYXNzT3du
UHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IGNyZWF0ZShQYWdlKiwgTm90aWZpY2F0aW9uQ2xp
ZW50Kik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsK
LSAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25Db250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdl
Pjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KLSAgICBzdGF0aWMgTm90aWZpY2F0
aW9uQ2xpZW50KiBjbGllbnRGcm9tKFBhZ2UqKTsKLQotICAgIE5vdGlmaWNhdGlvbkNsaWVudCog
Y2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTm90aWZp
Y2F0aW9uQ29udHJvbGxlcihQYWdlKiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0KLSAgICBQYWdl
KiBtX3BhZ2U7Ci0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25Db250
cm9sbGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwCShyZXZpc2lvbiAxMTE5ODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0jaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpXb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQp
Ci17Ci19Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMoKQotewotfQotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnM6OmZyb20oV29ya2VyQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBB
dG9taWNTdHJpbmcgc3VwcGxlbWVudE5hbWUgPSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMi
OwotICAgIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+Ojpmcm9tKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMoY29udGV4dCk7Ci0gICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD46OnByb3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVu
dCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotTm90aWZpY2F0aW9uQ2Vu
dGVyKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhXb3Jr
ZXJDb250ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9uczo6ZnJvbShjb250ZXh0KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOwotfQotCi1Ob3RpZmlj
YXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRp
b25zKCkKLXsKLSAgICBpZiAoIW1fbm90aWZpY2F0aW9uQ2VudGVyKQotICAgICAgICBtX25vdGlm
aWNhdGlvbkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9j
b250ZXh0LT50aHJlYWQoKS0+Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkpOwotICAgIHJldHVybiBt
X25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgJKHJldmlzaW9uIDExMTk4MykKKysrIFNv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRl
ZiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCi0jZGVmaW5lIFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zX2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLWNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJDb250ZXh0OwotCi1jbGFzcyBXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucygp
OwotCi0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhX
b3JrZXJDb250ZXh0Kik7Ci0gICAgc3RhdGljIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBm
cm9tKFdvcmtlckNvbnRleHQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0KLSAgICBOb3RpZmljYXRpb25DZW50
ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIFdvcmtlckNvbnRleHQqIG1fY29udGV4
dDsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbAkocmV2
aXNpb24gMTExOTgzKQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICoKLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBD
b25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBT
dXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAotICAgIF0gV29ya2VyQ29udGV4dE5vdGlmaWNpYXRp
b25zIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5v
dGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOwotICAgIH07Ci0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148488</attachid>
            <date>2012-06-19 19:42:37 -0700</date>
            <delta_ts>2012-06-19 21:37:41 -0700</delta_ts>
            <desc>Patch for EFL and GTK port</desc>
            <filename>patch-notification.patch</filename>
            <type>text/plain</type>
            <size>138115</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWNiMTAzMS4uMWI1MjM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTQsNiArNCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2NhdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9pbmRleGVkZGIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW50ZW50
cyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmljYXRpb25zIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3F1b3RhIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dl
YmF1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgpAQCAtMzIs
NyArMzMsNiBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2xvYWRlci9jYWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2ljb24iCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L21hdGhtbCIKLSAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0
aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFn
ZS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgpAQCAtMTcw
NiwxOSArMTcwNiwxOSBAQCBFTkRJRiAoKQogCiBJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCiAg
ICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5jcHAKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCi0gICAgICAgIG5v
dGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwCisgICAgICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcAorICAgICAgICBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorICAgICAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKyAgICAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmlj
YXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcAogICAgICkKIAogICAgIExJU1Qo
QVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5pZGwKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
Ci0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAotICAgICAgICBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKLSAgICAgICAg
bm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKKyAgICAgICAgTW9k
dWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCisgICAgICAgIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisgICAgICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCisgICAgICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKICAgICApCiBF
TkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDEzMTkxODAuLjc2ZGZiOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCkBAIC0xNSw2ICsxNSw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cyBcCkBAIC00NSw3ICs0Niw2IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZSBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL21hdGht
bCBcCi0JLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGFnZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nIFwKQEAgLTg2MSw2ICs4NjEsNyBAQCBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYnNvY2tldHMgXApAQCAtODc1LDcgKzg3Niw2IEBAIElETF9QQVRIIDo9IFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvdHJhY2sgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAk
KFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25z
IFwKICAgICAkKFdlYkNvcmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAg
JChXZWJDb3JlKS9zdG9yYWdlIFwKQEAgLTEwMjIsNiArMTAyMiw3IEBAIEVYVFJBX0RJU1QgKz0g
XAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vKi5pZGwpIFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQo
c3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvLyouaWRsKSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS8qLmlkbCkg
XAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy8qLmlkbCkgXApAQCAtMTAzNSw3ICsxMDM2LDYgQEAgRVhUUkFfRElTVCArPSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvaHRtbC8qLmlkbCkgXAogCSQoc2hlbGwgbHMg
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci8qLmlkbCkgXAogCSQoc2hlbGwgbHMg
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS8qLmlkbCkgXAotCSQoc2hl
bGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvKi5pZGwpIFwKIAkk
KHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlLyouaWRsKSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGx1Z2lucy8qLmlkbCkgXAogCSQoc2hlbGwg
bHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvKi5pZGwpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDM2Y2UxMDUuLjUyMDYxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNzAwLDYgKzcwMCw5IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRs
IFwKQEAgLTkzOSw5ICs5NDIsNiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUp
L2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0b3IvU2Ny
aXB0UHJvZmlsZU5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmlkbCBcCi0JJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5pZGwgXAotCSQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRs
IFwKLQkkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL0JhckluZm8uaWRsIFwKIAkkKFdlYkNvcmUpL3Bh
Z2UvQ29uc29sZS5pZGwgXAogCSQoV2ViQ29yZSkvcGFnZS9Db29yZGluYXRlcy5pZGwgXApAQCAt
MTE3NCw2ICsxMTc0LDE4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2lu
ZG93Tm90aWZpY2F0aW9ucy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwK
QEAgLTI5MjAsMTggKzI5MzIsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4
dEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
bGllbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250
cm9sbGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
b250cm9sbGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCi0J
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQwMTczZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKQEAgLTAs
MCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVy
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cp
CisgICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3ctPmZyYW1lKCkpCisgICAgLCBtX3dpbmRv
dyh3aW5kb3cpCit7Cit9CisKK0RPTVdpbmRvd05vdGlmaWNhdGlvbnM6On5ET01XaW5kb3dOb3Rp
ZmljYXRpb25zKCkKK3sKK30KKworRE9NV2luZG93Tm90aWZpY2F0aW9ucyogRE9NV2luZG93Tm90
aWZpY2F0aW9uczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc3VwcGxlbWVudE5hbWUsICgiRE9NV2luZG93Tm90aWZpY2F0
aW9ucyIpKTsKKyAgICBET01XaW5kb3dOb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RE9NV2luZG93Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKSk7CisgICAgaWYgKCFzdXBwbGVtZW50KSB7CisgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXcgRE9NV2luZG93Tm90aWZpY2F0aW9ucyh3aW5kb3cpOworICAg
ICAgICBTdXBwbGVtZW50PERPTVdpbmRvdz46OnByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnRO
YW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50
OworfQorCitOb3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtp
dE5vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgcmV0dXJuIERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OmZyb20od2luZG93KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOworfQor
Cit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNo
ZSgpCit7CisgICAgbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIgPSBtX25vdGlmaWNhdGlv
bkNlbnRlci5yZWxlYXNlKCk7CisgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFt
ZUZvclBhZ2VDYWNoZSgpOworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29u
bmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSogZnJhbWUpCit7CisgICAgRE9NV2luZG93UHJv
cGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7CisgICAgbV9ub3RpZmlj
YXRpb25DZW50ZXIgPSBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNlKCk7Cit9
CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkNhY2hlZEZyYW1lKCkKK3sKKyAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9IG51
bGxwdHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5D
YWNoZWRGcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0
cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCit7CisgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBu
dWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
RnJhbWUoKTsKK30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGV0YWNoR2xv
YmFsT2JqZWN0RnJvbUZyYW1lKCkKK3sKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG51bGxw
dHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUoKTsKK30KKworTm90aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3
ZWJraXROb3RpZmljYXRpb25zKCkKK3sKKyAgICBpZiAoIW1fd2luZG93LT5pc0N1cnJlbnRseURp
c3BsYXllZEluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobV9ub3RpZmlj
YXRpb25DZW50ZXIpCisgICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsK
KworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fd2luZG93LT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBOb3RpZmljYXRpb25DbGllbnQqIHByb3ZpZGVyID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
Y2xpZW50RnJvbShwYWdlKTsKKyAgICBpZiAocHJvdmlkZXIpIAorICAgICAgICBtX25vdGlmaWNh
dGlvbkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRvY3VtZW50LCBwcm92aWRl
cik7ICAgIAorCisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlMjZkZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCisjZGVmaW5lIERP
TVdpbmRvd05vdGlmaWNhdGlvbnNfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJs
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRvdzsKK2NsYXNzIE5v
dGlmaWNhdGlvbkNlbnRlcjsKKworY2xhc3MgRE9NV2luZG93Tm90aWZpY2F0aW9ucyA6IHB1Ymxp
YyBTdXBwbGVtZW50PERPTVdpbmRvdz4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpOworCisgICAgc3RhdGlj
IE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqKTsKKyAg
ICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogZnJvbShET01XaW5kb3cqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFt
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
RnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVj
dEZyb21GcmFtZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERPTVdpbmRv
d05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7CisKKyAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdl
YmtpdE5vdGlmaWNhdGlvbnMoKTsKKworICAgIERPTVdpbmRvdyogbV93aW5kb3c7CisgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7CisgICAgUmVmUHRy
PE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gRE9NV2luZG93
Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4YTEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlk
bApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVs
ZSB3aW5kb3cgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKKyAgICAgICAgU3VwcGxlbWVudGFsPURPTVdp
bmRvdworICAgIF0gRE9NV2luZG93Tm90aWZpY2F0aW9ucyB7CisjaWYgZGVmaW5lZChFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gTm90aWZpY2F0aW9u
Q2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1dGUg
Tm90aWZpY2F0aW9uQ29uc3RydWN0b3IgTm90aWZpY2F0aW9uOworI2VuZGlmCisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDg5OTJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwyOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgorI2luY2x1ZGUgIkRp
Y3Rpb25hcnkuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQu
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVy
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiV2luZG93
Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKKyAgICA6
IEFjdGl2ZURPTU9iamVjdCgwLCB0aGlzKQoreworfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lzSFRNTCh0cnVlKQorICAgICwgbV9zdGF0ZShJZGxl
KQorICAgICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fbm90
aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb25BbGxvd2VkKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lzSFRNTChmYWxzZSkKKyAgICAsIG1fdGl0bGUodGl0
bGUpCisgICAgLCBtX2JvZHkoYm9keSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fbm90
aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQoreworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxs
b3dlZCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1faWNvbiA9IGljb25VUkkuaXNFbXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKKyAgICBpZiAoIW1faWNvbi5p
c0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV90aXRsZSh0aXRs
ZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fdGFza1RpbWVyKGFkb3B0UHRyKG5ldyBU
aW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246OnRhc2tUaW1lckZpcmVkKSkp
Cit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgbV9ub3RpZmljYXRp
b25DZW50ZXIgPSBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygpKTsKKyAgICAKKyAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKTsKKyAgICBtX3Rhc2tUaW1lci0+
c3RhcnRPbmVTaG90KDApOworfQorI2VuZGlmCisKK05vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bigpIAoreworfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCit7IAorICAgIFJlZlB0cjxOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4
dCwgZWMsIHByb3ZpZGVyKSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBwcm92aWRlcikgCit7IAorICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNh
dGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBib2R5LCBpY29uVVJJLCBjb250
ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0aWMgdm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7Cisg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3Rl
bmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24pOworICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAg
bm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFz
ZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxl
KSkpOworICAgIFN0cmluZyBhcmd1bWVudDsKKyAgICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBh
cmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAg
aWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+
c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAg
IGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3Nl
Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAib25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNh
dGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworCisgICAg
bm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9u
LnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCitjb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlv
bjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JOb3RpZmljYXRpb247Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCit7
CisgICAgLy8gcHJldmVudCBkb3VibGUtc2hvd2luZworICAgIGlmIChtX3N0YXRlID09IElkbGUg
JiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+c2hvdyh0aGlzKSkgeworICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKKyAg
ICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgIH0KK30KKwordm9pZCBOb3RpZmlj
YXRpb246OmNsb3NlKCkKK3sKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIElkbGU6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2hvd2luZzoKKyAgICAgICAgaWYgKG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKKyAgICAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+Y2FuY2VsKHRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENsb3Nl
ZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitFdmVudFRhcmdldERhdGEqIE5vdGlmaWNh
dGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OworfQorCitFdmVudFRhcmdldERhdGEqIE5vdGlmaWNhdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit2b2lkIE5vdGlm
aWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250
ZXh0RGVzdHJveWVkKCk7CisgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkK
KyAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5ub3RpZmljYXRpb25PYmpl
Y3REZXN0cm95ZWQodGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCit7
CisgICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2VkKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0
ZSA9IENsb3NlZDsKKyAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKK30KKwordm9pZCBO
b3RpZmljYXRpb246OmRpc3BhdGNoU2hvd0V2ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQoKQoreworICAgIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7CisgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICBmaW5hbGl6ZSgpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hFcnJvckV2ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCit2b2lkIE5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZp
Y2F0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkpOworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRp
bWVyID09IG1fdGFza1RpbWVyLmdldCgpKTsKKyAgICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7CisgICAgICAg
IGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNob3co
KTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2NvbnN0IFN0cmlu
ZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uTGV2ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKTsKKyAgICByZXR1cm4g
cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24o
Y29udGV4dCkpOworfQorCitjb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0
cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWlzc2lvbikKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWxsb3dlZFBlcm1pc3Npb24sICgiZ3Jh
bnRlZCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGVuaWVkUGVy
bWlzc2lvbiwgKCJkZW5pZWQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGRlZmF1bHRQZXJtaXNzaW9uLCAoImRlZmF1bHQiKSk7CisgICAgc3dpdGNoIChwZXJtaXNz
aW9uKSB7CisgICAgY2FzZSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkOgor
ICAgICAgICByZXR1cm4gYWxsb3dlZFBlcm1pc3Npb247CisgICAgY2FzZSBOb3RpZmljYXRpb25D
bGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ6CisgICAgICAgIHJldHVybiBkZW5pZWRQZXJtaXNzaW9u
OworICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uTm90QWxsb3dlZDoKKyAg
ICAgICAgcmV0dXJuIGRlZmF1bHRQZXJtaXNzaW9uOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZGVuaWVkUGVybWlzc2lvbjsKK30KKwordm9pZCBO
b3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKTsKKyAgICBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSkt
PmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBjYWxsYmFjayk7Cit9CisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGU5MTAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEs
MjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uX2ggIAorI2RlZmluZSBOb3RpZmlj
YXRpb25faAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisjaW5jbHVkZSAiVGltZXIuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGljdGlvbmFyeTsKK2NsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsK
K2NsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazsKK2NsYXNzIFJlc291cmNlRXJy
b3I7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKK2NsYXNzIFRocmVhZGFibGVMb2FkZXI7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CisKK2NsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4s
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgTm90aWZpY2F0aW9uKCk7CisjaWYgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IHByb3ZpZGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyNl
bmRpZgorICAgIAorICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOworCisgICAgdm9pZCBzaG93
KCk7CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIHZvaWQgY2FuY2VsKCkg
eyBjbG9zZSgpOyB9CisjZW5kaWYKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBib29sIGlzSFRN
TCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIVE1MOyB9CisgICAgdm9pZCBzZXRIVE1MKGJvb2wgaXNI
VE1MKSB7IG1faXNIVE1MID0gaXNIVE1MOyB9CisgICAgCisgICAgS1VSTCB1cmwoKSBjb25zdCB7
IHJldHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQorICAgIHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7
IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9CisgICAgCisgICAgS1VSTCBpY29uVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9pY29uOyB9CisKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVy
biBtX3RpdGxlOyB9CisgICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0K
KworICAgIFN0cmluZyBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZv
aWQgc2V0RGlyKGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fZGlyZWN0aW9uID0gZGlyOyB9CisKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgU3RyaW5nIHJlcGxhY2VJZCgpIGNv
bnN0IHsgcmV0dXJuIHRhZygpOyB9CisgICAgdm9pZCBzZXRSZXBsYWNlSWQoY29uc3QgU3RyaW5n
JiByZXBsYWNlSWQpIHsgc2V0VGFnKHJlcGxhY2VJZCk7IH0KKyNlbmRpZgorCisgICAgU3RyaW5n
IHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9CisgICAgdm9pZCBzZXRUYWcoY29uc3QgU3Ry
aW5nJiB0YWcpIHsgbV90YWcgPSB0YWc7IH0KKworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gZGlyKCkgPT0gInJ0bCIgPyBSVEwgOiBMVFI7IH0KKworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2hvdyk7CisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGlzcGxh
eSk7CisjZW5kaWYKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKKyAgICAKKyAgICB2b2lkIGRpc3BhdGNo
Q2xpY2tFdmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgdm9pZCBk
aXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICB2b2lkIGRpc3BhdGNoU2hvd0V2ZW50KCk7CisKKyAg
ICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNl
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQorCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQorICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisKKyAgICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOwor
CisgICAgLy8gRGVwcmVjYXRlZC4gVXNlIGZ1bmN0aW9ucyBmcm9tIE5vdGlmaWNhdGlvbkNlbnRl
ci4KKyAgICB2b2lkIGRldGFjaFByZXNlbnRlcigpIHsgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgp
OworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
cGVybWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bik7CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7CisjZW5k
aWYKKworcHJpdmF0ZToKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgTm90
aWZpY2F0aW9uKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7CisgICAgTm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworI2VuZGlmCisKKyAgICB2b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5
KSB7IG1fYm9keSA9IGJvZHk7IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmdJY29uKCk7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKKyNlbmRp
ZgorICAgIAorICAgIGJvb2wgbV9pc0hUTUw7CisKKyAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMu
CisgICAgS1VSTCBtX2ljb247CisgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nIG1fYm9k
eTsKKyAgICAvLyBGSVhNRTogRGVwcmVjYXRlIEhUTUwgTm90aWZpY2F0aW9ucy4KKyAgICBLVVJM
IG1fbm90aWZpY2F0aW9uVVJMOworCisgICAgU3RyaW5nIG1fZGlyZWN0aW9uOworICAgIFN0cmlu
ZyBtX3RhZzsKKworICAgIGVudW0gTm90aWZpY2F0aW9uU3RhdGUgeworICAgICAgICBJZGxlID0g
MCwKKyAgICAgICAgU2hvd2luZyA9IDEsCisgICAgICAgIENsb3NlZCA9IDIsCisgICAgfTsKKwor
ICAgIE5vdGlmaWNhdGlvblN0YXRlIG1fc3RhdGU7CisKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKKyAgICAKKyAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBPd25Q
dHI8VGltZXI8Tm90aWZpY2F0aW9uPiA+IG1fdGFza1RpbWVyOworI2VuZGlmCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMmViN2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05P
VElGSUNBVElPTlMsCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgRXZlbnRUYXJn
ZXQsCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNB
VElPTlMKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBbT3B0aW9u
YWw9RGVmYXVsdElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IG9wdGlvbnMpLAorICAgICAgICBDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorI2Vsc2UKKyAgICAgICAgT21pdENvbnN0cnVj
dG9yCisjZW5kaWYKKyAgICBdIE5vdGlmaWNhdGlvbiB7CisgICAgICAgIHZvaWQgc2hvdygpOwor
I2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyNlbmRpZgorI2lmIGRlZmlu
ZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAg
IHZvaWQgY2xvc2UoKTsKKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJ
T05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gc3RhdGljIERPTVN0cmluZyBwZXJtaXNzaW9uTGV2ZWwoKTsKKyAgICAg
ICAgW0N1c3RvbV0gc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrIGNhbGxiYWNrKTsKKyNlbmRpZgorCisgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uc2hvdzsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uZGlzcGxheTsKKyNlbmRpZgorICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNs
b3NlOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOworCisgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyOworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmli
dXRlIERPTVN0cmluZyByZXBsYWNlSWQ7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHRhZzsKKyNlbmRpZgorCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQor
ICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50
IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
ZWJiNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gTm90aWZpY2F0
aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZp
Y2F0aW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4g
bm90aWZpY2F0aW9uQ2VudGVyKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4
dCwgY2xpZW50KSkpOworICAgIG5vdGlmaWNhdGlvbkNlbnRlci0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNlKCk7Cit9CisKK05vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7Cit9CisKKyNpZiBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitpbnQgTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Bl
cm1pc3Npb24oKQoreworICAgIGlmICghY2xpZW50KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmll
ZDsKKworICAgIHN3aXRjaCAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5TaG93Tm90aWZpY2F0aW9ucygpKSB7CisgICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6
QWx3YXlzQWxsb3c6CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b25BbGxvd2VkOworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0Rlbnk6CisgICAgICAg
IHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgY2FzZSBT
ZWN1cml0eU9yaWdpbjo6QXNrOgorICAgICAgICByZXR1cm4gbV9jbGllbnQtPmNoZWNrUGVybWlz
c2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBtX2NsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbihQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgaWYgKCFjbGllbnQoKSB8fCAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2gg
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlm
aWNhdGlvbnMoKSkgeworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0FsbG93OgorICAg
IGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0Rlbnk6IHsKKyAgICAgICAgbV9jYWxsYmFja3Mu
YWRkKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcih0aGlz
LCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgU2VjdXJpdHlP
cmlnaW46OkFzazoKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7Cit9CisjZW5kaWYKKwordm9pZCBOb3RpZmljYXRp
b25DZW50ZXI6OnN0b3AoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NsaWVudC0+Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgbV9jbGllbnQtPmNsZWFyTm90aWZpY2F0aW9ucyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgIG1fY2xpZW50ID0gMDsKK30KKwordm9pZCBOb3RpZmljYXRp
b25DZW50ZXI6OnJlcXVlc3RUaW1lZE91dChOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlv
blJlcXVlc3RDYWxsYmFjayogcmVxdWVzdCkKK3sKKyAgICBtX2NhbGxiYWNrcy5yZW1vdmUocmVx
dWVzdCk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25S
ZXF1ZXN0Q2FsbGJhY2s+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVyKE5vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyLCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sg
PSBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2Fs
bGJhY2soY2VudGVyLCBjYWxsYmFjaykpOworICAgIHJlcXVlc3RDYWxsYmFjay0+c3RhcnRUaW1l
cigpOworICAgIHJldHVybiByZXF1ZXN0Q2FsbGJhY2sucmVsZWFzZSgpOworfQorCitOb3RpZmlj
YXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Tm90aWZpY2F0aW9uUmVx
dWVzdENhbGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gY2FsbGJhY2spCisgICAgOiBtX25vdGlmaWNhdGlvbkNlbnRlcihjZW50ZXIpCisg
ICAgLCBtX3RpbWVyKHRoaXMsICZOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjazo6dGltZXJGaXJlZCkKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCit7Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6
OnN0YXJ0VGltZXIoKQoreworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lk
IE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjp0aW1lckZp
cmVkKFRpbWVyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNr
PiopCit7CisgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICBtX25vdGlmaWNhdGlv
bkNlbnRlci0+cmVxdWVzdFRpbWVkT3V0KHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjNmNmQ2ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTAsMCArMSwxMTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAorI2RlZmluZSBOb3RpZmljYXRpb25DZW50
ZXJfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CitjbGFzcyBWb2lkQ2FsbGJhY2s7CisKK2NsYXNzIE5v
dGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4s
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3Rp
ZmljYXRpb25DbGllbnQqKTsKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAg
ICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBpZiAoIWNsaWVu
dCgpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVSSS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRo
aXMpOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
ICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4
Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjbGllbnQoKSkgeworICAgICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwg
aWNvblVSSSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50OyB9CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgaW50IGNo
ZWNrUGVybWlzc2lvbigpOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KTsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklE
RTsKKworcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOworCisgICAgY2xhc3MgTm90aWZpY2F0aW9uUmVx
dWVzdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxi
YWNrPiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25SZXF1ZXN0Q2FsbGJhY2s+IGNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVy
KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICAgICAgdm9pZCBzdGFydFRpbWVyKCk7
CisgICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJh
Y2s+Kik7CisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNr
KE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisKKyAgICAg
ICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7CisgICAg
ICAgIFRpbWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gbV90aW1lcjsKKyAgICAgICAg
UmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICB9OworCisgICAgdm9pZCByZXF1
ZXN0VGltZWRPdXQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKik7CisKKyAgICBOb3RpZmlj
YXRpb25DbGllbnQqIG1fY2xpZW50OworICAgIEhhc2hTZXQ8UmVmUHRyPE5vdGlmaWNhdGlvblJl
cXVlc3RDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTk5YmE5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5pZGwKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1MRUdBQ1lfTk9USUZJQ0FU
SU9OUywKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBPbWl0Q29uc3RydWN0b3IK
KyAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisjaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfTk9U
SUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZCisgICAg
ICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihpbiBET01T
dHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgorICAgICAgIFtWOEN1c3Rv
bV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgaWNvblVybCwg
aW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKKyAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CisgICAgICAgW0N1c3RvbV0gdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
ZTkyODM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBO
b3RpZmljYXRpb25DbGllbnRfaAorI2RlZmluZSBOb3RpZmljYXRpb25DbGllbnRfaAorCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENh
bGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEtVUkw7CitjbGFzcyBOb3RpZmljYXRpb247
CitjbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgTm90
aWZpY2F0aW9uQ2xpZW50IHsKKworcHVibGljOgorICAgIGVudW0gUGVybWlzc2lvbiB7CisgICAg
ICAgIFBlcm1pc3Npb25BbGxvd2VkLCAvLyBVc2VyIGhhcyBhbGxvd2VkIG5vdGlmaWNhdGlvbnMK
KyAgICAgICAgUGVybWlzc2lvbk5vdEFsbG93ZWQsIC8vIFVzZXIgaGFzIG5vdCB5ZXQgYWxsb3dl
ZAorICAgICAgICBQZXJtaXNzaW9uRGVuaWVkIC8vIFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVk
IHBlcm1pc3Npb24KKyAgICB9OworCisgICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlv
biBiZSBzaG93bi4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKSA9IDA7CisK
KyAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVl
biBzaG93biBiZSBjYW5jZWxlZC4KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlv
biopID0gMDsKKworICAgIC8vIFdoZW4gdGhlIHVzZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMg
dGhlIGNsaWVudCBhcHBsaWNhdGlvbiwgYWxsIG9mIHRoZSBwYWdlJ3MKKyAgICAvLyBhc3NvY2lh
dGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyZWQuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CisgICAgCisgICAgLy8gSW5m
b3JtcyB0aGUgcHJlc2VudGVyIHRoYXQgYSBOb3RpZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRl
c3Ryb3llZAorICAgIC8vIChzdWNoIGFzIGJ5IGEgcGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNl
bnRlciBtYXkgY29udGludWUgc2hvd2luZworICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBt
dXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXJzLgorICAgIHZpcnR1YWwg
dm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKikgPSAwOworCisg
ICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRo
ZSBwYWdlIGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9u
Q29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKKyAgICAvLyBSZXF1ZXN0cyB1c2VyIHBlcm1pc3Npb24gdG8gc2hvdyBkZXNrdG9wIG5v
dGlmaWNhdGlvbnMgZnJvbSBhIHBhcnRpY3VsYXIKKyAgICAvLyBzY3JpcHQgY29udGV4dC4gVGhl
IGNhbGxiYWNrIHBhcmFtZXRlciBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIHVzZXIgaGFzCisgICAg
Ly8gbWFkZSBhIGRlY2lzaW9uLgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSA9IDA7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPikgPSAwOworI2VuZGlmCisKKyAgICAvLyBDYW5jZWwgYWxs
IG91dHN0YW5kaW5nIHJlcXVlc3RzIGZvciB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopID0gMDsKKworICAgIC8vIENoZWNrcyB0aGUgY3VycmVudCBsZXZlbCBvZiBwZXJt
aXNzaW9uLgorICAgIHZpcnR1YWwgUGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk5vdGlmaWNh
dGlvbkNsaWVudCgpIHsgfQorfTsKKwordm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqLCBO
b3RpZmljYXRpb25DbGllbnQqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gTm90aWZpY2F0aW9uQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmJkOWJmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcihOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVu
dCkKK3sKK30KKworTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6fk5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmaWNhdGlv
bkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKK30KKworUGFzc093blB0cjxOb3RpZmljYXRpb25Db250
cm9sbGVyPiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoTm90aWZpY2F0aW9uQ2xpZW50
KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb3RpZmljYXRpb25Db250cm9s
bGVyKGNsaWVudCkpOworfQorCitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmNsaWVudEZyb20oUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoTm90aWZpY2F0aW9uQ29u
dHJvbGxlciogY29udHJvbGxlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSkp
CisgICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jbGllbnQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgi
Tm90aWZpY2F0aW9uQ29udHJvbGxlciIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBw
cm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50
KQoreworICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmlj
YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBOb3RpZmljYXRpb25Db250cm9sbGVy
OjpjcmVhdGUoY2xpZW50KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mZDE5NjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYxIEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
KgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyovCisKKyNpZm5kZWYgTm90aWZp
Y2F0aW9uQ29udHJvbGxlcl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAorCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vdGlm
aWNhdGlvbkNsaWVudDsKKworY2xhc3MgTm90aWZpY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBT
dXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb3RpZmljYXRpb25D
b250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICB+Tm90aWZpY2F0aW9uQ29udHJvbGxlcigpOworCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gY3JlYXRlKE5vdGlm
aWNhdGlvbkNsaWVudCopOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1l
bnROYW1lKCk7CisgICAgc3RhdGljIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGZyb20oUGFnZSog
cGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ29udHJvbGxlcio+KFN1cHBs
ZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CisgICAgc3RhdGlj
IE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50RnJvbShQYWdlKik7CisKKyAgICBOb3RpZmljYXRp
b25DbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgCitwcml2YXRlOgor
ICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ2xpZW50Kik7CisKKyAgICBO
b3RpZmljYXRpb25DbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg0ZTczMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tfaAorI2RlZmluZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaAorCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KGNvbnN0IFN0cmluZyYgcGVybWlzc2lvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjEx
MTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKQEAgLTAsMCArMSwzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUywKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4g
RE9NU3RyaW5nIHBlcm1pc3Npb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZWRi
OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6Oldvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKK3sKK30KKworV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6On5Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucygpCit7Cit9CisKK1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbShXb3JrZXJDb250ZXh0KiBjb250
ZXh0KQoreworICAgIEF0b21pY1N0cmluZyBzdXBwbGVtZW50TmFtZSA9ICJXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucyI7CisgICAgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OmZyb20oY29udGV4dCwgc3VwcGxlbWVudE5hbWUpKTsK
KyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucyhjb250ZXh0KTsKKyAgICAgICAgU3VwcGxlbWVudDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0Pjo6cHJvdmlkZVRvKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lLCBhZG9w
dFB0cihzdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBwbGVtZW50OworfQorCitO
b3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3Rp
ZmljYXRpb25zKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zOjpmcm9tKGNvbnRleHQpLT53ZWJraXROb3RpZmljYXRpb25zKCk7
Cit9CisKK05vdGlmaWNhdGlvbkNlbnRlciogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghbV9ub3RpZmljYXRpb25DZW50ZXIpCisg
ICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUo
bV9jb250ZXh0LCBtX2NvbnRleHQtPnRocmVhZCgpLT5nZXROb3RpZmljYXRpb25DbGllbnQoKSk7
CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzU0ZmNhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5k
ZWYgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaAorI2RlZmluZSBXb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9uc19oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworY2xhc3MgV29ya2VyQ29udGV4dDsKKworY2xhc3MgV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMgOiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMo
KTsKKworICAgIHN0YXRpYyBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMo
V29ya2VyQ29udGV4dCopOworICAgIHN0YXRpYyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyog
ZnJvbShXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCopOworCisgICAgTm90aWZpY2F0aW9uQ2Vu
dGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCk7CisKKyAgICBXb3JrZXJDb250ZXh0KiBtX2NvbnRl
eHQ7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M5M2JjMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCitt
b2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1O
T1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAorICAgICAgICBTdXBwbGVtZW50YWw9
V29ya2VyQ29udGV4dAorICAgIF0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMgeworI2lmIGRl
ZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElG
SUNBVElPTlMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVd
IE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2VuZGlmCisgICAgfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMTczZWUu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgi
Ci0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlBhZ2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01XaW5kb3dOb3RpZmljYXRpb25zOjpET01XaW5k
b3dOb3RpZmljYXRpb25zKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVy
dHkod2luZG93LT5mcmFtZSgpKQotICAgICwgbV93aW5kb3cod2luZG93KQotewotfQotCi1ET01X
aW5kb3dOb3RpZmljYXRpb25zOjp+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpCi17Ci19Ci0KLURP
TVdpbmRvd05vdGlmaWNhdGlvbnMqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmZyb20oRE9NV2lu
ZG93KiB3aW5kb3cpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1
cHBsZW1lbnROYW1lLCAoIkRPTVdpbmRvd05vdGlmaWNhdGlvbnMiKSk7Ci0gICAgRE9NV2luZG93
Tm90aWZpY2F0aW9ucyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd05vdGlmaWNh
dGlvbnMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFt
ZSkpOwotICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERP
TVdpbmRvd05vdGlmaWNhdGlvbnMod2luZG93KTsKLSAgICAgICAgU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVu
dCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotTm90aWZpY2F0aW9uQ2Vu
dGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKERPTVdpbmRv
dyogd2luZG93KQotewotICAgIHJldHVybiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9tKHdp
bmRvdyktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLX0KLQotdm9pZCBET01XaW5kb3dOb3RpZmlj
YXRpb25zOjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKQotewotICAgIG1fc3VzcGVuZGVk
Tm90aWZpY2F0aW9uQ2VudGVyID0gbV9ub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOwotICAg
IERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKTsKLX0KLQot
dm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUo
RnJhbWUqIGZyYW1lKQotewotICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUoZnJhbWUpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbV9zdXNwZW5k
ZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOwotfQotCi12b2lkIERPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpCi17Ci0gICAg
bV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERPTVdpbmRvd1By
b3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsKLX0KLQotdm9p
ZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUo
KQotewotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKLSAgICBET01XaW5kb3dQ
cm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Ci19Ci0KLXZvaWQgRE9N
V2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCi17
Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERPTVdpbmRvd1Byb3Bl
cnR5Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7Ci19Ci0KLU5vdGlmaWNhdGlv
bkNlbnRlciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucygpCi17
Ci0gICAgaWYgKCFtX3dpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyKQotICAgICAgICBy
ZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX3dpbmRvdy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBw
cm92aWRlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20ocGFnZSk7Ci0gICAg
aWYgKHByb3ZpZGVyKSAKLSAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZShkb2N1bWVudCwgcHJvdmlkZXIpOyAgICAKLQotICAgIHJldHVybiBt
X25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2lu
ZG93Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZTI2ZGQ2
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01XaW5kb3dOb3RpZmljYXRpb25z
X2gKLSNkZWZpbmUgRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCi0KLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV2lu
ZG93OwotY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwotCi1jbGFzcyBET01XaW5kb3dOb3RpZmlj
YXRpb25zIDogcHVibGljIFN1cHBsZW1lbnQ8RE9NV2luZG93PiwgcHVibGljIERPTVdpbmRvd1By
b3BlcnR5IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5ET01XaW5kb3dOb3RpZmljYXRpb25zKCk7
Ci0KLSAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKERP
TVdpbmRvdyopOwotICAgIHN0YXRpYyBET01XaW5kb3dOb3RpZmljYXRpb25zKiBmcm9tKERPTVdp
bmRvdyopOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUo
RnJhbWUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RJbkNhY2hlZEZyYW1lKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5GcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRE9NV2luZG93Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqKTsKLQotICAgIE5vdGlmaWNh
dGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpOwotCi0gICAgRE9NV2luZG93KiBtX3dp
bmRvdzsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRl
cjsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX3N1c3BlbmRlZE5vdGlmaWNhdGlv
bkNlbnRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRp
ZiAvLyBET01XaW5kb3dOb3RpZmljYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlYThhMTI5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKKysrIC9kZXYvbnVsbApAQCAt
MSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSB3aW5k
b3cgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9O
U3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKLSAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwot
ICAgIF0gRE9NV2luZG93Tm90aWZpY2F0aW9ucyB7Ci0jaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gTm90aWZpY2F0aW9uQ2VudGVy
IHdlYmtpdE5vdGlmaWNhdGlvbnM7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICBhdHRyaWJ1dGUgTm90aWZp
Y2F0aW9uQ29uc3RydWN0b3IgTm90aWZpY2F0aW9uOwotI2VuZGlmCi0gICAgfTsKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzNDg5OTJhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb24uaCIKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNsaWVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgotI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgot
I2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Ob3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCi0gICAgOiBBY3RpdmVET01PYmplY3QoMCwgdGhpcykK
LXsKLX0KLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNhdGlvbjo6
Tm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBw
cm92aWRlcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9p
c0hUTUwodHJ1ZSkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyKHByb3ZpZGVyKQotewotICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2hlY2tQZXJt
aXNzaW9uKCkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCkgewotICAg
ICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICh1cmwuaXNFbXB0eSgpIHx8ICF1cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbm90aWZpY2F0aW9uVVJMID0g
dXJsOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Ob3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBw
cm92aWRlcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9p
c0hUTUwoZmFsc2UpCi0gICAgLCBtX3RpdGxlKHRpdGxlKQotICAgICwgbV9ib2R5KGJvZHkpCi0g
ICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikK
LXsKLSAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAgICAgZWMgPSBTRUNV
UklUWV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ljb24gPSBpY29uVVJJ
LmlzRW1wdHkoKSA/IEtVUkwoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVV
UkwoaWNvblVSSSk7Ci0gICAgaWYgKCFtX2ljb24uaXNFbXB0eSgpICYmICFtX2ljb24uaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb246Ok5v
dGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRpdGxlKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2lz
SFRNTChmYWxzZSkKLSAgICAsIG1fdGl0bGUodGl0bGUpCi0gICAgLCBtX3N0YXRlKElkbGUpCi0g
ICAgLCBtX3Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAm
Tm90aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZCkpKQotewotICAgIEFTU0VSVChjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2luZG93Tm90aWZp
Y2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLT5kb21XaW5kb3coKSk7Ci0gICAgCi0gICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKSk7Ci0gICAgbV90YXNrVGltZXItPnN0YXJ0T25lU2hvdCgwKTsKLX0KLSNlbmRp
ZgotCi1Ob3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKLXsKLX0KLQotI2lmIEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKLVBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRp
b246OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJv
dmlkZXIpIAoteyAKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRS
ZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKLSAgICBu
b3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24u
cmVsZWFzZSgpOwotfQotCi1QYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJp
bmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAoteyAKLSAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNh
dGlvbih0aXRsZSwgYm9keSwgaWNvblVSSSwgY29udGV4dCwgZWMsIHByb3ZpZGVyKSkpOwotICAg
IG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlv
bi5yZWxlYXNlKCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotc3Rh
dGljIHZvaWQgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
TmFtZSwgY29uc3QgY2hhciogcHJvcGVydHksIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQotewotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciA9IG9wdGlvbnMuZ2V0RXZlbnRMaXN0ZW5lcihwcm9wZXJ0eSwgbm90aWZpY2F0aW9u
KTsKLSAgICBpZiAobGlzdGVuZXIpCi0gICAgICAgIG5vdGlmaWNhdGlvbi0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyLnJlbGVhc2UoKSwgZmFsc2UpOwotfQotCi1QYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0
aW9ucykKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYo
bmV3IE5vdGlmaWNhdGlvbihjb250ZXh0LCB0aXRsZSkpKTsKLSAgICBTdHJpbmcgYXJndW1lbnQ7
Ci0gICAgaWYgKG9wdGlvbnMuZ2V0KCJib2R5IiwgYXJndW1lbnQpKQotICAgICAgICBub3RpZmlj
YXRpb24tPnNldEJvZHkoYXJndW1lbnQpOwotICAgIGlmIChvcHRpb25zLmdldCgidGFnIiwgYXJn
dW1lbnQpKQotICAgICAgICBub3RpZmljYXRpb24tPnNldFRhZyhhcmd1bWVudCk7Ci0gICAgZ2V0
QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2hvd0V2ZW50LCAib25zaG93Iiwgb3B0
aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCAib25jbG9zZSIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5n
ZXQoKSk7Ci0gICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVu
dCwgIm9uZXJyb3IiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOwotICAgIGdldEFuZEFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICJvbmNsaWNrIiwgb3B0aW9u
cywgbm90aWZpY2F0aW9uLmdldCgpKTsKLQotICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Ci19Ci0jZW5kaWYKLQot
Y29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTm90aWZpY2F0aW9uOwotfQot
Ci12b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpIAotewotICAgIC8vIHByZXZlbnQgZG91YmxlLXNo
b3dpbmcKLSAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5j
bGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3codGhpcykpIHsK
LSAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7Ci0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKLSAgICB9Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCi17Ci0gICAgc3dp
dGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBJZGxlOgotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNob3dpbmc6Ci0gICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCi0g
ICAgICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPmNhbmNlbCh0aGlzKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDbG9zZWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotRXZlbnRUYXJnZXREYXRhKiBOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBO
b3RpZmljYXRpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQo
KQotewotICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIGlmICht
X25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCi0gICAgICAgIG1fbm90aWZpY2F0aW9uQ2Vu
dGVyLT5jbGllbnQoKS0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMpOwotfQotCi12
b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQotewotICAgIGlmIChtX3N0YXRlID09IENsb3Nl
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fc3RhdGUgPSBDbG9zZWQ7Ci0gICAgdW5zZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dF
dmVudCgpCi17Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aG93RXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbGlja0V2ZW50KCkKLXsKLSAgICBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93
Rm9jdXNBbGxvd2VkOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuY2xpY2tFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpk
aXNwYXRjaENsb3NlRXZlbnQoKQotewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgZmluYWxpemUoKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCi17Ci0gICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKLX0KLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotdm9pZCBOb3RpZmljYXRp
b246OnRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQotewotICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJU
KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSBtX3Rhc2tUaW1lci5nZXQoKSk7
Ci0gICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQ
ZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gTm90aWZpY2F0aW9uQ2xpZW50
OjpQZXJtaXNzaW9uQWxsb3dlZCkgewotICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzaG93KCk7Ci19Ci0jZW5kaWYKLQotCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCi1jb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lv
bkxldmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
Y29udGV4dCktPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdl
KCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKLX0KLQotY29uc3QgU3Ry
aW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uIHBlcm1pc3Npb24pCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGFsbG93ZWRQZXJtaXNzaW9uLCAoImdyYW50ZWQiKSk7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIGRlbmllZFBlcm1pc3Npb24sICgiZGVuaWVkIikpOwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZWZhdWx0UGVybWlzc2lvbiwgKCJk
ZWZhdWx0IikpOwotICAgIHN3aXRjaCAocGVybWlzc2lvbikgewotICAgIGNhc2UgTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZDoKLSAgICAgICAgcmV0dXJuIGFsbG93ZWRQZXJt
aXNzaW9uOwotICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOgot
ICAgICAgICByZXR1cm4gZGVuaWVkUGVybWlzc2lvbjsKLSAgICBjYXNlIE5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbk5vdEFsbG93ZWQ6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0UGVybWlz
c2lvbjsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGRlbmllZFBlcm1pc3Npb247Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCktPnBhZ2UoKSk7Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVzdFBlcm1pc3Np
b24oY29udGV4dCwgY2FsbGJhY2spOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRlOTEwMC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRpb25faCAgCi0jZGVm
aW5lIE5vdGlmaWNhdGlvbl9oCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgotI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Ci0KLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJUaW1lci5oIgotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaWN0aW9uYXJ5OwotY2xhc3MgTm90aWZpY2F0
aW9uQ2VudGVyOwotY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrOwotY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKLQotdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKLQotY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90
aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBOb3RpZmljYXRpb24o
KTsKLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3Zp
ZGVyKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwotI2VuZGlmCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMpOwotI2VuZGlmCi0gICAgCi0gICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7Ci0KLSAg
ICB2b2lkIHNob3coKTsKLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgdm9p
ZCBjYW5jZWwoKSB7IGNsb3NlKCk7IH0KLSNlbmRpZgotICAgIHZvaWQgY2xvc2UoKTsKLQotICAg
IGJvb2wgaXNIVE1MKCkgY29uc3QgeyByZXR1cm4gbV9pc0hUTUw7IH0KLSAgICB2b2lkIHNldEhU
TUwoYm9vbCBpc0hUTUwpIHsgbV9pc0hUTUwgPSBpc0hUTUw7IH0KLSAgICAKLSAgICBLVVJMIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uVVJMOyB9Ci0gICAgdm9pZCBzZXRVUkwo
S1VSTCB1cmwpIHsgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7IH0KLSAgICAKLSAgICBLVVJMIGlj
b25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KLQotICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm9keTsgfQotCi0gICAgU3RyaW5nIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9u
OyB9Ci0gICAgdm9pZCBzZXREaXIoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9kaXJlY3Rpb24gPSBk
aXI7IH0KLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBTdHJpbmcgcmVw
bGFjZUlkKCkgY29uc3QgeyByZXR1cm4gdGFnKCk7IH0KLSAgICB2b2lkIHNldFJlcGxhY2VJZChj
b25zdCBTdHJpbmcmIHJlcGxhY2VJZCkgeyBzZXRUYWcocmVwbGFjZUlkKTsgfQotI2VuZGlmCi0K
LSAgICBTdHJpbmcgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KLSAgICB2b2lkIHNldFRh
Zyhjb25zdCBTdHJpbmcmIHRhZykgeyBtX3RhZyA9IHRhZzsgfQotCi0gICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXIoKSA9PSAicnRsIiA/IFJUTCA6IExUUjsg
fQotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzaG93KTsKLSNpZiBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihkaXNwbGF5KTsKLSNlbmRpZgotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZXJyb3IpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwot
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xpY2spOwotICAgIAotICAgIHZv
aWQgZGlzcGF0Y2hDbGlja0V2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsK
LSAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hTaG93RXZl
bnQoKTsKLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOwotICAgIHVz
aW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7Ci0KLSAgICAvLyBFdmVudFRhcmdl
dCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCi0g
ICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIHZvaWQgc3RvcExvYWRp
bmdJY29uKCk7Ci0KLSAgICAvLyBEZXByZWNhdGVkLiBVc2UgZnVuY3Rpb25zIGZyb20gTm90aWZp
Y2F0aW9uQ2VudGVyLgotICAgIHZvaWQgZGV0YWNoUHJlc2VudGVyKCkgeyB9Ci0KLSAgICB2b2lk
IGZpbmFsaXplKCk7Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBwZXJtaXNzaW9uTGV2ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50
OjpQZXJtaXNzaW9uKTsKLSAgICBzdGF0aWMgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2s+KTsKLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLSAgICBOb3RpZmljYXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKLSAgICBO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25z
dCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
JiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKLSNlbmRpZgotI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQotICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Qm9keShjb25zdCBT
dHJpbmcmIGJvZHkpIHsgbV9ib2R5ID0gYm9keTsgfQotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLQotICAgIHZvaWQgc3RhcnRMb2Fk
aW5nSWNvbigpOwotICAgIHZvaWQgZmluaXNoTG9hZGluZ0ljb24oKTsKLQotI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQotICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9u
PiopOwotI2VuZGlmCi0gICAgCi0gICAgYm9vbCBtX2lzSFRNTDsKLQotICAgIC8vIFRleHQgbm90
aWZpY2F0aW9ucy4KLSAgICBLVVJMIG1faWNvbjsKLSAgICBTdHJpbmcgbV90aXRsZTsKLSAgICBT
dHJpbmcgbV9ib2R5OwotICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgSFRNTCBOb3RpZmljYXRpb25z
LgotICAgIEtVUkwgbV9ub3RpZmljYXRpb25VUkw7Ci0KLSAgICBTdHJpbmcgbV9kaXJlY3Rpb247
Ci0gICAgU3RyaW5nIG1fdGFnOwotCi0gICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7Ci0gICAg
ICAgIElkbGUgPSAwLAotICAgICAgICBTaG93aW5nID0gMSwKLSAgICAgICAgQ2xvc2VkID0gMiwK
LSAgICB9OwotCi0gICAgTm90aWZpY2F0aW9uU3RhdGUgbV9zdGF0ZTsKLQotICAgIFJlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2VudGVyOwotICAgIAotICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQotICAgIE93blB0cjxUaW1lcjxOb3RpZmljYXRpb24+ID4gbV90YXNrVGltZXI7Ci0jZW5kaWYK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBOb3Rp
ZmljYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEyZWI3Zi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSB0aHJlYWRzIHsKLQotICAgIGludGVyZmFj
ZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElP
TlMsCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICAgICAgRXZlbnRUYXJnZXQsCi0jaWYg
ZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IG9wdGlvbnMpLAotICAgICAgICBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAotI2Vsc2UKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCi0jZW5k
aWYKLSAgICBdIE5vdGlmaWNhdGlvbiB7Ci0gICAgICAgIHZvaWQgc2hvdygpOwotI2lmIGRlZmlu
ZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNB
VElPTlMKLSAgICAgICAgdm9pZCBjYW5jZWwoKTsKLSNlbmRpZgotI2lmIGRlZmluZWQoRU5BQkxF
X05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCi0gICAgICAgIHZvaWQgY2xv
c2UoKTsKLSNlbmRpZgotCi0KLSNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBF
TkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gc3RhdGljIERPTVN0cmluZyBwZXJtaXNzaW9uTGV2ZWwoKTsKLSAgICAgICAgW0N1c3Rv
bV0gc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrIGNhbGxiYWNrKTsKLSNlbmRpZgotCi0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uc2hvdzsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uZGlzcGxheTsKLSNlbmRpZgotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOwotICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOwotCi0gICAgICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgZGlyOwotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
KSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyByZXBsYWNlSWQ7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRh
ZzsKLSNlbmRpZgotCi0gICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgICAgICB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAg
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKLSAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKLSAg
ICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Ci0gICAgfTsKLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWJiNTQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DZW50ZXIuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQotewotICAg
IFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihhZG9wdFJlZihu
ZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIGNsaWVudCkpKTsKLSAgICBub3RpZmljYXRp
b25DZW50ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb25DZW50
ZXIucmVsZWFzZSgpOwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNs
aWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9jbGll
bnQoY2xpZW50KQotewotfQotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotaW50
IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKCkKLXsKLSAgICBpZiAoIWNsaWVu
dCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiBOb3RpZmlj
YXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7Ci0KLSAgICBzd2l0Y2ggKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlmaWNhdGlvbnMoKSkg
ewotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0FsbG93OgotICAgICAgICByZXR1cm4g
Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZDsKLSAgICBjYXNlIFNlY3VyaXR5
T3JpZ2luOjpBbHdheXNEZW55OgotICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uRGVuaWVkOwotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFzazoKLSAgICAgICAg
cmV0dXJuIG1fY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbV9jbGll
bnQtPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi12b2lkIE5vdGlmaWNhdGlvbkNl
bnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNr
KQotewotICAgIGlmICghY2xpZW50KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNoIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25zKCkpIHsKLSAgICBjYXNlIFNlY3Vy
aXR5T3JpZ2luOjpBbHdheXNBbGxvdzoKLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNE
ZW55OiB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFkZChOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJh
Y2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIodGhpcywgY2FsbGJhY2spKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBc2s6Ci0gICAgICAgIHJldHVybiBt
X2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjYWxs
YmFjayk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgbV9jbGllbnQt
PnJlcXVlc3RQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2spOwot
fQotI2VuZGlmCi0KLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKLXsKLSAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQtPmNhbmNlbFJlcXVlc3Rz
Rm9yUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fY2xpZW50LT5j
bGVhck5vdGlmaWNhdGlvbnMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2NsaWVu
dCA9IDA7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0VGltZWRPdXQoTm90
aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3QpCi17
Ci0gICAgbV9jYWxsYmFja3MucmVtb3ZlKHJlcXVlc3QpOwotfQotCi1QYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBOb3RpZmljYXRpb25D
ZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcihO
b3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxi
YWNrKQotewotICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrID0gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNl
bnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKGNlbnRlciwgY2FsbGJhY2spKTsKLSAg
ICByZXF1ZXN0Q2FsbGJhY2stPnN0YXJ0VGltZXIoKTsKLSAgICByZXR1cm4gcmVxdWVzdENhbGxi
YWNrLnJlbGVhc2UoKTsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhOb3RpZmljYXRpb25DZW50
ZXIqIGNlbnRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgIDogbV9u
b3RpZmljYXRpb25DZW50ZXIoY2VudGVyKQotICAgICwgbV90aW1lcih0aGlzLCAmTm90aWZpY2F0
aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQpCi0gICAg
LCBtX2NhbGxiYWNrKGNhbGxiYWNrKQotewotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6
Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpzdGFydFRpbWVyKCkKLXsKLSAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNh
dGlvblJlcXVlc3RDYWxsYmFjazo6dGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25DZW50ZXI6
Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4qKQotewotICAgIG1fY2FsbGJhY2stPmhhbmRs
ZUV2ZW50KCk7Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXItPnJlcXVlc3RUaW1lZE91dCh0aGlz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZjZkNjg5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNlbnRlcl9oCi0jZGVmaW5lIE5vdGlmaWNh
dGlvbkNlbnRlcl9oCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTm90
aWZpY2F0aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQot
Y2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9u
Q2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQotICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIGlm
ICghY2xpZW50KCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoVVJJLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBlYywgdGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCi0gICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIGljb25VUkksIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
Ym9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAoIWNsaWVudCgpKSB7
Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxl
LCBib2R5LCBpY29uVVJJLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAg
ICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7Ci0gICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4pOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIE5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0KLSAgICBjbGFzcyBOb3RpZmlj
YXRpb25SZXF1ZXN0Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gY3JlYXRlQW5kU3RhcnRUaW1lcihOb3RpZmljYXRp
b25DZW50ZXIqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOwotICAgICAgICB2b2lkIHN0YXJ0
VGltZXIoKTsKLSAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjaz4qKTsKLSAgICBwcml2YXRlOgotICAgICAgICBOb3RpZmljYXRpb25SZXF1ZXN0
Q2FsbGJhY2soTm90aWZpY2F0aW9uQ2VudGVyKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsK
LQotICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRl
cjsKLSAgICAgICAgVGltZXI8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBtX3RpbWVyOwot
ICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBtX2NhbGxiYWNrOwotICAgIH07Ci0KLSAgICB2
b2lkIHJlcXVlc3RUaW1lZE91dChOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2sqKTsKLQotICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogbV9jbGllbnQ7Ci0gICAgSGFzaFNldDxSZWZQdHI8Tm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrPiA+IG1fY2FsbGJhY2tzOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNlbnRlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOTliYTkuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1MRUdBQ1lfTk9USUZJQ0FUSU9OUywKLSAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0LAotICAgICAgICBPbWl0Q29uc3RydWN0b3IKLSAgICBdIE5vdGlm
aWNhdGlvbkNlbnRlciB7Ci0jaWYgIWRlZmluZWQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19P
TkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZCi0gICAgICAgW1Y4Q3VzdG9t
XSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJsKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKLSNlbmRpZgotICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0
aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBET01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5n
IHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAg
ICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7Ci0gICAgICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwotICAgIH07Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTkyODM2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uQ2xpZW50X2gKLSNkZWZpbmUgTm90
aWZpY2F0aW9uQ2xpZW50X2gKLQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBL
VVJMOwotY2xhc3MgTm90aWZpY2F0aW9uOwotY2xhc3MgUGFnZTsKLWNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudCB7Ci0KLXB1YmxpYzoKLSAg
ICBlbnVtIFBlcm1pc3Npb24gewotICAgICAgICBQZXJtaXNzaW9uQWxsb3dlZCwgLy8gVXNlciBo
YXMgYWxsb3dlZCBub3RpZmljYXRpb25zCi0gICAgICAgIFBlcm1pc3Npb25Ob3RBbGxvd2VkLCAv
LyBVc2VyIGhhcyBub3QgeWV0IGFsbG93ZWQKLSAgICAgICAgUGVybWlzc2lvbkRlbmllZCAvLyBV
c2VyIGhhcyBleHBsaWNpdGx5IGRlbmllZCBwZXJtaXNzaW9uCi0gICAgfTsKLQotICAgIC8vIFJl
cXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCi0gICAgdmlydHVhbCBib29sIHNo
b3coTm90aWZpY2F0aW9uKikgPSAwOwotCi0gICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNh
dGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmUgY2FuY2VsZWQuCi0gICAgdmlydHVh
bCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKSA9IDA7Ci0KLSAgICAvLyBXaGVuIHRoZSB1c2Vy
IGNsb3NlcyBhIHBhZ2UsIG9yIHF1aXRzIHRoZSBjbGllbnQgYXBwbGljYXRpb24sIGFsbCBvZiB0
aGUgcGFnZSdzCi0gICAgLy8gYXNzb2NpYXRlZCBub3RpZmljYXRpb25zIGFyZSBjbGVhcmVkLgot
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIHsgfQotICAgIAotICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGF0IGEgTm90aWZp
Y2F0aW9uIG9iamVjdCBoYXMgYmVlbiBkZXN0cm95ZWQKLSAgICAvLyAoc3VjaCBhcyBieSBhIHBh
Z2UgdHJhbnNpdGlvbikuIFRoZSBwcmVzZW50ZXIgbWF5IGNvbnRpbnVlIHNob3dpbmcKLSAgICAv
LyB0aGUgbm90aWZpY2F0aW9uLCBidXQgbXVzdCBub3QgYXR0ZW1wdCB0byBjYWxsIHRoZSBldmVu
dCBoYW5kbGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KE5vdGlmaWNhdGlvbiopID0gMDsKLQotICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGUg
Y29udHJvbGxlciBhdHRhY2hlZCB0byB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCi0gICAg
dmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7Ci0KLSNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgLy8gUmVxdWVzdHMgdXNlciBwZXJt
aXNzaW9uIHRvIHNob3cgZGVza3RvcCBub3RpZmljYXRpb25zIGZyb20gYSBwYXJ0aWN1bGFyCi0g
ICAgLy8gc2NyaXB0IGNvbnRleHQuIFRoZSBjYWxsYmFjayBwYXJhbWV0ZXIgc2hvdWxkIGJlIHJ1
biB3aGVuIHRoZSB1c2VyIGhhcwotICAgIC8vIG1hZGUgYSBkZWNpc2lvbi4KLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPikgPSAwOwotI2VuZGlmCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pID0gMDsKLSNl
bmRpZgotCi0gICAgLy8gQ2FuY2VsIGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0cyBmb3IgdGhlIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7Ci0KLSAgICAvLyBDaGVja3Mg
dGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KLSAgICB2aXJ0dWFsIFBlcm1pc3Npb24g
Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7Ci0KLXByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSB7IH0KLX07Ci0KLXZvaWQgcHJv
dmlkZU5vdGlmaWNhdGlvbihQYWdlKiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNsaWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJiZDliZi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCi0KLSNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1Ob3RpZmljYXRpb25Db250cm9sbGVyOjpOb3RpZmljYXRp
b25Db250cm9sbGVyKE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQotICAgIDogbV9jbGllbnQo
Y2xpZW50KQotewotfQotCi1Ob3RpZmljYXRpb25Db250cm9sbGVyOjp+Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcigpCi17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOwotfQotCi1QYXNzT3duUHRyPE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI+IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShOb3RpZmljYXRpb25D
bGllbnQqIGNsaWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXIoY2xpZW50KSk7Ci19Ci0KLU5vdGlmaWNhdGlvbkNsaWVudCogTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6Y2xpZW50RnJvbShQYWdlKiBwYWdlKQotewotICAgIGlmIChOb3RpZmljYXRp
b25Db250cm9sbGVyKiBjb250cm9sbGVyID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlKSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPmNsaWVudCgpOwotICAgIHJldHVybiAw
OwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBs
ZW1lbnROYW1lKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJOb3RpZmljYXRpb25Db250cm9sbGVyIikpOwotICAgIHJldHVybiBuYW1lOwotfQotCi12
b2lkIHByb3ZpZGVOb3RpZmljYXRpb24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBj
bGllbnQpCi17Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmNyZWF0ZShjbGllbnQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMTk2OGUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250
cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0q
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0qIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0qIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uQ29udHJvbGxl
cl9oCi0jZGVmaW5lIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAotCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIlBh
Z2UuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsK
LQotY2xhc3MgTm90aWZpY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb3RpZmljYXRpb25Db250cm9sbGVyKTsKLXB1
YmxpYzoKLSAgICB+Tm90aWZpY2F0aW9uQ29udHJvbGxlcigpOwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gY3JlYXRlKE5vdGlmaWNhdGlvbkNsaWVudCop
OwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7Ci0gICAg
c3RhdGljIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGZyb20oUGFnZSogcGFnZSkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ29udHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZy
b20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9Ci0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNs
aWVudCogY2xpZW50RnJvbShQYWdlKik7Ci0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0KLSAgICBOb3RpZmljYXRpb25DbGll
bnQqIG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQot
I2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZTczMmEuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKLSNkZWZpbmUgTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gewotcHVibGljOgot
ICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaygpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcmIHBlcm1pc3Npb24pID0gMDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKQotCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYx
MTE2MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBD
b25kaXRpb25hbD1OT1RJRklDQVRJT05TLAotICAgICAgICBDYWxsYmFjawotICAgIF0gTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIHsKLSAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBET01TdHJpbmcgcGVybWlzc2lvbik7Ci0gICAgfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVlZGI5OS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCIK
LQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OldvcmtlckNvbnRleHROb3RpZmljYXRp
b25zKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLXsK
LX0KLQotV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6On5Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucygpCi17Ci19Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9uczo6ZnJvbShXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotewotICAgIEF0b21p
Y1N0cmluZyBzdXBwbGVtZW50TmFtZSA9ICJXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyI7Ci0g
ICAgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD46OmZyb20oY29udGV4dCwgc3VwcGxlbWVudE5hbWUpKTsKLSAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cyhjb250ZXh0KTsKLSAgICAgICAgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6
cHJvdmlkZVRvKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7
Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50OwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIq
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKFdvcmtlckNv
bnRleHQqIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
Ojpmcm9tKGNvbnRleHQpLT53ZWJraXROb3RpZmljYXRpb25zKCk7Ci19Ci0KLU5vdGlmaWNhdGlv
bkNlbnRlciogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMo
KQotewotICAgIGlmICghbV9ub3RpZmljYXRpb25DZW50ZXIpCi0gICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnRocmVhZCgpLT5nZXROb3RpZmljYXRpb25DbGllbnQoKSk7Ci0gICAgcmV0dXJuIG1fbm90
aWZpY2F0aW9uQ2VudGVyLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzU0
ZmNhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICoKLSAqLwotCi0jaWZuZGVmIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKLSNkZWZp
bmUgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaAotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIlN1cHBsZW1l
bnRhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm90aWZpY2F0aW9uQ2Vu
dGVyOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdvcmtlckNvbnRleHQ7
Ci0KLWNsYXNzIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zIDogcHVibGljIFN1cHBsZW1lbnQ8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfldvcmtlckNv
bnRleHROb3RpZmljYXRpb25zKCk7Ci0KLSAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ2VudGVyKiB3
ZWJraXROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqKTsKLSAgICBzdGF0aWMgV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMqIGZyb20oV29ya2VyQ29udGV4dCopOwotCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqKTsKLQot
ICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpOwotCi0gICAgV29y
a2VyQ29udGV4dCogbV9jb250ZXh0OwotICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1f
bm90aWZpY2F0aW9uQ2VudGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLQotI2VuZGlmIC8vIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
aWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOTNiYzIuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLW1v
ZHVsZSB0aHJlYWRzIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU5P
VElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAgIFN1cHBsZW1lbnRhbD1X
b3JrZXJDb250ZXh0Ci0gICAgXSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyB7Ci0jaWYgZGVm
aW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0g
Tm90aWZpY2F0aW9uQ2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7Ci0jZW5kaWYKLSAgICB9Owot
Ci19Cg==
</data>
<flag name="commit-queue"
          id="156231"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148501</attachid>
            <date>2012-06-19 21:37:41 -0700</date>
            <delta_ts>2012-06-20 11:40:08 -0700</delta_ts>
            <desc>Patch for EFL ,GTK and QT port</desc>
            <filename>patch-notification.txt</filename>
            <type>text/plain</type>
            <size>150368</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWNiMTAzMS4uMWI1MjM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTQsNiArNCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2NhdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9pbmRleGVkZGIiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW50ZW50
cyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmljYXRpb25zIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3F1b3RhIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dl
YmF1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgpAQCAtMzIs
NyArMzMsNiBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2xvYWRlci9jYWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2ljb24iCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L21hdGhtbCIKLSAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0
aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFn
ZS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgpAQCAtMTcw
NiwxOSArMTcwNiwxOSBAQCBFTkRJRiAoKQogCiBJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCiAg
ICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5jcHAKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCi0gICAgICAgIG5v
dGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwCisgICAgICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcAorICAgICAgICBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorICAgICAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKyAgICAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmlj
YXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcAogICAgICkKIAogICAgIExJU1Qo
QVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5pZGwKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
Ci0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAotICAgICAgICBu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKLSAgICAgICAg
bm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKKyAgICAgICAgTW9k
dWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCisgICAgICAgIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisgICAgICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCisgICAgICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKICAgICApCiBF
TkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE5ZDA3YS4uZDQ4ODA2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzNSBAQAorMjAxMi0wNi0xOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgorCisgICAgICAgIE5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIGluIE1vZHVsZXMv
bm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODIxMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbm90aWZpY2F0aW9ucyBkaXJlY3RvcnkgaXMgbm93IChhbG1vc3QhKSBzZWxmLWNv
bnRhaW5lZC4gVGhpcworICAgICAgICBwYXRjaCBtb3ZlcyBpdCB0byB0aGUgTW9kdWxlcyBkaXJl
Y3RvcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
cHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01X
aW5kb3dOb3RpZmljYXRpb25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6RE9NV2luZG93Tm90aWZpY2F0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp+RE9NV2luZG93Tm90aWZp
Y2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlz
Y29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05v
dGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2Fj
aGVkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUpOgorICAgICAg
ICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NV2luZG93Tm90aWZpY2F0aW9u
cyk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEFuZEFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZXZlbnRUYXJnZXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnBl
cm1pc3Npb25MZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnBlcm1pc3Np
b25TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlz
c2lvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6aXNIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnVybCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjp0aXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpkaXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXREaXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZXBsYWNlSWQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRSZXBsYWNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp0YWcpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzZXRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGV0YWNoUHJlc2VudGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6cmVxdWVzdFRpbWVkT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpjcmVhdGVBbmRTdGFydFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6
OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKE5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjbGllbnQpOgorICAgICAgICAoTm90aWZpY2F0
aW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChOb3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uQ2xpZW50Ojp+Tm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVy
OjpOb3RpZmljYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6On5Ob3RpZmljYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpjbGllbnRGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBy
b3ZpZGVOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25Db250cm9sbGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTm90aWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25Db250cm9sbGVyOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OmNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazo6fk5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwu
CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6V29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6On5X
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy9u
b3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwuCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLnByaToKKwogMjAxMi0wNi0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIFJlbmRlckZsZXhpYmxlQm94IHRlcm1pbm9sb2d5
IHRvIHVzZSBncm93L3NocmluayBpbnN0ZWFkIG9mIHBvc2l0aXZlL25lZ2F0aXZlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5wcmkKaW5kZXggOWI1NGM3ZS4uMWY1MDNiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBJRExfQklORElOR1MgKz0gXAogICAg
ICQkUFdEL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsIFwKICAgICAkJFBXRC9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvaW5k
ZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsIFwKKyAgICAkJFBXRC9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgXAorICAgICQkUFdE
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKyAgICAkJFBXRC9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisgICAgJCRQV0QvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwgXAor
ICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuaWRsIFwKICAg
ICAkJFBXRC9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxl
cy9xdW90YS9TdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTQwNSwxMSArNDEwLDYg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5p
ZGwgXAogICAgICQkUFdEL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGwgXAogICAgICQk
UFdEL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0gICAgJCRQV0Qv
bm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBcCi0gICAgJCRQV0Qvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5pZGwgXAotICAgICQkUFdEL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQkUFdEL3BhZ2UvQmFySW5mby5pZGwg
XAogICAgICQkUFdEL3BhZ2UvQ29uc29sZS5pZGwgXAogICAgICQkUFdEL3BhZ2UvQ29vcmRpbmF0
ZXMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTMxOTE4MC4uNzZkZmI5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTE1LDYgKzE1LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0gXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpbyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzIFwKQEAgLTQ1LDcgKzQ2LDYgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbWF0aG1s
IFwKLQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcgXApAQCAtODYxLDYgKzg2MSw3IEBAIElETF9QQVRIIDo9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCisgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpbyBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2Vic29ja2V0cyBcCkBAIC04NzUsNyArODc2LDYgQEAgSURMX1BBVEggOj0gXAogICAgICQo
V2ViQ29yZSkvaHRtbC90cmFjayBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQo
V2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMg
XAogICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAgICAk
KFdlYkNvcmUpL3N0b3JhZ2UgXApAQCAtMTAyMiw2ICsxMDIyLDcgQEAgRVhUUkFfRElTVCArPSBc
CiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChz
cmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vKi5pZGwpIFwKIAkkKHNoZWxs
IGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlLyouaWRsKSBc
CiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
LyouaWRsKSBcCkBAIC0xMDM1LDcgKzEwMzYsNiBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxs
IGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9odG1sLyouaWRsKSBcCiAJJChzaGVsbCBscyAk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yLyouaWRsKSBcCiAJJChzaGVsbCBscyAk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlLyouaWRsKSBcCi0JJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQo
c2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2UvKi5pZGwpIFwKIAkkKHNoZWxs
IGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zLyouaWRsKSBcCiAJJChzaGVsbCBs
cyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvc3RvcmFnZS8qLmlkbCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggMzZjZTEwNS4uNTIwNjFjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC03MDAsNiArNzAwLDkgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwg
XApAQCAtOTM5LDkgKzk0Miw2IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkv
aW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3Jp
cHRQcm9maWxlTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaWRsIFwKLQkkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmlkbCBcCi0JJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwg
XAotCSQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsIFwKIAkkKFdlYkNvcmUpL3BhZ2UvQmFySW5mby5pZGwgXAogCSQoV2ViQ29yZSkvcGFn
ZS9Db25zb2xlLmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0x
MTc0LDYgKzExNzQsMTggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9X
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgXApA
QCAtMjkyMCwxOCArMjkzMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxUZXh0RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlm
aWNhdGlvbnMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNs
aWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDAxNzNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcApAQCAtMCww
ICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisK
KyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNlbnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NV2luZG93
Tm90aWZpY2F0aW9uczo6RE9NV2luZG93Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqIHdpbmRvdykK
KyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdy0+ZnJhbWUoKSkKKyAgICAsIG1fd2luZG93
KHdpbmRvdykKK3sKK30KKworRE9NV2luZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlm
aWNhdGlvbnMoKQoreworfQorCitET01XaW5kb3dOb3RpZmljYXRpb25zKiBET01XaW5kb3dOb3Rp
ZmljYXRpb25zOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzdXBwbGVtZW50TmFtZSwgKCJET01XaW5kb3dOb3RpZmljYXRp
b25zIikpOworICAgIERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET01XaW5kb3dOb3RpZmljYXRpb25zKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9t
KHdpbmRvdywgc3VwcGxlbWVudE5hbWUpKTsKKyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAg
ICAgc3VwcGxlbWVudCA9IG5ldyBET01XaW5kb3dOb3RpZmljYXRpb25zKHdpbmRvdyk7CisgICAg
ICAgIFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5h
bWUsIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7
Cit9CisKK05vdGlmaWNhdGlvbkNlbnRlciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0
Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICByZXR1cm4gRE9NV2luZG93
Tm90aWZpY2F0aW9uczo6ZnJvbSh3aW5kb3cpLT53ZWJraXROb3RpZmljYXRpb25zKCk7Cit9CisK
K3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hl
KCkKK3sKKyAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9IG1fbm90aWZpY2F0aW9u
Q2VudGVyLnJlbGVhc2UoKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1l
Rm9yUGFnZUNhY2hlKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6cmVjb25u
ZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBET01XaW5kb3dQcm9w
ZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKGZyYW1lKTsKKyAgICBtX25vdGlmaWNh
dGlvbkNlbnRlciA9IG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKK30K
Kwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
Q2FjaGVkRnJhbWUoKQoreworICAgIG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyID0gbnVs
bHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNh
Y2hlZEZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG51
bGxwdHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5G
cmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9i
YWxPYmplY3RGcm9tRnJhbWUoKQoreworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0
cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFt
ZSgpOworfQorCitOb3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghbV93aW5kb3ctPmlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX25vdGlmaWNh
dGlvbkNlbnRlcikKKyAgICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOwor
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV93aW5kb3ctPmRvY3VtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogcHJvdmlkZXIgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpj
bGllbnRGcm9tKHBhZ2UpOworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0
aW9uQ2VudGVyID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVy
KTsgICAgCisKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmUyNmRkNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBET01XaW5kb3dOb3RpZmljYXRpb25zX2gKKyNkZWZpbmUgRE9N
V2luZG93Tm90aWZpY2F0aW9uc19oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHku
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV2luZG93OworY2xhc3MgTm90
aWZpY2F0aW9uQ2VudGVyOworCitjbGFzcyBET01XaW5kb3dOb3RpZmljYXRpb25zIDogcHVibGlj
IFN1cHBsZW1lbnQ8RE9NV2luZG93PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5ET01XaW5kb3dOb3RpZmljYXRpb25zKCk7CisKKyAgICBzdGF0aWMg
Tm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKERPTVdpbmRvdyopOworICAg
IHN0YXRpYyBET01XaW5kb3dOb3RpZmljYXRpb25zKiBmcm9tKERPTVdpbmRvdyopOworCisgICAg
dmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1l
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5G
cmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoR2xvYmFsT2JqZWN0
RnJvbUZyYW1lKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRE9NV2luZG93
Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqKTsKKworICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Vi
a2l0Tm90aWZpY2F0aW9ucygpOworCisgICAgRE9NV2luZG93KiBtX3dpbmRvdzsKKyAgICBSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKKyAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBET01XaW5kb3dO
b3RpZmljYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYThhMTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRs
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklD
QVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAorICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2lu
ZG93CisgICAgXSBET01XaW5kb3dOb3RpZmljYXRpb25zIHsKKyNpZiBkZWZpbmVkKEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25D
ZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX05P
VElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJpYnV0ZSBO
b3RpZmljYXRpb25Db25zdHJ1Y3RvciBOb3RpZmljYXRpb247CisjZW5kaWYKKyAgICB9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ODk5MmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXJyb3JFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIu
aCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dG
b2N1c0FsbG93ZWRJbmRpY2F0b3IuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KDAsIHRoaXMpCit7Cit9CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKHRydWUpCisgICAgLCBtX3N0YXRlKElkbGUp
CisgICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikKK3sKKyAgICBpZiAobV9ub3Rp
ZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbkFsbG93ZWQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQo
KSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX25vdGlmaWNhdGlvblVSTCA9IHVybDsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKKyAgICAsIG1faXNIVE1MKGZhbHNlKQorICAgICwgbV90aXRsZSh0aXRs
ZSkKKyAgICAsIG1fYm9keShib2R5KQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9ub3Rp
ZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxv
d2VkKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9pY29uID0gaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpOworICAgIGlmICghbV9pY29uLmlz
RW1wdHkoKSAmJiAhbV9pY29uLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAgLCBtX3RpdGxlKHRpdGxl
KQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV90YXNrVGltZXIoYWRvcHRQdHIobmV3IFRp
bWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQpKSkK
K3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlv
bkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCkpOworICAgIAorICAgIEFT
U0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOworICAgIG1fdGFza1RpbWVyLT5z
dGFydE9uZVNob3QoMCk7Cit9CisjZW5kaWYKKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9u
KCkgCit7Cit9CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKK3sgCisgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0
LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IHByb3ZpZGVyKSAKK3sgCisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odGl0bGUsIGJvZHksIGljb25VUkksIGNvbnRl
eHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOworfQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK3N0YXRpYyB2b2lkIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5LCBjb25z
dCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBvcHRpb25zLmdldEV2ZW50TGlzdGVu
ZXIocHJvcGVydHksIG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGxpc3RlbmVyKQorICAgICAgICBu
b3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lci5yZWxlYXNl
KCksIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCit7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGV4dCwgdGl0bGUp
KSk7CisgICAgU3RyaW5nIGFyZ3VtZW50OworICAgIGlmIChvcHRpb25zLmdldCgiYm9keSIsIGFy
Z3VtZW50KSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRCb2R5KGFyZ3VtZW50KTsKKyAgICBp
ZiAob3B0aW9ucy5nZXQoInRhZyIsIGFyZ3VtZW50KSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5z
ZXRUYWcoYXJndW1lbnQpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LnNob3dFdmVudCwgIm9uc2hvdyIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAg
Z2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgIm9uY2xvc2Ui
LCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsICJvbmVycm9yIiwgb3B0aW9ucywgbm90aWZpY2F0
aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50LCAib25jbGljayIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisKKyAgICBu
b3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb24u
cmVsZWFzZSgpOworfQorI2VuZGlmCisKK2NvbnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9u
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck5vdGlmaWNhdGlvbjsKK30KKwordm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKK3sK
KyAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCisgICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAm
JiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXIt
PmNsaWVudCgpLT5zaG93KHRoaXMpKSB7CisgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOworICAg
ICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNh
dGlvbjo6Y2xvc2UoKQoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgSWRsZToK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaG93aW5nOgorICAgICAgICBpZiAobV9ub3RpZmlj
YXRpb25DZW50ZXItPmNsaWVudCgpKQorICAgICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIt
PmNsaWVudCgpLT5jYW5jZWwodGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xvc2Vk
OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogTm90aWZpY2F0
aW9uOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogTm90aWZpY2F0aW9uOjplbnN1cmVFdmVudFRhcmdldERh
dGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRl
eHREZXN0cm95ZWQoKTsKKyAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQor
ICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPm5vdGlmaWNhdGlvbk9iamVj
dERlc3Ryb3llZCh0aGlzKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKK3sK
KyAgICBpZiAobV9zdGF0ZSA9PSBDbG9zZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRl
ID0gQ2xvc2VkOworICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworfQorCit2b2lkIE5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCgpCit7CisgICAgV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKKyAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
fQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKK3sKKyAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgIGZpbmFsaXplKCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aEVycm9yRXZlbnQoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmlj
YXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnBhZ2UoKSk7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGlt
ZXIgPT0gbV90YXNrVGltZXIuZ2V0KCkpOworICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVy
Ojpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKKyAgICAgICAg
ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2hvdygp
OworfQorI2VuZGlmCisKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY29uc3QgU3RyaW5n
JiBOb3RpZmljYXRpb246OnBlcm1pc3Npb25MZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOworICAgIHJldHVybiBw
ZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihj
b250ZXh0KSk7Cit9CisKK2NvbnN0IFN0cmluZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3Ry
aW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwZXJtaXNzaW9uKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhbGxvd2VkUGVybWlzc2lvbiwgKCJncmFu
dGVkIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZW5pZWRQZXJt
aXNzaW9uLCAoImRlbmllZCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgZGVmYXVsdFBlcm1pc3Npb24sICgiZGVmYXVsdCIpKTsKKyAgICBzd2l0Y2ggKHBlcm1pc3Np
b24pIHsKKyAgICBjYXNlIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQ6Cisg
ICAgICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbjsKKyAgICBjYXNlIE5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgcmV0dXJuIGRlbmllZFBlcm1pc3Npb247
CisgICAgY2FzZSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOgorICAg
ICAgICByZXR1cm4gZGVmYXVsdFBlcm1pc3Npb247CisgICAgfQorICAgIAorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBkZW5pZWRQZXJtaXNzaW9uOworfQorCit2b2lkIE5v
dGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNhbGxiYWNr
KQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOworICAgIE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+
Y2xpZW50KCktPnJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrKTsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZTkxMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwy
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25faCAgCisjZGVmaW5lIE5vdGlmaWNh
dGlvbl9oCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisj
aW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEaWN0aW9uYXJ5OworY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwor
Y2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrOworY2xhc3MgUmVzb3VyY2VFcnJv
cjsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsK
KworY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBOb3RpZmljYXRpb24oKTsKKyNpZiBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRp
b25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gcHJvdmlkZXIpOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOworI2Vu
ZGlmCisgICAgCisgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CisKKyAgICB2b2lkIHNob3co
KTsKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgdm9pZCBjYW5jZWwoKSB7
IGNsb3NlKCk7IH0KKyNlbmRpZgorICAgIHZvaWQgY2xvc2UoKTsKKworICAgIGJvb2wgaXNIVE1M
KCkgY29uc3QgeyByZXR1cm4gbV9pc0hUTUw7IH0KKyAgICB2b2lkIHNldEhUTUwoYm9vbCBpc0hU
TUwpIHsgbV9pc0hUTUwgPSBpc0hUTUw7IH0KKyAgICAKKyAgICBLVVJMIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fbm90aWZpY2F0aW9uVVJMOyB9CisgICAgdm9pZCBzZXRVUkwoS1VSTCB1cmwpIHsg
bV9ub3RpZmljYXRpb25VUkwgPSB1cmw7IH0KKyAgICAKKyAgICBLVVJMIGljb25VUkwoKSBjb25z
dCB7IHJldHVybiBtX2ljb247IH0KKworICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGl0bGU7IH0KKyAgICBTdHJpbmcgYm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keTsgfQor
CisgICAgU3RyaW5nIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgdm9p
ZCBzZXREaXIoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9kaXJlY3Rpb24gPSBkaXI7IH0KKworI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBTdHJpbmcgcmVwbGFjZUlkKCkgY29u
c3QgeyByZXR1cm4gdGFnKCk7IH0KKyAgICB2b2lkIHNldFJlcGxhY2VJZChjb25zdCBTdHJpbmcm
IHJlcGxhY2VJZCkgeyBzZXRUYWcocmVwbGFjZUlkKTsgfQorI2VuZGlmCisKKyAgICBTdHJpbmcg
dGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KKyAgICB2b2lkIHNldFRhZyhjb25zdCBTdHJp
bmcmIHRhZykgeyBtX3RhZyA9IHRhZzsgfQorCisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBkaXIoKSA9PSAicnRsIiA/IFJUTCA6IExUUjsgfQorCisgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzaG93KTsKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihkaXNwbGF5
KTsKKyNlbmRpZgorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOworICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xpY2spOworICAgIAorICAgIHZvaWQgZGlzcGF0Y2hD
bGlja0V2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICB2b2lkIGRp
c3BhdGNoRXJyb3JFdmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hTaG93RXZlbnQoKTsKKworICAg
IHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCisgICAgdmlydHVhbCB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKworICAgIHZvaWQgc3RvcExvYWRpbmdJY29uKCk7CisK
KyAgICAvLyBEZXByZWNhdGVkLiBVc2UgZnVuY3Rpb25zIGZyb20gTm90aWZpY2F0aW9uQ2VudGVy
LgorICAgIHZvaWQgZGV0YWNoUHJlc2VudGVyKCkgeyB9CisKKyAgICB2b2lkIGZpbmFsaXplKCk7
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBw
ZXJtaXNzaW9uTGV2ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
KTsKKyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KTsKKyNlbmRp
ZgorCitwcml2YXRlOgorI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBOb3Rp
ZmljYXRpb24oY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKKyAgICBOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGlj
b25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+KTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CisjZW5kaWYKKworICAgIHZvaWQgc2V0Qm9keShjb25zdCBTdHJpbmcmIGJvZHkp
IHsgbV9ib2R5ID0gYm9keTsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
bnN1cmVFdmVudFRhcmdldERhdGEoKTsKKworICAgIHZvaWQgc3RhcnRMb2FkaW5nSWNvbigpOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZ0ljb24oKTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiopOworI2VuZGlm
CisgICAgCisgICAgYm9vbCBtX2lzSFRNTDsKKworICAgIC8vIFRleHQgbm90aWZpY2F0aW9ucy4K
KyAgICBLVVJMIG1faWNvbjsKKyAgICBTdHJpbmcgbV90aXRsZTsKKyAgICBTdHJpbmcgbV9ib2R5
OworICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgSFRNTCBOb3RpZmljYXRpb25zLgorICAgIEtVUkwg
bV9ub3RpZmljYXRpb25VUkw7CisKKyAgICBTdHJpbmcgbV9kaXJlY3Rpb247CisgICAgU3RyaW5n
IG1fdGFnOworCisgICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7CisgICAgICAgIElkbGUgPSAw
LAorICAgICAgICBTaG93aW5nID0gMSwKKyAgICAgICAgQ2xvc2VkID0gMiwKKyAgICB9OworCisg
ICAgTm90aWZpY2F0aW9uU3RhdGUgbV9zdGF0ZTsKKworICAgIFJlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2VudGVyOworICAgIAorICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE93blB0
cjxUaW1lcjxOb3RpZmljYXRpb24+ID4gbV90YXNrVGltZXI7CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25zX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEyZWI3ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaWRsCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9U
SUZJQ0FUSU9OUywKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAgICBFdmVudFRhcmdl
dCwKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FU
SU9OUworICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdGl0bGUsIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgb3B0aW9ucyksCisgICAgICAgIENhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisjZWxzZQorICAgICAgICBPbWl0Q29uc3RydWN0
b3IKKyNlbmRpZgorICAgIF0gTm90aWZpY2F0aW9uIHsKKyAgICAgICAgdm9pZCBzaG93KCk7Cisj
aWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lf
Tk9USUZJQ0FUSU9OUworICAgICAgICB2b2lkIGNhbmNlbCgpOworI2VuZGlmCisjaWYgZGVmaW5l
ZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAg
dm9pZCBjbG9zZSgpOworI2VuZGlmCisKKworI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElP
TlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBzdGF0aWMgRE9NU3RyaW5nIHBlcm1pc3Npb25MZXZlbCgpOworICAgICAg
ICBbQ3VzdG9tXSBzdGF0aWMgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2sgY2FsbGJhY2spOworI2VuZGlmCisKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25zaG93OworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25kaXNwbGF5OworI2VuZGlmCisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xv
c2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xpY2s7CisKKyAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBkaXI7CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElG
SUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHJlcGxhY2VJZDsKKyNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX05PVElG
SUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgdGFnOworI2VuZGlmCisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisg
ICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJl
KTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29s
ZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQg
ZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBl
YmI1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmlj
YXRpb25DbGllbnQqIGNsaWVudCkKK3sKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBu
b3RpZmljYXRpb25DZW50ZXIoYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0
LCBjbGllbnQpKSk7CisgICAgbm90aWZpY2F0aW9uQ2VudGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKK30KKworTm90aWZpY2F0
aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworI2lmIEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK2ludCBOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVy
bWlzc2lvbigpCit7CisgICAgaWYgKCFjbGllbnQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVk
OworCisgICAgc3dpdGNoIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2lu
KCktPmNhblNob3dOb3RpZmljYXRpb25zKCkpIHsKKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpB
bHdheXNBbGxvdzoKKyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkFsbG93ZWQ7CisgICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzRGVueToKKyAgICAgICAg
cmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDsKKyAgICBjYXNlIFNl
Y3VyaXR5T3JpZ2luOjpBc2s6CisgICAgICAgIHJldHVybiBtX2NsaWVudC0+Y2hlY2tQZXJtaXNz
aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQordm9pZCBOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWNsaWVudCgpIHx8ICFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5TaG93Tm90aWZp
Y2F0aW9ucygpKSB7CisgICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzQWxsb3c6CisgICAg
Y2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzRGVueTogeworICAgICAgICBtX2NhbGxiYWNrcy5h
ZGQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVyKHRoaXMs
IGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBTZWN1cml0eU9y
aWdpbjo6QXNrOgorICAgICAgICByZXR1cm4gbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2spOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGNhbGxiYWNrKTsKK30KKyNlbmRpZgorCit2b2lkIE5vdGlmaWNhdGlv
bkNlbnRlcjo6c3RvcCgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY2xpZW50LT5jYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICBtX2NsaWVudC0+Y2xlYXJOb3RpZmljYXRpb25zKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgbV9jbGllbnQgPSAwOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bkNlbnRlcjo6cmVxdWVzdFRpbWVkT3V0KE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0KQoreworICAgIG1fY2FsbGJhY2tzLnJlbW92ZShyZXF1
ZXN0KTsKK30KKworUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJl
cXVlc3RDYWxsYmFjaz4gTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2Fs
bGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjayA9
IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxs
YmFjayhjZW50ZXIsIGNhbGxiYWNrKSk7CisgICAgcmVxdWVzdENhbGxiYWNrLT5zdGFydFRpbWVy
KCk7CisgICAgcmV0dXJuIHJlcXVlc3RDYWxsYmFjay5yZWxlYXNlKCk7Cit9CisKK05vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2soTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBjYWxsYmFjaykKKyAgICA6IG1fbm90aWZpY2F0aW9uQ2VudGVyKGNlbnRlcikKKyAg
ICAsIG1fdGltZXIodGhpcywgJk5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVz
dENhbGxiYWNrOjp0aW1lckZpcmVkKQorICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKK3sKK30K
Kwordm9pZCBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6
c3RhcnRUaW1lcigpCit7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmly
ZWQoVGltZXI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+
KikKK3sKKyAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgIG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uM2Y2ZDY4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAtMCwwICsxLDExNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE5vdGlmaWNhdGlvbkNlbnRlcl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvbkNlbnRl
cl9oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKworY2xhc3MgTm90
aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlm
aWNhdGlvbkNsaWVudCopOworCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAg
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgVVJJLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIGlmICghY2xpZW50
KCkpIHsKKyAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoVVJJLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Y29tcGxldGVVUkwoVVJJKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhp
cyk7CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisg
ICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIGljb25VUkksIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBpZiAoIWNsaWVudCgpKSB7CisgICAgICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBp
Y29uVVJJLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKKyAgICB9CisjZW5k
aWYKKworICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBpbnQgY2hl
Y2tQZXJtaXNzaW9uKCk7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZv
aWRDYWxsYmFjaz4pOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIE5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7CisKKyAgICBjbGFzcyBOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJh
Y2s+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
blJlcXVlc3RDYWxsYmFjaz4gY3JlYXRlQW5kU3RhcnRUaW1lcihOb3RpZmljYXRpb25DZW50ZXIq
LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOworICAgICAgICB2b2lkIHN0YXJ0VGltZXIoKTsK
KyAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
az4qKTsKKyAgICBwcml2YXRlOgorICAgICAgICBOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2so
Tm90aWZpY2F0aW9uQ2VudGVyKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKworICAgICAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKKyAgICAg
ICAgVGltZXI8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBtX3RpbWVyOworICAgICAgICBS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIH07CisKKyAgICB2b2lkIHJlcXVl
c3RUaW1lZE91dChOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2sqKTsKKworICAgIE5vdGlmaWNh
dGlvbkNsaWVudCogbV9jbGllbnQ7CisgICAgSGFzaFNldDxSZWZQdHI8Tm90aWZpY2F0aW9uUmVx
dWVzdENhbGxiYWNrPiA+IG1fY2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNlbnRlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTliYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUxFR0FDWV9OT1RJRklDQVRJ
T05TLAorICAgICAgICBBY3RpdmVET01PYmplY3QsCisgICAgICAgIE9taXRDb25zdHJ1Y3Rvcgor
ICAgIF0gTm90aWZpY2F0aW9uQ2VudGVyIHsKKyNpZiAhZGVmaW5lZChFTkFCTEVfVEVYVF9OT1RJ
RklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkKKyAgICAg
ICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERPTVN0
cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRpb24pOworI2VuZGlmCisgICAgICAgW1Y4Q3VzdG9t
XSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJsLCBp
biBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0cmluZyBib2R5KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKworICAgICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKKyAgICAgICBbQ3VzdG9tXSB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7CisgICAgfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjll
OTI4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5v
dGlmaWNhdGlvbkNsaWVudF9oCisjZGVmaW5lIE5vdGlmaWNhdGlvbkNsaWVudF9oCisKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJWb2lkQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgS1VSTDsKK2NsYXNzIE5vdGlmaWNhdGlvbjsK
K2NsYXNzIFBhZ2U7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBOb3Rp
ZmljYXRpb25DbGllbnQgeworCitwdWJsaWM6CisgICAgZW51bSBQZXJtaXNzaW9uIHsKKyAgICAg
ICAgUGVybWlzc2lvbkFsbG93ZWQsIC8vIFVzZXIgaGFzIGFsbG93ZWQgbm90aWZpY2F0aW9ucwor
ICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dlZCwgLy8gVXNlciBoYXMgbm90IHlldCBhbGxvd2Vk
CisgICAgICAgIFBlcm1pc3Npb25EZW5pZWQgLy8gVXNlciBoYXMgZXhwbGljaXRseSBkZW5pZWQg
cGVybWlzc2lvbgorICAgIH07CisKKyAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9u
IGJlIHNob3duLgorICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsKKwor
ICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gdGhhdCBoYXMgYWxyZWFkeSBiZWVu
IHNob3duIGJlIGNhbmNlbGVkLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9u
KikgPSAwOworCisgICAgLy8gV2hlbiB0aGUgdXNlciBjbG9zZXMgYSBwYWdlLCBvciBxdWl0cyB0
aGUgY2xpZW50IGFwcGxpY2F0aW9uLCBhbGwgb2YgdGhlIHBhZ2UncworICAgIC8vIGFzc29jaWF0
ZWQgbm90aWZpY2F0aW9ucyBhcmUgY2xlYXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KKyAgICAKKyAgICAvLyBJbmZv
cm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5vdGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVz
dHJveWVkCisgICAgLy8gKHN1Y2ggYXMgYnkgYSBwYWdlIHRyYW5zaXRpb24pLiBUaGUgcHJlc2Vu
dGVyIG1heSBjb250aW51ZSBzaG93aW5nCisgICAgLy8gdGhlIG5vdGlmaWNhdGlvbiwgYnV0IG11
c3Qgbm90IGF0dGVtcHQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlcnMuCisgICAgdmlydHVhbCB2
b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKSA9IDA7CisKKyAg
ICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhlIGNvbnRyb2xsZXIgYXR0YWNoZWQgdG8gdGhl
IHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkgPSAwOworCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQorICAgIC8vIFJlcXVlc3RzIHVzZXIgcGVybWlzc2lvbiB0byBzaG93IGRlc2t0b3Agbm90
aWZpY2F0aW9ucyBmcm9tIGEgcGFydGljdWxhcgorICAgIC8vIHNjcmlwdCBjb250ZXh0LiBUaGUg
Y2FsbGJhY2sgcGFyYW1ldGVyIHNob3VsZCBiZSBydW4gd2hlbiB0aGUgdXNlciBoYXMKKyAgICAv
LyBtYWRlIGEgZGVjaXNpb24uCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pID0gMDsKKyNl
bmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s+KSA9IDA7CisjZW5kaWYKKworICAgIC8vIENhbmNlbCBhbGwg
b3V0c3RhbmRpbmcgcmVxdWVzdHMgZm9yIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgPSAwOworCisgICAgLy8gQ2hlY2tzIHRoZSBjdXJyZW50IGxldmVsIG9mIHBlcm1p
c3Npb24uCisgICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+Tm90aWZpY2F0
aW9uQ2xpZW50KCkgeyB9Cit9OworCit2b2lkIHByb3ZpZGVOb3RpZmljYXRpb24oUGFnZSosIE5v
dGlmaWNhdGlvbkNsaWVudCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBOb3RpZmljYXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYmQ5YmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitOb3RpZmljYXRpb25Db250cm9sbGVyOjpOb3RpZmljYXRpb25Db250
cm9sbGVyKE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50
KQoreworfQorCitOb3RpZmljYXRpb25Db250cm9sbGVyOjp+Tm90aWZpY2F0aW9uQ29udHJvbGxl
cigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZpY2F0aW9u
Q29udHJvbGxlckRlc3Ryb3llZCgpOworfQorCitQYXNzT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI+IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShOb3RpZmljYXRpb25DbGllbnQq
IGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIoY2xpZW50KSk7Cit9CisKK05vdGlmaWNhdGlvbkNsaWVudCogTm90aWZpY2F0aW9uQ29udHJv
bGxlcjo6Y2xpZW50RnJvbShQYWdlKiBwYWdlKQoreworICAgIGlmIChOb3RpZmljYXRpb25Db250
cm9sbGVyKiBjb250cm9sbGVyID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKSkK
KyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPmNsaWVudCgpOworICAgIHJldHVybiAwOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJO
b3RpZmljYXRpb25Db250cm9sbGVyIikpOworICAgIHJldHVybiBuYW1lOworfQorCit2b2lkIHBy
b3ZpZGVOb3RpZmljYXRpb24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OmNyZWF0ZShjbGllbnQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmZkMTk2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorKi8KKworI2lmbmRlZiBOb3RpZmlj
YXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ29udHJvbGxlcl9oCisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90aWZp
Y2F0aW9uQ2xpZW50OworCitjbGFzcyBOb3RpZmljYXRpb25Db250cm9sbGVyIDogcHVibGljIFN1
cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXIpOworcHVibGljOgorICAgIH5Ob3RpZmljYXRpb25Db250cm9sbGVyKCk7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxOb3RpZmljYXRpb25Db250cm9sbGVyPiBjcmVhdGUoTm90aWZp
Y2F0aW9uQ2xpZW50Kik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVu
dE5hbWUoKTsKKyAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ29udHJvbGxlciogZnJvbShQYWdlKiBw
YWdlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25Db250cm9sbGVyKj4oU3VwcGxl
bWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KKyAgICBzdGF0aWMg
Tm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnRGcm9tKFBhZ2UqKTsKKworICAgIE5vdGlmaWNhdGlv
bkNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3RpZmljYXRpb25DbGllbnQqKTsKKworICAgIE5v
dGlmaWNhdGlvbkNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODRlNzMyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApAQCAt
MCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFja19oCisjZGVmaW5lIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQo
Y29uc3QgU3RyaW5nJiBwZXJtaXNzaW9uKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTEx
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1OT1RJRklDQVRJT05TLAorICAgICAgICBDYWxsYmFjaworICAgIF0gTm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBE
T01TdHJpbmcgcGVybWlzc2lvbik7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVlZGI5
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgor
I2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6V29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChjb250ZXh0KQoreworfQorCitXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6fldvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zKCkKK3sKK30KKworV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpmcm9tKFdvcmtlckNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgQXRvbWljU3RyaW5nIHN1cHBsZW1lbnROYW1lID0gIldvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zIjsKKyAgICBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKj4oU3VwcGxlbWVudDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSkpOwor
ICAgIGlmICghc3VwcGxlbWVudCkgeworICAgICAgICBzdXBwbGVtZW50ID0gbmV3IFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zKGNvbnRleHQpOworICAgICAgICBTdXBwbGVtZW50PFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+Ojpwcm92aWRlVG8oY29udGV4dCwgc3VwcGxlbWVudE5hbWUsIGFkb3B0
UHRyKHN1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK05v
dGlmaWNhdGlvbkNlbnRlciogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlm
aWNhdGlvbnMoV29ya2VyQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnM6OmZyb20oY29udGV4dCktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsK
K30KKworTm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Vi
a2l0Tm90aWZpY2F0aW9ucygpCit7CisgICAgaWYgKCFtX25vdGlmaWNhdGlvbkNlbnRlcikKKyAg
ICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZSht
X2NvbnRleHQsIG1fY29udGV4dC0+dGhyZWFkKCktPmdldE5vdGlmaWNhdGlvbkNsaWVudCgpKTsK
KyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNTRmY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRl
ZiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCisjZGVmaW5lIFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBXb3JrZXJDb250ZXh0OworCitjbGFzcyBXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucygp
OworCisgICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhX
b3JrZXJDb250ZXh0Kik7CisgICAgc3RhdGljIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBm
cm9tKFdvcmtlckNvbnRleHQqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7CisKKyAgICBOb3RpZmljYXRpb25DZW50
ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKKworICAgIFdvcmtlckNvbnRleHQqIG1fY29udGV4
dDsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzkzYmMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmlkbApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21v
ZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5P
VElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMsCisgICAgICAgIFN1cHBsZW1lbnRhbD1X
b3JrZXJDb250ZXh0CisgICAgXSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyB7CisjaWYgZGVm
aW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0g
Tm90aWZpY2F0aW9uQ2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7CisjZW5kaWYKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA2ZWFjZDVkLi42ZmM0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQy
OSw2ICs0MjksMTEgQEAgU09VUkNFUyArPSBcCiAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVX
cml0ZXJTeW5jLmNwcCBcCiAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5j
cHAgXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAg
XAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBc
CisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAorICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwKKyAgICBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgXAorICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgXAogICAgIGNzcy9DU1NB
c3BlY3RSYXRpb1ZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5j
cHAgXAogICAgIGNzcy9DU1NCb3JkZXJJbWFnZS5jcHAgXApAQCAtOTk3LDExICsxMDAyLDYgQEAg
U09VUkNFUyArPSBcCiAgICAgbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBcCiAgICAgbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIFwKICAgICBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAot
ICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuY3BwIFwKLSAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuY3BwIFwKLSAgICBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgXAogICAgIHBh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwIFwKQEAgLTE1ODEsNiArMTU4MSwxMyBAQCBIRUFERVJT
ICs9IFwKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwK
ICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uT3B0aW9ucy5oIFwKICAgICBcCisgICAg
TW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBcCisgICAgTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DbGllbnQuaCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zLmggXAorICAgIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2UuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3Jh
cHBlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmgg
XApAQCAtMjE0MCwxMiArMjE0Nyw2IEBAIEhFQURFUlMgKz0gXAogICAgIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmggXAogICAgIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
IFwKICAgICBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9E
T01XaW5kb3dOb3RpZmljYXRpb25zLmggXAotICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmggXAotICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAotICAgIG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggXAotICAgIG5vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5oIFwKLSAgICBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmggXAogICAgIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAgICAg
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oIFwKICAgICBwYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IGUyY2NjNjEuLjc1NzI2
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yMiw2ICsyMiw3IEBAIElOQ0xVREVQQVRIICs9IFwKICAg
ICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkJFNPVVJDRV9ESVIvTW9k
dWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvaW5kZXhlZGRiIFwK
KyAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwKICAgICAkJFNPVVJDRV9E
SVIvTW9kdWxlcy9xdW90YSBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvd2ViYXVkaW8gXAog
ICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKQEAgLTQ5LDcgKzUwLDYgQEAg
SU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9sb2FkZXIvY2FjaGUgXAogICAgICQk
U09VUkNFX0RJUi9sb2FkZXIvaWNvbiBcCiAgICAgJCRTT1VSQ0VfRElSL21hdGhtbCBcCi0gICAg
JCRTT1VSQ0VfRElSL25vdGlmaWNhdGlvbnMgXAogICAgICQkU09VUkNFX0RJUi9wYWdlIFwKICAg
ICAkJFNPVVJDRV9ESVIvcGFnZS9hbmltYXRpb24gXAogICAgICQkU09VUkNFX0RJUi9wYWdlL3F0
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDE3M2VlLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgot
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRE9NV2luZG93Tm90aWZpY2F0aW9uczo6RE9NV2luZG93
Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqIHdpbmRvdykKLSAgICA6IERPTVdpbmRvd1Byb3BlcnR5
KHdpbmRvdy0+ZnJhbWUoKSkKLSAgICAsIG1fd2luZG93KHdpbmRvdykKLXsKLX0KLQotRE9NV2lu
ZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoKQotewotfQotCi1ET01X
aW5kb3dOb3RpZmljYXRpb25zKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9tKERPTVdpbmRv
dyogd2luZG93KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzdXBw
bGVtZW50TmFtZSwgKCJET01XaW5kb3dOb3RpZmljYXRpb25zIikpOwotICAgIERPTVdpbmRvd05v
dGlmaWNhdGlvbnMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dOb3RpZmljYXRp
b25zKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUp
KTsKLSAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBET01X
aW5kb3dOb3RpZmljYXRpb25zKHdpbmRvdyk7Ci0gICAgICAgIFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUsIGFkb3B0UHRyKHN1cHBsZW1lbnQp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0KLU5vdGlmaWNhdGlvbkNlbnRl
ciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cq
IHdpbmRvdykKLXsKLSAgICByZXR1cm4gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbSh3aW5k
b3cpLT53ZWJraXROb3RpZmljYXRpb25zKCk7Ci19Ci0KLXZvaWQgRE9NV2luZG93Tm90aWZpY2F0
aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKLXsKLSAgICBtX3N1c3BlbmRlZE5v
dGlmaWNhdGlvbkNlbnRlciA9IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKLSAgICBE
T01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7Ci19Ci0KLXZv
aWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZy
YW1lKiBmcmFtZSkKLXsKLSAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9t
UGFnZUNhY2hlKGZyYW1lKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG1fc3VzcGVuZGVk
Tm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBET01XaW5kb3dOb3RpZmlj
YXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQotewotICAgIG1f
c3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKLSAgICBET01XaW5kb3dQcm9w
ZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCk7Ci19Ci0KLXZvaWQg
RE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkK
LXsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG51bGxwdHI7Ci0gICAgRE9NV2luZG93UHJv
cGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpOwotfQotCi12b2lkIERPTVdp
bmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKQotewot
ICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKLSAgICBET01XaW5kb3dQcm9wZXJ0
eTo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwotfQotCi1Ob3RpZmljYXRpb25D
ZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoKQotewot
ICAgIGlmICghbV93aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlcikKLSAgICAgICAgcmV0
dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV93aW5kb3ctPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIE5vdGlmaWNhdGlvbkNsaWVudCogcHJv
dmlkZXIgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnRGcm9tKHBhZ2UpOwotICAgIGlm
IChwcm92aWRlcikgCi0gICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gTm90aWZpY2F0aW9u
Q2VudGVyOjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVyKTsgICAgCi0KLSAgICByZXR1cm4gbV9u
b3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmUyNmRkNi4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NV2luZG93Tm90aWZpY2F0aW9uc19o
Ci0jZGVmaW5lIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaAotCi0jaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJT
dXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRv
dzsKLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLQotY2xhc3MgRE9NV2luZG93Tm90aWZpY2F0
aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PERPTVdpbmRvdz4sIHB1YmxpYyBET01XaW5kb3dQcm9w
ZXJ0eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpOwot
Ci0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhET01X
aW5kb3cqKTsKLSAgICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogZnJvbShET01XaW5k
b3cqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZy
YW1lKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0
SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFj
aEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IERPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7Ci0KLSAgICBOb3RpZmljYXRp
b25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIERPTVdpbmRvdyogbV93aW5k
b3c7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7
Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNwZW5kZWROb3RpZmljYXRpb25D
ZW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYg
Ly8gRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWE4YTEyOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgd2luZG93
IHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8
TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAg
ICBdIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgewotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3
ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNh
dGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKLSNlbmRpZgotICAgIH07Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzQ4OTkyYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJET01XaW5kb3dO
b3RpZmljYXRpb25zLmgiCi0jaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25D
bGllbnQuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXIuaCIKLSNpbmNsdWRlICJXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCIKLSNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTm90aWZp
Y2F0aW9uOjpOb3RpZmljYXRpb24oKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KDAsIHRoaXMpCi17
Ci19Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb246Ok5v
dGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJv
dmlkZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1faXNI
VE1MKHRydWUpCi0gICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX25vdGlmaWNhdGlvbkNlbnRl
cihwcm92aWRlcikKLXsKLSAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlz
c2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAg
ICAgZWMgPSBTRUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
dXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX25vdGlmaWNhdGlvblVSTCA9IHVy
bDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotTm90aWZp
Y2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJv
dmlkZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1faXNI
VE1MKGZhbHNlKQotICAgICwgbV90aXRsZSh0aXRsZSkKLSAgICAsIG1fYm9keShib2R5KQotICAg
ICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCi17
Ci0gICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAgICAgIGVjID0gU0VDVVJJ
VFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9pY29uID0gaWNvblVSSS5p
c0VtcHR5KCkgPyBLVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJM
KGljb25VUkkpOwotICAgIGlmICghbV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29uLmlzVmFsaWQo
KSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uOjpOb3Rp
ZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9pc0hU
TUwoZmFsc2UpCi0gICAgLCBtX3RpdGxlKHRpdGxlKQotICAgICwgbV9zdGF0ZShJZGxlKQotICAg
ICwgbV90YXNrVGltZXIoYWRvcHRQdHIobmV3IFRpbWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5v
dGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQpKSkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNh
dGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZG9tV2luZG93KCkpOwotICAgIAotICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+
Y2xpZW50KCkpOwotICAgIG1fdGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0jZW5kaWYK
LQotTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCi17Ci19Ci0KLSNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi1QYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9u
OjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3Zp
ZGVyKSAKLXsgCi0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVm
KG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7Ci0gICAgbm90
aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJl
bGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKLXsgCi0gICAg
UmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRp
b24odGl0bGUsIGJvZHksIGljb25VUkksIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKLSAgICBu
b3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24u
cmVsZWFzZSgpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXN0YXRp
YyB2b2lkIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlz
dGVuZXIgPSBvcHRpb25zLmdldEV2ZW50TGlzdGVuZXIocHJvcGVydHksIG5vdGlmaWNhdGlvbik7
Ci0gICAgaWYgKGxpc3RlbmVyKQotICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lLCBsaXN0ZW5lci5yZWxlYXNlKCksIGZhbHNlKTsKLX0KLQotUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlv
bnMpCi17Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5l
dyBOb3RpZmljYXRpb24oY29udGV4dCwgdGl0bGUpKSk7Ci0gICAgU3RyaW5nIGFyZ3VtZW50Owot
ICAgIGlmIChvcHRpb25zLmdldCgiYm9keSIsIGFyZ3VtZW50KSkKLSAgICAgICAgbm90aWZpY2F0
aW9uLT5zZXRCb2R5KGFyZ3VtZW50KTsKLSAgICBpZiAob3B0aW9ucy5nZXQoInRhZyIsIGFyZ3Vt
ZW50KSkKLSAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRUYWcoYXJndW1lbnQpOwotICAgIGdldEFu
ZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNob3dFdmVudCwgIm9uc2hvdyIsIG9wdGlv
bnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0gICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2xvc2VFdmVudCwgIm9uY2xvc2UiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0
KCkpOwotICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
ICJvbmVycm9yIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBnZXRBbmRBZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAib25jbGljayIsIG9wdGlvbnMs
IG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0KLSAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRl
ZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwotfQotI2VuZGlmCi0KLWNv
bnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck5vdGlmaWNhdGlvbjsKLX0KLQot
dm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKLXsKLSAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93
aW5nCi0gICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xp
ZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpKSB7Ci0g
ICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7Ci0gICAgfQotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQotewotICAgIHN3aXRj
aCAobV9zdGF0ZSkgewotICAgIGNhc2UgSWRsZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
aG93aW5nOgotICAgICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQotICAg
ICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5jYW5jZWwodGhpcyk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2xvc2VkOgotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTm90aWZpY2F0aW9uOjpldmVudFRhcmdldERhdGEoKQotewot
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTm90
aWZpY2F0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkK
LXsKLSAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLSAgICBpZiAobV9u
b3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2xpZW50KCktPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKLX0KLQotdm9p
ZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBDbG9zZWQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gQ2xvc2VkOwotICAgIHVuc2V0UGVuZGlu
Z0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZl
bnQoKQotewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hv
d0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNo
Q2xpY2tFdmVudCgpCi17Ci0gICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0Zv
Y3VzQWxsb3dlZDsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hDbG9zZUV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotICAgIGZpbmFsaXplKCk7Ci19
Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQotewotICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZh
bHNlKSk7Ci19Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgTm90aWZpY2F0aW9u
Ojp0YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+KiB0aW1lcikKLXsKLSAgICBBU1NF
UlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnBhZ2UoKSk7
Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gbV90YXNrVGltZXIuZ2V0KCkpOwot
ICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVy
bWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2hvdygpOwotfQotI2VuZGlmCi0KLQotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb25M
ZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250
ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpLT5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgp
KS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihjb250ZXh0KSk7Ci19Ci0KLWNvbnN0IFN0cmlu
ZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbiBwZXJtaXNzaW9uKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBhbGxvd2VkUGVybWlzc2lvbiwgKCJncmFudGVkIikpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCBkZW5pZWRQZXJtaXNzaW9uLCAoImRlbmllZCIpKTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGVmYXVsdFBlcm1pc3Npb24sICgiZGVm
YXVsdCIpKTsKLSAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHsKLSAgICBjYXNlIE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQ6Ci0gICAgICAgIHJldHVybiBhbGxvd2VkUGVybWlz
c2lvbjsKLSAgICBjYXNlIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDoKLSAg
ICAgICAgcmV0dXJuIGRlbmllZFBlcm1pc3Npb247Ci0gICAgY2FzZSBOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOgotICAgICAgICByZXR1cm4gZGVmYXVsdFBlcm1pc3Np
b247Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBk
ZW5pZWRQZXJtaXNzaW9uOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQotewotICAgIEFTU0VSVChjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
LT5wYWdlKCkpOwotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQZXJtaXNzaW9u
KGNvbnRleHQsIGNhbGxiYWNrKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZTkxMDAuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uX2ggIAotI2RlZmlu
ZSBOb3RpZmljYXRpb25faAotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIE5vdGlmaWNhdGlv
bkNlbnRlcjsKLWNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazsKLWNsYXNzIFJl
c291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLWNsYXNzIFRocmVhZGFibGVMb2FkZXI7Ci0KLXR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlm
aWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uKCk7
Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRl
cik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKLSNlbmRpZgotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zKTsKLSNlbmRpZgotICAgIAotICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOwotCi0gICAg
dm9pZCBzaG93KCk7Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIHZvaWQg
Y2FuY2VsKCkgeyBjbG9zZSgpOyB9Ci0jZW5kaWYKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICBi
b29sIGlzSFRNTCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIVE1MOyB9Ci0gICAgdm9pZCBzZXRIVE1M
KGJvb2wgaXNIVE1MKSB7IG1faXNIVE1MID0gaXNIVE1MOyB9Ci0gICAgCi0gICAgS1VSTCB1cmwo
KSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQotICAgIHZvaWQgc2V0VVJMKEtV
UkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9Ci0gICAgCi0gICAgS1VSTCBpY29u
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9Ci0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25z
dCB7IHJldHVybiBtX3RpdGxlOyB9Ci0gICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBt
X2JvZHk7IH0KLQotICAgIFN0cmluZyBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsg
fQotICAgIHZvaWQgc2V0RGlyKGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fZGlyZWN0aW9uID0gZGly
OyB9Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgU3RyaW5nIHJlcGxh
Y2VJZCgpIGNvbnN0IHsgcmV0dXJuIHRhZygpOyB9Ci0gICAgdm9pZCBzZXRSZXBsYWNlSWQoY29u
c3QgU3RyaW5nJiByZXBsYWNlSWQpIHsgc2V0VGFnKHJlcGxhY2VJZCk7IH0KLSNlbmRpZgotCi0g
ICAgU3RyaW5nIHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9Ci0gICAgdm9pZCBzZXRUYWco
Y29uc3QgU3RyaW5nJiB0YWcpIHsgbV90YWcgPSB0YWc7IH0KLQotICAgIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyKCkgPT0gInJ0bCIgPyBSVEwgOiBMVFI7IH0K
LQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2hvdyk7Ci0jaWYgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZGlzcGxheSk7Ci0jZW5kaWYKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGVycm9yKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKLSAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKLSAgICAKLSAgICB2b2lk
IGRpc3BhdGNoQ2xpY2tFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Ci0g
ICAgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKTsKLSAgICB2b2lkIGRpc3BhdGNoU2hvd0V2ZW50
KCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKLSAgICB1c2lu
ZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOwotCi0gICAgLy8gRXZlbnRUYXJnZXQg
aW50ZXJmYWNlCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQotICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0KLSAgICB2b2lkIHN0b3BMb2FkaW5n
SWNvbigpOwotCi0gICAgLy8gRGVwcmVjYXRlZC4gVXNlIGZ1bmN0aW9ucyBmcm9tIE5vdGlmaWNh
dGlvbkNlbnRlci4KLSAgICB2b2lkIGRldGFjaFByZXNlbnRlcigpIHsgfQotCi0gICAgdm9pZCBm
aW5hbGl6ZSgpOwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgcGVybWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nJiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbik7Ci0gICAgc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
Pik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
Ci0gICAgTm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7Ci0gICAgTm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3Qg
U3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYs
IFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwotI2VuZGlmCi0KLSAgICB2b2lkIHNldEJvZHkoY29uc3QgU3Ry
aW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGlu
Z0ljb24oKTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmdJY29uKCk7Ci0KLSNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKLSAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4q
KTsKLSNlbmRpZgotICAgIAotICAgIGJvb2wgbV9pc0hUTUw7Ci0KLSAgICAvLyBUZXh0IG5vdGlm
aWNhdGlvbnMuCi0gICAgS1VSTCBtX2ljb247Ci0gICAgU3RyaW5nIG1fdGl0bGU7Ci0gICAgU3Ry
aW5nIG1fYm9keTsKLSAgICAvLyBGSVhNRTogRGVwcmVjYXRlIEhUTUwgTm90aWZpY2F0aW9ucy4K
LSAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJMOwotCi0gICAgU3RyaW5nIG1fZGlyZWN0aW9uOwot
ICAgIFN0cmluZyBtX3RhZzsKLQotICAgIGVudW0gTm90aWZpY2F0aW9uU3RhdGUgewotICAgICAg
ICBJZGxlID0gMCwKLSAgICAgICAgU2hvd2luZyA9IDEsCi0gICAgICAgIENsb3NlZCA9IDIsCi0g
ICAgfTsKLQotICAgIE5vdGlmaWNhdGlvblN0YXRlIG1fc3RhdGU7Ci0KLSAgICBSZWZQdHI8Tm90
aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKLSAgICAKLSAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICBPd25QdHI8VGltZXI8Tm90aWZpY2F0aW9uPiA+IG1fdGFza1RpbWVyOwotI2VuZGlmCi19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gTm90aWZp
Y2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMmViN2YuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05T
LAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgICAgIEV2ZW50VGFyZ2V0LAotI2lmIGRl
ZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCi0gICAg
ICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0aXRsZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKLSNlbHNlCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgotI2VuZGlm
Ci0gICAgXSBOb3RpZmljYXRpb24gewotICAgICAgICB2b2lkIHNob3coKTsKLSNpZiBkZWZpbmVk
KEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TCi0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICB2b2lkIGNsb3Nl
KCk7Ci0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5B
QkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIHN0YXRpYyBET01TdHJpbmcgcGVybWlzc2lvbkxldmVsKCk7Ci0gICAgICAgIFtDdXN0b21d
IHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjayBjYWxsYmFjayk7Ci0jZW5kaWYKLQotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbnNob3c7Ci0jaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYm
IEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmRpc3BsYXk7Ci0jZW5kaWYKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25lcnJvcjsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKLSAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbGljazsKLQotICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGRpcjsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgcmVwbGFjZUlkOwotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0YWc7
Ci0jZW5kaWYKLQotICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICAgICAgdm9p
ZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAg
ICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2Fw
dHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCi0gICAg
ICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYjU0Ny4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZp
Y2F0aW9uQ2VudGVyLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAi
V29ya2VyQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLXsKLSAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBub3RpZmljYXRpb25DZW50ZXIoYWRvcHRSZWYobmV3
IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBjbGllbnQpKSk7Ci0gICAgbm90aWZpY2F0aW9u
Q2VudGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uQ2VudGVy
LnJlbGVhc2UoKTsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGll
bnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1fY2xpZW50
KGNsaWVudCkKLXsKLX0KLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLWludCBO
b3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbigpCi17Ci0gICAgaWYgKCFjbGllbnQo
KSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOwotCi0gICAgc3dpdGNoIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25zKCkpIHsK
LSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNBbGxvdzoKLSAgICAgICAgcmV0dXJuIE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQ7Ci0gICAgY2FzZSBTZWN1cml0eU9y
aWdpbjo6QWx3YXlzRGVueToKLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbkRlbmllZDsKLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBc2s6Ci0gICAgICAgIHJl
dHVybiBtX2NsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1fY2xpZW50
LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLX0KLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotdm9pZCBOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykK
LXsKLSAgICBpZiAoIWNsaWVudCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT5jYW5TaG93Tm90aWZpY2F0aW9ucygpKSB7Ci0gICAgY2FzZSBTZWN1cml0
eU9yaWdpbjo6QWx3YXlzQWxsb3c6Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzRGVu
eTogewotICAgICAgICBtX2NhbGxiYWNrcy5hZGQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNr
OjpjcmVhdGVBbmRTdGFydFRpbWVyKHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QXNrOgotICAgICAgICByZXR1cm4gbV9j
bGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJh
Y2spOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG1fY2xpZW50LT5y
ZXF1ZXN0UGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrKTsKLX0K
LSNlbmRpZgotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6c3RvcCgpCi17Ci0gICAgaWYgKCFt
X2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5jYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2NsaWVudC0+Y2xl
YXJOb3RpZmljYXRpb25zKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jbGllbnQg
PSAwOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFRpbWVkT3V0KE5vdGlm
aWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0KQotewot
ICAgIG1fY2FsbGJhY2tzLnJlbW92ZShyZXF1ZXN0KTsKLX0KLQotUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gTm90aWZpY2F0aW9uQ2Vu
dGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90
aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFj
aykKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0
Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjayA9IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50
ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhjZW50ZXIsIGNhbGxiYWNrKSk7Ci0gICAg
cmVxdWVzdENhbGxiYWNrLT5zdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJuIHJlcXVlc3RDYWxsYmFj
ay5yZWxlYXNlKCk7Ci19Ci0KLU5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVz
dENhbGxiYWNrOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2soTm90aWZpY2F0aW9uQ2VudGVy
KiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKLSAgICA6IG1fbm90
aWZpY2F0aW9uQ2VudGVyKGNlbnRlcikKLSAgICAsIG1fdGltZXIodGhpcywgJk5vdGlmaWNhdGlv
bkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjp0aW1lckZpcmVkKQotICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKLXsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6Ok5v
dGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6c3RhcnRUaW1lcigpCi17Ci0gICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRp
b25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uQ2VudGVyOjpO
b3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+KikKLXsKLSAgICBtX2NhbGxiYWNrLT5oYW5kbGVF
dmVudCgpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2Y2ZDY4OS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAotI2RlZmluZSBOb3RpZmljYXRp
b25DZW50ZXJfaAotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNs
YXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNl
bnRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBOb3RpZmljYXRpb25DbGllbnQqKTsKLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLSAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAo
IWNsaWVudCgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFVSSS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
ZWMsIHRoaXMpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQotICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJv
ZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgaWYgKCFjbGllbnQoKSkgewot
ICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwg
Ym9keSwgaWNvblVSSSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAg
aW50IGNoZWNrUGVybWlzc2lvbigpOwotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBP
VkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0gICAgY2xhc3MgTm90aWZpY2F0
aW9uUmVxdWVzdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uUmVxdWVz
dENhbGxiYWNrPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IGNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9u
Q2VudGVyKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICAgICAgdm9pZCBzdGFydFRp
bWVyKCk7Ci0gICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0
Q2FsbGJhY2s+Kik7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgTm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0K
LSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7
Ci0gICAgICAgIFRpbWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gbV90aW1lcjsKLSAg
ICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKLSAgICB9OwotCi0gICAgdm9p
ZCByZXF1ZXN0VGltZWRPdXQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKik7Ci0KLSAgICBO
b3RpZmljYXRpb25DbGllbnQqIG1fY2xpZW50OwotICAgIEhhc2hTZXQ8UmVmUHRyPE5vdGlmaWNh
dGlvblJlcXVlc3RDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
aWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRs
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk5YmE5Li4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJm
YWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAg
IEFjdGl2ZURPTU9iamVjdCwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCi0gICAgXSBOb3RpZmlj
YXRpb25DZW50ZXIgewotI2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05M
WSkgfHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWQotICAgICAgIFtWOEN1c3RvbV0g
Tm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKLSAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlv
biBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25VcmwsIGluIERPTVN0cmluZyB0
aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgICAg
aW50IGNoZWNrUGVybWlzc2lvbigpOwotICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oaW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5MjgzNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEs
OTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNsaWVudF9oCi0jZGVmaW5lIE5vdGlm
aWNhdGlvbkNsaWVudF9oCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VS
TDsKLWNsYXNzIE5vdGlmaWNhdGlvbjsKLWNsYXNzIFBhZ2U7Ci1jbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQgewotCi1wdWJsaWM6Ci0gICAg
ZW51bSBQZXJtaXNzaW9uIHsKLSAgICAgICAgUGVybWlzc2lvbkFsbG93ZWQsIC8vIFVzZXIgaGFz
IGFsbG93ZWQgbm90aWZpY2F0aW9ucwotICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dlZCwgLy8g
VXNlciBoYXMgbm90IHlldCBhbGxvd2VkCi0gICAgICAgIFBlcm1pc3Npb25EZW5pZWQgLy8gVXNl
ciBoYXMgZXhwbGljaXRseSBkZW5pZWQgcGVybWlzc2lvbgotICAgIH07Ci0KLSAgICAvLyBSZXF1
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9vbCBzaG93
KE5vdGlmaWNhdGlvbiopID0gMDsKLQotICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRp
b24gdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHNob3duIGJlIGNhbmNlbGVkLgotICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKikgPSAwOwotCi0gICAgLy8gV2hlbiB0aGUgdXNlciBj
bG9zZXMgYSBwYWdlLCBvciBxdWl0cyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uLCBhbGwgb2YgdGhl
IHBhZ2UncwotICAgIC8vIGFzc29jaWF0ZWQgbm90aWZpY2F0aW9ucyBhcmUgY2xlYXJlZC4KLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSB7IH0KLSAgICAKLSAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5vdGlmaWNh
dGlvbiBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkCi0gICAgLy8gKHN1Y2ggYXMgYnkgYSBwYWdl
IHRyYW5zaXRpb24pLiBUaGUgcHJlc2VudGVyIG1heSBjb250aW51ZSBzaG93aW5nCi0gICAgLy8g
dGhlIG5vdGlmaWNhdGlvbiwgYnV0IG11c3Qgbm90IGF0dGVtcHQgdG8gY2FsbCB0aGUgZXZlbnQg
aGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChO
b3RpZmljYXRpb24qKSA9IDA7Ci0KLSAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhlIGNv
bnRyb2xsZXIgYXR0YWNoZWQgdG8gdGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgotICAgIHZp
cnR1YWwgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwotCi0jaWYg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIC8vIFJlcXVlc3RzIHVzZXIgcGVybWlz
c2lvbiB0byBzaG93IGRlc2t0b3Agbm90aWZpY2F0aW9ucyBmcm9tIGEgcGFydGljdWxhcgotICAg
IC8vIHNjcmlwdCBjb250ZXh0LiBUaGUgY2FsbGJhY2sgcGFyYW1ldGVyIHNob3VsZCBiZSBydW4g
d2hlbiB0aGUgdXNlciBoYXMKLSAgICAvLyBtYWRlIGEgZGVjaXNpb24uCi0gICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4pID0gMDsKLSNlbmRpZgotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KSA9IDA7Ci0jZW5k
aWYKLQotICAgIC8vIENhbmNlbCBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgZm9yIHRoZSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVy
bWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOwotCi0gICAgLy8gQ2hlY2tzIHRo
ZSBjdXJyZW50IGxldmVsIG9mIHBlcm1pc3Npb24uCi0gICAgdmlydHVhbCBQZXJtaXNzaW9uIGNo
ZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uQ2xpZW50KCkgeyB9Ci19OwotCi12b2lkIHByb3Zp
ZGVOb3RpZmljYXRpb24oUGFnZSosIE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25DbGllbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliYmQ5YmYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgotCi0jaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9u
Q29udHJvbGxlcihOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNs
aWVudCkKLXsKLX0KLQotTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6fk5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIoKQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmaWNh
dGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLX0KLQotUGFzc093blB0cjxOb3RpZmljYXRpb25D
b250cm9sbGVyPiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoTm90aWZpY2F0aW9uQ2xp
ZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb3RpZmljYXRpb25Db250
cm9sbGVyKGNsaWVudCkpOwotfQotCi1Ob3RpZmljYXRpb25DbGllbnQqIE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OmNsaWVudEZyb20oUGFnZSogcGFnZSkKLXsKLSAgICBpZiAoTm90aWZpY2F0aW9u
Q29udHJvbGxlciogY29udHJvbGxlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFn
ZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jbGllbnQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVt
ZW50TmFtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUs
ICgiTm90aWZpY2F0aW9uQ29udHJvbGxlciIpKTsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotdm9p
ZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xp
ZW50KQotewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBOb3RpZmljYXRpb25Db250cm9s
bGVyOjpjcmVhdGUoY2xpZW50KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDE5NjhlLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0q
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0qIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0qLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJf
aAotI2RlZmluZSBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKLQotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7Ci0K
LWNsYXNzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm90aWZpY2F0aW9uQ29udHJvbGxlcik7Ci1wdWJs
aWM6Ci0gICAgfk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKLQotICAgIHN0YXRpYyBQYXNzT3du
UHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IGNyZWF0ZShOb3RpZmljYXRpb25DbGllbnQqKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50TmFtZSgpOwotICAgIHN0
YXRpYyBOb3RpZmljYXRpb25Db250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9t
KHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQotICAgIHN0YXRpYyBOb3RpZmljYXRpb25DbGll
bnQqIGNsaWVudEZyb20oUGFnZSopOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb25D
b250cm9sbGVyKE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50
KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNl
bmRpZiAvLyBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGU3MzJhLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCi0jZGVmaW5lIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiBwZXJtaXNzaW9uKSA9IDA7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBl
cm1pc3Npb25DYWxsYmFjay5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMTEx
NjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29u
ZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUywKLSAgICAgICAgQ2FsbGJhY2sKLSAgICBdIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4g
RE9NU3RyaW5nIHBlcm1pc3Npb24pOwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZWRiOTkuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgiCi0K
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29u
dGV4dC5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi17Ci19
Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMoKQotewotfQotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnM6OmZyb20oV29ya2VyQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBBdG9taWNT
dHJpbmcgc3VwcGxlbWVudE5hbWUgPSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMiOwotICAg
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+Ojpmcm9tKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMo
Y29udGV4dCk7Ci0gICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OnBy
b3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOwot
ICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyKiBX
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250
ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6
ZnJvbShjb250ZXh0KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOwotfQotCi1Ob3RpZmljYXRpb25D
ZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKCkK
LXsKLSAgICBpZiAoIW1fbm90aWZpY2F0aW9uQ2VudGVyKQotICAgICAgICBtX25vdGlmaWNhdGlv
bkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jb250ZXh0
LT50aHJlYWQoKS0+Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkpOwotICAgIHJldHVybiBtX25vdGlm
aWNhdGlvbkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1NGZj
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCi0jZGVmaW5l
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50
YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRl
cjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJDb250ZXh0Owot
Ci1jbGFzcyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucygpOwotCi0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Vi
a2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0gICAgc3RhdGljIFdvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zKiBmcm9tKFdvcmtlckNvbnRleHQqKTsKLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0KLSAg
ICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIFdvcmtl
ckNvbnRleHQqIG1fY29udGV4dDsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25v
dGlmaWNhdGlvbkNlbnRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
Ci0KLSNlbmRpZiAvLyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzkzYmMyLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi1tb2R1
bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1OT1RJ
RklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBTdXBwbGVtZW50YWw9V29y
a2VyQ29udGV4dAotICAgIF0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMgewotI2lmIGRlZmlu
ZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNB
VElPTlMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5v
dGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlmCi0gICAgfTsKLQot
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148614</attachid>
            <date>2012-06-20 11:40:30 -0700</date>
            <delta_ts>2012-07-03 07:13:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82121-20120621034028.patch</filename>
            <type>text/plain</type>
            <size>209231</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzMjk3NTkzNDA3NDFm
YjkxOTBiZTUyZGFlNjhmYjVhNzVlYWU5Mi4uODg0NzAwNjM3YTA1OTZkYWM3ZTY3ZmIxMzBiMzJj
YjEwZDIzYjZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wNi0yMCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5vdGlmaWNh
dGlvbnMgc2hvdWxkIGJlIGluIE1vZHVsZXMvbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxMjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbm90aWZpY2F0aW9ucyBkaXJlY3Rv
cnkgaXMgbm93IHNlbGYtY29udGFpbmVkLiBUaGlzIHBhdGNoIG1vdmVzIGl0IHRvIHRoZSBNb2R1
bGVzIGRpcmVjdG9yeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05v
dGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZUZvclBh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNv
bm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90
aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3
aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKERPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRBbmRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmRpc3BhdGNoU2hvd0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hF
cnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uTGV2ZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmlzSFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldEhUTUwpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
ZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppY29uVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpib2R5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0RGlyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6cmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6c2V0UmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFn
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OmRldGFjaFByZXNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OnNldEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZWZFdmVudFRh
cmdldCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRlcmVmRXZlbnRUYXJnZXQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6
Ok5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNl
bnRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVl
c3RUaW1lZE91dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6
Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpzdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChO
b3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNlbnRlcjo6Y3JlYXRlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Y2xpZW50KToKKyAgICAgICAgKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5p
ZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm90aWZpY2F0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6fk5v
dGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjp+Tm90
aWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250
cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6Y2xpZW50RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6On5Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnM6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6
OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsLgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXAv
V2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA2LTIwICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIFVzZSBIaXRU
ZXN0UG9pbnQgaW5zdGVhZCBvZiBMYXlvdXRQb2ludCBmb3Igbm9kZUF0UG9pbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGUzYTA1NzIzMjYzMGQ3YzAzYjA1NTY3NmNjNzUyN2QwMjg0Y2UxYWYu
LjFiNjg4OTQ3YTJjMWU5YTljNTc1YTRhZDU0ZTQ5ZTk0YTg5OWJiMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00LDYgKzQsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvZ2VvbG9jYXRpb24iCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvaW5kZXhlZGRiIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ludGVu
dHMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbm90aWZpY2F0aW9ucyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy9xdW90YSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93
ZWJhdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJkYXRhYmFzZSIKQEAgLTMy
LDcgKzMzLDYgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNP
UkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9pY29uIgog
ICAgICIke1dFQkNPUkVfRElSfS9tYXRobWwiCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNh
dGlvbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bh
Z2UvYW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZyIKQEAgLTE3
MDcsMTkgKzE3MDcsMTkgQEAgRU5ESUYgKCkKIAogSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQog
ICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICBub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAotICAgICAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAotICAgICAgICBu
b3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcAorICAgICAgICBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKKyAgICAgICAgTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKyAgICAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisgICAgICAgIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisgICAgICAgIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAKICAgICApCiAKICAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwotICAgICAgICBub3RpZmljYXRpb25zL0RPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaWRsCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlk
bAotICAgICAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKLSAgICAgICAg
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCi0gICAgICAg
IG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCisgICAgICAgIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbAorICAgICAgICBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAorICAgICAgICBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorICAgICAgICBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbAorICAgICAgICBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCiAgICAgKQog
RU5ESUYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzU4OWMwYjlkZTY4
OTQ2NTI1NzE3NTA5NmY1YzkxMGM2MmM3ZjcwMC4uMWNmNzgzMmZiYzU4MjIyYTczMjMxODhkNWNl
NjMyZWNhN2VmM2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMSw2ICsz
MSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9pbmRleGVkZGIgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJh
dWRpbyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKQEAgLTQ4LDcgKzQ5
LDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrIFwKICAgICAkKFdlYkNv
cmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2FkZXIvYXBwY2FjaGUgXAotICAgICQo
V2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdl
YkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3RvcmFnZSBcCkBAIC0xMDUsNiArMTA1
LDExIEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
cXVvdGEvU3RvcmFnZUluZm8uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm9FcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0zOTQsMTEgKzM5OSw2IEBAIEJJTkRJTkdf
SURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0gICAgJChX
ZWJDb3JlKS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAotICAgICQoV2ViQ29yZSkv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIFwKLSAgICAk
KFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL3BhZ2UvQWJzdHJhY3RWaWV3LmlkbCBcCiAgICAgJChXZWJDb3JlKS9w
YWdlL0JhckluZm8uaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvQ29uc29sZS5pZGwgXApAQCAt
OTQyLDggKzk0Miw4IEBAIElETF9JTkNMVURFUyA9IFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkg
XAogICAgICQoV2ViQ29yZSkvaHRtbCBcCiAgICAgJChXZWJDb3JlKS9jc3MgXAotICAgICQoV2Vi
Q29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKKyAgICAkKFdlYkNv
cmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkveG1sIFwKICAgICAkKFdlYkNvcmUpL3N2ZwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggOWI1NGM3ZTQzYTU1MTdjMzQzNDZjNmVhMjNh
ZGYzYTZmODMwMTA0ZS4uMWY1MDNiMjVlYmNhNDBjMWQyYTBjYzY5ZjU1ZTk3M2RhOWQ2ODYzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBJRExfQklO
RElOR1MgKz0gXAogICAgICQkUFdEL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsIFwK
ICAgICAkJFBXRC9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwgXAogICAgICQk
UFdEL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsIFwK
KyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwK
KyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBc
CisgICAgJCRQV0QvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbCBcCiAg
ICAgJCRQV0QvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAg
LTQwNSwxMSArNDEwLDYgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9pbnNwZWN0b3Iv
U2NyaXB0UHJvZmlsZS5pZGwgXAogICAgICQkUFdEL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9k
ZS5pZGwgXAogICAgICQkUFdEL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlk
bCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBc
Ci0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKLSAgICAkJFBXRC9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAotICAgICQkUFdEL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0Qvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQkUFdEL3Bh
Z2UvQmFySW5mby5pZGwgXAogICAgICQkUFdEL3BhZ2UvQ29uc29sZS5pZGwgXAogICAgICQkUFdE
L3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMTMxOTE4MDY3
ZTAzNTg2ZjEzMzAwMTQxMjhjODAwZjA2NGJjMzFkYi4uNzZkZmI5OWZmZWEzYWVlZDE5YTQ3MjFl
ZGViMDY1NmUxMTk3YzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1LDYgKzE1LDcgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0g
XAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpbyBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZSBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzIFwKQEAgLTQ1LDcgKzQ2LDYgQEAgd2ViY29y
ZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbiBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvbWF0aG1sIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbiBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcgXApAQCAtODYxLDYgKzg2MSw3IEBAIElETF9QQVRI
IDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNl
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cyBcCkBAIC04NzUsNyArODc2LDYg
QEAgSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjayBcCiAgICAgJChXZWJD
b3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlIFwKLSAgICAk
KFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChX
ZWJDb3JlKS9wbHVnaW5zIFwKICAgICAkKFdlYkNvcmUpL3N0b3JhZ2UgXApAQCAtMTAyMiw2ICsx
MDIyLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBscyAk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXAorCSQo
c2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy8q
LmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzLyouaWRsKSBcCkBAIC0xMDM1LDcgKzEwMzYsNiBAQCBF
WFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9odG1s
LyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
LyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlLyouaWRsKSBcCi0JJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS8qLmlkbCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjAyZjVlYTM3OGE3
MGUxYmYwODAxMzIyMmFiNjI2YTQ3MTZkMmZjYS4uNzdhNmI0NWYxOGNiMTJlYjA0NzMzYjQ5ODkz
ZTBmMDIxNzUxYTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC03MDAsNiAr
NzAwLDkgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgXApAQCAtOTM5LDkgKzk0Miw2IEBAIGRv
bV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUu
aWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGwgXAogCSQo
V2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKLQkkKFdl
YkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCi0JJChXZWJDb3JlKS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAotCSQoV2ViQ29yZSkvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL3Bh
Z2UvQmFySW5mby5pZGwgXAogCSQoV2ViQ29yZSkvcGFnZS9Db25zb2xlLmlkbCBcCiAJJChXZWJD
b3JlKS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBcCkBAIC0xMTc0LDYgKzExNzQsMTggQEAgd2ViY29y
ZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DbGllbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgXApAQCAtMjkyMCwxOCArMjkzMiw2IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBcCi0JU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBcCi0JU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBcCi0JU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxNzNlZTc1ZWJiZjI3MTVhNTliZGViYmY4NzljN2Uy
MDZmZWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNl
bnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NV2luZG93Tm90aWZpY2F0aW9uczo6
RE9NV2luZG93Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqIHdpbmRvdykKKyAgICA6IERPTVdpbmRv
d1Byb3BlcnR5KHdpbmRvdy0+ZnJhbWUoKSkKKyAgICAsIG1fd2luZG93KHdpbmRvdykKK3sKK30K
KworRE9NV2luZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoKQorewor
fQorCitET01XaW5kb3dOb3RpZmljYXRpb25zKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9t
KERPTVdpbmRvdyogd2luZG93KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzdXBwbGVtZW50TmFtZSwgKCJET01XaW5kb3dOb3RpZmljYXRpb25zIikpOworICAgIERP
TVdpbmRvd05vdGlmaWNhdGlvbnMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dO
b3RpZmljYXRpb25zKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxl
bWVudE5hbWUpKTsKKyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9
IG5ldyBET01XaW5kb3dOb3RpZmljYXRpb25zKHdpbmRvdyk7CisgICAgICAgIFN1cHBsZW1lbnQ8
RE9NV2luZG93Pjo6cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUsIGFkb3B0UHRyKHN1
cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK05vdGlmaWNh
dGlvbkNlbnRlciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhE
T01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICByZXR1cm4gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6
ZnJvbSh3aW5kb3cpLT53ZWJraXROb3RpZmljYXRpb25zKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93
Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkKK3sKKyAgICBtX3N1
c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2Uo
KTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7
Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6cmVjb25uZWN0RnJhbWVGcm9tUGFn
ZUNhY2hlKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0
RnJhbWVGcm9tUGFnZUNhY2hlKGZyYW1lKTsKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG1f
c3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBET01XaW5k
b3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQor
eworICAgIG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKKyAgICBET01X
aW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCk7Cit9
CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lKCkKK3sKKyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG51bGxwdHI7CisgICAgRE9N
V2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpOworfQorCit2
b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUoKQoreworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKKyAgICBET01XaW5k
b3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOworfQorCitOb3Rp
ZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlv
bnMoKQoreworICAgIGlmICghbV93aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlcikKKyAg
ICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV93aW5kb3ctPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vdGlmaWNhdGlvbkNs
aWVudCogcHJvdmlkZXIgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnRGcm9tKHBhZ2Up
OworICAgIGlmIChwcm92aWRlcikgCisgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gTm90
aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoZG9jdW1lbnQsIHByb3ZpZGVyKTsgICAgCisKKyAgICBy
ZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmUy
NmRkNjAwYjM3ZGZmMGY5ZDIxMjMxYTFiZjY2MTkxM2Q4NmRiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaAorI2RlZmluZSBET01XaW5kb3dO
b3RpZmljYXRpb25zX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01XaW5kb3c7CitjbGFzcyBOb3RpZmljYXRp
b25DZW50ZXI7CisKK2NsYXNzIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgOiBwdWJsaWMgU3VwcGxl
bWVudDxET01XaW5kb3c+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgeworcHVibGljOgorICAg
IHZpcnR1YWwgfkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoKTsKKworICAgIHN0YXRpYyBOb3RpZmlj
YXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7CisgICAgc3RhdGlj
IERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIGZyb20oRE9NV2luZG93Kik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBET01XaW5kb3dOb3RpZmlj
YXRpb25zKERPTVdpbmRvdyopOworCisgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3Rp
ZmljYXRpb25zKCk7CisKKyAgICBET01XaW5kb3cqIG1fd2luZG93OworICAgIFJlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2VudGVyOworICAgIFJlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI+IG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIERPTVdpbmRvd05vdGlmaWNh
dGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOGExMjlj
NTdhMWRjNjg2NWIxNTU4YzllM2M3NDY1M2Q5ZGYyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgd2luZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElG
SUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMsCisgICAgICAgIFN1cHBsZW1lbnRhbD1ET01X
aW5kb3cKKyAgICBdIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgeworI2lmIGRlZmluZWQoRU5BQkxF
X0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlv
bkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOworI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRl
IE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKKyNlbmRpZgorICAgIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ4OTkyYWViMzMxZTk2OGQwYmQ3YmY0MjRhZGIwMTU1
OThhZGRiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKworI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKyNp
bmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJF
cnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1
ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bigpCisgICAgOiBBY3RpdmVET01PYmplY3QoMCwgdGhpcykKK3sKK30KKworI2lmIEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtV
UkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwodHJ1ZSkKKyAgICAsIG1f
c3RhdGUoSWRsZSkKKyAgICAsIG1fbm90aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQoreworICAg
IGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICF1
cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOworfQorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYg
aWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAgLCBt
X3RpdGxlKHRpdGxlKQorICAgICwgbV9ib2R5KGJvZHkpCisgICAgLCBtX3N0YXRlKElkbGUpCisg
ICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikKK3sKKyAgICBpZiAobV9ub3RpZmlj
YXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbkFsbG93ZWQpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX2ljb24gPSBpY29uVVJJLmlzRW1wdHkoKSA/IEtVUkwoKSA6
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoaWNvblVSSSk7CisgICAgaWYg
KCFtX2ljb24uaXNFbXB0eSgpICYmICFtX2ljb24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKyNlbmRpZgorCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lzSFRNTChmYWxzZSkKKyAgICAsIG1f
dGl0bGUodGl0bGUpCisgICAgLCBtX3N0YXRlKElkbGUpCisgICAgLCBtX3Rhc2tUaW1lcihhZG9w
dFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9uPih0aGlzLCAmTm90aWZpY2F0aW9uOjp0YXNrVGlt
ZXJGaXJlZCkpKQoreworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIG1f
bm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZp
Y2F0aW9ucyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5kb21XaW5kb3coKSk7Cisg
ICAgCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSk7CisgICAgbV90
YXNrVGltZXItPnN0YXJ0T25lU2hvdCgwKTsKK30KKyNlbmRpZgorCitOb3RpZmljYXRpb246On5O
b3RpZmljYXRpb24oKSAKK3sKK30KKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
K1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBLVVJM
JiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAoreyAKKyAgICBSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1
cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOworfQorCitQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAoreyAKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9u
PiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgaWNv
blVSSSwgY29udGV4dCwgZWMsIHByb3ZpZGVyKSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorc3RhdGljIHZvaWQgZ2V0QW5kQWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgY2hhciogcHJv
cGVydHksIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQoreworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IG9wdGlvbnMuZ2V0
RXZlbnRMaXN0ZW5lcihwcm9wZXJ0eSwgbm90aWZpY2F0aW9uKTsKKyAgICBpZiAobGlzdGVuZXIp
CisgICAgICAgIG5vdGlmaWNhdGlvbi0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3Rl
bmVyLnJlbGVhc2UoKSwgZmFsc2UpOworfQorCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90
aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKK3sKKyAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250
ZXh0LCB0aXRsZSkpKTsKKyAgICBTdHJpbmcgYXJndW1lbnQ7CisgICAgaWYgKG9wdGlvbnMuZ2V0
KCJib2R5IiwgYXJndW1lbnQpKQorICAgICAgICBub3RpZmljYXRpb24tPnNldEJvZHkoYXJndW1l
bnQpOworICAgIGlmIChvcHRpb25zLmdldCgidGFnIiwgYXJndW1lbnQpKQorICAgICAgICBub3Rp
ZmljYXRpb24tPnNldFRhZyhhcmd1bWVudCk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuc2hvd0V2ZW50LCAib25zaG93Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdl
dCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50
LCAib25jbG9zZSIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgIm9uZXJyb3IiLCBvcHRpb25z
LCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICJvbmNsaWNrIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgp
KTsKKworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5v
dGlmaWNhdGlvbi5yZWxlYXNlKCk7Cit9CisjZW5kaWYKKworY29uc3QgQXRvbWljU3RyaW5nJiBO
b3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yTm90aWZpY2F0aW9uOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6
c2hvdygpIAoreworICAgIC8vIHByZXZlbnQgZG91YmxlLXNob3dpbmcKKyAgICBpZiAobV9zdGF0
ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNh
dGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3codGhpcykpIHsKKyAgICAgICAgbV9zdGF0ZSA9IFNo
b3dpbmc7CisgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICB9Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
Y2FzZSBJZGxlOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNob3dpbmc6CisgICAgICAgIGlm
IChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCisgICAgICAgICAgICBtX25vdGlmaWNh
dGlvbkNlbnRlci0+Y2xpZW50KCktPmNhbmNlbCh0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDbG9zZWQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworRXZlbnRUYXJnZXREYXRh
KiBOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBOb3RpZmljYXRpb246OmVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwor
dm9pZCBOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIEFjdGl2ZURPTU9i
amVjdDo6Y29udGV4dERlc3Ryb3llZCgpOworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+
Y2xpZW50KCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+bm90aWZp
Y2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Zmlu
YWxpemUoKQoreworICAgIGlmIChtX3N0YXRlID09IENsb3NlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fc3RhdGUgPSBDbG9zZWQ7CisgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCgpCit7CisgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKK3sKKyAg
ICBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZmFsc2Us
IGZhbHNlKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKQor
eworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZmluYWxpemUoKTsKK30KKwordm9pZCBOb3RpZmljYXRp
b246OmRpc3BhdGNoRXJyb3JFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQordm9pZCBOb3RpZmljYXRpb246OnRhc2tUaW1lckZpcmVkKFRp
bWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHRpbWVyLCB0aW1lciA9PSBtX3Rhc2tUaW1lci5nZXQoKSk7CisgICAgaWYgKE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCkg
eworICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBzaG93KCk7Cit9CisjZW5kaWYKKworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitj
b25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7Cisg
ICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQ
ZXJtaXNzaW9uKGNvbnRleHQpKTsKK30KKworY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246OnBl
cm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBlcm1pc3Npb24p
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGFsbG93ZWRQZXJtaXNz
aW9uLCAoImdyYW50ZWQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IGRlbmllZFBlcm1pc3Npb24sICgiZGVuaWVkIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBkZWZhdWx0UGVybWlzc2lvbiwgKCJkZWZhdWx0IikpOworICAgIHN3aXRj
aCAocGVybWlzc2lvbikgeworICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
QWxsb3dlZDoKKyAgICAgICAgcmV0dXJuIGFsbG93ZWRQZXJtaXNzaW9uOworICAgIGNhc2UgTm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOgorICAgICAgICByZXR1cm4gZGVuaWVk
UGVybWlzc2lvbjsKKyAgICBjYXNlIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbk5vdEFs
bG93ZWQ6CisgICAgICAgIHJldHVybiBkZWZhdWx0UGVybWlzc2lvbjsKKyAgICB9CisgICAgCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGRlbmllZFBlcm1pc3Npb247Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
az4gY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAg
QVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgTm90
aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQp
LT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVzdFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJhY2sp
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGRlOTEwMDczYjAyNmJlNjNjMTI5ZDEyMDQyOGQ2NDA1MTEwZDk2YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbl9o
ICAKKyNkZWZpbmUgTm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIlRpbWVyLmgiCisjZW5k
aWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpY3Rpb25hcnk7CitjbGFzcyBO
b3RpZmljYXRpb25DZW50ZXI7CitjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7
CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOworCit0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRU
YXJnZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIE5vdGlm
aWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gcHJvdmlkZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlv
bmFyeSYgb3B0aW9ucyk7CisjZW5kaWYKKyAgICAKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24o
KTsKKworICAgIHZvaWQgc2hvdygpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICB2b2lkIGNhbmNlbCgpIHsgY2xvc2UoKTsgfQorI2VuZGlmCisgICAgdm9pZCBjbG9zZSgp
OworCisgICAgYm9vbCBpc0hUTUwoKSBjb25zdCB7IHJldHVybiBtX2lzSFRNTDsgfQorICAgIHZv
aWQgc2V0SFRNTChib29sIGlzSFRNTCkgeyBtX2lzSFRNTCA9IGlzSFRNTDsgfQorICAgIAorICAg
IEtVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25VUkw7IH0KKyAgICB2b2lk
IHNldFVSTChLVVJMIHVybCkgeyBtX25vdGlmaWNhdGlvblVSTCA9IHVybDsgfQorICAgIAorICAg
IEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbjsgfQorCisgICAgU3RyaW5nIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIFN0cmluZyBib2R5KCkgY29uc3Qg
eyByZXR1cm4gbV9ib2R5OyB9CisKKyAgICBTdHJpbmcgZGlyKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rpb247IH0KKyAgICB2b2lkIHNldERpcihjb25zdCBTdHJpbmcmIGRpcikgeyBtX2RpcmVj
dGlvbiA9IGRpcjsgfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIFN0
cmluZyByZXBsYWNlSWQoKSBjb25zdCB7IHJldHVybiB0YWcoKTsgfQorICAgIHZvaWQgc2V0UmVw
bGFjZUlkKGNvbnN0IFN0cmluZyYgcmVwbGFjZUlkKSB7IHNldFRhZyhyZXBsYWNlSWQpOyB9Cisj
ZW5kaWYKKworICAgIFN0cmluZyB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQorICAgIHZv
aWQgc2V0VGFnKGNvbnN0IFN0cmluZyYgdGFnKSB7IG1fdGFnID0gdGFnOyB9CisKKyAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcigpID09ICJydGwiID8gUlRM
IDogTFRSOyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHNob3cpOwor
I2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGRpc3BsYXkpOworI2VuZGlmCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihlcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihj
bG9zZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbGljayk7CisgICAg
CisgICAgdm9pZCBkaXNwYXRjaENsaWNrRXZlbnQoKTsKKyAgICB2b2lkIGRpc3BhdGNoQ2xvc2VF
dmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRj
aFNob3dFdmVudCgpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7
CisgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKKworICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRl
cmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworCisgICAgdm9pZCBz
dG9wTG9hZGluZ0ljb24oKTsKKworICAgIC8vIERlcHJlY2F0ZWQuIFVzZSBmdW5jdGlvbnMgZnJv
bSBOb3RpZmljYXRpb25DZW50ZXIuCisgICAgdm9pZCBkZXRhY2hQcmVzZW50ZXIoKSB7IH0KKwor
ICAgIHZvaWQgZmluYWxpemUoKTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcmIHBlcm1pc3Npb25MZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb24pOworICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFjaz4pOworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4p
OworICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJv
ZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2Vw
dGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOworI2VuZGlmCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyNlbmRpZgorCisgICAgdm9pZCBzZXRCb2R5
KGNvbnN0IFN0cmluZyYgYm9keSkgeyBtX2JvZHkgPSBib2R5OyB9CisKKyAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigp
OyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCisgICAgdm9pZCBz
dGFydExvYWRpbmdJY29uKCk7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nSWNvbigpOworCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdm9pZCB0YXNrVGltZXJGaXJlZChUaW1lcjxOb3Rp
ZmljYXRpb24+Kik7CisjZW5kaWYKKyAgICAKKyAgICBib29sIG1faXNIVE1MOworCisgICAgLy8g
VGV4dCBub3RpZmljYXRpb25zLgorICAgIEtVUkwgbV9pY29uOworICAgIFN0cmluZyBtX3RpdGxl
OworICAgIFN0cmluZyBtX2JvZHk7CisgICAgLy8gRklYTUU6IERlcHJlY2F0ZSBIVE1MIE5vdGlm
aWNhdGlvbnMuCisgICAgS1VSTCBtX25vdGlmaWNhdGlvblVSTDsKKworICAgIFN0cmluZyBtX2Rp
cmVjdGlvbjsKKyAgICBTdHJpbmcgbV90YWc7CisKKyAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRl
IHsKKyAgICAgICAgSWRsZSA9IDAsCisgICAgICAgIFNob3dpbmcgPSAxLAorICAgICAgICBDbG9z
ZWQgPSAyLAorICAgIH07CisKKyAgICBOb3RpZmljYXRpb25TdGF0ZSBtX3N0YXRlOworCisgICAg
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7CisgICAgCisg
ICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCisgICAgT3duUHRyPFRpbWVyPE5vdGlmaWNhdGlvbj4gPiBtX3Rhc2tUaW1lcjsK
KyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2VuZGlm
IC8vIE5vdGlmaWNhdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTJlYjdmMjQ1ZjlmNTZj
NmViM2I3NTVhOGQ2NjY1ZGNiNGJlMzNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKQEAgLTAsMCArMSw4NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAorICAgICAgICBBY3RpdmVE
T01PYmplY3QsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElG
SUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIENvbnN0cnVjdG9yKGlu
IERPTVN0cmluZyB0aXRsZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRGljdGlv
bmFyeSBvcHRpb25zKSwKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwK
KyNlbHNlCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorI2VuZGlmCisgICAgXSBOb3RpZmljYXRp
b24geworICAgICAgICB2b2lkIHNob3coKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAgICAgIHZvaWQg
Y2FuY2VsKCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBF
TkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICB2b2lkIGNsb3NlKCk7CisjZW5kaWYKKworCisj
aWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMK
KyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBET01TdHJp
bmcgcGVybWlzc2lvbkxldmVsKCk7CisgICAgICAgIFtDdXN0b21dIHN0YXRpYyB2b2lkIHJlcXVl
c3RQZXJtaXNzaW9uKGluIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayBjYWxsYmFjayk7
CisjZW5kaWYKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNob3c7CisjaWYg
ZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7Cisj
ZW5kaWYKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25jbGljazsKKworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRpcjsKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVwbGFjZUlkOworI2Vu
ZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNB
VElPTlMKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0YWc7CisjZW5kaWYKKworICAgICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50
TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZl
bnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGViYjU0NzQwMDk1ZTU2YmZmNjcwODJjYWRlZmYxZmYzYjZjNTg2NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50
KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihh
ZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIGNsaWVudCkpKTsKKyAgICBu
b3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmlj
YXRpb25DZW50ZXIucmVsZWFzZSgpOworfQorCitOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNh
dGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25D
bGllbnQqIGNsaWVudCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAg
ICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQoraW50IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y2hlY2tQZXJtaXNzaW9uKCkKK3sKKyAgICBp
ZiAoIWNsaWVudCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVy
biBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBzd2l0Y2ggKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlmaWNh
dGlvbnMoKSkgeworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0FsbG93OgorICAgICAg
ICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZDsKKyAgICBjYXNl
IFNlY3VyaXR5T3JpZ2luOjpBbHdheXNEZW55OgorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9u
Q2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFzazoK
KyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gbV9jbGllbnQtPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
fQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCit2b2lkIE5vdGlm
aWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IGNhbGxiYWNrKQoreworICAgIGlmICghY2xpZW50KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25zKCkpIHsKKyAgICBj
YXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNBbGxvdzoKKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2lu
OjpBbHdheXNEZW55OiB7CisgICAgICAgIG1fY2FsbGJhY2tzLmFkZChOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIodGhpcywgY2FsbGJhY2spKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBc2s6CisgICAgICAg
IHJldHVybiBtX2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBjYWxsYmFjayk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
bV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2Fs
bGJhY2spOworfQorI2VuZGlmCisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKK3sK
KyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmNhbmNl
bFJlcXVlc3RzRm9yUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1f
Y2xpZW50LT5jbGVhck5vdGlmaWNhdGlvbnMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAg
ICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0VGlt
ZWRPdXQoTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2sqIHJl
cXVlc3QpCit7CisgICAgbV9jYWxsYmFja3MucmVtb3ZlKHJlcXVlc3QpOworfQorCitQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBOb3Rp
ZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3Rh
cnRUaW1lcihOb3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGNhbGxiYWNrKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNh
dGlvblJlcXVlc3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrID0gYWRvcHRSZWYobmV3IE5vdGlm
aWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKGNlbnRlciwgY2FsbGJh
Y2spKTsKKyAgICByZXF1ZXN0Q2FsbGJhY2stPnN0YXJ0VGltZXIoKTsKKyAgICByZXR1cm4gcmVx
dWVzdENhbGxiYWNrLnJlbGVhc2UoKTsKK30KKworTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmlj
YXRpb25SZXF1ZXN0Q2FsbGJhY2s6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhOb3RpZmlj
YXRpb25DZW50ZXIqIGNlbnRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQor
ICAgIDogbV9ub3RpZmljYXRpb25DZW50ZXIoY2VudGVyKQorICAgICwgbV90aW1lcih0aGlzLCAm
Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmly
ZWQpCisgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQoreworfQorCit2b2lkIE5vdGlmaWNhdGlv
bkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpzdGFydFRpbWVyKCkKK3sKKyAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25DZW50ZXI6
Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6dGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRp
b25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4qKQoreworICAgIG1fY2FsbGJh
Y2stPmhhbmRsZUV2ZW50KCk7CisgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPnJlcXVlc3RUaW1l
ZE91dCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjZkNjg5MDJmMzA1NzVjODA3YmEzYzIxMDIxZDk3MDUz
N2E1MWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Tm90aWZpY2F0aW9uQ2VudGVyX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ2VudGVyX2gKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNs
dWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90aWZp
Y2F0aW9uQ2xpZW50OworY2xhc3MgVm9pZENhbGxiYWNrOworCitjbGFzcyBOb3RpZmljYXRpb25D
ZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uQ2xp
ZW50Kik7CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkks
IEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjbGllbnQoKSkgeworICAg
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisgICAgICAgIGlmIChVUkkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21w
bGV0ZVVSTChVUkkpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVjLCB0aGlzKTsKKyAgICB9
CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBQYXNzUmVm
UHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVS
SSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2Rl
JiBlYykKKyAgICB7CisgICAgICAgIGlmICghY2xpZW50KCkpIHsKKyAgICAgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkksIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMpOworICAgIH0KKyNlbmRpZgorCisgICAg
Tm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQor
CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIGludCBjaGVja1Blcm1pc3Np
b24oKTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
Pik7CisjZW5kaWYKKworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgTm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3Rp
ZmljYXRpb25DbGllbnQqKTsKKworICAgIGNsYXNzIE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
ayA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4geworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrPiBjcmVhdGVBbmRTdGFydFRpbWVyKE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPik7CisgICAgICAgIHZvaWQgc3RhcnRUaW1lcigpOworICAgICAgICB2
b2lkIHRpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiopOworICAg
IHByaXZhdGU6CisgICAgICAgIE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhOb3RpZmljYXRp
b25DZW50ZXIqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOworCisgICAgICAgIFJlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2VudGVyOworICAgICAgICBUaW1lcjxO
b3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IG1fdGltZXI7CisgICAgICAgIFJlZlB0cjxWb2lk
Q2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAgfTsKKworICAgIHZvaWQgcmVxdWVzdFRpbWVkT3V0
KE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayopOworCisgICAgTm90aWZpY2F0aW9uQ2xpZW50
KiBtX2NsaWVudDsKKyAgICBIYXNoU2V0PFJlZlB0cjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJh
Y2s+ID4gbV9jYWxsYmFja3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ2VudGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGE5OWJhOWZmM2M0MDY1MzJkOWQ3MzcxYjZiZTY4OWM1ZDhhZjFmZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaWRsCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TEVHQUNZX05PVElGSUNBVElP
TlMsCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisg
ICAgXSBOb3RpZmljYXRpb25DZW50ZXIgeworI2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX05PVElG
SUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWQorICAgICAg
IFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3Ry
aW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKyAgICAgICBbVjhDdXN0b21d
IE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25VcmwsIGlu
IERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhET01FeGNlcHRpb24p
OworCisgICAgICAgaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgICAgIFtDdXN0b21dIHZvaWQg
cmVxdWVzdFBlcm1pc3Npb24oaW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICB9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU5MjgzNmU1NjRjYWM5NmE5MGYzZjE1ZDlj
ZDI5NmM1OWM0NWIwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDk4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTm90aWZpY2F0aW9uQ2xpZW50X2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uQ2xpZW50X2gK
KworI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBLVVJMOworY2xhc3MgTm90aWZp
Y2F0aW9uOworY2xhc3MgUGFnZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2Ns
YXNzIE5vdGlmaWNhdGlvbkNsaWVudCB7CisKK3B1YmxpYzoKKyAgICBlbnVtIFBlcm1pc3Npb24g
eworICAgICAgICBQZXJtaXNzaW9uQWxsb3dlZCwgLy8gVXNlciBoYXMgYWxsb3dlZCBub3RpZmlj
YXRpb25zCisgICAgICAgIFBlcm1pc3Npb25Ob3RBbGxvd2VkLCAvLyBVc2VyIGhhcyBub3QgeWV0
IGFsbG93ZWQKKyAgICAgICAgUGVybWlzc2lvbkRlbmllZCAvLyBVc2VyIGhhcyBleHBsaWNpdGx5
IGRlbmllZCBwZXJtaXNzaW9uCisgICAgfTsKKworICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3Rp
ZmljYXRpb24gYmUgc2hvd24uCisgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKikg
PSAwOworCisgICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJl
YWR5IGJlZW4gc2hvd24gYmUgY2FuY2VsZWQuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3Rp
ZmljYXRpb24qKSA9IDA7CisKKyAgICAvLyBXaGVuIHRoZSB1c2VyIGNsb3NlcyBhIHBhZ2UsIG9y
IHF1aXRzIHRoZSBjbGllbnQgYXBwbGljYXRpb24sIGFsbCBvZiB0aGUgcGFnZSdzCisgICAgLy8g
YXNzb2NpYXRlZCBub3RpZmljYXRpb25zIGFyZSBjbGVhcmVkLgorICAgIHZpcnR1YWwgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQorICAgIAorICAg
IC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGF0IGEgTm90aWZpY2F0aW9uIG9iamVjdCBoYXMg
YmVlbiBkZXN0cm95ZWQKKyAgICAvLyAoc3VjaCBhcyBieSBhIHBhZ2UgdHJhbnNpdGlvbikuIFRo
ZSBwcmVzZW50ZXIgbWF5IGNvbnRpbnVlIHNob3dpbmcKKyAgICAvLyB0aGUgbm90aWZpY2F0aW9u
LCBidXQgbXVzdCBub3QgYXR0ZW1wdCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVycy4KKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopID0g
MDsKKworICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGUgY29udHJvbGxlciBhdHRhY2hl
ZCB0byB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7CisKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCisgICAgLy8gUmVxdWVzdHMgdXNlciBwZXJtaXNzaW9uIHRvIHNob3cgZGVz
a3RvcCBub3RpZmljYXRpb25zIGZyb20gYSBwYXJ0aWN1bGFyCisgICAgLy8gc2NyaXB0IGNvbnRl
eHQuIFRoZSBjYWxsYmFjayBwYXJhbWV0ZXIgc2hvdWxkIGJlIHJ1biB3aGVuIHRoZSB1c2VyIGhh
cworICAgIC8vIG1hZGUgYSBkZWNpc2lvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1p
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPikg
PSAwOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pID0gMDsKKyNlbmRpZgorCisgICAgLy8gQ2Fu
Y2VsIGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0cyBmb3IgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKKyAgICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwg
b2YgcGVybWlzc2lvbi4KKyAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5O
b3RpZmljYXRpb25DbGllbnQoKSB7IH0KK307CisKK3ZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQ
YWdlKiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWJiZDliZjNjMjBkNTI2YzlkNjMwN2Q5OGI5YzgxY2IyNTIwNzA1OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK05vdGlmaWNhdGlvbkNvbnRyb2xsZXI6On5Ob3Rp
ZmljYXRpb25Db250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5ub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCk7Cit9CisKK1Bhc3NPd25QdHI8
Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKE5v
dGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm90
aWZpY2F0aW9uQ29udHJvbGxlcihjbGllbnQpKTsKK30KKworTm90aWZpY2F0aW9uQ2xpZW50KiBO
b3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnRGcm9tKFBhZ2UqIHBhZ2UpCit7CisgICAgaWYg
KE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBOb3RpZmljYXRpb25Db250cm9s
bGVyOjpmcm9tKHBhZ2UpKQorICAgICAgICByZXR1cm4gY29udHJvbGxlci0+Y2xpZW50KCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIiKSk7CisgICAgcmV0dXJuIG5h
bWU7Cit9CisKK3ZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRp
b25DbGllbnQqIGNsaWVudCkKK3sKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRl
VG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgTm90aWZp
Y2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKGNsaWVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQx
OTY4ZWQ0ZDE1ZTI3ZGQyYzQ2OWFjNjczNmQ0MTBjNmMwMDNlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9s
bGVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBOb3Rp
ZmljYXRpb25Db250cm9sbGVyX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisKK2NsYXNzIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTm90aWZpY2F0aW9uQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgfk5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI+IGNyZWF0ZShOb3RpZmljYXRpb25DbGllbnQqKTsKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50TmFtZSgpOworICAgIHN0YXRpYyBOb3RpZmljYXRp
b25Db250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1l
bnROYW1lKCkpKTsgfQorICAgIHN0YXRpYyBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb20o
UGFnZSopOworCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2Ns
aWVudDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKE5vdGlm
aWNhdGlvbkNsaWVudCopOworCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmlj
YXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NGU3MzJhN2Y5YTI5OTlkMjZmMmI3OGRkYmEzZjYyOTAwOGJmNmY5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKKyNkZWZpbmUgTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4g
eworcHVibGljOgorICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaygp
IHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcmIHBlcm1pc3Np
b24pID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShOT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWYxMTE2MTJlMjQwY2VjYWExOWZiNWVhNzFhYWNkN2QyNjA5M2MyMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVs
ZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElG
SUNBVElPTlMsCisgICAgICAgIENhbGxiYWNrCisgICAgXSBOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERPTVN0cmluZyBwZXJt
aXNzaW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZWVkYjk5MmNkMjJjNGNjZmUxMTE1YmM4MzYzNzFlMTZjYzEwOTYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5j
bHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCit7Cit9CisKK1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMoKQoreworfQorCitXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyog
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OmZyb20oV29ya2VyQ29udGV4dCogY29udGV4dCkK
K3sKKyAgICBBdG9taWNTdHJpbmcgc3VwcGxlbWVudE5hbWUgPSAiV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMiOworICAgIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9tKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKSk7CisgICAg
aWYgKCFzdXBwbGVtZW50KSB7CisgICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMoY29udGV4dCk7CisgICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD46OnByb3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIo
c3VwcGxlbWVudCkpOworICAgIH0KKyAgICByZXR1cm4gc3VwcGxlbWVudDsKK30KKworTm90aWZp
Y2F0aW9uQ2VudGVyKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0
aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9uczo6ZnJvbShjb250ZXh0KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOworfQor
CitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXRO
b3RpZmljYXRpb25zKCkKK3sKKyAgICBpZiAoIW1fbm90aWZpY2F0aW9uQ2VudGVyKQorICAgICAg
ICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKG1fY29u
dGV4dCwgbV9jb250ZXh0LT50aHJlYWQoKS0+Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkpOworICAg
IHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjM1NGZjYTE4MDhiMmIxMDIyNTM2ODE0OTQyZjA5M2YyMzVhZmZkNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
aWZuZGVmIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKKyNkZWZpbmUgV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnNfaAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOworY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFdvcmtlckNvbnRleHQ7CisKK2NsYXNzIFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zIDogcHVibGljIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4geworcHVibGljOgorICAgIHZpcnR1YWwgfldvcmtlckNvbnRleHROb3RpZmljYXRp
b25zKCk7CisKKyAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRp
b25zKFdvcmtlckNvbnRleHQqKTsKKyAgICBzdGF0aWMgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMqIGZyb20oV29ya2VyQ29udGV4dCopOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqKTsKKworICAgIE5vdGlmaWNhdGlv
bkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpOworCisgICAgV29ya2VyQ29udGV4dCogbV9j
b250ZXh0OworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2Vu
dGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8v
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjOTNiYzJiM2ZjYjRmMWYzNjg0N2YwODA3OGY5YWZlMzM4
ZDEwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKKyAgICAgICAg
U3VwcGxlbWVudGFsPVdvcmtlckNvbnRleHQKKyAgICBdIFdvcmtlckNvbnRleHROb3RpZmljYXRp
b25zIHsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxF
X0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyNl
bmRpZgorICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGRkOWZkYzBiMTQyOTNlZWFkN2RhMThl
MjhkZDY0ZWJkZGY2N2FiOWQuLjMwZmMxOGI2MTc5ZWIzOGFiYWE4OWI4ZTFiYTdkMWUzNDQ0ZTgz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtNDI5LDYgKzQyOSwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwIFwKICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcCBcCiAgICAgTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuY3BwIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcCBcCiAgICAgY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0JvcmRlckltYWdlLmNwcCBc
CkBAIC05OTcsMTEgKzEwMDIsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXAogICAg
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
IFwKLSAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgXAotICAgIG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMv
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXApAQCAtMTU4
Miw2ICsxNTgyLDEzIEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9z
aXRpb25FcnJvckNhbGxiYWNrLmggXAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25P
cHRpb25zLmggXAogICAgIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
XAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBcCisgICAg
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIFwKKyAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIFwKKyAgICBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCisgICAgXAogICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RE9NV2luZG93V2ViRGF0YWJhc2UuaCBcCkBAIC0yMTQxLDEyICsyMTQ4LDYgQEAgSEVBREVSUyAr
PSBcCiAgICAgbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBcCiAgICAgbWF0
aG1sL01hdGhNTE1hdGhFbGVtZW50LmggXAogICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
IFwKLSAgICBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBcCi0gICAgbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBcCi0g
ICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmggXAotICAgIG5vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBcCiAgICAgcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmggXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZDk1ZjRjZGI1MjVmZDAzZmRjOWJhNzMx
MmY2NjE0MjZkNGQ3MDhlMS4uYzdiODdhMzk3OWRiMTdjZWEzNzI4NzljOGU3MjllZmFhNzdhMzU2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTU5LDYgKzU5LDcg
QEAKICAgICAgICcuLi9Nb2R1bGVzL2ludGVudHMnLAogICAgICAgJy4uL01vZHVsZXMvaW5kZXhl
ZGRiJywKICAgICAgICcuLi9Nb2R1bGVzL21lZGlhc3RyZWFtJywKKyAgICAgICcuLi9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMnLAogICAgICAgJy4uL01vZHVsZXMvcXVvdGEnLAogICAgICAgJy4uL01v
ZHVsZXMvc3BlZWNoJywKICAgICAgICcuLi9Nb2R1bGVzL3dlYmF1ZGlvJywKQEAgLTk1LDcgKzk2
LDYgQEAKICAgICAgICcuLi9sb2FkZXIvY2FjaGUnLAogICAgICAgJy4uL2xvYWRlci9pY29uJywK
ICAgICAgICcuLi9tYXRobWwnLAotICAgICAgJy4uL25vdGlmaWNhdGlvbnMnLAogICAgICAgJy4u
L3BhZ2UnLAogICAgICAgJy4uL3BhZ2UvYW5pbWF0aW9uJywKICAgICAgICcuLi9wYWdlL2Nocm9t
aXVtJywKQEAgLTEwNDcsMTMgKzEwNDcsMTMgQEAKICAgICAgICAgICAgICAgJy0taW5jbHVkZScs
ICcuLi9Nb2R1bGVzL2luZGV4ZWRkYicsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4v
TW9kdWxlcy9pbnRlbnRzJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVz
L21lZGlhc3RyZWFtJywKKyAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMnLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvd2Vi
YXVkaW8nLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvd2ViZGF0YWJh
c2UnLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL2NzcycsCiAgICAgICAgICAgICAg
ICctLWluY2x1ZGUnLCAnLi4vZG9tJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9m
aWxlYXBpJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9odG1sJywKLSAgICAgICAg
ICAgICAgJy0taW5jbHVkZScsICcuLi9ub3RpZmljYXRpb25zJywKICAgICAgICAgICAgICAgJy0t
aW5jbHVkZScsICcuLi9wYWdlJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9wbHVn
aW5zJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9zdG9yYWdlJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBjODk3NGQyZDY1MmRiZWE2NjgyNzBkYTNkZjhmNDNiZjg0YTIyMmM0Li44Yjg5
ZTNiODhiYTYyMDMwODU3M2IwNjZjMmY0NGFiNTBlMzVmMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMiw2ICsxMiwyMSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRp
b25FcnJvci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJy
b3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250cm9sbGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQWJz
dHJhY3REYXRhYmFzZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxz
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmgnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50Q2FsbGJhY2suaCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oJywKICAg
ICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuaCcsCkBAIC0xOTksMjEgKzIxNCw2
IEBACiAgICAgICAgICAgICAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VDbGllbnQuaCcsCiAgICAgICAgICAgICAn
bG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dl
YmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlRGV0YWlscy5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlckNsaWVudC5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVy
cm9yLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Lmgn
LAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5o
JywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudENhbGxiYWNr
LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25D
YWxsYmFjay5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9DaHJvbWUuaCcsCiAgICAgICAgICAgICAn
cGFnZS9DaHJvbWVDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9Db25zb2xlLmgnLApAQCAt
ODM5LDYgKzgzOSwxMSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lv
bkRlc2NyaXB0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWdu
YWxpbmdDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9E
T01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5pZGwnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvRXJyb3JDYWxsYmFjay5pZGwnLApAQCAtMTE0MywxMSArMTE0
OCw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsJywKICAgICAgICAgICAgICds
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGwnLAotICAgICAgICAgICAgJ25v
dGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwnLAotICAgICAgICAgICAgJ25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwnLAotICAgICAgICAgICAgJ25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsJywKICAgICAgICAgICAgICdwYWdl
L0Fic3RyYWN0Vmlldy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5pZGwnLAogICAg
ICAgICAgICAgJ3BhZ2UvQ29uc29sZS5pZGwnLApAQCAtMTU2Miw2ICsxNTYyLDE3IEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
b250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAnLApAQCAtMjk5MywxNyArMzAwNCw2IEBACiAgICAg
ICAgICAgICAnbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgnLAogICAgICAgICAgICAgJ21hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuY3BwJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywK
LSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oJywKLSAgICAgICAgICAg
ICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAnLAotICAgICAgICAgICAgJ25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgnLAotICAgICAgICAgICAgJ25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oJywKLSAgICAgICAgICAgICdub3Rp
ZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCcsCi0gICAgICAgICAgICAn
bm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oJywKICAgICAgICAgICAg
ICdwYWdlL0JhckluZm8uY3BwJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaCcsCiAgICAg
ICAgICAgICAncGFnZS9DaHJvbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggZTJjY2M2MTg2ODRh
YTNhMjA0N2VkM2UxZjczOWIxYWUzOWY1MWU0Mi4uNzU3MjZlZjVlODRlYjQwYWFhMzhlNDMzMjUz
NmViNDkxMWRjNzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTIyLDYgKzIyLDcgQEAgSU5DTFVERVBB
VEggKz0gXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQkU09V
UkNFX0RJUi9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9p
bmRleGVkZGIgXAorICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL25vdGlmaWNhdGlvbnMgXAogICAg
ICQkU09VUkNFX0RJUi9Nb2R1bGVzL3F1b3RhIFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy93
ZWJhdWRpbyBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvd2ViZGF0YWJhc2UgXApAQCAtNDks
NyArNTAsNiBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2xvYWRlci9jYWNo
ZSBcCiAgICAgJCRTT1VSQ0VfRElSL2xvYWRlci9pY29uIFwKICAgICAkJFNPVVJDRV9ESVIvbWF0
aG1sIFwKLSAgICAkJFNPVVJDRV9ESVIvbm90aWZpY2F0aW9ucyBcCiAgICAgJCRTT1VSQ0VfRElS
L3BhZ2UgXAogICAgICQkU09VUkNFX0RJUi9wYWdlL2FuaW1hdGlvbiBcCiAgICAgJCRTT1VSQ0Vf
RElSL3BhZ2UvcXQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA2MTllODI5Zjc5NTYxODk1ZWVjZGRmMjQzMzg2NjkxNDRlMjQyZDUzLi5kZmU4
NDZlM2JkZDY3YTYzYzEwMjg2MWFmNzE4MWMwZGU2YmVjMjZlIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjQ5NTksNiArMjQ5NTksNDYgQEAK
IAkJCQk8L0ZpbGU+CiAJCQk8L0ZpbHRlcj4KIAkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJub3RpZmlj
YXRpb25zIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
bm90aWZpY2F0aW9uc1xET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0
aW9uc1xET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZp
Y2F0aW9uLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90
aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50ZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5v
dGlmaWNhdGlvbkNlbnRlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNsaWVu
dC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cTW9kdWxlc1xub3RpZmljYXRpb25zXFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1v
ZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCiAJCQkJTmFtZT0id2ViZGF0
YWJhc2UiCiAJCQkJPgogCQkJCTxGaWxlCkBAIC01NDc0MCw0NiArNTQ3ODAsNiBAQAogCQkJPC9G
aWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgotCQkJTmFtZT0ibm90aWZpY2F0aW9ucyIKLQkJ
CT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXERPTVdpbmRv
d05vdGlmaWNhdGlvbnMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKLQkJ
CQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0
aW9uc1xOb3RpZmljYXRpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5oIgotCQkJCT4KLQkJ
CTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5v
dGlmaWNhdGlvbkNlbnRlci5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlv
bnNcTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
Llxub3RpZmljYXRpb25zXFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQk8L0ZpbHRlcj4KLQkJPEZpbHRlcgogCQkJTmFtZT0iZWRpdGluZyIKIAkJCT4K
IAkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5
Rm9yd2FyZGluZ0hlYWRlcnMuY21kIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29w
eUZvcndhcmRpbmdIZWFkZXJzLmNtZAppbmRleCBlZWJiY2YxZGJhYmFjYjcxYTZhN2IxOGVmNjdm
YzgzMDIyZTdiNjQ3Li41YzcxYjAxNDI3MzU5ZDBjNTI5MzUzOTY3YzdiODkwY2ZjYzA0NTA0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hl
YWRlcnMuY21kCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJk
aW5nSGVhZGVycy5jbWQKQEAgLTM3LDcgKzM3LDYgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXGhpc3RvcnlcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3IK
IHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxoaXN0b3J5XGNmXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxodG1sXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhj
b3B5IC95IC9kICIlUHJvamVjdERpciUuLlxodG1sXHBhcnNlclwqLmgiICIlQ09ORklHVVJBVElP
TkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCi14Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5c
bm90aWZpY2F0aW9uc1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNv
cmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cY3NzXCouaCIgIiVDT05GSUdVUkFUSU9O
QlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxw
bGF0Zm9ybVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4
Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCIgIiVDT05G
SUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZThiNWZkMjRiMGMzZTFj
ZjgzYjBmZTdmNjdlOTc3ZTIyYjAyMGVkLi41ZDUzYzI5MTYxNWU5MTQzZDYwZDE5YWM3MDBmOTE3
OWMwM2M1NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04NTAsOSArODUwLDYgQEAKIAkJMzEyODhFNzMwRTMwMDVENjAwMzYx
OUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENT
U0tleWZyYW1lUnVsZS5oICovOyB9OwogCQkzMTI4OEU3NDBFMzAwNUQ2MDAzNjE5QUUgLyogV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZS5jcHAgKi87IH07CiAJCTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTI4OEU3MTBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5oICovOyB9OwotCQkzMTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTI4Q0E2NzE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAg
Ki87IH07Ci0JCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4
Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovOyB9Owot
CQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5MTEgLyogTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEy
QTYgLyogTm90aWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMzEyRDY3QjExNTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRDY3QjAx
NTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwICovOyB9OwogCQkzMTMxM0Y2NTE0NDNC
MzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTNGNjMxNDQzQjM1RTAwNkUyQTkwIC8q
IEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLzsgfTsKIAkJMzEzMTNGNjYxNDQzQjM1RjAwNkUy
QTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxM0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuaCAqLzsgfTsKQEAgLTkyNiwxOSArOTIzLDE0IEBACiAJCTMxRkIxQTY1MTIw
QTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIxQTYzMTIwQTVEM0YwMERDMDJBMCAv
KiBKU0RldmljZU1vdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJMzFGQjFBNjYxMjBBNUQzRjAwREMw
MkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIxQTY0MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1v
dGlvbkV2ZW50LmggKi87IH07CiAJCTMxRkIxQTZDMTIwQTVENjkwMERDMDJBMCAvKiBKU0Rldmlj
ZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxRkIxQTZCMTIwQTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2
ZW50Q3VzdG9tLmNwcCAqLzsgfTsKLQkJMzFGRTZERkExNTAwNEMyQTAwMDRFQkM0IC8qIE5vdGlm
aWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFFQzFEQUMxNEZGMjZFQTAwQzk0NjYyIC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxRkU2RTZEMTUwMUEzQkYwMDA0RUJDNCAvKiBKU05vdGlmaWNhdGlv
bkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUZFNkU2QzE1MDFBM0JGMDAwNEVCQzQgLyogSlNOb3RpZmljYXRpb25DdXN0b20uY3BwICov
OyB9OwogCQkzMzE0QUNFQjEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTRBQ0U5MTA4
OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovOyB9OwogCQkzMzE0QUNFQzEw
ODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNF
eGNlcHRpb25CYXNlLmggKi87IH07Ci0JCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3Rp
ZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzUwM0NB
MzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uLmNwcCAqLzsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsg
fTsKIAkJMzM1MDNDQTUxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0Ex
MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi87IH07CiAJCTMz
NTAzQ0E2MTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1MDNDQTIxMDE3OUFENzAw
M0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmggKi87IH07CiAJCTMzNTAzQ0MwMTAxNzlD
MUEwMDNCNDdFMSAvKiBKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0JGMTAxNzlDMUEwMDNC
NDdFMSAvKiBKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcCAqLzsgfTsKLQkJMzM1MDND
QzcxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NDNjEwMTdBMUIxMDAzQjQ3RTEgLyog
Tm90aWZpY2F0aW9uLmNwcCAqLzsgfTsKLQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMzkwQ0E1MTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVy
LmNwcCAqLzsgfTsKLQkJMzM5MENBNTYwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNl
bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5
MENBNTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovOyB9OwogCQkz
MzlCNUI2MzEzMURBQTMyMDBGNDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzlCNUI2MjEzMURBQTMyMDBGNDhE
MDIgLyogQ29va2llc1N0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMzNDMENDRDQxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJ
bnB1dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
M0MwQ0NEMjExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCAqLzsgfTsKIAkJ
MzNDMENDRDUxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMENDRDMxMTJDNUU2MjAwQ0Uw
NTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oICovOyB9OwpAQCAtMTY4NCw2ICsxNjc2LDIzIEBACiAJ
CTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTg5QUUyMEU4M0EzMzMwMDAxMkU0
MSAvKiBOb2RlUmFyZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9
OwogCQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Q3QjMyQzBFNzhDRDNG
MDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi87IH07CiAJCTYzRjVENEY3MEU4QzRCNzEw
MEMwQkQwNCAvKiBFbGVtZW50UmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzN0I3QURFMEU4NzY3QjgwMEUzMjE5NCAvKiBFbGVtZW50UmFy
ZURhdGEuaCAqLzsgfTsKKwkJNjQ4RjJFRTMxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05v
dGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjQ4RjJFRDIxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwICovOyB9OworCQk2NDhGMkVFNDE1OTI0M0Y2MDBEMThCRjggLyogRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjQ4RjJFRDMxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCAqLzsg
fTsKKwkJNjQ4RjJFRTUxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
aWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NDhG
MkVENDE1OTI0M0Y2MDBEMThCRjggLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgKi87IH07
CisJCTY0OEYyRUU2MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjQ4RjJFRDUxNTkyNDNGNjAw
RDE4QkY4IC8qIE5vdGlmaWNhdGlvbi5jcHAgKi87IH07CisJCTY0OEYyRUU3MTU5MjQzRjYwMEQx
OEJGOCAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY0OEYyRUQ2MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uaCAq
LzsgfTsKKwkJNjQ4RjJFRTgxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbi5pZGwgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY0OEYyRUQ3MTU5
MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uaWRsICovOyB9OworCQk2NDhGMkVFOTE1OTI0
M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY0OEYyRUQ4MTU5MjQzRjYwMEQxOEJGOCAvKiBO
b3RpZmljYXRpb25DZW50ZXIuY3BwICovOyB9OworCQk2NDhGMkVFQTE1OTI0M0Y2MDBEMThCRjgg
LyogTm90aWZpY2F0aW9uQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NDhGMkVEOTE1OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9uQ2Vu
dGVyLmggKi87IH07CisJCTY0OEYyRUVCMTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25D
ZW50ZXIuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NDhGMkVEQTE1OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLzsg
fTsKKwkJNjQ4RjJFRUMxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjQ4RjJFREIxNTky
NDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OworCQk2NDhGMkVFRDE1
OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NDhGMkVEQzE1OTI0M0Y2MDBEMThC
RjggLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi87IH07CisJCTY0OEYyRUVFMTU5MjQz
RjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NDhGMkVERDE1OTI0M0Y2MDBEMThCRjggLyog
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovOyB9OworCQk2NDhGMkVFRjE1OTI0M0Y2MDBEMThC
RjggLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NDhGMkVERTE1OTI0M0Y2MDBEMThCRjggLyog
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87IH07CisJCTY0OEYyRUYwMTU5MjQz
RjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NDhGMkVERjE1OTI0M0Y2
MDBEMThCRjggLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJ
NjQ4RjJFRjExNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY0OEYyRUUw
MTU5MjQzRjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgKi87IH07
CisJCTY0OEYyRUYyMTU5MjQzRjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjQ4RjJF
RTExNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggKi87IH07
CisJCTY0OEYyRUYzMTU5MjQzRjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY0
OEYyRUUyMTU5MjQzRjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwg
Ki87IH07CiAJCTY1MEY1M0RDMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBGNTNEQjA5RDE1RERB
MDBDOUIwQzggLyogQ1NTR3JhbW1hci5oICovOyB9OwogCQk2NTBGNTNERDA5RDE1RERGMDBDOUIw
QzggLyogQ1NTR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTY1ODE0NDA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTR3JhbW1hci5jcHAgKi87
IH07CiAJCTY1MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwRkJGMjcwRDlB
RjA0NjAwOEZDMjkyIC8qIFNWR0hLZXJuRWxlbWVudC5jcHAgKi87IH07CkBAIC0xNzc5LDEyICsx
Nzg4LDEyIEBACiAJCTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQz
RC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIx
QzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovOyB9OwogCQk2
RTIxQzZDMjExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZDMTExMjYzMzk5
MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgKi87IH07CiAJCTZFM0ZBRDM4MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAw
MEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCAqLzsgfTsKLQkJNkUz
RkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi87IH07Ci0J
CTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4
QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwICovOyB9
OwotCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZB
RThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9
OwogCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0
NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi87IH07CisJCTZFM0ZB
RDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9OwogCQk2
RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAw
RTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1cmUuaCAqLzsgfTsKKwkJNkUzRkFFOEUxNDczM0ZE
QjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIwMEU0MjMw
NiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi87IH07CiAJCTZFM0ZBRThFMTQ3
MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDcgLyog
V2ViR0xEZXB0aFRleHR1cmUuY3BwICovOyB9OworCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5oICovOyB9OwogCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDcg
LyogV2ViR0xEZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVy
ZS5oICovOyB9OwogCQk2RTQ3RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVF
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovOyB9OwogCQk2RTQ3RTY2MTEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xH
ZXRJbmZvLmggKi87IH07CkBAIC0zNTU5LDggKzM1NjgsNiBAQAogCQk5N0FBQkQyRDE0RkEwOUQ1
MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFCRDEyMTRGQTA5RDUwMDc0
NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OwogCQk5N0Ix
RjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1NjlFMDAxM0FGMTcy
QzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCAqLzsgfTsKIAkJOTdCMUYw
MkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzU2OUUwMjEzQUYxNzJDMDBD
REJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLzsgfTsKLQkJOTdCMzhFMjcxNTFD
NDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTI0MTUxQzQyNjQwMDQ2MjJFOSAv
KiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi87IH07Ci0JCTk3QjM4RTI4MTUxQzQyNzMwMDQ2
MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTIzMTUxQzQyNjQwMDQ2MjJFOSAvKiBET01X
aW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKIAkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFD
IC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJh
c2UuY3BwICovOyB9OwogCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNjlEQzE1MDVGMDc2MDAx
Qjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDgxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5n
ZVZlcnNpb25XcmFwcGVyLmNwcCAqLzsgfTsKQEAgLTM2MzAsOCArMzYzNyw2IEBACiAJCTk3RTRB
MTI2MTRGNEM1RDQwMDg3MEU0MyAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczMEJFMTUx
NEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmggKi87
IH07CiAJCTk3RTRBMTI3MTRGNEM1RDcwMDg3MEU0MyAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3Rv
Y29sSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzMwQkUxNDE0RUYyODZCMDBERjA2QjkgLyogTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIuY3BwICovOyB9OwogCQk5N0VGN0RGRTEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0
Q29udHJvbGxlckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmNwcCAqLzsgfTsKLQkJOTdGOEU2NjUxNTFENEE0QjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3RjhFNjYxMTUxRDRBM0YwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5jcHAgKi87IH07Ci0JCTk3RjhFNjY2MTUxRDRBNEUwMEQyRDE4MSAvKiBXb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdGOEU2NjIxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zLmggKi87IH07CiAJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZlcnJlclBv
bGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTgz
MUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTg0MjY0RjExMkQ1MjgwQTAwMEQ4
OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xp
ZW50LmggKi87IH07CiAJCTk4NTZGOENDMTU0OUU4MjQwMEIwNEYzQSAvKiBQcmVyZW5kZXJlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODU2RjhD
ODE1NDlFODI0MDBCMDRGM0EgLyogUHJlcmVuZGVyZXIuY3BwICovOyB9OwpAQCAtNzg0NCw4ICs3
ODQ5LDYgQEAKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1l
UnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNzAwRTMwMDVENjAw
MzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NL
ZXlmcmFtZXNSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENT
U0tleWZyYW1lc1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEyOENBNjcx
NDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHBh
dGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmlj
YXRpb25Db250cm9sbGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRDY3QjAxNTM1NjkxRjAw
NTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzEz
RjYzMTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzEzRjY0MTQ0M0IzNUUwMDZFMkE5MCAvKiBG
aWx0ZXJFZmZlY3RSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aWx0ZXJFZmZlY3RSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkx
NCw4ICs3OTE3LDYgQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRy
YW5zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJL
aXRUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZG
NDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2
RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRUMxRDUwMTRGRUZEMDgwMEM5NDY2MiAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw7IHBhdGggPSBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxRUMxREFDMTRGRjI2RUEwMEM5NDY2MiAvKiBOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVDMUUyNjE0RkY2MEVFMDBDOTQ2
NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVDMUUyNzE0RkY2MEVFMDBDOTQ2
NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFGQjFBNEYxMjBBNUQwNjAwREMwMkEwIC8qIERl
dmljZU1vdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZp
Y2VNb3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MzIsMTgg
Kzc5MzMsMTEgQEAKIAkJMzFGRTZFNkMxNTAxQTNCRjAwMDRFQkM0IC8qIEpTTm90aWZpY2F0aW9u
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZp
Y2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRTkx
MDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRs
OyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNsaWVudC5oOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90
aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0ExMTAxNzlB
RDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0EyMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNh
dGlvbkNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNh
dGlvbkNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0NCRjEwMTc5
QzFBMDAzQjQ3RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0
N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBOb3RpZmljYXRpb24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzkwQ0E1MTBGRkMxNTdCMDA5MjE5
NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzOTBD
QTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmg7IHBhdGggPSBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuaWRsOyBwYXRoID0gbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzlCNUI2MjEzMURBQTMyMDBGNDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZXNTdHJhdGVneS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzM0MwQ0NEMjExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4
dElucHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyZVRl
eHRJbnB1dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QzMTEyQzVF
NjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VjdXJlVGV4dElucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04NzU3LDYgKzg3NTEsMjMgQEAKIAkJNjMxODlBRTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVS
YXJlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmFyZURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM3QjdBREUwRTg3NjdCODAwRTMyMTk0
IC8qIEVsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNEN0IzMkMw
RTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOb2RlUmVuZGVyU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjQ4RjJFRDIxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY0OEYyRUQzMTU5MjQz
RjYwMEQxOEJGOCAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFRDQxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NDhGMkVENTE1OTI0M0Y2MDBE
MThCRjggLyogTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY0
OEYyRUQ2MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY0OEYyRUQ3MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE5vdGlmaWNhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY0OEYyRUQ4MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uQ2Vu
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFRDkxNTkyNDNGNjAw
RDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNjQ4RjJFREExNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNlbnRlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFREIxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlv
bkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25D
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFREMxNTkyNDNGNjAw
RDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY0OEYyRUREMTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRp
b25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFREUx
NTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFREYxNTkyNDNGNjAwRDE4
QkY4IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjJFRTAxNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjQ4RjJFRTExNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY0OEYyRUUyMTU5MjQz
RjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JhbW1hci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBGQkYyNzBEOUFGMDQ2MDA4RkMyOTIgLyogU1ZHSEtl
cm5FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0hL
ZXJuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MEZCRjI4MEQ5
QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHSEtlcm5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04ODYyLDE0ICs4ODczLDE0IEBACiAJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAvKiBH
cmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZF
MjFDNkMxMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFFOEQxNDczM0ZEQjAw
RTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHBhdGggPSBjYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDcgLyogSlNX
ZWJHTERlcHRoVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUQzNzE0NzMzRjQw
MDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUU4QzE0NzMzRkRC
MDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViR0xEZXB0aFRleHR1cmUuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEQx
NDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmg7IHBh
dGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0
dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMRGVwdGhUZXh0dXJl
Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDcg
LyogV2ViR0xEZXB0aFRleHR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMRGVw
dGhUZXh0dXJlLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xH
ZXRJbmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRo
ID0gY2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTA2NTIsOSArMTA2NjMsNiBAQAogCQk5N0FBQkQxMDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0FBQkQxMTE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTdBQUJEMTIxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTdCMzhFMjMxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0IzOEUyNDE1MUM0MjY0MDA0NjIy
RTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHBhdGggPSBub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdC
MzhFMjUxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gbm90
aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWJzdHJhY3REYXRhYmFz
ZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyog
QWJzdHJhY3REYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0
cmFjdERhdGFiYXNlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RDgxNTA1RjA3NjAwMUI3
NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA3MzcsOSArMTA3NDUsNiBAQAogCQk5N0U0MDI4RDEzQTY5NkVEMDA5MTNENjcg
LyogSWNvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSWNvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U0
MDI4RTEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSWNvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xs
ZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdGOEU2NjExNTFENEEz
RjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcDsg
cGF0aCA9IG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0Y4RTY2MjE1MUQ0QTNGMDBEMkQxODEgLyogV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTdGOEU2NjMxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGw7
IHBhdGggPSBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJl
ZmVycmVyUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmVycmVy
UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4NDI2NEVGMTJENTI4MEEw
MDBEODhBNCAvKiBMaW5rTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpbmtMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTg1NkY4QzgxNTQ5RTgyNDAwQjA0RjNBIC8qIFByZXJlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByZXJlbmRlcmVyLmNwcDsgcGF0aCA9IGxvYWRlci9Q
cmVyZW5kZXJlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTEzOTA2LDcg
KzEzOTExLDYgQEAKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICov
LAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCiAJCQkJRkFCRTcy
RUMxMDU5QzFFQjAwRDk5OUREIC8qIG1hdGhtbCAqLywKLQkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4
RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYg
LyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8s
CiAJCQkJNURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBAIC0xNDY4OSwz
MCArMTQ2OTMsNiBAQAogCQkJbmFtZSA9IGFuaW1hdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07Ci0JCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBub3RpZmljYXRpb25z
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5N0IzOEUy
MzE1MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgKi8sCi0JCQkJ
OTdCMzhFMjQxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCAqLywK
LQkJCQk5N0IzOEUyNTE1MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwgKi8sCi0JCQkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAg
Ki8sCi0JCQkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovLAot
CQkJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovLAotCQkJ
CTMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwICovLAot
CQkJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLywK
LQkJCQkzMzkwQ0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAq
LywKLQkJCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Ki8sCi0JCQkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwICovLAotCQkJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmggKi8sCi0JCQkJMzFFQzFEQUMxNEZGMjZFQTAwQzk0NjYyIC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAotCQkJCTMxRUMxRDUwMTRGRUZEMDgwMEM5NDY2
MiAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsICovLAotCQkJCTk3RjhFNjYx
MTUxRDRBM0YwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgKi8sCi0J
CQkJOTdGOEU2NjIxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmggKi8sCi0JCQkJOTdGOEU2NjMxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmlkbCAqLywKLQkJCSk7Ci0JCQluYW1lID0gbm90aWZpY2F0aW9uczsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTMzNTAzQzlDMTAxNzlBOUEwMDNCNDdFMSAv
KiBOb3RpZmljYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTE1MjQ3LDYgKzE1MjI3LDMxIEBACiAJCQlwYXRoID0gcGx1Z2luczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTY0OEYyRUQxMTU5MjQzRjYwMEQxOEJGOCAvKiBu
b3RpZmljYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk2NDhGMkVEMjE1OTI0M0Y2MDBEMThCRjggLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5j
cHAgKi8sCisJCQkJNjQ4RjJFRDMxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaCAqLywKKwkJCQk2NDhGMkVENDE1OTI0M0Y2MDBEMThCRjggLyogRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5pZGwgKi8sCisJCQkJNjQ4RjJFRDUxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlm
aWNhdGlvbi5jcHAgKi8sCisJCQkJNjQ4RjJFRDYxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNh
dGlvbi5oICovLAorCQkJCTY0OEYyRUQ3MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24u
aWRsICovLAorCQkJCTY0OEYyRUQ4MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25DZW50
ZXIuY3BwICovLAorCQkJCTY0OEYyRUQ5MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25D
ZW50ZXIuaCAqLywKKwkJCQk2NDhGMkVEQTE1OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9u
Q2VudGVyLmlkbCAqLywKKwkJCQk2NDhGMkVEQjE1OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0
aW9uQ2xpZW50LmggKi8sCisJCQkJNjQ4RjJFREMxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuY3BwICovLAorCQkJCTY0OEYyRUREMTU5MjQzRjYwMEQxOEJGOCAvKiBO
b3RpZmljYXRpb25Db250cm9sbGVyLmggKi8sCisJCQkJNjQ4RjJFREUxNTkyNDNGNjAwRDE4QkY4
IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAorCQkJCTY0OEYyRURGMTU5
MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsICovLAor
CQkJCTY0OEYyRUUwMTU5MjQzRjYwMEQxOEJGOCAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5jcHAgKi8sCisJCQkJNjQ4RjJFRTExNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmggKi8sCisJCQkJNjQ4RjJFRTIxNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zLmlkbCAqLywKKwkJCSk7CisJCQluYW1lID0gbm90aWZpY2F0
aW9uczsKKwkJCXBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBT
b3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3
NDQ5LDYgKzE3NDU0LDcgQEAKIAkJOTcxMTQ1RkUxNEVGMDA2RTAwNjc0RkQ5IC8qIE1vZHVsZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTY0OEYyRUQx
MTU5MjQzRjYwMEQxOEJGOCAvKiBub3RpZmljYXRpb25zICovLAogCQkJCTk3MTE0NUZGMTRFRjAw
NzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEyQTU1MzE1MDA0RTNDMDA0OEFG
MTAgLyogaW5kZXhlZGRiICovLAogCQkJCTg5RjYwQjA4MTU3RjY4MzUwMDc1RTE1NyAvKiBxdW90
YSAqLywKQEAgLTIyODg1LDcgKzIyODkxLDYgQEAKIAkJCQkxNDAzQjk5NzA5RUIxM0FGMDA3OTdD
N0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZBMkQ3ODE1MjEzMkIzMDBD
MUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzEyQTVB
RTE1MDA0RURBMDA0OEFGMTAgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk5N0IzOEUyNzE1MUM0MjcxMDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdEMkFEMDQxNEI4MjNBNjAwOTNERjMyIC8qIERP
TVdpbmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUY2MEIxMTE1N0Y2ODZFMDA3
NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0NCQjQ5MTUx
RjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDA3OSwxMSArMjQwODQsNiBAQAogCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBO
b2RlUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYz
NTdBNiAvKiBOb2RlV2l0aEluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0VCRTBBMTk0
NUQwMDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxMkMwQzQxMTQ2
REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTMzOTBD
QTU2MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRp
b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMUZFNkRGQTE1MDA0QzJBMDAwNEVC
QzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1MDQ2LDcgKzI1MDQ2LDYgQEAKIAkJCQlGMzgyMDg5NzE0N0QzNUY5MDAx
MEJDMDYgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY0
OTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcxMkE2MTIxNTAwOTBDRTAwNDhBRjEwIC8qIFdvcmtlckNvbnRleHRJbmRleGVkRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovLAotCQkJCTk3RjhFNjY2MTUxRDRBNEUwMEQyRDE4MSAvKiBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NEIwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlckNvbnRleHRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThD
Q0JCNEQxNTFGODMzQjAwQUI3Q0U5IC8qIFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjM0NzQyRTExMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMTIsNiArMjUxMTEsMTMgQEAKIAkJCQlDRTdC
MkRCMzE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDk4N0MyNzE1N0Q2NzZEMDBCREE4
MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjQ4
RjJFRTQxNTkyNDNGNjAwRDE4QkY4IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTY0OEYyRUU3MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTY0OEYyRUVBMTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRp
b25DZW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTY0OEYyRUVDMTU5MjQzRjYwMEQxOEJGOCAv
KiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTY0OEYyRUVFMTU5MjQz
RjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2NDhGMkVFRjE1OTI0M0Y2MDBEMThCRjggLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NDhGMkVGMjE1OTI0M0Y2MDBEMThCRjggLyogV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUyNjQsNiArMjUy
NzAsMTEgQEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTY0OEYyRUU1
MTU5MjQzRjYwMEQxOEJGOCAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJNjQ4RjJFRTgxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbi5pZGwg
aW4gUmVzb3VyY2VzICovLAorCQkJCTY0OEYyRUVCMTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmlj
YXRpb25DZW50ZXIuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk2NDhGMkVGMDE1OTI0M0Y2MDBE
MThCRjggLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJNjQ4RjJFRjMxNTkyNDNGNjAwRDE4QkY4IC8qIFdvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjA5NSw3ICsyNjEwNiw2IEBACiAJCQkJ
MTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3MTJBNUFEMTUwMDRFREEwMDQ4QUYxMCAvKiBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTdCMzhFMjgxNTFDNDI3MzAw
NDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg5RjYwQjEwMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0ODE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzMyNSw5ICsyNzMzNSw2IEBA
CiAJCQkJODU0RkU3MzQwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Y1RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTdFQkYwQTE5NDVEMDAwQThFRjVGIC8q
IE5vdGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMzNTAzQ0M3MTAxN0ExQjEwMDNCNDdF
MSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzM5MENBNTUwRkZDMTU3
QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkz
MTI4Q0E2ODE0NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTU2OUQwQTBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMEQwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVu
dGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkY1MkUxMTE0QTAxMzRGMDBBQ0MzOTcgLyog
TlNTY3JvbGxlckltcERldGFpbHMubW0gaW4gU291cmNlcyAqLywKQEAgLTI4MDk5LDcgKzI4MTA2
LDYgQEAKIAkJCQlGMzgyMDg5NjE0N0QzNUY5MDAxMEJDMDYgLyogV29ya2VyQ29uc29sZUFnZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjQ4MEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNjExMTUwMDkwQ0UwMDQ4QUYx
MCAvKiBXb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTk3RjhFNjY1MTUxRDRBNEIwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENDQkI0QzE1MUY4MzNCMDBBQjdDRTkgLyogV29ya2Vy
Q29udGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNDc0MkUwMTM0MzYz
MUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzRTI2NDMwMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjgxNjAsNiArMjgxNjYsMTEgQEAKIAkJCQlDRTdCMkRCNDE1ODZBQkFEMDA5
OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0U3QjJEQjYxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUwOTg3QzI2MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY0OEYyRUUzMTU5MjQz
RjYwMEQxOEJGOCAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTY0OEYyRUU2MTU5MjQzRjYwMEQxOEJGOCAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNjQ4RjJFRTkxNTkyNDNGNjAwRDE4QkY4IC8qIE5vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NDhGMkVFRDE1OTI0M0Y2MDBEMThCRjggLyogTm90
aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NDhGMkVGMTE1OTI0
M0Y2MDBEMThCRjggLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dO
b3RpZmljYXRpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxNzNlZTc1
ZWJiZjI3MTVhNTliZGViYmY4NzljN2UyMDZmZWNhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiRE9N
V2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25D
ZW50ZXIuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
UGFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdpbmRvd05vdGlmaWNhdGlvbnM6
OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cpCi0gICAgOiBET01XaW5k
b3dQcm9wZXJ0eSh3aW5kb3ctPmZyYW1lKCkpCi0gICAgLCBtX3dpbmRvdyh3aW5kb3cpCi17Ci19
Ci0KLURPTVdpbmRvd05vdGlmaWNhdGlvbnM6On5ET01XaW5kb3dOb3RpZmljYXRpb25zKCkKLXsK
LX0KLQotRE9NV2luZG93Tm90aWZpY2F0aW9ucyogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJv
bShET01XaW5kb3cqIHdpbmRvdykKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgc3VwcGxlbWVudE5hbWUsICgiRE9NV2luZG93Tm90aWZpY2F0aW9ucyIpKTsKLSAgICBE
T01XaW5kb3dOb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93
Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBs
ZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQg
PSBuZXcgRE9NV2luZG93Tm90aWZpY2F0aW9ucyh3aW5kb3cpOwotICAgICAgICBTdXBwbGVtZW50
PERPTVdpbmRvdz46OnByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lLCBhZG9wdFB0cihz
dXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwbGVtZW50OwotfQotCi1Ob3RpZmlj
YXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMo
RE9NV2luZG93KiB3aW5kb3cpCi17Ci0gICAgcmV0dXJuIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6
OmZyb20od2luZG93KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOwotfQotCi12b2lkIERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpCi17Ci0gICAgbV9z
dXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIgPSBtX25vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNl
KCk7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgp
OwotfQotCi12b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lRnJvbVBh
Z2VDYWNoZShGcmFtZSogZnJhbWUpCi17Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVj
dEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBt
X3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgRE9NV2lu
ZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkK
LXsKLSAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9IG51bGxwdHI7Ci0gICAgRE9N
V2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOwot
fQotCi12b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0
SW5GcmFtZSgpCi17Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERP
TVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKTsKLX0KLQot
dm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZy
YW1lKCkKLXsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG51bGxwdHI7Ci0gICAgRE9NV2lu
ZG93UHJvcGVydHk6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKTsKLX0KLQotTm90
aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRp
b25zKCkKLXsKLSAgICBpZiAoIW1fd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXIpCi0g
ICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKLQotICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fd2luZG93LT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgp
OwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb3RpZmljYXRpb25D
bGllbnQqIHByb3ZpZGVyID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwYWdl
KTsKLSAgICBpZiAocHJvdmlkZXIpIAotICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRvY3VtZW50LCBwcm92aWRlcik7ICAgIAotCi0gICAg
cmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjJlMjZkZDYwMGIzN2RmZjBmOWQyMTIzMWExYmY2NjE5MTNkODZkYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NV2lu
ZG93Tm90aWZpY2F0aW9uc19oCi0jZGVmaW5lIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaAotCi0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
LQotI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLQotY2xhc3Mg
RE9NV2luZG93Tm90aWZpY2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PERPTVdpbmRvdz4sIHB1
YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RE9NV2luZG93
Tm90aWZpY2F0aW9ucygpOwotCi0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0
Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqKTsKLSAgICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0
aW9ucyogZnJvbShET01XaW5kb3cqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJh
bWVGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJh
bWVGcm9tUGFnZUNhY2hlKEZyYW1lKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IERPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7
Ci0KLSAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAg
IERPTVdpbmRvdyogbV93aW5kb3c7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9u
b3RpZmljYXRpb25DZW50ZXI7Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNw
ZW5kZWROb3RpZmljYXRpb25DZW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQotCi0jZW5kaWYgLy8gRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRs
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4YTEyOWM1N2ExZGM2ODY1YjE1NThj
OWUzYzc0NjUzZDlkZjI5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlv
bnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1tb2R1bGUgd2luZG93IHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAg
IENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAg
IFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAgICBdIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgewot
I2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlmCi0j
aWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMK
LSAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsK
LSNlbmRpZgotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4OTkyYWViMzMx
ZTk2OGQwYmQ3YmY0MjRhZGIwMTU1OThhZGRiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCi0KLSNpbmNsdWRl
ICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0jaW5j
bHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXJy
b3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRp
b25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJO
b3RpZmljYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRl
ICJXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24o
KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KDAsIHRoaXMpCi17Ci19Ci0KLSNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJM
JiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCi0gICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1faXNIVE1MKHRydWUpCi0gICAgLCBtX3N0
YXRlKElkbGUpCi0gICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihwcm92aWRlcikKLXsKLSAgICBp
ZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhdXJs
LmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBtX25vdGlmaWNhdGlvblVSTCA9IHVybDsKLX0KLSNlbmRpZgotCi0jaWYg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGlj
b25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpCi0gICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1faXNIVE1MKGZhbHNlKQotICAgICwgbV90
aXRsZSh0aXRsZSkKLSAgICAsIG1fYm9keShib2R5KQotICAgICwgbV9zdGF0ZShJZGxlKQotICAg
ICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCi17Ci0gICAgaWYgKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1p
c3Npb25BbGxvd2VkKSB7Ci0gICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV9pY29uID0gaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpOwotICAgIGlmICgh
bV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29uLmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKLSAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9pc0hUTUwoZmFsc2UpCi0gICAgLCBtX3Rp
dGxlKHRpdGxlKQotICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoYWRvcHRQ
dHIobmV3IFRpbWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5vdGlmaWNhdGlvbjo6dGFza1RpbWVy
RmlyZWQpKSkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX25v
dGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNh
dGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCkpOwotICAg
IAotICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpOwotICAgIG1fdGFz
a1RpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0jZW5kaWYKLQotTm90aWZpY2F0aW9uOjp+Tm90
aWZpY2F0aW9uKCkgCi17Ci19Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Q
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKLXsgCi0gICAgUmVmUHRy
PE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJs
LCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7Ci0gICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKLX0KLQotUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKLXsgCi0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odGl0bGUsIGJvZHksIGljb25V
UkksIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKLSAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJ
Zk5lZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwotfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXN0YXRpYyB2b2lkIGdldEFuZEFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IGNoYXIqIHByb3Bl
cnR5LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKLXsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBvcHRpb25zLmdldEV2
ZW50TGlzdGVuZXIocHJvcGVydHksIG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKGxpc3RlbmVyKQot
ICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5l
ci5yZWxlYXNlKCksIGZhbHNlKTsKLX0KLQotUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlm
aWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCi17Ci0gICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGV4
dCwgdGl0bGUpKSk7Ci0gICAgU3RyaW5nIGFyZ3VtZW50OwotICAgIGlmIChvcHRpb25zLmdldCgi
Ym9keSIsIGFyZ3VtZW50KSkKLSAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRCb2R5KGFyZ3VtZW50
KTsKLSAgICBpZiAob3B0aW9ucy5nZXQoInRhZyIsIGFyZ3VtZW50KSkKLSAgICAgICAgbm90aWZp
Y2F0aW9uLT5zZXRUYWcoYXJndW1lbnQpOwotICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLnNob3dFdmVudCwgIm9uc2hvdyIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQo
KSk7Ci0gICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
Im9uY2xvc2UiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOwotICAgIGdldEFuZEFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsICJvbmVycm9yIiwgb3B0aW9ucywg
bm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCAib25jbGljayIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
Ci0KLSAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3Rp
ZmljYXRpb24ucmVsZWFzZSgpOwotfQotI2VuZGlmCi0KLWNvbnN0IEF0b21pY1N0cmluZyYgTm90
aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck5vdGlmaWNhdGlvbjsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OnNo
b3coKSAKLXsKLSAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCi0gICAgaWYgKG1fc3RhdGUg
PT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRp
b25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRoaXMpKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBTaG93
aW5nOwotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgfQotfQotCi12b2lk
IE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQotewotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNh
c2UgSWRsZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTaG93aW5nOgotICAgICAgICBpZiAo
bV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQotICAgICAgICAgICAgbV9ub3RpZmljYXRp
b25DZW50ZXItPmNsaWVudCgpLT5jYW5jZWwodGhpcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ2xvc2VkOgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSog
Tm90aWZpY2F0aW9uOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTm90aWZpY2F0aW9uOjplbnN1cmVFdmVu
dFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLXZv
aWQgTm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBBY3RpdmVET01PYmpl
Y3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLSAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNs
aWVudCgpKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPm5vdGlmaWNh
dGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OmZpbmFs
aXplKCkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX3N0YXRlID0gQ2xvc2VkOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQot
Ci12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQotewotICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tFdmVudCgpCi17Ci0gICAg
V2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dlZDsKLSAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKLXsK
LSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOwotICAgIGZpbmFsaXplKCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9u
OjpkaXNwYXRjaEVycm9yRXZlbnQoKQotewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgTm90aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZChUaW1l
cjxOb3RpZmljYXRpb24+KiB0aW1lcikKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnBhZ2UoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0
aW1lciwgdGltZXIgPT0gbV90YXNrVGltZXIuZ2V0KCkpOwotICAgIGlmIChOb3RpZmljYXRpb25D
b250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsK
LSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgc2hvdygpOwotfQotI2VuZGlmCi0KLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotY29u
c3QgU3RyaW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb25MZXZlbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwot
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOwotICAg
IHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVy
bWlzc2lvbihjb250ZXh0KSk7Ci19Ci0KLWNvbnN0IFN0cmluZyYgTm90aWZpY2F0aW9uOjpwZXJt
aXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwZXJtaXNzaW9uKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhbGxvd2VkUGVybWlzc2lv
biwgKCJncmFudGVkIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBk
ZW5pZWRQZXJtaXNzaW9uLCAoImRlbmllZCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZGVmYXVsdFBlcm1pc3Npb24sICgiZGVmYXVsdCIpKTsKLSAgICBzd2l0Y2gg
KHBlcm1pc3Npb24pIHsKLSAgICBjYXNlIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFs
bG93ZWQ6Ci0gICAgICAgIHJldHVybiBhbGxvd2VkUGVybWlzc2lvbjsKLSAgICBjYXNlIE5vdGlm
aWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDoKLSAgICAgICAgcmV0dXJuIGRlbmllZFBl
cm1pc3Npb247Ci0gICAgY2FzZSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25Ob3RBbGxv
d2VkOgotICAgICAgICByZXR1cm4gZGVmYXVsdFBlcm1pc3Npb247Ci0gICAgfQotICAgIAotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBkZW5pZWRQZXJtaXNzaW9uOwotfQot
Ci12b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+
IGNhbGxiYWNrKQotewotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOwotICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+
cGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQZXJtaXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrKTsK
LX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkZTkxMDA3M2IwMjZiZTYzYzEyOWQxMjA0MjhkNjQwNTExMGQ5NmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uX2ggIAotI2RlZmluZSBOb3RpZmljYXRp
b25faAotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLWNs
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazsKLWNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LWNsYXNzIFRocmVhZGFibGVMb2FkZXI7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
LWNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uKCk7Ci0jaWYgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
IHByb3ZpZGVyKTsKLSNlbmRpZgotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKLSNlbmRp
ZgotICAgIAotICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOwotCi0gICAgdm9pZCBzaG93KCk7
Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIHZvaWQgY2FuY2VsKCkgeyBj
bG9zZSgpOyB9Ci0jZW5kaWYKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICBib29sIGlzSFRNTCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNIVE1MOyB9Ci0gICAgdm9pZCBzZXRIVE1MKGJvb2wgaXNIVE1M
KSB7IG1faXNIVE1MID0gaXNIVE1MOyB9Ci0gICAgCi0gICAgS1VSTCB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQotICAgIHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1f
bm90aWZpY2F0aW9uVVJMID0gdXJsOyB9Ci0gICAgCi0gICAgS1VSTCBpY29uVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9pY29uOyB9Ci0KLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3RpdGxlOyB9Ci0gICAgU3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KLQot
ICAgIFN0cmluZyBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQotICAgIHZvaWQg
c2V0RGlyKGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fZGlyZWN0aW9uID0gZGlyOyB9Ci0KLSNpZiBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgU3RyaW5nIHJlcGxhY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIHRhZygpOyB9Ci0gICAgdm9pZCBzZXRSZXBsYWNlSWQoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlSWQpIHsgc2V0VGFnKHJlcGxhY2VJZCk7IH0KLSNlbmRpZgotCi0gICAgU3RyaW5nIHRh
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9Ci0gICAgdm9pZCBzZXRUYWcoY29uc3QgU3RyaW5n
JiB0YWcpIHsgbV90YWcgPSB0YWc7IH0KLQotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZGlyKCkgPT0gInJ0bCIgPyBSVEwgOiBMVFI7IH0KLQotICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc2hvdyk7Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGlzcGxheSk7
Ci0jZW5kaWYKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKLSAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKLSAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKLSAgICAKLSAgICB2b2lkIGRpc3BhdGNoQ2xp
Y2tFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Ci0gICAgdm9pZCBkaXNw
YXRjaEVycm9yRXZlbnQoKTsKLSAgICB2b2lkIGRpc3BhdGNoU2hvd0V2ZW50KCk7Ci0KLSAgICB1
c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVk
PE5vdGlmaWNhdGlvbj46OmRlcmVmOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9p
ZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0KLSAgICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOwotCi0g
ICAgLy8gRGVwcmVjYXRlZC4gVXNlIGZ1bmN0aW9ucyBmcm9tIE5vdGlmaWNhdGlvbkNlbnRlci4K
LSAgICB2b2lkIGRldGFjaFByZXNlbnRlcigpIHsgfQotCi0gICAgdm9pZCBmaW5hbGl6ZSgpOwot
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGVy
bWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbik7
Ci0gICAgc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7Ci0jZW5kaWYK
LQotcHJpdmF0ZToKLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgTm90aWZp
Y2F0aW9uKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7Ci0gICAgTm90aWZpY2F0aW9uKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29u
VVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPik7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
dGl0bGUpOwotI2VuZGlmCi0KLSAgICB2b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7
IG1fYm9keSA9IGJvZHk7IH0KLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmdJY29uKCk7Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKLSNlbmRpZgot
ICAgIAotICAgIGJvb2wgbV9pc0hUTUw7Ci0KLSAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCi0g
ICAgS1VSTCBtX2ljb247Ci0gICAgU3RyaW5nIG1fdGl0bGU7Ci0gICAgU3RyaW5nIG1fYm9keTsK
LSAgICAvLyBGSVhNRTogRGVwcmVjYXRlIEhUTUwgTm90aWZpY2F0aW9ucy4KLSAgICBLVVJMIG1f
bm90aWZpY2F0aW9uVVJMOwotCi0gICAgU3RyaW5nIG1fZGlyZWN0aW9uOwotICAgIFN0cmluZyBt
X3RhZzsKLQotICAgIGVudW0gTm90aWZpY2F0aW9uU3RhdGUgewotICAgICAgICBJZGxlID0gMCwK
LSAgICAgICAgU2hvd2luZyA9IDEsCi0gICAgICAgIENsb3NlZCA9IDIsCi0gICAgfTsKLQotICAg
IE5vdGlmaWNhdGlvblN0YXRlIG1fc3RhdGU7Ci0KLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKLSAgICAKLSAgICBFdmVudFRhcmdldERhdGEgbV9l
dmVudFRhcmdldERhdGE7Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBPd25QdHI8
VGltZXI8Tm90aWZpY2F0aW9uPiA+IG1fdGFza1RpbWVyOwotI2VuZGlmCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMmViN2YyNDVmOWY1NmM2ZWIzYjc1NWE4ZDY2NjVkY2I0
YmUzM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwot
ICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAot
ICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgICAgIEV2ZW50VGFyZ2V0LAotI2lmIGRlZmlu
ZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCi0gICAgICAg
IENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0aXRsZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKLSNlbHNlCi0gICAgICAgIE9taXRDb25zdHJ1Y3RvcgotI2VuZGlmCi0g
ICAgXSBOb3RpZmljYXRpb24gewotICAgICAgICB2b2lkIHNob3coKTsKLSNpZiBkZWZpbmVkKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
Ci0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICB2b2lkIGNsb3NlKCk7
Ci0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxF
X05PVElGSUNBVElPTlMKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRd
IHN0YXRpYyBET01TdHJpbmcgcGVybWlzc2lvbkxldmVsKCk7Ci0gICAgICAgIFtDdXN0b21dIHN0
YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjayBjYWxsYmFjayk7Ci0jZW5kaWYKLQotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnNob3c7Ci0jaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmRpc3BsYXk7Ci0jZW5kaWYKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25l
cnJvcjsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKLSAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbGljazsKLQotICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGRpcjsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYg
RU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcg
cmVwbGFjZUlkOwotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYg
RU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0YWc7Ci0j
ZW5kaWYKLQotICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICAgICAgdm9pZCBh
ZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICB2
b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCi0gICAgICAg
ICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYjU0NzQwMDk1ZTU2YmZmNjcwODJjYWRlZmYxZmYzYjZj
NTg2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAi
Tm90aWZpY2F0aW9uQ2VudGVyLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5j
bHVkZSAiV29ya2VyQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLXsK
LSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBub3RpZmljYXRpb25DZW50ZXIoYWRvcHRS
ZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBjbGllbnQpKSk7Ci0gICAgbm90aWZp
Y2F0aW9uQ2VudGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9u
Q2VudGVyLnJlbGVhc2UoKTsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25D
ZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50
KiBjbGllbnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1f
Y2xpZW50KGNsaWVudCkKLXsKLX0KLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
LWludCBOb3RpZmljYXRpb25DZW50ZXI6OmNoZWNrUGVybWlzc2lvbigpCi17Ci0gICAgaWYgKCFj
bGllbnQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gTm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOwotCi0gICAgc3dpdGNoIChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25z
KCkpIHsKLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNBbGxvdzoKLSAgICAgICAgcmV0
dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQ7Ci0gICAgY2FzZSBTZWN1
cml0eU9yaWdpbjo6QWx3YXlzRGVueToKLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVu
dDo6UGVybWlzc2lvbkRlbmllZDsKLSAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBc2s6Ci0gICAg
ICAgIHJldHVybiBtX2NsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1f
Y2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLX0KLSNl
bmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotdm9pZCBOb3RpZmljYXRp
b25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjaykKLXsKLSAgICBpZiAoIWNsaWVudCgpIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5TaG93Tm90aWZpY2F0aW9ucygpKSB7Ci0gICAgY2FzZSBT
ZWN1cml0eU9yaWdpbjo6QWx3YXlzQWxsb3c6Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3
YXlzRGVueTogewotICAgICAgICBtX2NhbGxiYWNrcy5hZGQoTm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVyKHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QXNrOgotICAgICAgICByZXR1
cm4gbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
Y2FsbGJhY2spOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG1fY2xp
ZW50LT5yZXF1ZXN0UGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNr
KTsKLX0KLSNlbmRpZgotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6c3RvcCgpCi17Ci0gICAg
aWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5jYW5jZWxSZXF1
ZXN0c0ZvclBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2NsaWVu
dC0+Y2xlYXJOb3RpZmljYXRpb25zKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9j
bGllbnQgPSAwOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFRpbWVkT3V0
KE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0
KQotewotICAgIG1fY2FsbGJhY2tzLnJlbW92ZShyZXF1ZXN0KTsKLX0KLQotUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gTm90aWZpY2F0
aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGlt
ZXIoTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBj
YWxsYmFjaykKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25S
ZXF1ZXN0Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjayA9IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRp
b25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayhjZW50ZXIsIGNhbGxiYWNrKSk7
Ci0gICAgcmVxdWVzdENhbGxiYWNrLT5zdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJuIHJlcXVlc3RD
YWxsYmFjay5yZWxlYXNlKCk7Ci19Ci0KLU5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2soTm90aWZpY2F0aW9u
Q2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKLSAgICA6
IG1fbm90aWZpY2F0aW9uQ2VudGVyKGNlbnRlcikKLSAgICAsIG1fdGltZXIodGhpcywgJk5vdGlm
aWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjp0aW1lckZpcmVkKQot
ICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKLXsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25DZW50
ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6c3RhcnRUaW1lcigpCi17Ci0gICAgbV90
aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+KikKLXsKLSAgICBtX2NhbGxiYWNrLT5o
YW5kbGVFdmVudCgpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5yZXF1ZXN0VGltZWRPdXQo
dGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y2ZDY4OTAyZjMwNTc1YzgwN2JhM2MyMTAyMWQ5NzA1Mzdh
NTFlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAotI2Rl
ZmluZSBOb3RpZmljYXRpb25DZW50ZXJfaAotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7Ci1jbGFzcyBWb2lk
Q2FsbGJhY2s7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKLQotI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKLSAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRN
TE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAg
ewotICAgICAgICBpZiAoIWNsaWVudCgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFVS
SS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgaWYg
KCFjbGllbnQoKSkgewotICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb246
OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSSSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBl
YywgdGhpcyk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCi0gICAgaW50IGNoZWNrUGVybWlzc2lvbigpOwotICAgIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSNlbmRpZgotCi0gICAgdmlydHVh
bCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb25DZW50
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0gICAg
Y2xhc3MgTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90
aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IGNyZWF0ZUFuZFN0YXJ0VGlt
ZXIoTm90aWZpY2F0aW9uQ2VudGVyKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICAg
ICAgdm9pZCBzdGFydFRpbWVyKCk7Ci0gICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+Kik7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgTm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPik7Ci0KLSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3Rp
ZmljYXRpb25DZW50ZXI7Ci0gICAgICAgIFRpbWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
az4gbV90aW1lcjsKLSAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKLSAg
ICB9OwotCi0gICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxi
YWNrKik7Ci0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIG1fY2xpZW50OwotICAgIEhhc2hTZXQ8
UmVmUHRyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRp
b25DZW50ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk5YmE5ZmYz
YzQwNjUzMmQ5ZDczNzFiNmJlNjg5YzVkOGFmMWZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxl
IHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9TEVHQUNZ
X05PVElGSUNBVElPTlMsCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICAgICAgT21pdENv
bnN0cnVjdG9yCi0gICAgXSBOb3RpZmljYXRpb25DZW50ZXIgewotI2lmICFkZWZpbmVkKEVOQUJM
RV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNf
T05MWQotICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRp
b24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKLSAgICAg
ICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5n
IGljb25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwotCi0gICAgICAgaW50IGNoZWNrUGVybWlzc2lvbigpOwotICAgICAgIFtD
dXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsK
LSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5MjgzNmU1NjRj
YWM5NmE5MGYzZjE1ZDljZDI5NmM1OWM0NWIwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5v
dGlmaWNhdGlvbkNsaWVudF9oCi0jZGVmaW5lIE5vdGlmaWNhdGlvbkNsaWVudF9oCi0KLSNpbmNs
dWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJWb2lkQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKLWNsYXNzIE5vdGlmaWNhdGlvbjsK
LWNsYXNzIFBhZ2U7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi1jbGFzcyBOb3Rp
ZmljYXRpb25DbGllbnQgewotCi1wdWJsaWM6Ci0gICAgZW51bSBQZXJtaXNzaW9uIHsKLSAgICAg
ICAgUGVybWlzc2lvbkFsbG93ZWQsIC8vIFVzZXIgaGFzIGFsbG93ZWQgbm90aWZpY2F0aW9ucwot
ICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dlZCwgLy8gVXNlciBoYXMgbm90IHlldCBhbGxvd2Vk
Ci0gICAgICAgIFBlcm1pc3Npb25EZW5pZWQgLy8gVXNlciBoYXMgZXhwbGljaXRseSBkZW5pZWQg
cGVybWlzc2lvbgotICAgIH07Ci0KLSAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9u
IGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsKLQot
ICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gdGhhdCBoYXMgYWxyZWFkeSBiZWVu
IHNob3duIGJlIGNhbmNlbGVkLgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9u
KikgPSAwOwotCi0gICAgLy8gV2hlbiB0aGUgdXNlciBjbG9zZXMgYSBwYWdlLCBvciBxdWl0cyB0
aGUgY2xpZW50IGFwcGxpY2F0aW9uLCBhbGwgb2YgdGhlIHBhZ2UncwotICAgIC8vIGFzc29jaWF0
ZWQgbm90aWZpY2F0aW9ucyBhcmUgY2xlYXJlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KLSAgICAKLSAgICAvLyBJbmZv
cm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5vdGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVz
dHJveWVkCi0gICAgLy8gKHN1Y2ggYXMgYnkgYSBwYWdlIHRyYW5zaXRpb24pLiBUaGUgcHJlc2Vu
dGVyIG1heSBjb250aW51ZSBzaG93aW5nCi0gICAgLy8gdGhlIG5vdGlmaWNhdGlvbiwgYnV0IG11
c3Qgbm90IGF0dGVtcHQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2
b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKSA9IDA7Ci0KLSAg
ICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhlIGNvbnRyb2xsZXIgYXR0YWNoZWQgdG8gdGhl
IHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQotICAgIC8vIFJlcXVlc3RzIHVzZXIgcGVybWlzc2lvbiB0byBzaG93IGRlc2t0b3Agbm90
aWZpY2F0aW9ucyBmcm9tIGEgcGFydGljdWxhcgotICAgIC8vIHNjcmlwdCBjb250ZXh0LiBUaGUg
Y2FsbGJhY2sgcGFyYW1ldGVyIHNob3VsZCBiZSBydW4gd2hlbiB0aGUgdXNlciBoYXMKLSAgICAv
LyBtYWRlIGEgZGVjaXNpb24uCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pID0gMDsKLSNl
bmRpZgotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s+KSA9IDA7Ci0jZW5kaWYKLQotICAgIC8vIENhbmNlbCBhbGwg
b3V0c3RhbmRpbmcgcmVxdWVzdHMgZm9yIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ci0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgPSAwOwotCi0gICAgLy8gQ2hlY2tzIHRoZSBjdXJyZW50IGxldmVsIG9mIHBlcm1p
c3Npb24uCi0gICAgdmlydHVhbCBQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Tm90aWZpY2F0
aW9uQ2xpZW50KCkgeyB9Ci19OwotCi12b2lkIHByb3ZpZGVOb3RpZmljYXRpb24oUGFnZSosIE5v
dGlmaWNhdGlvbkNsaWVudCopOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBOb3RpZmljYXRpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDliYmQ5YmYzYzIwZDUyNmM5ZDYzMDdkOThiOWM4MWNiMjUyMDcwNTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNs
aWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3Rp
ZmljYXRpb25DbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLXsKLX0KLQot
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6fk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKQotewotICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXJE
ZXN0cm95ZWQoKTsKLX0KLQotUGFzc093blB0cjxOb3RpZmljYXRpb25Db250cm9sbGVyPiBOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb3RpZmljYXRpb25Db250cm9sbGVyKGNsaWVudCkp
OwotfQotCi1Ob3RpZmljYXRpb25DbGllbnQqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVu
dEZyb20oUGFnZSogcGFnZSkKLXsKLSAgICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSkpCi0gICAgICAgIHJl
dHVybiBjb250cm9sbGVyLT5jbGllbnQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotY29uc3QgQXRv
bWljU3RyaW5nJiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiTm90aWZpY2F0aW9u
Q29udHJvbGxlciIpKTsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotdm9pZCBwcm92aWRlTm90aWZp
Y2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQotewotICAgIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9s
bGVyOjpzdXBwbGVtZW50TmFtZSgpLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoY2xp
ZW50KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDE5NjhlZDRkMTVlMjdkZDJjNDY5YWM2NzM2
ZDQxMGM2YzAwM2U1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0q
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0qIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0qLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAotI2Rl
ZmluZSBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJQYWdlLmgiCi0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7Ci0KLWNsYXNz
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTm90aWZpY2F0aW9uQ29udHJvbGxlcik7Ci1wdWJsaWM6Ci0g
ICAgfk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXI+IGNyZWF0ZShOb3RpZmljYXRpb25DbGllbnQqKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50TmFtZSgpOwotICAgIHN0YXRpYyBO
b3RpZmljYXRpb25Db250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2Us
IHN1cHBsZW1lbnROYW1lKCkpKTsgfQotICAgIHN0YXRpYyBOb3RpZmljYXRpb25DbGllbnQqIGNs
aWVudEZyb20oUGFnZSopOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSB7IHJl
dHVybiBtX2NsaWVudDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb25Db250cm9s
bGVyKE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2Ns
aWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAv
LyBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGU3MzJhN2Y5YTI5OTlkMjZmMmI3OGRkYmEzZjYy
OTAwOGJmNmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCi0jZGVmaW5lIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25DYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiBwZXJtaXNzaW9uKSA9IDA7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFm
MTExNjEyZTI0MGNlY2FhMTlmYjVlYTcxYWFjZDdkMjYwOTNjMjAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNlIFsK
LSAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUywKLSAgICAgICAgQ2FsbGJhY2sKLSAg
ICBdIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4gaGFu
ZGxlRXZlbnQoaW4gRE9NU3RyaW5nIHBlcm1pc3Npb24pOwotICAgIH07Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZWRiOTkyY2QyMmM0
Y2NmZTExMTViYzgzNjM3MWUxNmNjMTA5NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgi
Ci0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCi17Ci19Ci0KLVdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoKQotewotfQotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OmZyb20oV29ya2VyQ29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBdG9taWNTdHJpbmcgc3VwcGxlbWVudE5hbWUgPSAiV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMiOwotICAgIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBzdXBwbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9tKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKSk7
Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMoY29udGV4dCk7Ci0gICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD46OnByb3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRv
cHRQdHIoc3VwcGxlbWVudCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQot
Tm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90
aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbShjb250ZXh0KS0+d2Via2l0Tm90aWZpY2F0aW9ucygp
OwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3
ZWJraXROb3RpZmljYXRpb25zKCkKLXsKLSAgICBpZiAoIW1fbm90aWZpY2F0aW9uQ2VudGVyKQot
ICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRl
KG1fY29udGV4dCwgbV9jb250ZXh0LT50aHJlYWQoKS0+Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkp
OwotICAgIHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjM1NGZjYTE4MDhiMmIxMDIyNTM2ODE0OTQyZjA5M2YyMzVhZmZkNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9uc19oCi0jZGVmaW5lIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
X2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCi0KLSNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBXb3JrZXJDb250ZXh0OwotCi1jbGFzcyBXb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucygpOwotCi0gICAg
c3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250
ZXh0Kik7Ci0gICAgc3RhdGljIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKiBmcm9tKFdvcmtl
ckNvbnRleHQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0KLSAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtp
dE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIFdvcmtlckNvbnRleHQqIG1fY29udGV4dDsKLSAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYzkzYmMyYjNmY2I0ZjFmMzY4NDdmMDgwNzhmOWFmZTMzOGQxMDlhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9O
T1RJRklDQVRJT05TLAotICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAotICAgIF0g
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMgewotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3
ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlmCi0gICAgfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150603</attachid>
            <date>2012-07-03 07:13:22 -0700</date>
            <delta_ts>2012-07-04 02:41:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82121-20120703231319.patch</filename>
            <type>text/plain</type>
            <size>183611</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJkYmJlNDYxMzUwMjZi
OTNhZTgxZjRhNzJiYjk3Y2E4YTIzOTg2OS4uMmIzOTc4NTI1YWJhYWJmNWY4YWMwZDk3ODA2OGE2
OGY5MDYyMTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wNy0wMyAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5vdGlmaWNh
dGlvbnMgc2hvdWxkIGJlIGluIE1vZHVsZXMvbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxMjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbm90aWZpY2F0aW9ucyBkaXJlY3Rv
cnkgaXMgbm93IHNlbGYtY29udGFpbmVkLiBUaGlzIHBhdGNoIG1vdmVzIGl0IHRvIHRoZSBNb2R1
bGVzIGRpcmVjdG9yeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05v
dGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZUZvclBh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNv
bm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90
aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3
aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKERPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRBbmRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmRpc3BhdGNoU2hvd0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hF
cnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uTGV2ZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmlzSFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldEhUTUwpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
ZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppY29uVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpib2R5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0RGlyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6cmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6c2V0UmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFn
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OmRldGFjaFByZXNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OnNldEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZWZFdmVudFRh
cmdldCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRlcmVmRXZlbnRUYXJnZXQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6
Ok5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNl
bnRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVl
c3RUaW1lZE91dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6
Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpzdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChO
b3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNlbnRlcjo6Y3JlYXRlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Y2xpZW50KToKKyAgICAgICAgKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5p
ZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm90aWZpY2F0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6fk5v
dGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjp+Tm90
aWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250
cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6Y2xpZW50RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6On5Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnM6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6
OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsLgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXAv
V2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTA3LTAzICBQaGlsaXAgUm9n
ZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgRml4IHRleHQgcG9zaXRpb25pbmcgd2l0
aCBub24tYm1wIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM1MGViNmY1OThj
N2Y1YWZmOTk2Y2JmMDljNzFmMmQ5Zjc0ZjU0ZGQuLjlhNGRhZThhY2ViZTBmNGI2YmJmNWRiYWM2
MGM4ZjZkODNlNjlhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00LDYgKzQsNyBAQCBTRVQo
V2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
Z2VvbG9jYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW5kZXhlZGRiIgogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ludGVudHMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvbm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9xdW90YSIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJhdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy93ZWJkYXRhYmFzZSIKQEAgLTMyLDcgKzMzLDYgQEAgU0VUKFdlYkNvcmVfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9pY29uIgogICAgICIke1dFQkNPUkVfRElSfS9tYXRobWwi
Ci0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BhZ2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvYW5pbWF0aW9uIgogICAgICIke1dFQkNP
UkVfRElSfS9wYWdlL3Njcm9sbGluZyIKQEAgLTE3MTYsMTkgKzE3MTYsMTkgQEAgRU5ESUYgKCkK
IAogSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwotICAgICAgICBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCi0g
ICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAotICAgICAgICBub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAotICAgICAgICBub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmNwcAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuY3BwCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5jcHAKICAgICApCiAKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwot
ICAgICAgICBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCi0gICAgICAg
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAotICAgICAgICBub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5pZGwKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaWRsCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmlkbAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmlkbAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmlkbAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuaWRsCiAgICAgKQogRU5ESUYgKCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggMDNmNDAwNGZhOGJmMWE1ZTFmMzJjNGNlOThkNmZhZTA0MDljNGE2
Ny4uN2E4YzI4NzJkOTgxMzdiNzdlOGQxZDBmZTYwMmUxNzI1M2FkMDFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMSw2ICszMSw3IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9j
YXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAorICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmRhdGFiYXNlIFwKQEAgLTQ4LDcgKzQ5LDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJD
b3JlKS9sb2FkZXIvYXBwY2FjaGUgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAg
ICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2Vi
Q29yZSkvc3RvcmFnZSBcCkBAIC0xMDUsNiArMTA1LDExIEBAIEJJTkRJTkdfSURMUyA9IFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckNvbnRleHRJ
bmRleGVkRGF0YWJhc2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmlkbCBc
CkBAIC0zOTQsMTEgKzM5OSw2IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IvU2Ny
aXB0UHJvZmlsZU5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmlkbCBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvQWJzdHJh
Y3RWaWV3LmlkbCBcCiAgICAgJChXZWJDb3JlKS9wYWdlL0JhckluZm8uaWRsIFwKICAgICAkKFdl
YkNvcmUpL3BhZ2UvQ29uc29sZS5pZGwgXApAQCAtOTQyLDggKzk0Miw4IEBAIElETF9JTkNMVURF
UyA9IFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkgXAogICAgICQoV2ViQ29yZSkvaHRtbCBcCiAg
ICAgJChXZWJDb3JlKS9jc3MgXAotICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3Jl
KS9ub3RpZmljYXRpb25zIFwKKyAgICAkKFdlYkNvcmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkv
eG1sIFwKICAgICAkKFdlYkNvcmUpL3N2ZwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5k
ZXggNDhlZDgwMTZkM2ZlZGI4ZjFlNzY3YjQ0ODAyMTUyMDQ5ZTA5Y2MzOC4uOTk1NzljZDUyNjhj
YTMxNmJjYzY1MDdkNDlmMzg2MGI5ZDA2ZWRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtl
ckNvbnRleHRJbmRleGVkRGF0YWJhc2UuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwgXAorICAgICQkUFdEL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgXAogICAg
ICQkUFdEL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuaWRsIFwKICAgICAkJFBXRC9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy9xdW90YS9TdG9y
YWdlSW5mb0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTQwNSwxMSArNDEwLDYgQEAgSURMX0JJTkRJ
TkdTICs9IFwKICAgICAkJFBXRC9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwgXAogICAgICQk
UFdEL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGwgXAogICAgICQkUFdEL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9u
cy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNl
bnRlci5pZGwgXAotICAgICQkUFdEL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9ucy5pZGwgXAogICAgICQkUFdEL3BhZ2UvQmFySW5mby5pZGwgXAogICAgICQkUFdE
L3BhZ2UvQ29uc29sZS5pZGwgXAogICAgICQkUFdEL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggZWFlMGE3MTNiMjNlNzU3NDhjMjJiYmM1NWMzOTQ2YTA1Nzkx
ODlmNC4uNWRkYzNkYThiOWU1NzM1MWViYmQxNDY1NjAxOTIwYzFiODYyOTFkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTE2LDYgKzE2LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0gXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpbyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzIFwKQEAgLTQ2LDcgKzQ3LDYgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbWF0aG1sIFwK
LQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcg
XApAQCAtODcyLDYgKzg3Miw3IEBAIElETF9QQVRIIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2Vic29ja2V0cyBcCkBAIC04ODYsNyArODg3LDYgQEAgSURMX1BBVEggOj0gXAogICAgICQoV2Vi
Q29yZSkvaHRtbC90cmFjayBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2Vi
Q29yZSkvbG9hZGVyL2FwcGNhY2hlIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAog
ICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAgICAkKFdl
YkNvcmUpL3N0b3JhZ2UgXApAQCAtMTA0MCw2ICsxMDQwLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJ
JChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi8q
LmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS8qLmlkbCkgXAorCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vKi5pZGwpIFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlLyouaWRsKSBcCiAJ
JChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzLyou
aWRsKSBcCkBAIC0xMDUzLDcgKzEwNTQsNiBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9odG1sLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlLyouaWRsKSBcCi0JJChzaGVsbCBs
cyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy8qLmlkbCkgXAogCSQoc2hl
bGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2UvKi5pZGwpIFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zLyouaWRsKSBcCiAJJChzaGVsbCBscyAk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvc3RvcmFnZS8qLmlkbCkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggZGU3YmNjNjRmMzllYmRhMzZiNzc0NjkzMjFiOWEwZGM4OTBlYmY4
OC4uYzUwYWJlODZiNjA3OGNmNmMxNWUxOTEzNmRjZTc3ZWM4YzU0MGRmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC03MTAsNiArNzEwLDkgQEAgZG9tX2JpbmRpbmdfaWRscyAr
PSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRs
IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlk
bCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlk
bCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBc
CisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwgXApAQCAtOTQ5LDkgKzk1Miw2IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2Vi
Q29yZSkvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIFwKIAkkKFdlYkNvcmUpL2luc3BlY3Rv
ci9TY3JpcHRQcm9maWxlTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKLQkkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmlkbCBcCi0JJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGwgXAotCSQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL3BhZ2UvQmFySW5mby5pZGwgXAogCSQoV2ViQ29y
ZSkvcGFnZS9Db25zb2xlLmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL0Nvb3JkaW5hdGVzLmlkbCBc
CkBAIC0xMTk0LDYgKzExOTQsMTggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9E
T01XaW5kb3dOb3RpZmljYXRpb25zLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAgXApAQCAtMjk0OSwxOCArMjk2MSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRv
d05vdGlmaWNhdGlvbnMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAx
NzNlZTc1ZWJiZjI3MTVhNTliZGViYmY4NzljN2UyMDZmZWNhZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRE9NV2luZG93Tm90aWZpY2F0aW9uczo6RE9NV2luZG93Tm90aWZpY2F0aW9ucyhET01X
aW5kb3cqIHdpbmRvdykKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KHdpbmRvdy0+ZnJhbWUoKSkK
KyAgICAsIG1fd2luZG93KHdpbmRvdykKK3sKK30KKworRE9NV2luZG93Tm90aWZpY2F0aW9uczo6
fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoKQoreworfQorCitET01XaW5kb3dOb3RpZmljYXRpb25z
KiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzdXBwbGVtZW50TmFtZSwgKCJET01X
aW5kb3dOb3RpZmljYXRpb25zIikpOworICAgIERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dOb3RpZmljYXRpb25zKj4oU3VwcGxlbWVudDxE
T01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUpKTsKKyAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKKyAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBET01XaW5kb3dOb3RpZmljYXRpb25z
KHdpbmRvdyk7CisgICAgICAgIFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6cHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUsIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0
dXJuIHN1cHBsZW1lbnQ7Cit9CisKK05vdGlmaWNhdGlvbkNlbnRlciogRE9NV2luZG93Tm90aWZp
Y2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqIHdpbmRvdykKK3sKKyAgICBy
ZXR1cm4gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbSh3aW5kb3cpLT53ZWJraXROb3RpZmlj
YXRpb25zKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZGlzY29ubmVjdEZy
YW1lRm9yUGFnZUNhY2hlKCkKK3sKKyAgICBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRlciA9
IG1fbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6
ZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZp
Y2F0aW9uczo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBET01XaW5kb3dQcm9wZXJ0eTo6cmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKGZyYW1lKTsK
KyAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVy
LnJlbGVhc2UoKTsKK30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQoreworICAgIG1fc3VzcGVuZGVkTm90aWZpY2F0
aW9uQ2VudGVyID0gbnVsbHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0
aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkKK3sKKyAgICBtX25vdGlmaWNh
dGlvbkNlbnRlciA9IG51bGxwdHI7CisgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5GcmFtZSgpOworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6
OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKQoreworICAgIG1fbm90aWZpY2F0aW9u
Q2VudGVyID0gbnVsbHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERldGFjaEdsb2Jh
bE9iamVjdEZyb21GcmFtZSgpOworfQorCitOb3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05v
dGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghbV93aW5kb3ct
PmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmIChtX25vdGlmaWNhdGlvbkNlbnRlcikKKyAgICAgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9u
Q2VudGVyLmdldCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV93aW5kb3ctPmRvY3Vt
ZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIE5vdGlmaWNhdGlvbkNsaWVudCogcHJvdmlkZXIgPSBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpjbGllbnRGcm9tKHBhZ2UpOworICAgIGlmIChwcm92aWRlcikgCisgICAg
ICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoZG9j
dW1lbnQsIHByb3ZpZGVyKTsgICAgCisKKyAgICByZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIu
Z2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmUyNmRkNjAwYjM3ZGZmMGY5ZDIxMjMxYTFiZjY2
MTkxM2Q4NmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVdpbmRvd05vdGlm
aWNhdGlvbnNfaAorI2RlZmluZSBET01XaW5kb3dOb3RpZmljYXRpb25zX2gKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNs
dWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisj
aW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBET01XaW5kb3c7CitjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CisKK2NsYXNzIERPTVdpbmRv
d05vdGlmaWNhdGlvbnMgOiBwdWJsaWMgU3VwcGxlbWVudDxET01XaW5kb3c+LCBwdWJsaWMgRE9N
V2luZG93UHJvcGVydHkgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVdpbmRvd05vdGlmaWNh
dGlvbnMoKTsKKworICAgIHN0YXRpYyBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNh
dGlvbnMoRE9NV2luZG93Kik7CisgICAgc3RhdGljIERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIGZy
b20oRE9NV2luZG93Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFn
ZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBh
Z2VDYWNoZShGcmFtZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBPVkVSUklERTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBET01XaW5kb3dOb3RpZmljYXRpb25zKERPTVdpbmRvdyopOworCisgICAg
Tm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCk7CisKKyAgICBET01XaW5k
b3cqIG1fd2luZG93OworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0
aW9uQ2VudGVyOworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fc3VzcGVuZGVkTm90
aWZpY2F0aW9uQ2VudGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KworI2VuZGlmIC8vIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhOGExMjljNTdhMWRjNjg2NWIxNTU4YzllM2M3NDY1M2Q5
ZGYyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgd2luZG93IHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElP
TlMsCisgICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKKyAgICBdIERPTVdpbmRvd05vdGlm
aWNhdGlvbnMgeworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtW
OEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25z
OworI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05P
VElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNhdGlvbkNvbnN0cnVjdG9yIE5v
dGlmaWNhdGlvbjsKKyNlbmRpZgorICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ4
OTkyYWViMzMxZTk2OGQwYmQ3YmY0MjRhZGIwMTU1OThhZGRiNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBA
IC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNs
dWRlICJOb3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IkRPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvci5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbigpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
MCwgdGhpcykKK3sKK30KKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK05vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQor
ICAgICwgbV9pc0hUTUwodHJ1ZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fbm90aWZp
Y2F0aW9uQ2VudGVyKHByb3ZpZGVyKQoreworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+
Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dl
ZCkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbm90aWZpY2F0
aW9uVVJMID0gdXJsOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBwcm92aWRlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQor
ICAgICwgbV9pc0hUTUwoZmFsc2UpCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9ib2R5
KGJvZHkpCisgICAgLCBtX3N0YXRlKElkbGUpCisgICAgLCBtX25vdGlmaWNhdGlvbkNlbnRlcihw
cm92aWRlcikKK3sKKyAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNoZWNrUGVybWlzc2lv
bigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKKyAgICAgICAg
ZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2ljb24g
PSBpY29uVVJJLmlzRW1wdHkoKSA/IEtVUkwoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
Y29tcGxldGVVUkwoaWNvblVSSSk7CisgICAgaWYgKCFtX2ljb24uaXNFbXB0eSgpICYmICFtX2lj
b24uaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRpdGxlKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisg
ICAgLCBtX2lzSFRNTChmYWxzZSkKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX3N0YXRl
KElkbGUpCisgICAgLCBtX3Rhc2tUaW1lcihhZG9wdFB0cihuZXcgVGltZXI8Tm90aWZpY2F0aW9u
Pih0aGlzLCAmTm90aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZCkpKQoreworICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2lu
ZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5kb21XaW5kb3coKSk7CisgICAgCisgICAgQVNTRVJUKG1fbm90aWZpY2F0
aW9uQ2VudGVyLT5jbGllbnQoKSk7CisgICAgbV90YXNrVGltZXItPnN0YXJ0T25lU2hvdCgwKTsK
K30KKyNlbmRpZgorCitOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSAKK3sKK30KKworI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBO
b3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gcHJvdmlkZXIpIAoreyAKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikp
KTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3Rp
ZmljYXRpb24ucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZp
Y2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBj
b25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIp
IAoreyAKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3
IE5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgaWNvblVSSSwgY29udGV4dCwgZWMsIHByb3ZpZGVy
KSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5v
dGlmaWNhdGlvbi5yZWxlYXNlKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorc3RhdGljIHZvaWQgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSwgY29uc3QgY2hhciogcHJvcGVydHksIGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IG9wdGlvbnMuZ2V0RXZlbnRMaXN0ZW5lcihwcm9wZXJ0eSwgbm90
aWZpY2F0aW9uKTsKKyAgICBpZiAobGlzdGVuZXIpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyLnJlbGVhc2UoKSwgZmFsc2UpOworfQor
CitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlv
bmFyeSYgb3B0aW9ucykKK3sKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24o
YWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZXh0LCB0aXRsZSkpKTsKKyAgICBTdHJpbmcg
YXJndW1lbnQ7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJib2R5IiwgYXJndW1lbnQpKQorICAgICAg
ICBub3RpZmljYXRpb24tPnNldEJvZHkoYXJndW1lbnQpOworICAgIGlmIChvcHRpb25zLmdldCgi
dGFnIiwgYXJndW1lbnQpKQorICAgICAgICBub3RpZmljYXRpb24tPnNldFRhZyhhcmd1bWVudCk7
CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2hvd0V2ZW50LCAib25z
aG93Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCAib25jbG9zZSIsIG9wdGlvbnMsIG5vdGlm
aWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgIm9uZXJyb3IiLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAg
IGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICJvbmNsaWNr
Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKKworICAgIG5vdGlmaWNhdGlvbi0+c3Vz
cGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Cit9Cisj
ZW5kaWYKKworY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTm90aWZpY2F0
aW9uOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpIAoreworICAgIC8vIHByZXZlbnQg
ZG91YmxlLXNob3dpbmcKKyAgICBpZiAobV9zdGF0ZSA9PSBJZGxlICYmIG1fbm90aWZpY2F0aW9u
Q2VudGVyLT5jbGllbnQoKSAmJiBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPnNob3co
dGhpcykpIHsKKyAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CisgICAgICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCit7
CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBJZGxlOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFNob3dpbmc6CisgICAgICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xp
ZW50KCkpCisgICAgICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCktPmNhbmNl
bCh0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDbG9zZWQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworRXZlbnRUYXJnZXREYXRhKiBOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0
RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJn
ZXREYXRhKiBOb3RpZmljYXRpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmNvbnRleHRE
ZXN0cm95ZWQoKQoreworICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwor
ICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2xpZW50KCkpCisgICAgICAgIG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMp
OworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQoreworICAgIGlmIChtX3N0YXRl
ID09IENsb3NlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUgPSBDbG9zZWQ7CisgICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNw
YXRjaFNob3dFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5zaG93RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
bjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKK3sKKyAgICBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0
b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgZmlu
YWxpemUoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCit7
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKK30KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBO
b3RpZmljYXRpb246OnRhc2tUaW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qIHRpbWVyKQor
eworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSk7Cisg
ICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KS0+cGFnZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSBtX3Rhc2tUaW1l
ci5nZXQoKSk7CisgICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkpLT5jbGllbnQo
KS0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCkgeworICAgICAgICBkaXNwYXRjaEVycm9yRXZl
bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzaG93KCk7Cit9CisjZW5kaWYKKwor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitjb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6
cGVybWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
QVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PERv
Y3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIHBlcm1pc3Npb25TdHJpbmco
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+Y2hlY2tQZXJtaXNzaW9uKGNvbnRleHQpKTsKK30KKwor
Y29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246OnBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9u
Q2xpZW50OjpQZXJtaXNzaW9uIHBlcm1pc3Npb24pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIGFsbG93ZWRQZXJtaXNzaW9uLCAoImdyYW50ZWQiKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRlbmllZFBlcm1pc3Npb24sICgiZGVuaWVk
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZWZhdWx0UGVybWlz
c2lvbiwgKCJkZWZhdWx0IikpOworICAgIHN3aXRjaCAocGVybWlzc2lvbikgeworICAgIGNhc2Ug
Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZDoKKyAgICAgICAgcmV0dXJuIGFs
bG93ZWRQZXJtaXNzaW9uOworICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
RGVuaWVkOgorICAgICAgICByZXR1cm4gZGVuaWVkUGVybWlzc2lvbjsKKyAgICBjYXNlIE5vdGlm
aWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbk5vdEFsbG93ZWQ6CisgICAgICAgIHJldHVybiBkZWZh
dWx0UGVybWlzc2lvbjsKKyAgICB9CisgICAgCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGRlbmllZFBlcm1pc3Npb247Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpyZXF1
ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oY29udGV4dCktPnBhZ2UoKSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpLT5jbGllbnQoKS0+cmVxdWVz
dFBlcm1pc3Npb24oY29udGV4dCwgY2FsbGJhY2spOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRlOTEwMDczYjAyNmJlNjNj
MTI5ZDEyMDQyOGQ2NDA1MTEwZDk2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMCwwICsxLDIwMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE5vdGlmaWNhdGlvbl9oICAKKyNkZWZpbmUgTm90aWZpY2F0aW9uX2gK
KworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorI2luY2x1ZGUgIlRpbWVyLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERpY3Rpb25hcnk7CitjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CitjbGFzcyBO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFz
cyBUaHJlYWRhYmxlTG9hZGVyOworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFz
cyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIE5vdGlmaWNhdGlvbigpOworI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNy
ZWF0ZShjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92
aWRlcik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CisjZW5kaWYKKyAg
ICAKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKKworICAgIHZvaWQgc2hvdygpOworI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICB2b2lkIGNhbmNlbCgpIHsgY2xvc2Uo
KTsgfQorI2VuZGlmCisgICAgdm9pZCBjbG9zZSgpOworCisgICAgYm9vbCBpc0hUTUwoKSBjb25z
dCB7IHJldHVybiBtX2lzSFRNTDsgfQorICAgIHZvaWQgc2V0SFRNTChib29sIGlzSFRNTCkgeyBt
X2lzSFRNTCA9IGlzSFRNTDsgfQorICAgIAorICAgIEtVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV9ub3RpZmljYXRpb25VUkw7IH0KKyAgICB2b2lkIHNldFVSTChLVVJMIHVybCkgeyBtX25vdGlm
aWNhdGlvblVSTCA9IHVybDsgfQorICAgIAorICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1faWNvbjsgfQorCisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRs
ZTsgfQorICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9CisKKyAgICBT
dHJpbmcgZGlyKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KKyAgICB2b2lkIHNldERp
cihjb25zdCBTdHJpbmcmIGRpcikgeyBtX2RpcmVjdGlvbiA9IGRpcjsgfQorCisjaWYgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIFN0cmluZyByZXBsYWNlSWQoKSBjb25zdCB7IHJl
dHVybiB0YWcoKTsgfQorICAgIHZvaWQgc2V0UmVwbGFjZUlkKGNvbnN0IFN0cmluZyYgcmVwbGFj
ZUlkKSB7IHNldFRhZyhyZXBsYWNlSWQpOyB9CisjZW5kaWYKKworICAgIFN0cmluZyB0YWcoKSBj
b25zdCB7IHJldHVybiBtX3RhZzsgfQorICAgIHZvaWQgc2V0VGFnKGNvbnN0IFN0cmluZyYgdGFn
KSB7IG1fdGFnID0gdGFnOyB9CisKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGRpcigpID09ICJydGwiID8gUlRMIDogTFRSOyB9CisKKyAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHNob3cpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRpc3BsYXkpOworI2Vu
ZGlmCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CisgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7CisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihjbGljayk7CisgICAgCisgICAgdm9pZCBkaXNwYXRjaENsaWNrRXZl
bnQoKTsKKyAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRjaFNob3dFdmVudCgpOworCisgICAgdXNpbmcg
UmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxOb3Rp
ZmljYXRpb24+OjpkZXJlZjsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
KworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgY29u
dGV4dERlc3Ryb3llZCgpOworCisgICAgdm9pZCBzdG9wTG9hZGluZ0ljb24oKTsKKworICAgIC8v
IERlcHJlY2F0ZWQuIFVzZSBmdW5jdGlvbnMgZnJvbSBOb3RpZmljYXRpb25DZW50ZXIuCisgICAg
dm9pZCBkZXRhY2hQcmVzZW50ZXIoKSB7IH0KKworICAgIHZvaWQgZmluYWxpemUoKTsKKworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBlcm1pc3Np
b25MZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgcGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24pOworICAg
IHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pOworI2VuZGlmCisKK3By
aXZhdGU6CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlv
bihjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOworICAgIE5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4pOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKyNlbmRpZgorCisgICAgdm9pZCBzZXRCb2R5KGNvbnN0IFN0cmluZyYgYm9keSkgeyBtX2Jv
ZHkgPSBib2R5OyB9CisKKyAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpOworCisgICAgdm9pZCBzdGFydExvYWRpbmdJY29uKCk7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nSWNvbigpOworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
dm9pZCB0YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+Kik7CisjZW5kaWYKKyAgICAK
KyAgICBib29sIG1faXNIVE1MOworCisgICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgorICAgIEtV
UkwgbV9pY29uOworICAgIFN0cmluZyBtX3RpdGxlOworICAgIFN0cmluZyBtX2JvZHk7CisgICAg
Ly8gRklYTUU6IERlcHJlY2F0ZSBIVE1MIE5vdGlmaWNhdGlvbnMuCisgICAgS1VSTCBtX25vdGlm
aWNhdGlvblVSTDsKKworICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKKyAgICBTdHJpbmcgbV90YWc7
CisKKyAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKKyAgICAgICAgSWRsZSA9IDAsCisgICAg
ICAgIFNob3dpbmcgPSAxLAorICAgICAgICBDbG9zZWQgPSAyLAorICAgIH07CisKKyAgICBOb3Rp
ZmljYXRpb25TdGF0ZSBtX3N0YXRlOworCisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4g
bV9ub3RpZmljYXRpb25DZW50ZXI7CisgICAgCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgT3duUHRyPFRpbWVy
PE5vdGlmaWNhdGlvbj4gPiBtX3Rhc2tUaW1lcjsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbnNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYTJlYjdmMjQ1ZjlmNTZjNmViM2I3NTVhOGQ2NjY1ZGNiNGJlMzNmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5pZGwKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9O
T1RJRklDQVRJT05TLAorICAgICAgICBBY3RpdmVET01PYmplY3QsCisgICAgICAgIEV2ZW50VGFy
Z2V0LAorI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklD
QVRJT05TCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0aXRsZSwgaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKSwKKyAgICAgICAgQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyNlbHNlCisgICAgICAgIE9taXRDb25zdHJ1
Y3RvcgorI2VuZGlmCisgICAgXSBOb3RpZmljYXRpb24geworICAgICAgICB2b2lkIHNob3coKTsK
KyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FD
WV9OT1RJRklDQVRJT05TCisgICAgICAgIHZvaWQgY2FuY2VsKCk7CisjZW5kaWYKKyNpZiBkZWZp
bmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAg
ICB2b2lkIGNsb3NlKCk7CisjZW5kaWYKKworCisjaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBET01TdHJpbmcgcGVybWlzc2lvbkxldmVsKCk7CisgICAg
ICAgIFtDdXN0b21dIHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjayBjYWxsYmFjayk7CisjZW5kaWYKKworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbnNob3c7CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElG
SUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7CisjZW5kaWYKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25j
bG9zZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbGljazsKKworICAgICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRpcjsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgcmVwbGFjZUlkOworI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRlIERP
TVN0cmluZyB0YWc7CisjZW5kaWYKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
KyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1
cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGViYjU0NzQwMDk1ZTU2YmZmNjcwODJj
YWRlZmYxZmYzYjZjNTg2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC0wLDAgKzEsMTQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2Vu
dGVyKGNvbnRleHQsIGNsaWVudCkpKTsKKyAgICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQor
CitOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQor
CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQoraW50IE5vdGlmaWNhdGlvbkNlbnRl
cjo6Y2hlY2tQZXJtaXNzaW9uKCkKK3sKKyAgICBpZiAoIWNsaWVudCgpIHx8ICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1p
c3Npb25EZW5pZWQ7CisKKyAgICBzd2l0Y2ggKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlmaWNhdGlvbnMoKSkgeworICAgIGNhc2UgU2VjdXJp
dHlPcmlnaW46OkFsd2F5c0FsbG93OgorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50
OjpQZXJtaXNzaW9uQWxsb3dlZDsKKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNEZW55
OgorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVkOwor
ICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFzazoKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5j
aGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmNoZWNrUGVybWlzc2lv
bihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCit2b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1p
c3Npb24oUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIGlmICghY2xp
ZW50KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc3dpdGNoIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
blNob3dOb3RpZmljYXRpb25zKCkpIHsKKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNB
bGxvdzoKKyAgICBjYXNlIFNlY3VyaXR5T3JpZ2luOjpBbHdheXNEZW55OiB7CisgICAgICAgIG1f
Y2FsbGJhY2tzLmFkZChOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0
VGltZXIodGhpcywgY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNl
IFNlY3VyaXR5T3JpZ2luOjpBc2s6CisgICAgICAgIHJldHVybiBtX2NsaWVudC0+cmVxdWVzdFBl
cm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNzaW9u
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2spOworfQorI2VuZGlmCisKK3ZvaWQg
Tm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAg
ICByZXR1cm47CisgICAgbV9jbGllbnQtPmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fY2xpZW50LT5jbGVhck5vdGlmaWNhdGlvbnMo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0VGltZWRPdXQoTm90aWZpY2F0aW9uQ2VudGVyOjpO
b3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3QpCit7CisgICAgbV9jYWxsYmFja3Mu
cmVtb3ZlKHJlcXVlc3QpOworfQorCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90
aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlv
blJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcihOb3RpZmljYXRpb25DZW50ZXIq
IGNlbnRlciwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIFJlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gcmVxdWVz
dENhbGxiYWNrID0gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrKGNlbnRlciwgY2FsbGJhY2spKTsKKyAgICByZXF1ZXN0Q2FsbGJhY2st
PnN0YXJ0VGltZXIoKTsKKyAgICByZXR1cm4gcmVxdWVzdENhbGxiYWNrLnJlbGVhc2UoKTsKK30K
KworTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6Ok5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjayhOb3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIDogbV9ub3RpZmljYXRpb25DZW50ZXIo
Y2VudGVyKQorICAgICwgbV90aW1lcih0aGlzLCAmTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmlj
YXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRpbWVyRmlyZWQpCisgICAgLCBtX2NhbGxiYWNrKGNhbGxi
YWNrKQoreworfQorCit2b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVz
dENhbGxiYWNrOjpzdGFydFRpbWVyKCkKK3sKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
azo6dGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjaz4qKQoreworICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgbV9u
b3RpZmljYXRpb25DZW50ZXItPnJlcXVlc3RUaW1lZE91dCh0aGlzKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjZk
Njg5MDJmMzA1NzVjODA3YmEzYzIxMDIxZDk3MDUzN2E1MWViCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5o
CkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uQ2VudGVyX2gKKyNkZWZp
bmUgTm90aWZpY2F0aW9uQ2VudGVyX2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OworY2xhc3MgVm9pZENh
bGxiYWNrOworCitjbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxO
b3RpZmljYXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7CisKKyNpZiBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCisgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsK
KyAgICAgICAgaWYgKCFjbGllbnQoKSkgeworICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChVUkku
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChVUkkpLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGVjLCB0aGlzKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKKyAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIGlmICgh
Y2xpZW50KCkpIHsKKyAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpj
cmVhdGUodGl0bGUsIGJvZHksIGljb25VUkksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMs
IHRoaXMpOworICAgIH0KKyNlbmRpZgorCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKKyAgICB2b2lkIHJlcXVlc3RQZXJt
aXNzaW9uKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTm90aWZpY2F0aW9uQ2VudGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKKworICAgIGNs
YXNzIE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjaz4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBjcmVhdGVBbmRTdGFydFRpbWVy
KE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisgICAgICAg
IHZvaWQgc3RhcnRUaW1lcigpOworICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Tm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrPiopOworICAgIHByaXZhdGU6CisgICAgICAgIE5vdGlmaWNh
dGlvblJlcXVlc3RDYWxsYmFjayhOb3RpZmljYXRpb25DZW50ZXIqLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4pOworCisgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZp
Y2F0aW9uQ2VudGVyOworICAgICAgICBUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+
IG1fdGltZXI7CisgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAg
fTsKKworICAgIHZvaWQgcmVxdWVzdFRpbWVkT3V0KE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
ayopOworCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBIYXNoU2V0PFJl
ZlB0cjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+ID4gbV9jYWxsYmFja3M7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9u
Q2VudGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE5OWJhOWZmM2M0MDY1
MzJkOWQ3MzcxYjZiZTY4OWM1ZDhhZjFmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9TEVHQUNZX05PVElGSUNBVElPTlMsCisgICAgICAgIEFjdGl2ZURPTU9iamVj
dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBOb3RpZmljYXRpb25DZW50ZXIgewor
I2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkgfHwgIUVOQUJMRV9U
RVhUX05PVElGSUNBVElPTlNfT05MWQorICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNy
ZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisjZW5kaWYKKyAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVOb3RpZmlj
YXRpb24oaW4gRE9NU3RyaW5nIGljb25VcmwsIGluIERPTVN0cmluZyB0aXRsZSwgaW4gRE9NU3Ry
aW5nIGJvZHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgaW50IGNoZWNrUGVybWlz
c2lvbigpOworICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gVm9pZENh
bGxiYWNrIGNhbGxiYWNrKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWU5MjgzNmU1NjRjYWM5NmE5MGYzZjE1ZDljZDI5NmM1OWM0NWIwNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
bGllbnQuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uQ2xpZW50X2gK
KyNkZWZpbmUgTm90aWZpY2F0aW9uQ2xpZW50X2gKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1l
bnQ7CitjbGFzcyBLVVJMOworY2xhc3MgTm90aWZpY2F0aW9uOworY2xhc3MgUGFnZTsKK2NsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIE5vdGlmaWNhdGlvbkNsaWVudCB7CisK
K3B1YmxpYzoKKyAgICBlbnVtIFBlcm1pc3Npb24geworICAgICAgICBQZXJtaXNzaW9uQWxsb3dl
ZCwgLy8gVXNlciBoYXMgYWxsb3dlZCBub3RpZmljYXRpb25zCisgICAgICAgIFBlcm1pc3Npb25O
b3RBbGxvd2VkLCAvLyBVc2VyIGhhcyBub3QgeWV0IGFsbG93ZWQKKyAgICAgICAgUGVybWlzc2lv
bkRlbmllZCAvLyBVc2VyIGhhcyBleHBsaWNpdGx5IGRlbmllZCBwZXJtaXNzaW9uCisgICAgfTsK
KworICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCisgICAgdmly
dHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKikgPSAwOworCisgICAgLy8gUmVxdWVzdHMgdGhh
dCBhIG5vdGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmUgY2FuY2VsZWQu
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKSA9IDA7CisKKyAgICAvLyBX
aGVuIHRoZSB1c2VyIGNsb3NlcyBhIHBhZ2UsIG9yIHF1aXRzIHRoZSBjbGllbnQgYXBwbGljYXRp
b24sIGFsbCBvZiB0aGUgcGFnZSdzCisgICAgLy8gYXNzb2NpYXRlZCBub3RpZmljYXRpb25zIGFy
ZSBjbGVhcmVkLgorICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIHsgfQorICAgIAorICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0
aGF0IGEgTm90aWZpY2F0aW9uIG9iamVjdCBoYXMgYmVlbiBkZXN0cm95ZWQKKyAgICAvLyAoc3Vj
aCBhcyBieSBhIHBhZ2UgdHJhbnNpdGlvbikuIFRoZSBwcmVzZW50ZXIgbWF5IGNvbnRpbnVlIHNo
b3dpbmcKKyAgICAvLyB0aGUgbm90aWZpY2F0aW9uLCBidXQgbXVzdCBub3QgYXR0ZW1wdCB0byBj
YWxsIHRoZSBldmVudCBoYW5kbGVycy4KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2Jq
ZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopID0gMDsKKworICAgIC8vIEluZm9ybXMgdGhlIHBy
ZXNlbnRlciB0aGUgY29udHJvbGxlciBhdHRhY2hlZCB0byB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0
cm95ZWQuCisgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KSA9IDA7CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgLy8gUmVxdWVz
dHMgdXNlciBwZXJtaXNzaW9uIHRvIHNob3cgZGVza3RvcCBub3RpZmljYXRpb25zIGZyb20gYSBw
YXJ0aWN1bGFyCisgICAgLy8gc2NyaXB0IGNvbnRleHQuIFRoZSBjYWxsYmFjayBwYXJhbWV0ZXIg
c2hvdWxkIGJlIHJ1biB3aGVuIHRoZSB1c2VyIGhhcworICAgIC8vIG1hZGUgYSBkZWNpc2lvbi4K
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPikgPSAwOworI2VuZGlmCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
az4pID0gMDsKKyNlbmRpZgorCisgICAgLy8gQ2FuY2VsIGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0
cyBmb3IgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisKKyAg
ICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KKyAgICB2aXJ0dWFs
IFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSB7IH0KK307
CisKK3ZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJiZDliZjNjMjBk
NTI2YzlkNjMwN2Q5OGI5YzgxY2IyNTIwNzA1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApA
QCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25D
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK05vdGlmaWNhdGlvbkNvbnRyb2xsZXI6Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90
aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisK
K05vdGlmaWNhdGlvbkNvbnRyb2xsZXI6On5Ob3RpZmljYXRpb25Db250cm9sbGVyKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5ub3RpZmljYXRpb25Db250cm9sbGVy
RGVzdHJveWVkKCk7Cit9CisKK1Bhc3NPd25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gTm90
aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uQ29udHJvbGxlcihjbGllbnQp
KTsKK30KKworTm90aWZpY2F0aW9uQ2xpZW50KiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGll
bnRGcm9tKFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpKQorICAgICAgICBy
ZXR1cm4gY29udHJvbGxlci0+Y2xpZW50KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIk5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIiKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgcHJvdmlkZU5vdGlm
aWNhdGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKK3sKKyAgICBO
b3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKGNs
aWVudCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQxOTY4ZWQ0ZDE1ZTI3ZGQyYzQ2OWFjNjczNmQ0
MTBjNmMwMDNlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoK
KyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoK
KyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisqLworCisjaWZuZGVmIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKKworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb3RpZmlj
YXRpb25DbGllbnQ7CisKK2NsYXNzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgU3Vw
cGxlbWVudDxQYWdlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm90aWZpY2F0aW9uQ29u
dHJvbGxlcik7CitwdWJsaWM6CisgICAgfk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKKworICAg
IHN0YXRpYyBQYXNzT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IGNyZWF0ZShOb3RpZmlj
YXRpb25DbGllbnQqKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50
TmFtZSgpOworICAgIHN0YXRpYyBOb3RpZmljYXRpb25Db250cm9sbGVyKiBmcm9tKFBhZ2UqIHBh
Z2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQorICAgIHN0YXRpYyBO
b3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb20oUGFnZSopOworCisgICAgTm90aWZpY2F0aW9u
Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIAorcHJpdmF0ZToKKyAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyKE5vdGlmaWNhdGlvbkNsaWVudCopOworCisgICAgTm90
aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGU3MzJhN2Y5YTI5
OTlkMjZmMmI3OGRkYmEzZjYyOTAwOGJmNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrX2gKKyNkZWZpbmUgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gK
KworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfk5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVFdmVudChjb25zdCBTdHJpbmcmIHBlcm1pc3Npb24pID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjZW5kaWYg
Ly8gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYxMTE2MTJlMjQwY2VjYWExOWZi
NWVhNzFhYWNkN2QyNjA5M2MyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMsCisgICAgICAgIENhbGxiYWNr
CisgICAgXSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgeworICAgICAgICBib29sZWFu
IGhhbmRsZUV2ZW50KGluIERPTVN0cmluZyBwZXJtaXNzaW9uKTsKKyAgICB9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWVkYjk5MmNkMjJj
NGNjZmUxMTE1YmM4MzYzNzFlMTZjYzEwOTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgiCisKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zOjpXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250
ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoKQoreworfQor
CitXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6
OmZyb20oV29ya2VyQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBBdG9taWNTdHJpbmcgc3VwcGxl
bWVudE5hbWUgPSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMiOworICAgIFdvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpmcm9tKGNv
bnRleHQsIHN1cHBsZW1lbnROYW1lKSk7CisgICAgaWYgKCFzdXBwbGVtZW50KSB7CisgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoY29udGV4dCk7Cisg
ICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OnByb3ZpZGVUbyhjb250
ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOworICAgIH0KKyAgICBy
ZXR1cm4gc3VwcGxlbWVudDsKK30KKworTm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0KiBjb250ZXh0
KQoreworICAgIHJldHVybiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbShjb250ZXh0
KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOworfQorCitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKCkKK3sKKyAgICBpZiAo
IW1fbm90aWZpY2F0aW9uQ2VudGVyKQorICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jb250ZXh0LT50aHJlYWQoKS0+
Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkpOworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRl
ci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM1NGZjYTE4MDhiMmIxMDIyNTM2
ODE0OTQyZjA5M2YyMzVhZmZkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIFdvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zX2gKKyNkZWZpbmUgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaAorCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2lu
Y2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Tm90aWZpY2F0aW9uQ2VudGVyOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNz
IFdvcmtlckNvbnRleHQ7CisKK2NsYXNzIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zIDogcHVi
bGljIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4geworcHVibGljOgorICAgIHZp
cnR1YWwgfldvcmtlckNvbnRleHROb3RpZmljYXRpb25zKCk7CisKKyAgICBzdGF0aWMgTm90aWZp
Y2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqKTsKKyAgICBz
dGF0aWMgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqIGZyb20oV29ya2VyQ29udGV4dCopOwor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKFdvcmtl
ckNvbnRleHQqKTsKKworICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9u
cygpOworCisgICAgV29ya2VyQ29udGV4dCogbV9jb250ZXh0OworICAgIFJlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9uQ2VudGVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKKworI2VuZGlmIC8vIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25z
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjOTNi
YzJiM2ZjYjRmMWYzNjg0N2YwODA3OGY5YWZlMzM4ZDEwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworbW9kdWxlIHRocmVhZHMg
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xM
RUdBQ1lfTk9USUZJQ0FUSU9OUywKKyAgICAgICAgU3VwcGxlbWVudGFsPVdvcmtlckNvbnRleHQK
KyAgICBdIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zIHsKKyNpZiBkZWZpbmVkKEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25D
ZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKKyNlbmRpZgorICAgIH07CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IDU5ZDU4MTMyYjA1NWUzMzUyZGM4YzQ1MmZhNDIxMWVmNzIwZGFkNjcuLmZjMmUzNWZh
YTY2YmRmMjAyMGU4ZjdhNTU4Njg3NWVjMWY0YjJlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDI3LDYg
KzQyNywxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRl
clN5bmMuY3BwIFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcCBc
CiAgICAgTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCisg
ICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIFwKKyAg
ICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCisgICAgTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgXAorICAgIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmlj
YXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBcCiAgICAgY3NzL0NTU0FzcGVj
dFJhdGlvVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBc
CiAgICAgY3NzL0NTU0JvcmRlckltYWdlLmNwcCBcCkBAIC05OTksMTEgKzEwMDQsNiBAQCBTT1VS
Q0VTICs9IFwKICAgICBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIv
VGV4dFJlc291cmNlRGVjb2Rlci5jcHAgXAogICAgIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cCBcCi0gICAgbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCBcCi0gICAg
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKLSAgICBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
Y3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAgICAgcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHAgXApAQCAtMTU4Nyw2ICsxNTg3LDEzIEBAIEhFQURFUlMgKz0g
XAogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAogICAg
IE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25PcHRpb25zLmggXAogICAgIFwKKyAgICBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIFwKKyAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNsaWVudC5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udHJvbGxlci5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMuaCBcCisgICAgXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3RE
YXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaCBcCkBA
IC0yMTUxLDEyICsyMTU4LDYgQEAgSEVBREVSUyArPSBcCiAgICAgbWF0aG1sL01hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuaCBcCiAgICAgbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmggXAog
ICAgIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIFwKLSAgICBub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBc
Ci0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBcCi0gICAgbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmggXAotICAgIG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIFwKICAgICBwYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmggXAogICAgIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
aW5kZXggMjVhMzdkMzU2ZjRhOGQ0ZjFiODE1MGI2NjNmZGFkNjUxNTBjYTM1OS4uY2IwZTc2YTA1
MGEwNTcwZjZlYmRmZDJlMzc4Y2Q3NzEzYzdhZTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKQEAgLTU5LDYgKzU5LDcgQEAKICAgICAgICcuLi9Nb2R1bGVzL2ludGVu
dHMnLAogICAgICAgJy4uL01vZHVsZXMvaW5kZXhlZGRiJywKICAgICAgICcuLi9Nb2R1bGVzL21l
ZGlhc3RyZWFtJywKKyAgICAgICcuLi9Nb2R1bGVzL25vdGlmaWNhdGlvbnMnLAogICAgICAgJy4u
L01vZHVsZXMvcXVvdGEnLAogICAgICAgJy4uL01vZHVsZXMvc3BlZWNoJywKICAgICAgICcuLi9N
b2R1bGVzL3dlYmF1ZGlvJywKQEAgLTk1LDcgKzk2LDYgQEAKICAgICAgICcuLi9sb2FkZXIvY2Fj
aGUnLAogICAgICAgJy4uL2xvYWRlci9pY29uJywKICAgICAgICcuLi9tYXRobWwnLAotICAgICAg
Jy4uL25vdGlmaWNhdGlvbnMnLAogICAgICAgJy4uL3BhZ2UnLAogICAgICAgJy4uL3BhZ2UvYW5p
bWF0aW9uJywKICAgICAgICcuLi9wYWdlL2Nocm9taXVtJywKQEAgLTEwNDcsMTMgKzEwNDcsMTMg
QEAKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVzL2luZGV4ZWRkYicsCiAg
ICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxlcy9pbnRlbnRzJywKICAgICAgICAg
ICAgICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVzL21lZGlhc3RyZWFtJywKKyAgICAgICAgICAg
ICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVzL25vdGlmaWNhdGlvbnMnLAogICAgICAgICAgICAg
ICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvd2ViYXVkaW8nLAogICAgICAgICAgICAgICAnLS1p
bmNsdWRlJywgJy4uL01vZHVsZXMvd2ViZGF0YWJhc2UnLAogICAgICAgICAgICAgICAnLS1pbmNs
dWRlJywgJy4uL2NzcycsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vZG9tJywKICAg
ICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9maWxlYXBpJywKICAgICAgICAgICAgICAgJy0t
aW5jbHVkZScsICcuLi9odG1sJywKLSAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9ub3Rp
ZmljYXRpb25zJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9wYWdlJywKICAgICAg
ICAgICAgICAgJy0taW5jbHVkZScsICcuLi9wbHVnaW5zJywKICAgICAgICAgICAgICAgJy0taW5j
bHVkZScsICcuLi9zdG9yYWdlJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0Y2E4MzA4ODY3NDJiYTgz
MGZkMTdjMjE1ODBhY2MxMTBjNzI1MTkxLi4zODEzODA0Mzg3YTA2ZTNhYTIyNzMyZDcyMzNkMDg4
MzE5ZTM4MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMiw2ICsxMiwyMSBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uT3B0aW9ucy5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMRXJyb3IuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxSZXN1bHRTZXQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50Q2FsbGJhY2suaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvU2NyaXB0Q29udHJv
bGxlckJhc2UuaCcsCkBAIC0xOTksMjEgKzIxNCw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlQmFzZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VDbGllbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJh
cy5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2Uu
aCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oJywKLSAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oJywKLSAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmgnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudENhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oJywKLSAgICAgICAgICAgICdN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oJywKLSAgICAg
ICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oJywKLSAgICAgICAgICAg
ICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAn
cGFnZS9DaHJvbWUuaCcsCiAgICAgICAgICAgICAncGFnZS9DaHJvbWVDbGllbnQuaCcsCiAgICAg
ICAgICAgICAncGFnZS9Db25zb2xlLmgnLApAQCAtODQyLDYgKzg0MiwxMSBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRs
JywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL1dv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90
YS9ET01XaW5kb3dRdW90YS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvcXVvdGEvU3RvcmFn
ZUluZm8uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvRXJyb3JD
YWxsYmFjay5pZGwnLApAQCAtMTE0NiwxMSArMTE1MSw2IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGUuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0UHJv
ZmlsZU5vZGUuaWRsJywKICAgICAgICAgICAgICdsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGwnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5pZGwnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlk
bCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsJywK
LSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5pZGwnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsJywKICAgICAgICAgICAgICdwYWdlL0Fic3RyYWN0Vmlldy5pZGwnLAogICAgICAg
ICAgICAgJ3BhZ2UvQmFySW5mby5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvQ29uc29sZS5pZGwn
LApAQCAtMTU2OSw2ICsxNTY5LDE3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90
aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMv
V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90
YS9ET01XaW5kb3dRdW90YS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvcXVvdGEvRE9NV2lu
ZG93UXVvdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAn
LApAQCAtMzAwNCwxNyArMzAxNSw2IEBACiAgICAgICAgICAgICAnbWF0aG1sL01hdGhNTE1hdGhF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAnLAog
ICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oJywKLSAgICAgICAgICAgICdu
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwJywKLSAgICAgICAgICAgICdu
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCcsCi0gICAgICAgICAgICAnbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmgnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmNwcCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucy5oJywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uY3BwJywKICAgICAg
ICAgICAgICdwYWdlL0JhckluZm8uaCcsCiAgICAgICAgICAgICAncGFnZS9DaHJvbWUuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkKaW5kZXggMzdkMTMzMmZiN2Y4YWE5MGIzYzJlYTFkY2EzYzYxYmU5MWQ0ZTY3
Yy4uNGE5Y2IwZTBjNWM1ZDVmODUwMGI2YTljOGVjODAyZjJkYWNiZGI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cmkKQEAgLTIyLDYgKzIyLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9N
b2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL2dlb2xvY2F0aW9u
IFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9pbmRleGVkZGIgXAorICAgICQkU09VUkNFX0RJ
Ui9Nb2R1bGVzL25vdGlmaWNhdGlvbnMgXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVzL3F1b3Rh
IFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy93ZWJhdWRpbyBcCiAgICAgJCRTT1VSQ0VfRElS
L01vZHVsZXMvd2ViZGF0YWJhc2UgXApAQCAtNDksNyArNTAsNiBAQCBJTkNMVURFUEFUSCArPSBc
CiAgICAgJCRTT1VSQ0VfRElSL2xvYWRlci9jYWNoZSBcCiAgICAgJCRTT1VSQ0VfRElSL2xvYWRl
ci9pY29uIFwKICAgICAkJFNPVVJDRV9ESVIvbWF0aG1sIFwKLSAgICAkJFNPVVJDRV9ESVIvbm90
aWZpY2F0aW9ucyBcCiAgICAgJCRTT1VSQ0VfRElSL3BhZ2UgXAogICAgICQkU09VUkNFX0RJUi9w
YWdlL2FuaW1hdGlvbiBcCiAgICAgJCRTT1VSQ0VfRElSL3BhZ2UvcXQgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlM2Q3YjZjYzY4OTQ1MzUw
NjFjMGI4N2VjOGUzOTk3MmQxZjI4ZWQ4Li41NjZlZjE0NDIxNDdmM2Q2ZTg0MzQ1MzY3MThiZWNj
ODZiNGZiNjQ3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMjQ5NTksNiArMjQ5NTksNDYgQEAKIAkJCQk8L0ZpbGU+CiAJCQk8L0ZpbHRlcj4K
IAkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJub3RpZmljYXRpb25zIgorCQkJCT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xET01XaW5kb3dOb3RpZmljYXRpb25z
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uLmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0
aW9uc1xOb3RpZmljYXRpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DZW50
ZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNlbnRlci5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xu
b3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNsaWVudC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXFdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbm90aWZpY2F0aW9uc1xXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+
CisJCQk8RmlsdGVyCiAJCQkJTmFtZT0id2ViZGF0YWJhc2UiCiAJCQkJPgogCQkJCTxGaWxlCkBA
IC01NDc4NCw0NiArNTQ4MjQsNiBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRl
cgotCQkJTmFtZT0ibm90aWZpY2F0aW9ucyIKLQkJCT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIgotCQkJCT4K
LQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25z
XERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uY3BwIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRp
b25zXE5vdGlmaWNhdGlvbi5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNlbnRlci5jcHAiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlv
bnNcTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0J
CQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNh
dGlvbnNcV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxub3RpZmljYXRpb25zXFdvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQk8L0ZpbHRlcj4KLQkJPEZp
bHRlcgogCQkJTmFtZT0iZWRpdGluZyIKIAkJCT4KIAkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAppbmRl
eCBlZWJiY2YxZGJhYmFjYjcxYTZhN2IxOGVmNjdmYzgzMDIyZTdiNjQ3Li41YzcxYjAxNDI3MzU5
ZDBjNTI5MzUzOTY3YzdiODkwY2ZjYzA0NTA0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKQEAgLTM3LDcgKzM3
LDYgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGhpc3RvcnlcKi5oIiAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3IKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxoaXN0b3J5XGNmXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29y
ZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxodG1sXCouaCIgIiVDT05GSUdVUkFUSU9O
QlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxo
dG1sXHBhcnNlclwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
Ci14Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cbm90aWZpY2F0aW9uc1wqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5cY3NzXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIK
IHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVwqLmgiICIlQ09ORklHVVJBVElP
TkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5c
cGxhdGZvcm1cYW5pbWF0aW9uXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVc
V2ViQ29yZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzYjgzM2VmYTE3NDdmNThlN2E3ODIxM2U2N2M5YTE1ZTNhYjliYzlhLi4w
YTE1YjlhMjhkYTQ3NjUzMDZmOTcwYzk5YjVmN2YzZWZkMTliMzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODYzLDggKzc4
NjMsOCBAQAogCQkzMTI4OEU2RjBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1l
UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU3MDBFMzAwNUQ2MDAz
NjE5QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyODhFNzEwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tl
eWZyYW1lc1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTI4Q0E2NzE0
NzMzMTUyMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgcGF0
aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRp
b25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTI4Q0E2NzE0NzMzMTUyMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgcGF0aCA9IE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRDY3QjAxNTM1
NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMzEzRjYzMTQ0M0IzNUUwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzEzRjY0MTQ0M0IzNUUwMDZFMkE5
MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzkzMyw4ICs3OTMzLDggQEAKIAkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdl
YktpdFRyYW5zaXRpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzFDMEZGNDcwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRp
b25FdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGNDgwRTRDRUZE
RDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxRUMxRDUwMTRGRUZEMDgwMEM5NDY2
MiAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw7IHBhdGggPSBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxRUMxREFDMTRGRjI2RUEwMEM5NDY2MiAvKiBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUVDMUQ1MDE0RkVGRDA4
MDBDOTQ2NjIgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsOyBwYXRoID0g
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxRUMxREFDMTRGRjI2RUEwMEM5NDY2MiAv
KiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxRUMxRTI2MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxRUMxRTI3MTRGRjYwRUUwMEM5NDY2MiAvKiBKU05vdGlmaWNhdGlvblBlcm1pc3Np
b25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MUZCMUE0RjEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU1vdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzk1MSwxOCArNzk1MSwxOCBAQAogCQkzMUZFNkU2QzE1MDFB
M0JGMDAwNEVCQzQgLyogSlNOb3RpZmljYXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRp
b25CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0
aW9uQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzM0Y3MDRGMEZCNDlD
QTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTm90aWZpY2F0aW9uLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEg
LyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0g
Tm90aWZpY2F0aW9uQ2xpZW50Lmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4
RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmlj
YXRpb24uaWRsOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAv
KiBOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTm90aWZp
Y2F0aW9uLmg7IHBhdGggPU1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5v
dGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IE5vdGlm
aWNhdGlvbkNsaWVudC5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5RjEwMTc5QUQ3
MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTExMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90
aWZpY2F0aW9uQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDND
QTIxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uQ2VudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uQ2VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0JGMTAxNzlDMUEwMDNCNDdFMSAvKiBKU0Rlc2t0b3BO
b3RpZmljYXRpb25zQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMzUwM0NDNjEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5jcHA7IHBh
dGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMzOTBDQTUxMEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uQ2Vu
dGVyLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM5MENBNTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3Rp
ZmljYXRpb25DZW50ZXIuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzOTBDQTUzMEZGQzE1N0IwMDkyMTk2
MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlm
aWNhdGlvbkNlbnRlci5pZGw7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQ0M2MTAxN0ExQjEwMDNC
NDdFMSAvKiBOb3RpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTm90aWZpY2F0aW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzkwQ0E1MTBGRkMx
NTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHBhdGggPSBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzM5MENBNTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIu
aDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5v
dGlmaWNhdGlvbkNlbnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9u
Q2VudGVyLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzlCNUI2MjEzMURBQTMyMDBG
NDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvb2tpZXNTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0Mw
Q0NEMjExMkM1RTYyMDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY3VyZVRleHRJbnB1dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QzMTEyQzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0
SW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJlVGV4dElucHV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY3Nyw5ICsxMDY3Nyw5IEBACiAJ
CTk3QUFCRDEwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QUFCRDExMTRGQTA5RDUwMDc0
NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0FBQkQxMjE0RkEw
OUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0IzOEUyMzE1MUM0MjY0
MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDsgcGF0aCA9IG5v
dGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTk3QjM4RTI0MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmlj
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVdpbmRvd05vdGlm
aWNhdGlvbnMuaDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0IzOEUyNTE1MUM0MjY0MDA0NjIyRTkg
LyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5pZGw7IHBhdGggPSBub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0IzOEUyMzE1
MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDsgcGF0
aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCMzhFMjQxNTFDNDI2NDAwNDYyMkU5IC8qIERP
TVdpbmRvd05vdGlmaWNhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdC
MzhFMjUxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gTW9k
dWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3RE
YXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBYnN0cmFj
dERhdGFiYXNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ3MTUwNUYwNzYwMDFC
NzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFic3RyYWN0RGF0YWJhc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJh
Y3REYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlEODE1MDVG
MDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDc2Miw5ICsxMDc2Miw5IEBACiAJCTk3RTQwMjhEMTNBNjk2RUQw
MDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJY29uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3RTQwMjhFMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJY29uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJv
bGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
Q29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0Y4RTY2
MTE1MUQ0QTNGMDBEMkQxODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3RjhFNjYyMTUxRDRBM0YwMEQyRDE4
MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5N0Y4RTY2MzE1MUQ0QTNGMDBEMkQxODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmlkbDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0Y4RTY2MTE1MUQ0QTNGMDBEMkQx
ODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0g
TW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdGOEU2NjIxNTFENEEzRjAwRDJEMTgxIC8qIFdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTdGOEU2NjMxNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5pZGw7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5ODMxQUU0OTE1NDIy
NUEyMDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTg0MjY0RUYxMkQ1MjgwQTAwMEQ4OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5ODU2RjhDODE1NDlFODI0MDBCMDRGM0EgLyogUHJlcmVuZGVyZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJlcmVuZGVyZXIuY3Bw
OyBwYXRoID0gbG9hZGVyL1ByZXJlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwpAQCAtMTM5NDAsNyArMTM5NDAsNiBAQAogCQkJCTFDODFCOTREMEU5NzMyRDkwMDI2NkUw
NyAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRl
ciAqLywKIAkJCQlGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aG1sICovLAotCQkJCTMz
M0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBub3RpZmljYXRpb25zICovLAogCQkJCTY1QkYwMjE4
MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovLAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEy
MyAvKiBwbGF0Zm9ybSAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lu
cyAqLywKQEAgLTE3NDkwLDYgKzE3NDg5LDcgQEAKIAkJOTcxMTQ1RkUxNEVGMDA2RTAwNjc0RkQ5
IC8qIE1vZHVsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBub3RpZmljYXRpb25zICovLAogCQkJCTk3
MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKIAkJCQk5NzEyQTU1MzE1
MDA0RTNDMDA0OEFGMTAgLyogaW5kZXhlZGRiICovLAogCQkJCTg5RjYwQjA4MTU3RjY4MzUwMDc1
RTE1NyAvKiBxdW90YSAqLywKQEAgLTI4MTY3LDggKzI4MTY3LDcgQEAKIAkJCQkyRTQzNDY0ODBG
NTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzEyQTYxMTE1MDA5MENFMDA0OEFGMTAgLyogV29ya2VyQ29udGV4dEluZGV4ZWREYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0Y4RTY2NTE1MUQ0QTRCMDBEMkQxODEgLyogV29ya2Vy
Q29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThDQ0JCNEMxNTFG
ODMzQjAwQUI3Q0U5IC8qIFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBOENDQkI0QzE1MUY4MzNCMDBBQjdDRTkgLyogV29ya2Vy
Q29udGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLCBGMzQ3NDJFMDEzNDM2MzFGMDA1
MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0Uy
NjQzMDE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGMzZFMDdBNDEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTQzNDY0QzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxNzNlZTc1ZWJiZjI3MTVhNTliZGViYmY4NzljN2UyMDZm
ZWNhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01XaW5kb3dOb3RpZmlj
YXRpb25zLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3RpZmlj
YXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLURPTVdpbmRvd05vdGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9N
V2luZG93KiB3aW5kb3cpCi0gICAgOiBET01XaW5kb3dQcm9wZXJ0eSh3aW5kb3ctPmZyYW1lKCkp
Ci0gICAgLCBtX3dpbmRvdyh3aW5kb3cpCi17Ci19Ci0KLURPTVdpbmRvd05vdGlmaWNhdGlvbnM6
On5ET01XaW5kb3dOb3RpZmljYXRpb25zKCkKLXsKLX0KLQotRE9NV2luZG93Tm90aWZpY2F0aW9u
cyogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3VwcGxlbWVudE5hbWUsICgiRE9N
V2luZG93Tm90aWZpY2F0aW9ucyIpKTsKLSAgICBET01XaW5kb3dOb3RpZmljYXRpb25zKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Tm90aWZpY2F0aW9ucyo+KFN1cHBsZW1lbnQ8
RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgRE9NV2luZG93Tm90aWZpY2F0aW9u
cyh3aW5kb3cpOwotICAgICAgICBTdXBwbGVtZW50PERPTVdpbmRvdz46OnByb3ZpZGVUbyh3aW5k
b3csIHN1cHBsZW1lbnROYW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7Ci0gICAgfQotICAgIHJl
dHVybiBzdXBwbGVtZW50OwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoRE9NV2luZG93KiB3aW5kb3cpCi17Ci0gICAg
cmV0dXJuIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmZyb20od2luZG93KS0+d2Via2l0Tm90aWZp
Y2F0aW9ucygpOwotfQotCi12b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RG
cmFtZUZvclBhZ2VDYWNoZSgpCi17Ci0gICAgbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIg
PSBtX25vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNlKCk7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6
OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwotfQotCi12b2lkIERPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSogZnJhbWUpCi17Ci0g
ICAgRE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShmcmFtZSk7
Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBtX3N1c3BlbmRlZE5vdGlmaWNhdGlvbkNlbnRl
ci5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKLXsKLSAgICBtX3N1c3BlbmRlZE5vdGlmaWNh
dGlvbkNlbnRlciA9IG51bGxwdHI7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOwotfQotCi12b2lkIERPTVdpbmRvd05vdGlmaWNh
dGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCi17Ci0gICAgbV9ub3RpZmlj
YXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEluRnJhbWUoKTsKLX0KLQotdm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25z
Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKLXsKLSAgICBtX25vdGlmaWNhdGlv
bkNlbnRlciA9IG51bGxwdHI7Ci0gICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXRhY2hHbG9i
YWxPYmplY3RGcm9tRnJhbWUoKTsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dO
b3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKCkKLXsKLSAgICBpZiAoIW1fd2luZG93
LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXIpCi0gICAgICAgIHJldHVybiBtX25vdGlmaWNhdGlv
bkNlbnRlci5nZXQoKTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fd2luZG93LT5kb2N1
bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAg
IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBOb3RpZmljYXRpb25DbGllbnQqIHByb3ZpZGVyID0gTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwYWdlKTsKLSAgICBpZiAocHJvdmlkZXIpIAotICAg
ICAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKGRv
Y3VtZW50LCBwcm92aWRlcik7ICAgIAotCi0gICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVy
LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlMjZkZDYwMGIzN2RmZjBmOWQyMTIzMWEx
YmY2NjE5MTNkODZkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCi0jZGVmaW5l
IERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaAotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3Bl
cnR5LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTdXBwbGVtZW50
YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNz
IE5vdGlmaWNhdGlvbkNlbnRlcjsKLQotY2xhc3MgRE9NV2luZG93Tm90aWZpY2F0aW9ucyA6IHB1
YmxpYyBTdXBwbGVtZW50PERPTVdpbmRvdz4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpOwotCi0gICAgc3Rh
dGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhET01XaW5kb3cqKTsK
LSAgICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogZnJvbShET01XaW5kb3cqKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZyYW1lKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRG
cmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVj
dEluRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9i
amVjdEZyb21GcmFtZSgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVdp
bmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7Ci0KLSAgICBOb3RpZmljYXRpb25DZW50ZXIq
IHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIERPTVdpbmRvdyogbV93aW5kb3c7Ci0gICAg
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Ci0gICAgUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gRE9NV2lu
ZG93Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWE4YTEyOWM1N2ExZGM2ODY1YjE1NThjOWUzYzc0NjUzZDlkZjI5Ni4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgd2luZG93
IHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8
TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAg
ICBdIERPTVdpbmRvd05vdGlmaWNhdGlvbnMgewotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3
ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIE5vdGlmaWNh
dGlvbkNvbnN0cnVjdG9yIE5vdGlmaWNhdGlvbjsKLSNlbmRpZgotICAgIH07Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzQ4OTkyYWViMzMxZTk2OGQwYmQ3YmY0MjRhZGIwMTU1OThhZGRi
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVk
ZSAiTm90aWZpY2F0aW9uLmgiCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJE
T01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0jaW5jbHVkZSAiRGljdGlvbmFyeS5oIgotI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIKLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCi0j
aW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlICJXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0
b3IuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KDAs
IHRoaXMpCi17Ci19Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Ob3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gcHJvdmlkZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAg
ICAsIG1faXNIVE1MKHRydWUpCi0gICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX25vdGlmaWNh
dGlvbkNlbnRlcihwcm92aWRlcikKLXsKLSAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNo
ZWNrUGVybWlzc2lvbigpICE9IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQp
IHsKLSAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX25vdGlmaWNhdGlv
blVSTCA9IHVybDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNl
bnRlcj4gcHJvdmlkZXIpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAg
ICAsIG1faXNIVE1MKGZhbHNlKQotICAgICwgbV90aXRsZSh0aXRsZSkKLSAgICAsIG1fYm9keShi
b2R5KQotICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJv
dmlkZXIpCi17Ci0gICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24o
KSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAgICAgIGVj
ID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9pY29uID0g
aWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bXBsZXRlVVJMKGljb25VUkkpOwotICAgIGlmICghbV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29u
LmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0
aW9uOjpOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAg
ICwgbV9pc0hUTUwoZmFsc2UpCi0gICAgLCBtX3RpdGxlKHRpdGxlKQotICAgICwgbV9zdGF0ZShJ
ZGxlKQotICAgICwgbV90YXNrVGltZXIoYWRvcHRQdHIobmV3IFRpbWVyPE5vdGlmaWNhdGlvbj4o
dGhpcywgJk5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQpKSkKLXsKLSAgICBBU1NFUlQoY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pihjb250ZXh0KS0+ZG9tV2luZG93KCkpOwotICAgIAotICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
bkNlbnRlci0+Y2xpZW50KCkpOwotICAgIG1fdGFza1RpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19
Ci0jZW5kaWYKLQotTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCi17Ci19Ci0KLSNpZiBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1QYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90
aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IHByb3ZpZGVyKSAKLXsgCi0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
KGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7
Ci0gICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZp
Y2F0aW9uLnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNh
dGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29u
c3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAK
LXsgCi0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBO
b3RpZmljYXRpb24odGl0bGUsIGJvZHksIGljb25VUkksIGNvbnRleHQsIGVjLCBwcm92aWRlcikp
KTsKLSAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3Rp
ZmljYXRpb24ucmVsZWFzZSgpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLXN0YXRpYyB2b2lkIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudE5hbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBvcHRpb25zLmdldEV2ZW50TGlzdGVuZXIocHJvcGVydHksIG5vdGlm
aWNhdGlvbik7Ci0gICAgaWYgKGxpc3RlbmVyKQotICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lci5yZWxlYXNlKCksIGZhbHNlKTsKLX0KLQot
UGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMpCi17Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFk
b3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGV4dCwgdGl0bGUpKSk7Ci0gICAgU3RyaW5nIGFy
Z3VtZW50OwotICAgIGlmIChvcHRpb25zLmdldCgiYm9keSIsIGFyZ3VtZW50KSkKLSAgICAgICAg
bm90aWZpY2F0aW9uLT5zZXRCb2R5KGFyZ3VtZW50KTsKLSAgICBpZiAob3B0aW9ucy5nZXQoInRh
ZyIsIGFyZ3VtZW50KSkKLSAgICAgICAgbm90aWZpY2F0aW9uLT5zZXRUYWcoYXJndW1lbnQpOwot
ICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNob3dFdmVudCwgIm9uc2hv
dyIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0gICAgZ2V0QW5kQWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgIm9uY2xvc2UiLCBvcHRpb25zLCBub3RpZmlj
YXRpb24uZ2V0KCkpOwotICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQsICJvbmVycm9yIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBn
ZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAib25jbGljayIs
IG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0KLSAgICBub3RpZmljYXRpb24tPnN1c3Bl
bmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwotfQotI2Vu
ZGlmCi0KLWNvbnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck5vdGlmaWNhdGlv
bjsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKLXsKLSAgICAvLyBwcmV2ZW50IGRv
dWJsZS1zaG93aW5nCi0gICAgaWYgKG1fc3RhdGUgPT0gSWRsZSAmJiBtX25vdGlmaWNhdGlvbkNl
bnRlci0+Y2xpZW50KCkgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5zaG93KHRo
aXMpKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwotICAgICAgICBzZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQotewot
ICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgSWRsZToKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTaG93aW5nOgotICAgICAgICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVu
dCgpKQotICAgICAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5jYW5jZWwo
dGhpcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2xvc2VkOgotICAgICAgICBicmVhazsK
LSAgICB9Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTm90aWZpY2F0aW9uOjpldmVudFRhcmdldERh
dGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0
RGF0YSogTm90aWZpY2F0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpjb250ZXh0RGVz
dHJveWVkKCkKLXsKLSAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLSAg
ICBpZiAobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKQotICAgICAgICBtX25vdGlmaWNh
dGlvbkNlbnRlci0+Y2xpZW50KCktPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKLXsKLSAgICBpZiAobV9zdGF0ZSA9
PSBDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlID0gQ2xvc2VkOwotICAgIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hTaG93RXZlbnQoKQotewotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuc2hvd0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246
OmRpc3BhdGNoQ2xpY2tFdmVudCgpCi17Ci0gICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
IHdpbmRvd0ZvY3VzQWxsb3dlZDsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi12b2lkIE5vdGlmaWNh
dGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotICAgIGZpbmFs
aXplKCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQoKQotewot
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgTm90
aWZpY2F0aW9uOjp0YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+KiB0aW1lcikKLXsK
LSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnBhZ2UoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gbV90YXNrVGltZXIu
Z2V0KCkpOwotICAgIGlmIChOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpKS0+Y2xpZW50KCkt
PmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQpIHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2hvdygpOwotfQotI2VuZGlmCi0KLQot
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotY29uc3QgU3RyaW5nJiBOb3RpZmljYXRpb246OnBl
cm1pc3Npb25MZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIEFT
U0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOwotICAgIHJldHVybiBwZXJtaXNzaW9uU3RyaW5nKE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+cGFnZSgpKS0+Y2xpZW50KCktPmNoZWNrUGVybWlzc2lvbihjb250ZXh0KSk7Ci19Ci0KLWNv
bnN0IFN0cmluZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbiBwZXJtaXNzaW9uKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBhbGxvd2VkUGVybWlzc2lvbiwgKCJncmFudGVkIikpOwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkZW5pZWRQZXJtaXNzaW9uLCAoImRlbmllZCIp
KTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGVmYXVsdFBlcm1pc3Np
b24sICgiZGVmYXVsdCIpKTsKLSAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHsKLSAgICBjYXNlIE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkFsbG93ZWQ6Ci0gICAgICAgIHJldHVybiBhbGxv
d2VkUGVybWlzc2lvbjsKLSAgICBjYXNlIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRl
bmllZDoKLSAgICAgICAgcmV0dXJuIGRlbmllZFBlcm1pc3Npb247Ci0gICAgY2FzZSBOb3RpZmlj
YXRpb25DbGllbnQ6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOgotICAgICAgICByZXR1cm4gZGVmYXVs
dFBlcm1pc3Npb247Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBkZW5pZWRQZXJtaXNzaW9uOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVz
dFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNhbGxiYWNrKQotewotICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLT5wYWdlKCkpOwotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20oc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlcXVlc3RQ
ZXJtaXNzaW9uKGNvbnRleHQsIGNhbGxiYWNrKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZTkxMDA3M2IwMjZiZTYz
YzEyOWQxMjA0MjhkNjQwNTExMGQ5NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTm90aWZp
Y2F0aW9uX2ggIAotI2RlZmluZSBOb3RpZmljYXRpb25faAotCi0jaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKLSNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oPgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiVGltZXIu
aCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGljdGlvbmFyeTsK
LWNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKLWNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjazsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFRocmVhZGFibGVMb2FkZXI7Ci0K
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgTm90aWZpY2F0aW9uKCk7Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPiBwcm92aWRlcik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBT
dHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKLSNlbmRpZgotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKLSNlbmRpZgotICAgIAotICAgIHZpcnR1YWwgfk5vdGlm
aWNhdGlvbigpOwotCi0gICAgdm9pZCBzaG93KCk7Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQotICAgIHZvaWQgY2FuY2VsKCkgeyBjbG9zZSgpOyB9Ci0jZW5kaWYKLSAgICB2b2lk
IGNsb3NlKCk7Ci0KLSAgICBib29sIGlzSFRNTCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIVE1MOyB9
Ci0gICAgdm9pZCBzZXRIVE1MKGJvb2wgaXNIVE1MKSB7IG1faXNIVE1MID0gaXNIVE1MOyB9Ci0g
ICAgCi0gICAgS1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblVSTDsgfQot
ICAgIHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJMID0gdXJsOyB9Ci0g
ICAgCi0gICAgS1VSTCBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9Ci0KLSAgICBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9Ci0gICAgU3RyaW5nIGJvZHko
KSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KLQotICAgIFN0cmluZyBkaXIoKSBjb25zdCB7IHJl
dHVybiBtX2RpcmVjdGlvbjsgfQotICAgIHZvaWQgc2V0RGlyKGNvbnN0IFN0cmluZyYgZGlyKSB7
IG1fZGlyZWN0aW9uID0gZGlyOyB9Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
Ci0gICAgU3RyaW5nIHJlcGxhY2VJZCgpIGNvbnN0IHsgcmV0dXJuIHRhZygpOyB9Ci0gICAgdm9p
ZCBzZXRSZXBsYWNlSWQoY29uc3QgU3RyaW5nJiByZXBsYWNlSWQpIHsgc2V0VGFnKHJlcGxhY2VJ
ZCk7IH0KLSNlbmRpZgotCi0gICAgU3RyaW5nIHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9
Ci0gICAgdm9pZCBzZXRUYWcoY29uc3QgU3RyaW5nJiB0YWcpIHsgbV90YWcgPSB0YWc7IH0KLQot
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyKCkgPT0gInJ0
bCIgPyBSVEwgOiBMVFI7IH0KLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
c2hvdyk7Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoZGlzcGxheSk7Ci0jZW5kaWYKLSAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNsb3NlKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNr
KTsKLSAgICAKLSAgICB2b2lkIGRpc3BhdGNoQ2xpY2tFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0
Y2hDbG9zZUV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKTsKLSAgICB2b2lk
IGRpc3BhdGNoU2hvd0V2ZW50KCk7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bj46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOwotCi0g
ICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCi0gICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0IGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0KLSAg
ICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOwotCi0gICAgLy8gRGVwcmVjYXRlZC4gVXNlIGZ1bmN0
aW9ucyBmcm9tIE5vdGlmaWNhdGlvbkNlbnRlci4KLSAgICB2b2lkIGRldGFjaFByZXNlbnRlcigp
IHsgfQotCi0gICAgdm9pZCBmaW5hbGl6ZSgpOwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGVybWlzc2lvbkxldmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwZXJtaXNzaW9uU3RyaW5nKE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbik7Ci0gICAgc3RhdGljIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrPik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi0gICAgTm90aWZpY2F0aW9uKGNvbnN0IEtVUkwmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPik7Ci0gICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPik7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwotI2VuZGlmCi0KLSAgICB2b2lk
IHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KLQotICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7Ci0KLSAg
ICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmdJY29uKCk7
Ci0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRp
bWVyPE5vdGlmaWNhdGlvbj4qKTsKLSNlbmRpZgotICAgIAotICAgIGJvb2wgbV9pc0hUTUw7Ci0K
LSAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX2ljb247Ci0gICAgU3RyaW5n
IG1fdGl0bGU7Ci0gICAgU3RyaW5nIG1fYm9keTsKLSAgICAvLyBGSVhNRTogRGVwcmVjYXRlIEhU
TUwgTm90aWZpY2F0aW9ucy4KLSAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJMOwotCi0gICAgU3Ry
aW5nIG1fZGlyZWN0aW9uOwotICAgIFN0cmluZyBtX3RhZzsKLQotICAgIGVudW0gTm90aWZpY2F0
aW9uU3RhdGUgewotICAgICAgICBJZGxlID0gMCwKLSAgICAgICAgU2hvd2luZyA9IDEsCi0gICAg
ICAgIENsb3NlZCA9IDIsCi0gICAgfTsKLQotICAgIE5vdGlmaWNhdGlvblN0YXRlIG1fc3RhdGU7
Ci0KLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsK
LSAgICAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0KLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSAgICBPd25QdHI8VGltZXI8Tm90aWZpY2F0aW9uPiA+IG1fdGFz
a1RpbWVyOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQot
Ci0jZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMmVi
N2YyNDVmOWY1NmM2ZWIzYjc1NWE4ZDY2NjVkY2I0YmUzM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUg
dGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1OT1RJRklD
QVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0g
ICAgICAgIEV2ZW50VGFyZ2V0LAotI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYm
IEVOQUJMRV9OT1RJRklDQVRJT05TCi0gICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB0
aXRsZSwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25z
KSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKLSNlbHNlCi0gICAg
ICAgIE9taXRDb25zdHJ1Y3RvcgotI2VuZGlmCi0gICAgXSBOb3RpZmljYXRpb24gewotICAgICAg
ICB2b2lkIHNob3coKTsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0j
ZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJ
Q0FUSU9OUwotICAgICAgICB2b2lkIGNsb3NlKCk7Ci0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChF
TkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRpYyBET01TdHJpbmcgcGVybWlzc2lv
bkxldmVsKCk7Ci0gICAgICAgIFtDdXN0b21dIHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KGluIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayBjYWxsYmFjayk7Ci0jZW5kaWYKLQot
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNob3c7Ci0jaWYgZGVmaW5lZChFTkFC
TEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwot
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRpc3BsYXk7Ci0jZW5kaWYKLSAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25jbG9zZTsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25j
bGljazsKLQotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRpcjsKLSNpZiBkZWZpbmVkKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
Ci0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcmVwbGFjZUlkOwotI2VuZGlmCi0jaWYgZGVm
aW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyB0YWc7Ci0jZW5kaWYKLQotICAgICAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKLSAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIg
bGlzdGVuZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0
Y2hFdmVudChpbiBFdmVudCBldnQpCi0gICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24p
OwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYjU0
NzQwMDk1ZTU2YmZmNjcwODJjYWRlZmYxZmYzYjZjNTg2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0KLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3Rp
ZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBO
b3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBub3RpZmljYXRpb25DZW50ZXIoYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihj
b250ZXh0LCBjbGllbnQpKSk7Ci0gICAgbm90aWZpY2F0aW9uQ2VudGVyLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKLX0KLQotTm90
aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi0gICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKLXsKLX0KLQotI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLWludCBOb3RpZmljYXRpb25DZW50ZXI6OmNo
ZWNrUGVybWlzc2lvbigpCi17Ci0gICAgaWYgKCFjbGllbnQoKSB8fCAhc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQotICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
RGVuaWVkOwotCi0gICAgc3dpdGNoIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhblNob3dOb3RpZmljYXRpb25zKCkpIHsKLSAgICBjYXNlIFNlY3VyaXR5T3Jp
Z2luOjpBbHdheXNBbGxvdzoKLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbkFsbG93ZWQ7Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzRGVueToKLSAg
ICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDsKLSAgICBj
YXNlIFNlY3VyaXR5T3JpZ2luOjpBc2s6Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC0+Y2hlY2tQ
ZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIWNsaWVudCgp
IHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3
aXRjaCAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5TaG93
Tm90aWZpY2F0aW9ucygpKSB7Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzQWxsb3c6
Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzRGVueTogewotICAgICAgICBtX2NhbGxi
YWNrcy5hZGQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVy
KHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBTZWN1
cml0eU9yaWdpbjo6QXNrOgotICAgICAgICByZXR1cm4gbV9jbGllbnQtPnJlcXVlc3RQZXJtaXNz
aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2spOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrKTsKLX0KLSNlbmRpZgotCi12b2lkIE5vdGlm
aWNhdGlvbkNlbnRlcjo6c3RvcCgpCi17Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fY2xpZW50LT5jYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKLSAgICBtX2NsaWVudC0+Y2xlYXJOb3RpZmljYXRpb25zKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jbGllbnQgPSAwOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvbkNlbnRlcjo6cmVxdWVzdFRpbWVkT3V0KE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0KQotewotICAgIG1fY2FsbGJhY2tzLnJlbW92
ZShyZXF1ZXN0KTsKLX0KLQotUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNh
dGlvblJlcXVlc3RDYWxsYmFjaz4gTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s6OmNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50
ZXIsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKLXsKLSAgICBSZWZQdHI8Tm90
aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IHJlcXVlc3RDYWxs
YmFjayA9IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjayhjZW50ZXIsIGNhbGxiYWNrKSk7Ci0gICAgcmVxdWVzdENhbGxiYWNrLT5zdGFy
dFRpbWVyKCk7Ci0gICAgcmV0dXJuIHJlcXVlc3RDYWxsYmFjay5yZWxlYXNlKCk7Ci19Ci0KLU5v
dGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpOb3RpZmljYXRp
b25SZXF1ZXN0Q2FsbGJhY2soTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIsIFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKLSAgICA6IG1fbm90aWZpY2F0aW9uQ2VudGVyKGNlbnRl
cikKLSAgICAsIG1fdGltZXIodGhpcywgJk5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrOjp0aW1lckZpcmVkKQotICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykK
LXsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxs
YmFjazo6c3RhcnRUaW1lcigpCi17Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnRp
bWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2Fs
bGJhY2s+KikKLXsKLSAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOwotICAgIG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y2ZDY4
OTAyZjMwNTc1YzgwN2JhM2MyMTAyMWQ5NzA1MzdhNTFlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAotI2RlZmluZSBOb3RpZmljYXRpb25DZW50ZXJfaAot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgot
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgot
I2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBO
b3RpZmljYXRpb25DbGllbnQ7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIE5vdGlmaWNh
dGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRp
b25DbGllbnQqKTsKLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAoIWNsaWVudCgpKSB7
Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFVSSS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMpOwot
ICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIFBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBp
Y29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgaWYgKCFjbGllbnQoKSkgewotICAgICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVS
SSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
OyB9Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgaW50IGNoZWNrUGVy
bWlzc2lvbigpOwotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+KTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQot
cHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi0gICAgY2xhc3MgTm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s+IGNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0aW9uQ2VudGVyKiwgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICAgICAgdm9pZCBzdGFydFRpbWVyKCk7Ci0gICAg
ICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+Kik7
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKE5vdGlm
aWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0KLSAgICAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Ci0gICAgICAgIFRp
bWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gbV90aW1lcjsKLSAgICAgICAgUmVmUHRy
PFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKLSAgICB9OwotCi0gICAgdm9pZCByZXF1ZXN0VGlt
ZWRPdXQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKik7Ci0KLSAgICBOb3RpZmljYXRpb25D
bGllbnQqIG1fY2xpZW50OwotICAgIEhhc2hTZXQ8UmVmUHRyPE5vdGlmaWNhdGlvblJlcXVlc3RD
YWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYTk5YmE5ZmYzYzQwNjUzMmQ5ZDczNzFiNmJlNjg5YzVkOGFm
MWZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNl
IFsKLSAgICAgICAgQ29uZGl0aW9uYWw9TEVHQUNZX05PVElGSUNBVElPTlMsCi0gICAgICAgIEFj
dGl2ZURPTU9iamVjdCwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yCi0gICAgXSBOb3RpZmljYXRp
b25DZW50ZXIgewotI2lmICFkZWZpbmVkKEVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWSkg
fHwgIUVOQUJMRV9URVhUX05PVElGSUNBVElPTlNfT05MWQotICAgICAgIFtWOEN1c3RvbV0gTm90
aWZpY2F0aW9uIGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIHVybCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKLSAgICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBj
cmVhdGVOb3RpZmljYXRpb24oaW4gRE9NU3RyaW5nIGljb25VcmwsIGluIERPTVN0cmluZyB0aXRs
ZSwgaW4gRE9NU3RyaW5nIGJvZHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgICAgaW50
IGNoZWNrUGVybWlzc2lvbigpOwotICAgICAgIFtDdXN0b21dIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oaW4gVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWU5MjgzNmU1NjRjYWM5NmE5MGYzZjE1ZDljZDI5NmM1OWM0NWIw
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCisrKyAvZGV2L251bGwK
QEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbkNsaWVudF9oCi0jZGVmaW5l
IE5vdGlmaWNhdGlvbkNsaWVudF9oCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3VtZW50OwotY2xh
c3MgS1VSTDsKLWNsYXNzIE5vdGlmaWNhdGlvbjsKLWNsYXNzIFBhZ2U7Ci1jbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotCi1jbGFzcyBOb3RpZmljYXRpb25DbGllbnQgewotCi1wdWJsaWM6
Ci0gICAgZW51bSBQZXJtaXNzaW9uIHsKLSAgICAgICAgUGVybWlzc2lvbkFsbG93ZWQsIC8vIFVz
ZXIgaGFzIGFsbG93ZWQgbm90aWZpY2F0aW9ucwotICAgICAgICBQZXJtaXNzaW9uTm90QWxsb3dl
ZCwgLy8gVXNlciBoYXMgbm90IHlldCBhbGxvd2VkCi0gICAgICAgIFBlcm1pc3Npb25EZW5pZWQg
Ly8gVXNlciBoYXMgZXhwbGljaXRseSBkZW5pZWQgcGVybWlzc2lvbgotICAgIH07Ci0KLSAgICAv
LyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9v
bCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsKLQotICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3Rp
ZmljYXRpb24gdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHNob3duIGJlIGNhbmNlbGVkLgotICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uKikgPSAwOwotCi0gICAgLy8gV2hlbiB0aGUg
dXNlciBjbG9zZXMgYSBwYWdlLCBvciBxdWl0cyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uLCBhbGwg
b2YgdGhlIHBhZ2UncwotICAgIC8vIGFzc29jaWF0ZWQgbm90aWZpY2F0aW9ucyBhcmUgY2xlYXJl
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSB7IH0KLSAgICAKLSAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhhdCBhIE5v
dGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVkCi0gICAgLy8gKHN1Y2ggYXMgYnkg
YSBwYWdlIHRyYW5zaXRpb24pLiBUaGUgcHJlc2VudGVyIG1heSBjb250aW51ZSBzaG93aW5nCi0g
ICAgLy8gdGhlIG5vdGlmaWNhdGlvbiwgYnV0IG11c3Qgbm90IGF0dGVtcHQgdG8gY2FsbCB0aGUg
ZXZlbnQgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ry
b3llZChOb3RpZmljYXRpb24qKSA9IDA7Ci0KLSAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIg
dGhlIGNvbnRyb2xsZXIgYXR0YWNoZWQgdG8gdGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgot
ICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwot
Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIC8vIFJlcXVlc3RzIHVzZXIg
cGVybWlzc2lvbiB0byBzaG93IGRlc2t0b3Agbm90aWZpY2F0aW9ucyBmcm9tIGEgcGFydGljdWxh
cgotICAgIC8vIHNjcmlwdCBjb250ZXh0LiBUaGUgY2FsbGJhY2sgcGFyYW1ldGVyIHNob3VsZCBi
ZSBydW4gd2hlbiB0aGUgdXNlciBoYXMKLSAgICAvLyBtYWRlIGEgZGVjaXNpb24uCi0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4pID0gMDsKLSNlbmRpZgotI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KSA9IDA7
Ci0jZW5kaWYKLQotICAgIC8vIENhbmNlbCBhbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgZm9yIHRo
ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3Rz
Rm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOwotCi0gICAgLy8gQ2hl
Y2tzIHRoZSBjdXJyZW50IGxldmVsIG9mIHBlcm1pc3Npb24uCi0gICAgdmlydHVhbCBQZXJtaXNz
aW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uQ2xpZW50KCkgeyB9Ci19OwotCi12b2lk
IHByb3ZpZGVOb3RpZmljYXRpb24oUGFnZSosIE5vdGlmaWNhdGlvbkNsaWVudCopOwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25DbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliYmQ5YmYzYzIwZDUyNmM5
ZDYzMDdkOThiOWM4MWNiMjUyMDcwNTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
b250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgot
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLSAg
ICA6IG1fY2xpZW50KGNsaWVudCkKLXsKLX0KLQotTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6fk5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIoKQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9j
bGllbnQtPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKLX0KLQotUGFzc093blB0
cjxOb3RpZmljYXRpb25Db250cm9sbGVyPiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUo
Tm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBO
b3RpZmljYXRpb25Db250cm9sbGVyKGNsaWVudCkpOwotfQotCi1Ob3RpZmljYXRpb25DbGllbnQq
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20oUGFnZSogcGFnZSkKLXsKLSAgICBp
ZiAoTm90aWZpY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IE5vdGlmaWNhdGlvbkNvbnRy
b2xsZXI6OmZyb20ocGFnZSkpCi0gICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jbGllbnQoKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb25Db250
cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG5hbWUsICgiTm90aWZpY2F0aW9uQ29udHJvbGxlciIpKTsKLSAgICByZXR1cm4g
bmFtZTsKLX0KLQotdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KQotewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoY2xpZW50KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmZDE5NjhlZDRkMTVlMjdkZDJjNDY5YWM2NzM2ZDQxMGM2YzAwM2U1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAs
MCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0qLwotCi0jaWZuZGVm
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAotI2RlZmluZSBOb3RpZmljYXRpb25Db250cm9sbGVy
X2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCi0KLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBOb3RpZmljYXRpb25DbGllbnQ7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgOiBw
dWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm90aWZp
Y2F0aW9uQ29udHJvbGxlcik7Ci1wdWJsaWM6Ci0gICAgfk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIo
KTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IGNyZWF0
ZShOb3RpZmljYXRpb25DbGllbnQqKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
dXBwbGVtZW50TmFtZSgpOwotICAgIHN0YXRpYyBOb3RpZmljYXRpb25Db250cm9sbGVyKiBmcm9t
KFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIq
PihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQotICAg
IHN0YXRpYyBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb20oUGFnZSopOwotCi0gICAgTm90
aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIAotcHJp
dmF0ZToKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKE5vdGlmaWNhdGlvbkNsaWVudCopOwot
Ci0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCi0KLSNlbmRpZiAvLyBOb3RpZmljYXRpb25Db250cm9sbGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NGU3MzJhN2Y5YTI5OTlkMjZmMmI3OGRkYmEzZjYyOTAwOGJmNmY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
a19oCi0jZGVmaW5lIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFja19oCi0KLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29u
c3QgU3RyaW5nJiBwZXJtaXNzaW9uKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLQotI2VuZGlmIC8vIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25DYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMTExNjEyZTI0MGNlY2FhMTlmYjVlYTcxYWFj
ZDdkMjYwOTNjMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxl
IHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OUywKLSAgICAgICAgQ2FsbGJhY2sKLSAgICBdIE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRE9NU3RyaW5nIHBlcm1p
c3Npb24pOwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGVlZWRiOTkyY2QyMmM0Y2NmZTExMTViYzgzNjM3MWUxNmNjMTA5NjAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgiCi0KLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0j
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zOjpXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhXb3Jr
ZXJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi17Ci19Ci0KLVdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoKQot
ewotfQotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnM6OmZyb20oV29ya2VyQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBBdG9taWNTdHJpbmcg
c3VwcGxlbWVudE5hbWUgPSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMiOwotICAgIFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+Ojpm
cm9tKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKSk7Ci0gICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoY29udGV4
dCk7Ci0gICAgICAgIFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OnByb3ZpZGVU
byhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOwotICAgIH0K
LSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotTm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0KiBj
b250ZXh0KQotewotICAgIHJldHVybiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbShj
b250ZXh0KS0+d2Via2l0Tm90aWZpY2F0aW9ucygpOwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXIq
IFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKCkKLXsKLSAg
ICBpZiAoIW1fbm90aWZpY2F0aW9uQ2VudGVyKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNlbnRl
ciA9IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jb250ZXh0LT50aHJl
YWQoKS0+Z2V0Tm90aWZpY2F0aW9uQ2xpZW50KCkpOwotICAgIHJldHVybiBtX25vdGlmaWNhdGlv
bkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1NGZjYTE4MDhi
MmIxMDIyNTM2ODE0OTQyZjA5M2YyMzVhZmZkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCi0jZGVm
aW5lIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zX2gKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJTdXBwbGVt
ZW50YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlcjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJDb250ZXh0
OwotCi1jbGFzcyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucygpOwotCi0gICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciog
d2Via2l0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0gICAgc3RhdGljIFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zKiBmcm9tKFdvcmtlckNvbnRleHQqKTsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhXb3JrZXJDb250ZXh0Kik7Ci0K
LSAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIFdv
cmtlckNvbnRleHQqIG1fY29udGV4dDsKLSAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBt
X25vdGlmaWNhdGlvbkNlbnRlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCi0KLSNlbmRpZiAvLyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzkzYmMyYjNmY2I0ZjFm
MzY4NDdmMDgwNzhmOWFmZTMzOGQxMDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoK
LSAqLwotCi1tb2R1bGUgdGhyZWFkcyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25k
aXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBTdXBw
bGVtZW50YWw9V29ya2VyQ29udGV4dAotICAgIF0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMg
ewotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJraXROb3RpZmljYXRpb25zOwotI2VuZGlm
Ci0gICAgfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150747</attachid>
            <date>2012-07-04 02:42:00 -0700</date>
            <delta_ts>2012-07-04 23:02:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82121-20120704184200.patch</filename>
            <type>text/plain</type>
            <size>192579</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNmODc5NTIwYWE0Y2Q5
NGEzZjBlNjczMmZiMDRiYzliNjY4NzM2ZS4uZDIxNDk5ZTViZTAxZTk4ODRhZjE2MTRiOWJiMTc2
ZTZkOTlmMjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxMi0wNy0wNCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5vdGlmaWNh
dGlvbnMgc2hvdWxkIGJlIGluIE1vZHVsZXMvbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxMjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbm90aWZpY2F0aW9ucyBkaXJlY3Rv
cnkgaXMgbm93IHNlbGYtY29udGFpbmVkLiBUaGlzIHBhdGNoIG1vdmVzIGl0IHRvIHRoZSBNb2R1
bGVzIGRpcmVjdG9yeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd05v
dGlmaWNhdGlvbnM6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Tm90aWZpY2F0aW9uczo6fkRPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Tm90aWZpY2F0aW9uczo6ZnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmRpc2Nvbm5lY3RGcmFtZUZvclBh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNv
bm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Tm90
aWZpY2F0aW9uczo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dOb3RpZmljYXRpb25zOjp3
aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKERPTVdpbmRvd05vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5p
ZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRBbmRBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmRpc3BhdGNoU2hvd0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlz
cGF0Y2hDbGlja0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hF
cnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uTGV2ZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmlzSFRNTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnNldEhUTUwpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
ZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppY29uVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uOjpib2R5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0RGlyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6cmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6c2V0UmVwbGFjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6dGFn
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c2V0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246OmRldGFjaFByZXNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b246OnNldEJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpyZWZFdmVudFRh
cmdldCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRlcmVmRXZlbnRUYXJnZXQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6
Ok5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNl
bnRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVl
c3RUaW1lZE91dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6
Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpzdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChO
b3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVy
OjpjcmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNlbnRlcjo6Y3JlYXRlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Y2xpZW50KToKKyAgICAgICAgKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5p
ZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm90aWZpY2F0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6fk5v
dGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjp+Tm90
aWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250
cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6Y2xpZW50RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6On5Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnM6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjp+V29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6
OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6Ondl
YmtpdE5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaWRsLgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXAv
V2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0wNy0wNCAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEyMTgxMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzUwZWI2ZjU5OGM3ZjVhZmY5OTZj
YmYwOWM3MWYyZDlmNzRmNTRkZC4uOWE0ZGFlOGFjZWJlMGY0YjZiYmY1ZGJhYzYwYzhmNmQ4M2U2
OWExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQsNiArNCw3IEBAIFNFVChXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2NhdGlv
biIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbmRleGVkZGIiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvaW50ZW50cyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3Rp
ZmljYXRpb25zIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3F1b3RhIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3dlYmF1ZGlvIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L3dlYmRhdGFiYXNlIgpAQCAtMzIsNyArMzMsNiBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9jYWNoZSIKICAgICAiJHtXRUJDT1JF
X0RJUn0vbG9hZGVyL2ljb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L21hdGhtbCIKLSAgICAiJHtX
RUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bh
Z2Uvc2Nyb2xsaW5nIgpAQCAtMTcxNiwxOSArMTcxNiwxOSBAQCBFTkRJRiAoKQogCiBJRiAoRU5B
QkxFX05PVElGSUNBVElPTlMpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAg
ICAgIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKLSAgICAgICAgbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuY3BwCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmNwcAorICAgICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKyAg
ICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNw
cAogICAgICkKIAogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCi0gICAgICAgIG5v
dGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKLSAgICAgICAgbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaWRsCi0gICAgICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmlkbAotICAgICAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwKLSAgICAgICAgbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5pZGwKKyAgICAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
CisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsCisg
ICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsCisgICAgICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5pZGwKICAgICApCiBFTkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCAwM2Y0MDA0ZmE4YmYxYTVlMWYzMmM0Y2U5OGQ2ZmFlMDQwOWM0YTY3Li43YThjMjg3
MmQ5ODEzN2I3N2U4ZDFkMGZlNjAyZTE3MjUzYWQwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTMxLDYgKzMxLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0
YWJhc2UgXApAQCAtNDgsNyArNDksNiBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
dHJhY2sgXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRl
ci9hcHBjYWNoZSBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zIFwKICAgICAkKFdlYkNv
cmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9y
YWdlIFwKQEAgLTEwNSw2ICsxMDUsMTEgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dEluZGV4ZWREYXRh
YmFzZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTM5NCwx
MSArMzk5LDYgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaW5zcGVjdG9yL1Nj
cmlwdFByb2ZpbGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxl
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuaWRsIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5pZGwgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aWRsIFwKLSAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0
Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFnZS9BYnN0cmFjdFZpZXcuaWRs
IFwKICAgICAkKFdlYkNvcmUpL3BhZ2UvQmFySW5mby5pZGwgXAogICAgICQoV2ViQ29yZSkvcGFn
ZS9Db25zb2xlLmlkbCBcCkBAIC05NDIsOCArOTQyLDggQEAgSURMX0lOQ0xVREVTID0gXAogICAg
ICQoV2ViQ29yZSkvZmlsZWFwaSBcCiAgICAgJChXZWJDb3JlKS9odG1sIFwKICAgICAkKFdlYkNv
cmUpL2NzcyBcCi0gICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL25vdGlmaWNh
dGlvbnMgXAorICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS94bWwgXAogICAg
ICQoV2ViQ29yZSkvc3ZnCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCBlOTBiOTJk
NzA2MGU2MjJmODMxZDExOTIwNGVjMjNhNWMzNTQyMjRjLi5jNmRjODBkYzA2NGNmZWFlNzhkMzdl
ZjQxZmE3ZmUxYzhlNWU2MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0xMjgs
NiArMTI4LDExIEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dElu
ZGV4ZWREYXRhYmFzZS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01X
aW5kb3dOb3RpZmljYXRpb25zLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCBcCiAgICAgJCRQV0QvTW9k
dWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUluZm8uaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvRXJy
b3JDYWxsYmFjay5pZGwgXApAQCAtNDAzLDExICs0MDgsNiBAQCBJRExfQklORElOR1MgKz0gXAog
ICAgICQkUFdEL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAgICAgJCRQV0QvaW5zcGVj
dG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCBcCiAgICAgJCRQV0QvbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL0RPTVdpbmRv
d05vdGlmaWNhdGlvbnMuaWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5pZGwgXAotICAgICQkUFdEL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBc
Ci0gICAgJCRQV0Qvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aWRsIFwKLSAgICAkJFBXRC9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmlkbCBcCiAgICAgJCRQV0QvcGFnZS9CYXJJbmZvLmlkbCBcCiAgICAgJCRQV0QvcGFnZS9Db25z
b2xlLmlkbCBcCiAgICAgJCRQV0QvcGFnZS9Db29yZGluYXRlcy5pZGwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCBlYWUwYTcxM2IyM2U3NTc0OGMyMmJiYzU1YzM5NDZhMDU3OTE4OWY0Li41ZGRj
M2RhOGI5ZTU3MzUxZWJiZDE0NjU2MDE5MjBjMWI4NjI5MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMTYsNiArMTYsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMgXApAQCAt
NDYsNyArNDcsNiBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwgXAotCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZyBcCkBAIC04NzIs
NiArODcyLDcgQEAgSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2Nh
dGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbm90aWZpY2F0
aW9ucyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRz
IFwKQEAgLTg4Niw3ICs4ODcsNiBAQCBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9odG1s
L3RyYWNrIFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2Fk
ZXIvYXBwY2FjaGUgXAotICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJD
b3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3Rv
cmFnZSBcCkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJ
JChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5p
ZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtLyouaWRsKSBcCisJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvKi5pZGwpIFwKIAkkKHNoZWxsIGxz
ICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvKi5pZGwpIFwKQEAg
LTEwNTMsNyArMTA1NCw2IEBAIEVYVFJBX0RJU1QgKz0gXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL2h0bWwvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvKi5pZGwpIFwKLQkkKHNoZWxsIGxzICQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS8qLmlkbCkgXAogCSQoc2hlbGwgbHMgJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvKi5pZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlLyouaWRsKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBkZTdiY2M2NGYzOWViZGEzNmI3NzQ2OTMyMWI5YTBkYzg5MGViZjg4Li5jNTBhYmU4
NmI2MDc4Y2Y2YzE1ZTE5MTM2ZGNlNzdlYzhjNTQwZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTcxMCw2ICs3MTAsOSBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCkBA
IC05NDksOSArOTUyLDYgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9pbnNw
ZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGwgXAogCSQoV2ViQ29yZSkvaW5zcGVjdG9yL1NjcmlwdFBy
b2ZpbGVOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5pZGwgXAotCSQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRs
IFwKLQkkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCi0J
JChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5p
ZGwgXAogCSQoV2ViQ29yZSkvcGFnZS9CYXJJbmZvLmlkbCBcCiAJJChXZWJDb3JlKS9wYWdlL0Nv
bnNvbGUuaWRsIFwKIAkkKFdlYkNvcmUpL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKQEAgLTExOTQs
NiArMTE5NCwxOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25z
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBcCkBAIC0y
OTQ5LDE4ICsyOTYxLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRleHRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNl
bnRlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50
LmggXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAotCVNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
XAotCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlv
bnMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01X
aW5kb3dOb3RpZmljYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDE3M2VlNzVlYmJm
MjcxNWE1OWJkZWJiZjg3OWM3ZTIwNmZlY2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCkBA
IC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01X
aW5kb3dOb3RpZmljYXRpb25zOjpET01XaW5kb3dOb3RpZmljYXRpb25zKERPTVdpbmRvdyogd2lu
ZG93KQorICAgIDogRE9NV2luZG93UHJvcGVydHkod2luZG93LT5mcmFtZSgpKQorICAgICwgbV93
aW5kb3cod2luZG93KQoreworfQorCitET01XaW5kb3dOb3RpZmljYXRpb25zOjp+RE9NV2luZG93
Tm90aWZpY2F0aW9ucygpCit7Cit9CisKK0RPTVdpbmRvd05vdGlmaWNhdGlvbnMqIERPTVdpbmRv
d05vdGlmaWNhdGlvbnM6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1cHBsZW1lbnROYW1lLCAoIkRPTVdpbmRvd05vdGlm
aWNhdGlvbnMiKSk7CisgICAgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd05vdGlmaWNhdGlvbnMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46
OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSkpOworICAgIGlmICghc3VwcGxlbWVudCkgewor
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERPTVdpbmRvd05vdGlmaWNhdGlvbnMod2luZG93KTsK
KyAgICAgICAgU3VwcGxlbWVudDxET01XaW5kb3c+Ojpwcm92aWRlVG8od2luZG93LCBzdXBwbGVt
ZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOworICAgIH0KKyAgICByZXR1cm4gc3VwcGxl
bWVudDsKK30KKworTm90aWZpY2F0aW9uQ2VudGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3
ZWJraXROb3RpZmljYXRpb25zKERPTVdpbmRvdyogd2luZG93KQoreworICAgIHJldHVybiBET01X
aW5kb3dOb3RpZmljYXRpb25zOjpmcm9tKHdpbmRvdyktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsK
K30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpkaXNjb25uZWN0RnJhbWVGb3JQYWdl
Q2FjaGUoKQoreworICAgIG1fc3VzcGVuZGVkTm90aWZpY2F0aW9uQ2VudGVyID0gbV9ub3RpZmlj
YXRpb25DZW50ZXIucmVsZWFzZSgpOworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0
RnJhbWVGb3JQYWdlQ2FjaGUoKTsKK30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpy
ZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQoreworICAgIERPTVdpbmRv
d1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoZnJhbWUpOworICAgIG1fbm90
aWZpY2F0aW9uQ2VudGVyID0gbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgp
OworfQorCit2b2lkIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2Jq
ZWN0SW5DYWNoZWRGcmFtZSgpCit7CisgICAgbV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIg
PSBudWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVj
dEluQ2FjaGVkRnJhbWUoKTsKK30KKwordm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQoreworICAgIG1fbm90aWZpY2F0aW9uQ2VudGVy
ID0gbnVsbHB0cjsKKyAgICBET01XaW5kb3dQcm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RJbkZyYW1lKCk7Cit9CisKK3ZvaWQgRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERldGFj
aEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCit7CisgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBu
dWxscHRyOworICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJv
bUZyYW1lKCk7Cit9CisKK05vdGlmaWNhdGlvbkNlbnRlciogRE9NV2luZG93Tm90aWZpY2F0aW9u
czo6d2Via2l0Tm90aWZpY2F0aW9ucygpCit7CisgICAgaWYgKCFtX3dpbmRvdy0+aXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fbm90
aWZpY2F0aW9uQ2VudGVyKQorICAgICAgICByZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0
KCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3dpbmRvdy0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBwcm92aWRlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXI6OmNsaWVudEZyb20ocGFnZSk7CisgICAgaWYgKHByb3ZpZGVyKSAKKyAgICAgICAgbV9ub3Rp
ZmljYXRpb25DZW50ZXIgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShkb2N1bWVudCwgcHJv
dmlkZXIpOyAgICAKKworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9u
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyZTI2ZGQ2MDBiMzdkZmYwZjlkMjEyMzFhMWJmNjYxOTEzZDg2ZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
RE9NV2luZG93Tm90aWZpY2F0aW9ucy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NV2luZG93Tm90aWZpY2F0aW9uc19o
CisjZGVmaW5lIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaAorCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIkRPTVdp
bmRvd1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJT
dXBwbGVtZW50YWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdpbmRv
dzsKK2NsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKKworY2xhc3MgRE9NV2luZG93Tm90aWZpY2F0
aW9ucyA6IHB1YmxpYyBTdXBwbGVtZW50PERPTVdpbmRvdz4sIHB1YmxpYyBET01XaW5kb3dQcm9w
ZXJ0eSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpOwor
CisgICAgc3RhdGljIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0aW9ucyhET01X
aW5kb3cqKTsKKyAgICBzdGF0aWMgRE9NV2luZG93Tm90aWZpY2F0aW9ucyogZnJvbShET01XaW5k
b3cqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tUGFnZUNhY2hlKEZy
YW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0
SW5DYWNoZWRGcmFtZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluRnJhbWUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFj
aEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IERPTVdpbmRvd05vdGlmaWNhdGlvbnMoRE9NV2luZG93Kik7CisKKyAgICBOb3RpZmljYXRp
b25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKTsKKworICAgIERPTVdpbmRvdyogbV93aW5k
b3c7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7
CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9zdXNwZW5kZWROb3RpZmljYXRpb25D
ZW50ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjZW5kaWYg
Ly8gRE9NV2luZG93Tm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWE4YTEyOWM1N2ExZGM2ODY1YjE1NThjOWUzYzc0NjUzZDlkZjI5NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01X
aW5kb3dOb3RpZmljYXRpb25zLmlkbApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSB3aW5kb3cgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKKyAgICAg
ICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdworICAgIF0gRE9NV2luZG93Tm90aWZpY2F0aW9ucyB7
CisjaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdB
Q1lfTk9USUZJQ0FUSU9OUworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0
UnVudGltZV0gTm90aWZpY2F0aW9uQ2VudGVyIHdlYmtpdE5vdGlmaWNhdGlvbnM7CisjZW5kaWYK
KyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9O
UworICAgICAgICBhdHRyaWJ1dGUgTm90aWZpY2F0aW9uQ29uc3RydWN0b3IgTm90aWZpY2F0aW9u
OworI2VuZGlmCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDg5OTJhZWIzMzFl
OTY4ZDBiZDdiZjQyNGFkYjAxNTU5OGFkZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwy
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
Q2xpZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmgiCisj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgwLCB0aGlzKQor
eworfQorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uOjpO
b3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lz
SFRNTCh0cnVlKQorICAgICwgbV9zdGF0ZShJZGxlKQorICAgICwgbV9ub3RpZmljYXRpb25DZW50
ZXIocHJvdmlkZXIpCit7CisgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1p
c3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7CisgICAg
ICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ub3RpZmljYXRpb25VUkwgPSB1
cmw7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK05vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
Ym9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2lz
SFRNTChmYWxzZSkKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2JvZHkoYm9keSkKKyAg
ICAsIG1fc3RhdGUoSWRsZSkKKyAgICAsIG1fbm90aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQor
eworICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRlci0+Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCkgeworICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faWNvbiA9IGljb25VUkku
aXNFbXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVS
TChpY29uVVJJKTsKKyAgICBpZiAoIW1faWNvbi5pc0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK05vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1faXNI
VE1MKGZhbHNlKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1fc3RhdGUoSWRsZSkKKyAg
ICAsIG1fdGFza1RpbWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZO
b3RpZmljYXRpb246OnRhc2tUaW1lckZpcmVkKSkpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CisgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBET01XaW5kb3dOb3RpZmlj
YXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCktPmRvbVdpbmRvdygpKTsKKyAgICAKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXIt
PmNsaWVudCgpKTsKKyAgICBtX3Rhc2tUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQorI2VuZGlm
CisKK05vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAoreworfQorCisjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQorUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlv
bjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92
aWRlcikgCit7IAorICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJl
ZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVyKSkpOworICAgIG5v
dGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5y
ZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmlu
ZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCit7IAorICAg
IFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uKHRpdGxlLCBib2R5LCBpY29uVVJJLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAg
bm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9u
LnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitzdGF0
aWMgdm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3RlbmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24p
OworICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihu
ZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSkpOworICAgIFN0cmluZyBhcmd1bWVudDsK
KyAgICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBhcmd1bWVudCkpCisgICAgICAgIG5vdGlmaWNh
dGlvbi0+c2V0Qm9keShhcmd1bWVudCk7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1
bWVudCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0VGFnKGFyZ3VtZW50KTsKKyAgICBnZXRB
bmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRp
b25zLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3NlIiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdl
dCgpKTsKKyAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCAib25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CisgICAgZ2V0QW5kQWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25z
LCBub3RpZmljYXRpb24uZ2V0KCkpOworCisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCitj
b25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JOb3RpZmljYXRpb247Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCit7CisgICAgLy8gcHJldmVudCBkb3VibGUtc2hv
d2luZworICAgIGlmIChtX3N0YXRlID09IElkbGUgJiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNs
aWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+c2hvdyh0aGlzKSkgewor
ICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKKyAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRo
aXMpOworICAgIH0KK30KKwordm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKK3sKKyAgICBzd2l0
Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIElkbGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U2hvd2luZzoKKyAgICAgICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKKyAg
ICAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKS0+Y2FuY2VsKHRoaXMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENsb3NlZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCitFdmVudFRhcmdldERhdGEqIE5vdGlmaWNhdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIE5v
dGlmaWNhdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOworfQorCit2b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgp
Cit7CisgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CisgICAgaWYgKG1f
bm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKKyAgICAgICAgbV9ub3RpZmljYXRpb25DZW50
ZXItPmNsaWVudCgpLT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2Vk
KQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IENsb3NlZDsKKyAgICB1bnNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoU2hvd0V2
ZW50KCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNo
b3dFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aENsaWNrRXZlbnQoKQoreworICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dG
b2N1c0FsbG93ZWQ7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoQ2xvc2VFdmVudCgpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBmaW5hbGl6ZSgpOwor
fQorCit2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKK3sKKyAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworfQorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit2b2lkIE5vdGlmaWNhdGlv
bjo6dGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9uPiogdGltZXIpCit7CisgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkp
OworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09IG1fdGFza1RpbWVyLmdldCgpKTsK
KyAgICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Bl
cm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb25BbGxvd2VkKSB7CisgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHNob3coKTsKK30KKyNlbmRpZgorCisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKK2NvbnN0IFN0cmluZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9u
TGV2ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihj
b250ZXh0KS0+cGFnZSgpKTsKKyAgICByZXR1cm4gcGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2Uo
KSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oY29udGV4dCkpOworfQorCitjb25zdCBTdHJp
bmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBl
cm1pc3Npb24gcGVybWlzc2lvbikKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgYWxsb3dlZFBlcm1pc3Npb24sICgiZ3JhbnRlZCIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgZGVuaWVkUGVybWlzc2lvbiwgKCJkZW5pZWQiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRlZmF1bHRQZXJtaXNzaW9uLCAoImRl
ZmF1bHQiKSk7CisgICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7CisgICAgY2FzZSBOb3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkOgorICAgICAgICByZXR1cm4gYWxsb3dlZFBlcm1p
c3Npb247CisgICAgY2FzZSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ6Cisg
ICAgICAgIHJldHVybiBkZW5pZWRQZXJtaXNzaW9uOworICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xp
ZW50OjpQZXJtaXNzaW9uTm90QWxsb3dlZDoKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRQZXJtaXNz
aW9uOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZGVuaWVkUGVybWlzc2lvbjsKK30KKwordm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+cGFnZSgpKTsKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lv
bihjb250ZXh0LCBjYWxsYmFjayk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGU5MTAwNzNiMDI2YmU2M2MxMjlkMTIwNDI4
ZDY0MDUxMTBkOTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTm90aWZpY2F0aW9uX2ggIAorI2RlZmluZSBOb3RpZmljYXRpb25faAorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNsaWVudC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHREaXJl
Y3Rpb24uaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RGljdGlvbmFyeTsKK2NsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKK2NsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjazsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRocmVhZGFi
bGVMb2FkZXI7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIE5vdGlmaWNh
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgTm90aWZpY2F0aW9uKCk7CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0
IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKTsKKyNl
bmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyNlbmRpZgorICAgIAorICAgIHZp
cnR1YWwgfk5vdGlmaWNhdGlvbigpOworCisgICAgdm9pZCBzaG93KCk7CisjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQorICAgIHZvaWQgY2FuY2VsKCkgeyBjbG9zZSgpOyB9CisjZW5k
aWYKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBib29sIGlzSFRNTCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNIVE1MOyB9CisgICAgdm9pZCBzZXRIVE1MKGJvb2wgaXNIVE1MKSB7IG1faXNIVE1MID0g
aXNIVE1MOyB9CisgICAgCisgICAgS1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNh
dGlvblVSTDsgfQorICAgIHZvaWQgc2V0VVJMKEtVUkwgdXJsKSB7IG1fbm90aWZpY2F0aW9uVVJM
ID0gdXJsOyB9CisgICAgCisgICAgS1VSTCBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29u
OyB9CisKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAg
U3RyaW5nIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KKworICAgIFN0cmluZyBkaXIo
KSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZvaWQgc2V0RGlyKGNvbnN0IFN0
cmluZyYgZGlyKSB7IG1fZGlyZWN0aW9uID0gZGlyOyB9CisKKyNpZiBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCisgICAgU3RyaW5nIHJlcGxhY2VJZCgpIGNvbnN0IHsgcmV0dXJuIHRhZygp
OyB9CisgICAgdm9pZCBzZXRSZXBsYWNlSWQoY29uc3QgU3RyaW5nJiByZXBsYWNlSWQpIHsgc2V0
VGFnKHJlcGxhY2VJZCk7IH0KKyNlbmRpZgorCisgICAgU3RyaW5nIHRhZygpIGNvbnN0IHsgcmV0
dXJuIG1fdGFnOyB9CisgICAgdm9pZCBzZXRUYWcoY29uc3QgU3RyaW5nJiB0YWcpIHsgbV90YWcg
PSB0YWc7IH0KKworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZGlyKCkgPT0gInJ0bCIgPyBSVEwgOiBMVFI7IH0KKworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoc2hvdyk7CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZGlzcGxheSk7CisjZW5kaWYKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNsaWNrKTsKKyAgICAKKyAgICB2b2lkIGRpc3BhdGNoQ2xpY2tFdmVudCgpOworICAg
IHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQo
KTsKKyAgICB2b2lkIGRpc3BhdGNoU2hvd0V2ZW50KCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVk
PE5vdGlmaWNhdGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46
OmRlcmVmOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJv
eWVkKCk7CisKKyAgICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOworCisgICAgLy8gRGVwcmVjYXRl
ZC4gVXNlIGZ1bmN0aW9ucyBmcm9tIE5vdGlmaWNhdGlvbkNlbnRlci4KKyAgICB2b2lkIGRldGFj
aFByZXNlbnRlcigpIHsgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgpOworCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGVybWlzc2lvbkxldmVsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwZXJtaXNz
aW9uU3RyaW5nKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbik7CisgICAgc3RhdGljIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7CisjZW5kaWYKKworcHJpdmF0ZToKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uKGNvbnN0IEtV
UkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPik7CisgICAgTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOworI2VuZGlm
CisKKyAgICB2b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7
IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdl
dERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCk7CisKKyAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmdJY29uKCk7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2b2lkIHRhc2tU
aW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbj4qKTsKKyNlbmRpZgorICAgIAorICAgIGJvb2wg
bV9pc0hUTUw7CisKKyAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCisgICAgS1VSTCBtX2ljb247
CisgICAgU3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nIG1fYm9keTsKKyAgICAvLyBGSVhNRTog
RGVwcmVjYXRlIEhUTUwgTm90aWZpY2F0aW9ucy4KKyAgICBLVVJMIG1fbm90aWZpY2F0aW9uVVJM
OworCisgICAgU3RyaW5nIG1fZGlyZWN0aW9uOworICAgIFN0cmluZyBtX3RhZzsKKworICAgIGVu
dW0gTm90aWZpY2F0aW9uU3RhdGUgeworICAgICAgICBJZGxlID0gMCwKKyAgICAgICAgU2hvd2lu
ZyA9IDEsCisgICAgICAgIENsb3NlZCA9IDIsCisgICAgfTsKKworICAgIE5vdGlmaWNhdGlvblN0
YXRlIG1fc3RhdGU7CisKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNh
dGlvbkNlbnRlcjsKKyAgICAKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBPd25QdHI8VGltZXI8Tm90aWZpY2F0
aW9uPiA+IG1fdGFza1RpbWVyOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRhMmViN2YyNDVmOWY1NmM2ZWIzYjc1NWE4ZDY2NjVkY2I0YmUzM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmlkbApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElP
TlMsCisgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICAgICAgRXZlbnRUYXJnZXQsCisjaWYg
ZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKKyAg
ICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IG9wdGlvbnMpLAorICAgICAgICBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAorI2Vsc2UKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisjZW5k
aWYKKyAgICBdIE5vdGlmaWNhdGlvbiB7CisgICAgICAgIHZvaWQgc2hvdygpOworI2lmIGRlZmlu
ZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNB
VElPTlMKKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxF
X05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIHZvaWQgY2xv
c2UoKTsKKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAmJiBF
TkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gc3RhdGljIERPTVN0cmluZyBwZXJtaXNzaW9uTGV2ZWwoKTsKKyAgICAgICAgW0N1c3Rv
bV0gc3RhdGljIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oaW4gTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrIGNhbGxiYWNrKTsKKyNlbmRpZgorCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uc2hvdzsKKyNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uZGlzcGxheTsKKyNlbmRpZgorICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOworCisgICAgICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgZGlyOworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
KSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyByZXBsYWNlSWQ7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRh
ZzsKKyNlbmRpZgorCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAg
ICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWJiNTQ3NDAwOTVlNTZiZmY2NzA4MmNhZGVmZjFmZjNi
NmM1ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gTm90aWZpY2F0
aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZp
Y2F0aW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4g
bm90aWZpY2F0aW9uQ2VudGVyKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4
dCwgY2xpZW50KSkpOworICAgIG5vdGlmaWNhdGlvbkNlbnRlci0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbkNlbnRlci5yZWxlYXNlKCk7Cit9CisKK05vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uQ2VudGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7Cit9CisKKyNpZiBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitpbnQgTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Bl
cm1pc3Npb24oKQoreworICAgIGlmICghY2xpZW50KCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbkRlbmll
ZDsKKworICAgIHN3aXRjaCAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5TaG93Tm90aWZpY2F0aW9ucygpKSB7CisgICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6
QWx3YXlzQWxsb3c6CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b25BbGxvd2VkOworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0Rlbnk6CisgICAgICAg
IHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgY2FzZSBT
ZWN1cml0eU9yaWdpbjo6QXNrOgorICAgICAgICByZXR1cm4gbV9jbGllbnQtPmNoZWNrUGVybWlz
c2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBtX2NsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbihQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgaWYgKCFjbGllbnQoKSB8fCAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2gg
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlm
aWNhdGlvbnMoKSkgeworICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0FsbG93OgorICAg
IGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0Rlbnk6IHsKKyAgICAgICAgbV9jYWxsYmFja3Mu
YWRkKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Y3JlYXRlQW5kU3RhcnRUaW1lcih0aGlz
LCBjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgU2VjdXJpdHlP
cmlnaW46OkFzazoKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdFBlcm1pc3Npb24oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7Cit9CisjZW5kaWYKKwordm9pZCBOb3RpZmljYXRp
b25DZW50ZXI6OnN0b3AoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2NsaWVudC0+Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgbV9jbGllbnQtPmNsZWFyTm90aWZpY2F0aW9ucyhzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgIG1fY2xpZW50ID0gMDsKK30KKwordm9pZCBOb3RpZmljYXRp
b25DZW50ZXI6OnJlcXVlc3RUaW1lZE91dChOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlv
blJlcXVlc3RDYWxsYmFjayogcmVxdWVzdCkKK3sKKyAgICBtX2NhbGxiYWNrcy5yZW1vdmUocmVx
dWVzdCk7Cit9CisKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25S
ZXF1ZXN0Q2FsbGJhY2s+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVyKE5vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyLCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sg
PSBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2Fs
bGJhY2soY2VudGVyLCBjYWxsYmFjaykpOworICAgIHJlcXVlc3RDYWxsYmFjay0+c3RhcnRUaW1l
cigpOworICAgIHJldHVybiByZXF1ZXN0Q2FsbGJhY2sucmVsZWFzZSgpOworfQorCitOb3RpZmlj
YXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6Tm90aWZpY2F0aW9uUmVx
dWVzdENhbGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciogY2VudGVyLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gY2FsbGJhY2spCisgICAgOiBtX25vdGlmaWNhdGlvbkNlbnRlcihjZW50ZXIpCisg
ICAgLCBtX3RpbWVyKHRoaXMsICZOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVl
c3RDYWxsYmFjazo6dGltZXJGaXJlZCkKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCit7Cit9
CisKK3ZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6
OnN0YXJ0VGltZXIoKQoreworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lk
IE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjp0aW1lckZp
cmVkKFRpbWVyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNr
PiopCit7CisgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICBtX25vdGlmaWNhdGlv
bkNlbnRlci0+cmVxdWVzdFRpbWVkT3V0KHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNmQ2ODkwMmYzMDU3
NWM4MDdiYTNjMjEwMjFkOTcwNTM3YTUxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25DZW50ZXJfaAorI2RlZmluZSBOb3RpZmlj
YXRpb25DZW50ZXJfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CitjbGFzcyBWb2lkQ2FsbGJhY2s7CisK
K2NsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKKyAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBp
ZiAoIWNsaWVudCgpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVSSS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKFVSSSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgZWMsIHRoaXMpOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBpY29uVVJJLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjbGllbnQoKSkg
eworICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRs
ZSwgYm9keSwgaWNvblVSSSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlYywgdGhpcyk7Cisg
ICAgfQorI2VuZGlmCisKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50OyB9CisKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisg
ICAgaW50IGNoZWNrUGVybWlzc2lvbigpOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOworCisgICAgY2xhc3MgTm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uUmVx
dWVzdENhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IGNyZWF0ZUFuZFN0YXJ0VGltZXIoTm90aWZpY2F0
aW9uQ2VudGVyKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICAgICAgdm9pZCBzdGFy
dFRpbWVyKCk7CisgICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb25SZXF1
ZXN0Q2FsbGJhY2s+Kik7CisgICAgcHJpdmF0ZToKKyAgICAgICAgTm90aWZpY2F0aW9uUmVxdWVz
dENhbGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7
CisKKyAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50
ZXI7CisgICAgICAgIFRpbWVyPE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gbV90aW1lcjsK
KyAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICB9OworCisgICAg
dm9pZCByZXF1ZXN0VGltZWRPdXQoTm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKik7CisKKyAg
ICBOb3RpZmljYXRpb25DbGllbnQqIG1fY2xpZW50OworICAgIEhhc2hTZXQ8UmVmUHRyPE5vdGlm
aWNhdGlvblJlcXVlc3RDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmljYXRpb25DZW50ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTk5YmE5ZmYzYzQwNjUzMmQ5ZDczNzFi
NmJlNjg5YzVkOGFmMWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1MRUdBQ1lfTk9USUZJQ0FUSU9OUywKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgICAg
ICBPbWl0Q29uc3RydWN0b3IKKyAgICBdIE5vdGlmaWNhdGlvbkNlbnRlciB7CisjaWYgIWRlZmlu
ZWQoRU5BQkxFX1RFWFRfTk9USUZJQ0FUSU9OU19PTkxZKSB8fCAhRU5BQkxFX1RFWFRfTk9USUZJ
Q0FUSU9OU19PTkxZCisgICAgICAgW1Y4Q3VzdG9tXSBOb3RpZmljYXRpb24gY3JlYXRlSFRNTE5v
dGlmaWNhdGlvbihpbiBET01TdHJpbmcgdXJsKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRp
ZgorICAgICAgIFtWOEN1c3RvbV0gTm90aWZpY2F0aW9uIGNyZWF0ZU5vdGlmaWNhdGlvbihpbiBE
T01TdHJpbmcgaWNvblVybCwgaW4gRE9NU3RyaW5nIHRpdGxlLCBpbiBET01TdHJpbmcgYm9keSkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7Cisg
ICAgICAgW0N1c3RvbV0gdm9pZCByZXF1ZXN0UGVybWlzc2lvbihpbiBWb2lkQ2FsbGJhY2sgY2Fs
bGJhY2spOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTkyODM2
ZTU2NGNhYzk2YTkwZjNmMTVkOWNkMjk2YzU5YzQ1YjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25DbGllbnRfaAorI2RlZmluZSBO
b3RpZmljYXRpb25DbGllbnRfaAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNz
IEtVUkw7CitjbGFzcyBOb3RpZmljYXRpb247CitjbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKKworY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50IHsKKworcHVibGljOgor
ICAgIGVudW0gUGVybWlzc2lvbiB7CisgICAgICAgIFBlcm1pc3Npb25BbGxvd2VkLCAvLyBVc2Vy
IGhhcyBhbGxvd2VkIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgUGVybWlzc2lvbk5vdEFsbG93ZWQs
IC8vIFVzZXIgaGFzIG5vdCB5ZXQgYWxsb3dlZAorICAgICAgICBQZXJtaXNzaW9uRGVuaWVkIC8v
IFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVkIHBlcm1pc3Npb24KKyAgICB9OworCisgICAgLy8g
UmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBiZSBzaG93bi4KKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdyhOb3RpZmljYXRpb24qKSA9IDA7CisKKyAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZSBjYW5jZWxlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsKKworICAgIC8vIFdoZW4gdGhlIHVz
ZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwgYWxsIG9m
IHRoZSBwYWdlJ3MKKyAgICAvLyBhc3NvY2lhdGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyZWQu
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikgeyB9CisgICAgCisgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoYXQgYSBOb3Rp
ZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAorICAgIC8vIChzdWNoIGFzIGJ5IGEg
cGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkgY29udGludWUgc2hvd2luZworICAg
IC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwgdGhlIGV2
ZW50IGhhbmRsZXJzLgorICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uKikgPSAwOworCisgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRo
ZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKKwor
I2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICAvLyBSZXF1ZXN0cyB1c2VyIHBl
cm1pc3Npb24gdG8gc2hvdyBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgZnJvbSBhIHBhcnRpY3VsYXIK
KyAgICAvLyBzY3JpcHQgY29udGV4dC4gVGhlIGNhbGxiYWNrIHBhcmFtZXRlciBzaG91bGQgYmUg
cnVuIHdoZW4gdGhlIHVzZXIgaGFzCisgICAgLy8gbWFkZSBhIGRlY2lzaW9uLgorICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+KSA9IDA7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPikgPSAwOwor
I2VuZGlmCisKKyAgICAvLyBDYW5jZWwgYWxsIG91dHN0YW5kaW5nIHJlcXVlc3RzIGZvciB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKKworICAgIC8vIENoZWNr
cyB0aGUgY3VycmVudCBsZXZlbCBvZiBwZXJtaXNzaW9uLgorICAgIHZpcnR1YWwgUGVybWlzc2lv
biBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbkNsaWVudCgpIHsgfQorfTsKKwordm9pZCBw
cm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTm90aWZpY2F0aW9uQ2xpZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmJkOWJmM2MyMGQ1MjZjOWQ2MzA3
ZDk4YjljODFjYjI1MjA3MDU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTm90
aWZpY2F0aW9uQ29udHJvbGxlcjo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3RpZmljYXRpb25D
bGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKK30KKworTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6fk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KTsKK30KKworUGFzc093blB0cjxOb3RpZmljYXRpb25Db250cm9sbGVyPiBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpjcmVhdGUoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBOb3RpZmljYXRpb25Db250cm9sbGVyKGNsaWVudCkpOworfQorCitO
b3RpZmljYXRpb25DbGllbnQqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20oUGFn
ZSogcGFnZSkKK3sKKyAgICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSkpCisgICAgICAgIHJldHVybiBjb250
cm9sbGVyLT5jbGllbnQoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiTm90aWZpY2F0aW9uQ29udHJvbGxl
ciIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBh
Z2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQoreworICAgIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVhdGUoY2xpZW50KSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDE5NjhlZDRkMTVlMjdkZDJjNDY5YWM2NzM2ZDQxMGM2YzAwM2U1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyovCisKKyNpZm5kZWYgTm90aWZpY2F0aW9uQ29udHJv
bGxlcl9oCisjZGVmaW5lIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vdGlmaWNhdGlvbkNsaWVu
dDsKKworY2xhc3MgTm90aWZpY2F0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBh
Z2U+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb3RpZmljYXRpb25Db250cm9sbGVyKTsK
K3B1YmxpYzoKKyAgICB+Tm90aWZpY2F0aW9uQ29udHJvbGxlcigpOworCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gY3JlYXRlKE5vdGlmaWNhdGlvbkNsaWVu
dCopOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7Cisg
ICAgc3RhdGljIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGZyb20oUGFnZSogcGFnZSkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ29udHJvbGxlcio+KFN1cHBsZW1lbnQ8UGFnZT46
OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CisgICAgc3RhdGljIE5vdGlmaWNhdGlv
bkNsaWVudCogY2xpZW50RnJvbShQYWdlKik7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNs
aWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgCitwcml2YXRlOgorICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ2xpZW50Kik7CisKKyAgICBOb3RpZmljYXRpb25D
bGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KworI2VuZGlmIC8vIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZTczMmE3ZjlhMjk5OWQyNmYyYjc4
ZGRiYTNmNjI5MDA4YmY2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tfaAorI2RlZmluZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaAorCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KGNv
bnN0IFN0cmluZyYgcGVybWlzc2lvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisKKyNlbmRpZiAvLyBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjExMTYxMmUyNDBjZWNhYTE5ZmI1ZWE3MWFhY2Q3
ZDI2MDkzYzIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUywKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZl
bnQoaW4gRE9NU3RyaW5nIHBlcm1pc3Npb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZWRiOTkyY2QyMmM0Y2NmZTExMTVi
YzgzNjM3MWUxNmNjMTA5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJOb3RpZmlj
YXRpb25DZW50ZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnM6OldvcmtlckNvbnRleHROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqIGNvbnRl
eHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnM6On5Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucygpCit7Cit9CisKK1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6ZnJvbShXb3Jr
ZXJDb250ZXh0KiBjb250ZXh0KQoreworICAgIEF0b21pY1N0cmluZyBzdXBwbGVtZW50TmFtZSA9
ICJXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyI7CisgICAgV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cyo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD46OmZyb20oY29udGV4dCwgc3Vw
cGxlbWVudE5hbWUpKTsKKyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAgc3VwcGxlbWVu
dCA9IG5ldyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyhjb250ZXh0KTsKKyAgICAgICAgU3Vw
cGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6cHJvdmlkZVRvKGNvbnRleHQsIHN1cHBs
ZW1lbnROYW1lLCBhZG9wdFB0cihzdXBwbGVtZW50KSk7CisgICAgfQorICAgIHJldHVybiBzdXBw
bGVtZW50OworfQorCitOb3RpZmljYXRpb25DZW50ZXIqIFdvcmtlckNvbnRleHROb3RpZmljYXRp
b25zOjp3ZWJraXROb3RpZmljYXRpb25zKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zOjpmcm9tKGNvbnRleHQpLT53ZWJraXRO
b3RpZmljYXRpb25zKCk7Cit9CisKK05vdGlmaWNhdGlvbkNlbnRlciogV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghbV9ub3RpZmlj
YXRpb25DZW50ZXIpCisgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gTm90aWZpY2F0aW9u
Q2VudGVyOjpjcmVhdGUobV9jb250ZXh0LCBtX2NvbnRleHQtPnRocmVhZCgpLT5nZXROb3RpZmlj
YXRpb25DbGllbnQoKSk7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzU0ZmNhMTgwOGIyYjEwMjI1MzY4MTQ5NDJmMDkz
ZjIzNWFmZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaAor
I2RlZmluZSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb3RpZmljYXRp
b25DZW50ZXI7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgV29ya2VyQ29u
dGV4dDsKKworY2xhc3MgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMgOiBwdWJsaWMgU3VwcGxl
bWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoKTsKKworICAgIHN0YXRpYyBOb3RpZmljYXRpb25DZW50
ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCopOworICAgIHN0YXRpYyBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogZnJvbShXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCop
OworCisgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCk7CisKKyAg
ICBXb3JrZXJDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorCisjZW5kaWYgLy8gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9X
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M5M2JjMmIzZmNiNGYx
ZjM2ODQ3ZjA4MDc4ZjlhZmUzMzhkMTA5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBp
bnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJ
RklDQVRJT05TLAorICAgICAgICBTdXBwbGVtZW50YWw9V29ya2VyQ29udGV4dAorICAgIF0gV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMgeworI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJ
RklDQVRJT05TKSAmJiBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIE5vdGlmaWNhdGlvbkNlbnRlciB3ZWJr
aXROb3RpZmljYXRpb25zOworI2VuZGlmCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNTlk
NTgxMzJiMDU1ZTMzNTJkYzhjNDUyZmE0MjExZWY3MjBkYWQ2Ny4uZmMyZTM1ZmFhNjZiZGYyMDIw
ZThmN2E1NTg2ODc1ZWMxZjRiMmU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00MjcsNiArNDI3LDExIEBA
IFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAg
XAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwIFwKICAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwIFwKKyAgICBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAorICAgIE1vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuY3BwIFwKICAgICBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1
ZS5jcHAgXAogICAgIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIFwKICAgICBjc3Mv
Q1NTQm9yZGVySW1hZ2UuY3BwIFwKQEAgLTk5OSwxMSArMTAwNCw2IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcCBcCiAgICAgbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIFwKLSAgICBu
b3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwIFwKLSAgICBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAgXAotICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmNwcCBcCi0gICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBc
Ci0gICAgbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgXAogICAg
IHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcCBcCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcCBcCkBAIC0xNTg3LDYgKzE1ODcsMTMgQEAgSEVBREVSUyArPSBcCiAgICAgTW9k
dWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCiAgICAgTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAgICAgXAorICAgIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmggXAorICAgIE1vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaCBcCisgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5oIFwKKyAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xp
ZW50LmggXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmggXAorICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9u
cy5oIFwKKyAgICBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgg
XAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBcCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9ET01XaW5kb3dXZWJEYXRhYmFzZS5oIFwKQEAgLTIxNTEsMTIg
KzIxNTgsNiBAQCBIRUFERVJTICs9IFwKICAgICBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5oIFwKICAgICBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCBcCiAgICAgbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmggXAotICAgIG5vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZp
Y2F0aW9ucy5oIFwKLSAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKLSAgICBub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oIFwKLSAgICBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNsaWVudC5oIFwKLSAgICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuaCBcCi0gICAgbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oIFwK
ICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmggXAogICAgIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCAyNWEz
N2QzNTZmNGE4ZDRmMWI4MTUwYjY2M2ZkYWQ2NTE1MGNhMzU5Li5jYjBlNzZhMDUwYTA1NzBmNmVi
ZGZkMmUzNzhjZDc3MTNjN2FlNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cApAQCAtNTksNiArNTksNyBAQAogICAgICAgJy4uL01vZHVsZXMvaW50ZW50cycsCiAgICAg
ICAnLi4vTW9kdWxlcy9pbmRleGVkZGInLAogICAgICAgJy4uL01vZHVsZXMvbWVkaWFzdHJlYW0n
LAorICAgICAgJy4uL01vZHVsZXMvbm90aWZpY2F0aW9ucycsCiAgICAgICAnLi4vTW9kdWxlcy9x
dW90YScsCiAgICAgICAnLi4vTW9kdWxlcy9zcGVlY2gnLAogICAgICAgJy4uL01vZHVsZXMvd2Vi
YXVkaW8nLApAQCAtOTUsNyArOTYsNiBAQAogICAgICAgJy4uL2xvYWRlci9jYWNoZScsCiAgICAg
ICAnLi4vbG9hZGVyL2ljb24nLAogICAgICAgJy4uL21hdGhtbCcsCi0gICAgICAnLi4vbm90aWZp
Y2F0aW9ucycsCiAgICAgICAnLi4vcGFnZScsCiAgICAgICAnLi4vcGFnZS9hbmltYXRpb24nLAog
ICAgICAgJy4uL3BhZ2UvY2hyb21pdW0nLApAQCAtMTA0NywxMyArMTA0NywxMyBAQAogICAgICAg
ICAgICAgICAnLS1pbmNsdWRlJywgJy4uL01vZHVsZXMvaW5kZXhlZGRiJywKICAgICAgICAgICAg
ICAgJy0taW5jbHVkZScsICcuLi9Nb2R1bGVzL2ludGVudHMnLAogICAgICAgICAgICAgICAnLS1p
bmNsdWRlJywgJy4uL01vZHVsZXMvbWVkaWFzdHJlYW0nLAorICAgICAgICAgICAgICAnLS1pbmNs
dWRlJywgJy4uL01vZHVsZXMvbm90aWZpY2F0aW9ucycsCiAgICAgICAgICAgICAgICctLWluY2x1
ZGUnLCAnLi4vTW9kdWxlcy93ZWJhdWRpbycsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAn
Li4vTW9kdWxlcy93ZWJkYXRhYmFzZScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4v
Y3NzJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9kb20nLAogICAgICAgICAgICAg
ICAnLS1pbmNsdWRlJywgJy4uL2ZpbGVhcGknLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywg
Jy4uL2h0bWwnLAotICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL25vdGlmaWNhdGlvbnMn
LAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL3BhZ2UnLAogICAgICAgICAgICAgICAn
LS1pbmNsdWRlJywgJy4uL3BsdWdpbnMnLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4u
L3N0b3JhZ2UnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM3MzMyZDIwM2MxZmRhZGE5YjAxNWUxNzM5
YmUzMWViY2RjZGNlNjQuLmFkYmM3Yzg0MmU3NzVhNzFmZDJiODYwZGMzNzY2YWNiZTBmMTU3OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTEyLDYgKzEyLDIxIEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvZ2Vv
bG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
Z2VvbG9jYXRpb24vUG9zaXRpb25PcHRpb25zLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCcsCisgICAgICAgICAgICAnTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZURldGFpbHMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXJDbGllbnQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxFcnJvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3Vs
dFNldC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJv
d0xpc3QuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRD
YWxsYmFjay5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5o
JywKQEAgLTE5OSwyMSArMjE0LDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUNsaWVu
dC5oJywKICAgICAgICAgICAgICdsb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLmgnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5oJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxSZXN1bHRTZXQuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50Q2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgnLAotICAgICAgICAgICAgJ25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0Nocm9t
ZS5oJywKICAgICAgICAgICAgICdwYWdlL0Nocm9tZUNsaWVudC5oJywKICAgICAgICAgICAgICdw
YWdlL0NvbnNvbGUuaCcsCkBAIC04NDIsNiArODQyLDExIEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmlk
bCcsCkBAIC0xMTQ2LDExICsxMTUxLDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0
UHJvZmlsZS5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5p
ZGwnLAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlk
bCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlk
bCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKLSAgICAg
ICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwnLAotICAgICAgICAg
ICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbCcsCi0g
ICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvQWJzdHJhY3RWaWV3LmlkbCcsCiAgICAgICAgICAgICAncGFn
ZS9CYXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9Db25zb2xlLmlkbCcsCkBAIC0xNTY5
LDYgKzE1NjksMTcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25z
L0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0
aW9ucy5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250
ZXh0Tm90aWZpY2F0aW9ucy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcCcsCkBAIC0zMDA0
LDE3ICszMDE1LDYgQEAKICAgICAgICAgICAgICdtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCcs
CiAgICAgICAgICAgICAnbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlv
bnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgnLAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCcsCi0gICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCcsCi0g
ICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCcsCi0g
ICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmgnLAotICAg
ICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgn
LAotICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
Y3BwJywKLSAgICAgICAgICAgICdub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRp
b25zLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvQmFySW5mby5oJywKICAgICAgICAgICAgICdwYWdlL0Nocm9tZS5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCAxNmFlYmJjNjRmMTA0YzZkMTRmNDVlMTdjYTg0N2RhODAxNmY3NmE0Li5iOWNkZTE3
MzA0Yzc4YWM5MTczOWM4ZjRhOWM5Mjk2ZGUyNmI5YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMjAs
NiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZmls
ZXN5c3RlbSBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQk
U09VUkNFX0RJUi9Nb2R1bGVzL2luZGV4ZWRkYiBcCisgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMv
bm90aWZpY2F0aW9ucyBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvcXVvdGEgXAogICAgICQk
U09VUkNFX0RJUi9Nb2R1bGVzL3dlYmF1ZGlvIFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy93
ZWJkYXRhYmFzZSBcCkBAIC00Nyw3ICs0OCw2IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNP
VVJDRV9ESVIvbG9hZGVyL2NhY2hlIFwKICAgICAkJFNPVVJDRV9ESVIvbG9hZGVyL2ljb24gXAog
ICAgICQkU09VUkNFX0RJUi9tYXRobWwgXAotICAgICQkU09VUkNFX0RJUi9ub3RpZmljYXRpb25z
IFwKICAgICAkJFNPVVJDRV9ESVIvcGFnZSBcCiAgICAgJCRTT1VSQ0VfRElSL3BhZ2UvYW5pbWF0
aW9uIFwKICAgICAkJFNPVVJDRV9ESVIvcGFnZS9xdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQzMDMzYzU5N2VmNGI2OGVhOGJiNmI0Yjkx
Zjc3N2U5OWEwMDliMDguLmI1M2JlMGM4OGY2Zjc4YmE5MjdkNjg1ZDBmZTg3N2EzMzJiZmFjZDkg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0y
NDk1OSw2ICsyNDk1OSw0NiBAQAogCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRl
cgorCQkJCU5hbWU9Im5vdGlmaWNhdGlvbnMiCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlvbnMu
Y3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cTW9kdWxlc1xub3RpZmljYXRpb25zXERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
bm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlm
aWNhdGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbkNlbnRlci5jcHAiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlv
bnNcTm90aWZpY2F0aW9uQ2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xub3RpZmljYXRpb25zXFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0
ZXIKIAkJCQlOYW1lPSJ3ZWJkYXRhYmFzZSIKIAkJCQk+CiAJCQkJPEZpbGUKQEAgLTU0Nzg0LDQ2
ICs1NDgyNCw2IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCi0JCQlOYW1l
PSJub3RpZmljYXRpb25zIgotCQkJPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5v
dGlmaWNhdGlvbnNcRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcRE9NV2luZG93
Tm90aWZpY2F0aW9ucy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxub3RpZmljYXRpb25zXE5vdGlmaWNhdGlvbi5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZp
Y2F0aW9uLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXG5vdGlmaWNhdGlvbnNcTm90aWZpY2F0aW9uQ2VudGVyLmNwcCIKLQkJCQk+Ci0JCQk8L0Zp
bGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmlj
YXRpb25DZW50ZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZl
UGF0aD0iLi5cbm90aWZpY2F0aW9uc1xOb3RpZmljYXRpb25DbGllbnQuaCIKLQkJCQk+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbm90aWZpY2F0aW9uc1xXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXG5vdGlmaWNhdGlvbnNcV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnMuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCiAJCQlO
YW1lPSJlZGl0aW5nIgogCQkJPgogCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwppbmRleCAxY2RjMmY0NjRmNjllZTEx
NDMzN2MxNGIxNDQwMzdlZGNmNzhhNzIwLi4wNjQxZDY1YTAxMjVkOGEzNzQ5MGMzOGNiOWZjYTgx
MzE1NDY3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlQ29tbW9uLnZzcHJvcHMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZUNvbW1vbi52c3Byb3BzCkBAIC03LDcgKzcsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsk
KFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZmlsZXN5
c3RlbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xnZW9sb2NhdGlvbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xpbmRleGVkZGImcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXE1vZHVsZXNccXVvdGEmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1v
ZHVsZXNcd2ViZGF0YWJhc2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2Vi
c29ja2V0cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cZmlsZWFwaSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbWF0aG1sJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRp
bmdzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xnZW5lcmljJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sXHBhcnNlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxz
aGFkb3cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbWF0aG1sJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGFnZVxzY3JvbGxpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2EmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcYXJtJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXHBhcnNlciZxdW90OzsmcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
d2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xwcm9wZXJ0aWVzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3Nc
ZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlx0ZXN0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnMmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGlu
Y2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
c3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHpsaWImcXVv
dDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpciku
LiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xmaWxlc3lzdGVtJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGdlb2xvY2F0aW9uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxNb2R1bGVzXGluZGV4ZWRkYiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
TW9kdWxlc1xxdW90YSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xub3RpZmlj
YXRpb25zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYmRhdGFiYXNlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGFjY2Vzc2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxicmlkZ2VcanNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZp
bGVhcGkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNp
YWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxwYXJz
ZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
ciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxj
YWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBhZ2Vcc2Nyb2xsaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm0mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cbW9jayZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
c3FsJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmsmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3MmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFybSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHRleHRcdHJhbnNjb2RlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFxwYXJzZXImcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdc
cHJvcGVydGllcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRl
cnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cdGVzdGluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJz
b2NrZXRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRl
XEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVx6bGliJnF1b3Q7Igog
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19XSU4zMl9fO0RJU0FCTEVfM0RfUkVOREVSSU5H
O1dFQkNPUkVfQ09OVEVYVF9NRU5VUyIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVBy
ZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZCBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKaW5k
ZXggZWViYmNmMWRiYWJhY2I3MWE2YTdiMThlZjY3ZmM4MzAyMmU3YjY0Ny4uODNmMWYwMzE3Yzhh
ZTc3OTU4ZGMyOGYxOGUwMWZhMGM5Y2U2NTAwMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCkBAIC0yMiw2ICsy
Miw3IEBAIHhjb3B5IC95IC9kICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1wqLmgiICIlQ09ORklHVVJBCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5cTW9kdWxlc1xmaWxlc3lzdGVtXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1
ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxNb2R1bGVzXGdlb2xvY2F0
aW9uXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5
IC95IC9kICIlUHJvamVjdERpciUuLlxNb2R1bGVzXHF1b3RhXCouaCIgIiVDT05GSUdVUkFUSU9O
QlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKK3hjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxN
b2R1bGVzXG5vdGlmaWNhdGlvbnNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVk
ZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkg
L3kgL2QgIiVQcm9qZWN0RGlyJS4uXE1vZHVsZXNcd2Vic29ja2V0c1wqLmgiICIlQ09ORklHVVJB
VElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIl
Li5cYWNjZXNzaWJpbGl0eVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdl
YkNvcmUiCkBAIC0zNyw3ICszOCw2IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxoaXN0
b3J5XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yCiB4Y29weSAv
eSAvZCAiJVByb2plY3REaXIlLi5caGlzdG9yeVxjZlwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxE
RElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5caHRtbFwq
LmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAv
ZCAiJVByb2plY3REaXIlLi5caHRtbFxwYXJzZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJ
UiVcaW5jbHVkZVxXZWJDb3JlIgoteGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXG5vdGlmaWNh
dGlvbnNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNv
cHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGNzc1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1c
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgiICIlQ09ORklHVVJBVElP
TkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2I4MzNlZmExNzQ3ZjU4ZTdhNzgyMTNl
NjdjOWExNWUzYWI5YmM5YS4uMGExNWI5YTI4ZGE0NzY1MzA2Zjk3MGM5OWI1ZjdmM2VmZDE5YjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNzg2Myw4ICs3ODYzLDggQEAKIAkJMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8q
IFdlYktpdENTU0tleWZyYW1lUnVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzEyODhFNzAwRTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2
MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lc1J1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9u
Q29udHJvbGxlci5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTI4Q0E2QTE0NzMzMTYzMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzEyOENBNjcxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHA7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0
QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMkQ2N0IwMTUzNTY5MUYwMDU2M0QwRCAvKiBEaWN0aW9uYXJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3Rpb25hcnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMTMxM0Y2MzE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMx
M0Y2NDE0NDNCMzVFMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MzMsOCArNzkzMyw4IEBACiAJCTMxQzBGRjQ2MEU0Q0VG
REQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRU
cmFuc2l0aW9uRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxQzBGRjQ4MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRUcmFu
c2l0aW9uRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUVD
MUQ1MDE0RkVGRDA4MDBDOTQ2NjIgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aWRsOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMUVDMURBQzE0RkYyNkVBMDBDOTQ2
NjIgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5v
dGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFFQzFENTAxNEZFRkQwODAwQzk0NjYyIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUVDMURB
QzE0RkYyNkVBMDBDOTQ2NjIgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBwYXRoID0gTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVDMUUyNjE0RkY2MEVFMDBDOTQ2NjIgLyogSlNO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUVDMUUyNzE0RkY2MEVFMDBDOTQ2NjIgLyogSlNO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzFGQjFBNEYxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlv
bkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VNb3Rpb25D
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NTEsMTggKzc5NTEsMTgg
QEAKIAkJMzFGRTZFNkMxNTAxQTNCRjAwMDRFQkM0IC8qIEpTTm90aWZpY2F0aW9uQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRTkxMDg5MjA4NjAw
MEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb24uaWRsOyBwYXRoID0g
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MDND
OTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVu
Y29kaW5nID0gNDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNsaWVudC5oOyBwYXRoID0gbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0
RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID1Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzNTAzQzk5MTAx
NzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVFbmNvZGlu
ZyA9IDQ7IG5hbWUgPSBOb3RpZmljYXRpb25DbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzM1MDNDOUYxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm90aWZpY2F0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzM1MDNDQTAxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90
aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm90aWZpY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0ExMTAxNzlBRDcwMDNC
NDdFMSAvKiBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzNTAzQ0EyMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbkNl
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNhdGlvbkNl
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0NCRjEwMTc5QzFBMDAz
QjQ3RTEgLyogSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzM1MDNDQzYxMDE3QTFCMTAwM0I0N0UxIC8q
IE5vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBO
b3RpZmljYXRpb24uY3BwOyBwYXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzkwQ0E1MTBGRkMxNTdCMDA5MjE5NjIgLyog
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzOTBDQTUyMEZG
QzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmg7IHBhdGggPSBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMzkw
Q0E1MzBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIuaWRsOyBwYXRoID0gbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MzUwM0NDNjEwMTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5jcHA7IHBhdGggPSBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzM5MENBNTEwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOb3RpZmljYXRpb25DZW50ZXIu
Y3BwOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOTBDQTUyMEZGQzE1N0IwMDkyMTk2MiAv
KiBOb3RpZmljYXRpb25DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm90aWZpY2F0aW9uQ2VudGVyLmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOTBDQTUzMEZG
QzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5pZGw7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWVzU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzNDMENDRDIxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWN1cmVUZXh0SW5w
dXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0MwQ0NEMzExMkM1RTYyMDBD
RTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlY3VyZVRleHRJbnB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2
NzcsOSArMTA2NzcsOSBAQAogCQk5N0FBQkQxMDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
N0FBQkQxMTE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdBQUJEMTIxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTdCMzhFMjMxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHA7IHBhdGggPSBub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0IzOEUyNDE1MUM0MjY0MDA0NjIyRTkg
LyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHBhdGggPSBub3RpZmljYXRpb25zL0RPTVdp
bmRvd05vdGlmaWNhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdCMzhF
MjUxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gbm90aWZp
Y2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTdCMzhFMjMxNTFDNDI2NDAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5jcHA7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QjM4RTI0MTUx
QzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgcGF0aCA9IE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3QjM4RTI1MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBET01XaW5kb3dOb3RpZmljYXRp
b25zLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RDYxNTA1RjA3NjAw
MUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQWJzdHJhY3REYXRhYmFzZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogQWJzdHJhY3REYXRhYmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBYnN0cmFjdERhdGFiYXNlLmg7IHBhdGggPSBNb2R1bGVz
L3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RDgxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENoYW5nZVZlcnNpb25XcmFw
cGVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NjIsOSArMTA3NjIsOSBAQAog
CQk5N0U0MDI4RDEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U0MDI4RTEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvbkNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFRjdERkQxMDdFNTVCNzAwRDdD
NDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTdGOEU2NjExNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3Rp
ZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtl
ckNvbnRleHROb3RpZmljYXRpb25zLmNwcDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvV29ya2VyQ29u
dGV4dE5vdGlmaWNhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0Y4
RTY2MjE1MUQ0QTNGMDBEMkQxODEgLyogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
aDsgcGF0aCA9IG5vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdGOEU2NjMxNTFENEEzRjAwRDJEMTgxIC8qIFdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGw7IHBhdGggPSBub3RpZmljYXRpb25zL1dvcmtlckNv
bnRleHROb3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdG
OEU2NjExNTFENEEzRjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zLmNwcDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90
aWZpY2F0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3RjhFNjYyMTUx
RDRBM0YwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oOyBwYXRo
ID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3RjhFNjYzMTUxRDRBM0YwMEQyRDE4MSAvKiBX
b3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29y
a2VyQ29udGV4dE5vdGlmaWNhdGlvbnMuaWRsOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25z
L1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmVycmVyUG9saWN5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk4NDI2NEVGMTJENTI4MEEwMDBEODhBNCAvKiBMaW5rTG9hZGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTg1NkY4QzgxNTQ5RTgyNDAwQjA0
RjNBIC8qIFByZXJlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFByZXJlbmRlcmVyLmNwcDsgcGF0aCA9IGxvYWRlci9QcmVyZW5kZXJlci5jcHA7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTEzOTQwLDcgKzEzOTQwLDYgQEAKIAkJCQkxQzgx
Qjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMz
ODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCiAJCQkJRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREIC8q
IG1hdGhtbCAqLywKLQkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9u
cyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0Yx
QTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8sCiAJCQkJNURDRjgzNjkwRDU5MTU3
ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBAIC0xNzQ5MCw2ICsxNzQ4OSw3IEBACiAJCTk3MTE0
NUZFMTRFRjAwNkUwMDY3NEZEOSAvKiBNb2R1bGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90aWZp
Y2F0aW9ucyAqLywKIAkJCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2VvbG9jYXRpb24g
Ki8sCiAJCQkJOTcxMkE1NTMxNTAwNEUzQzAwNDhBRjEwIC8qIGluZGV4ZWRkYiAqLywKIAkJCQk4
OUY2MEIwODE1N0Y2ODM1MDA3NUUxNTcgLyogcXVvdGEgKi8sCkBAIC0yODE2Nyw4ICsyODE2Nyw3
IEBACiAJCQkJMkU0MzQ2NDgwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE2MTExNTAwOTBDRTAwNDhBRjEwIC8qIFdvcmtlckNvbnRl
eHRJbmRleGVkRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdGOEU2NjUxNTFENEE0
QjAwRDJEMTgxIC8qIFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUE4Q0NCQjRDMTUxRjgzM0IwMEFCN0NFOSAvKiBXb3JrZXJDb250ZXh0V2ViRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8qIFdv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThDQ0JCNEMxNTFGODMz
QjAwQUI3Q0U5IC8qIFdvcmtlckNvbnRleHRXZWJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywg
RjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTNFMjY0MzAxNDc0ODk5MTAwNUE4NTg4IC8qIFdvcmtlckV2ZW50UXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM2RTA3QTQxMzU4QThCRTAwQUFDQkM5IC8qIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NEMw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0
aW9ucy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMTczZWU3NWViYmYyNzE1
YTU5YmRlYmJmODc5YzdlMjA2ZmVjYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgi
Ci0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlBhZ2UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01XaW5kb3dOb3RpZmljYXRpb25zOjpET01XaW5k
b3dOb3RpZmljYXRpb25zKERPTVdpbmRvdyogd2luZG93KQotICAgIDogRE9NV2luZG93UHJvcGVy
dHkod2luZG93LT5mcmFtZSgpKQotICAgICwgbV93aW5kb3cod2luZG93KQotewotfQotCi1ET01X
aW5kb3dOb3RpZmljYXRpb25zOjp+RE9NV2luZG93Tm90aWZpY2F0aW9ucygpCi17Ci19Ci0KLURP
TVdpbmRvd05vdGlmaWNhdGlvbnMqIERPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmZyb20oRE9NV2lu
ZG93KiB3aW5kb3cpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1
cHBsZW1lbnROYW1lLCAoIkRPTVdpbmRvd05vdGlmaWNhdGlvbnMiKSk7Ci0gICAgRE9NV2luZG93
Tm90aWZpY2F0aW9ucyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd05vdGlmaWNh
dGlvbnMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFt
ZSkpOwotICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBzdXBwbGVtZW50ID0gbmV3IERP
TVdpbmRvd05vdGlmaWNhdGlvbnMod2luZG93KTsKLSAgICAgICAgU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSwgYWRvcHRQdHIoc3VwcGxlbWVu
dCkpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcGxlbWVudDsKLX0KLQotTm90aWZpY2F0aW9uQ2Vu
dGVyKiBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKERPTVdpbmRv
dyogd2luZG93KQotewotICAgIHJldHVybiBET01XaW5kb3dOb3RpZmljYXRpb25zOjpmcm9tKHdp
bmRvdyktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLX0KLQotdm9pZCBET01XaW5kb3dOb3RpZmlj
YXRpb25zOjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKQotewotICAgIG1fc3VzcGVuZGVk
Tm90aWZpY2F0aW9uQ2VudGVyID0gbV9ub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOwotICAg
IERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUoKTsKLX0KLQot
dm9pZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUo
RnJhbWUqIGZyYW1lKQotewotICAgIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNvbm5lY3RGcmFtZUZy
b21QYWdlQ2FjaGUoZnJhbWUpOwotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbV9zdXNwZW5k
ZWROb3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOwotfQotCi12b2lkIERPTVdpbmRvd05vdGlm
aWNhdGlvbnM6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpCi17Ci0gICAg
bV9zdXNwZW5kZWROb3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERPTVdpbmRvd1By
b3BlcnR5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKTsKLX0KLQotdm9p
ZCBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUo
KQotewotICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gbnVsbHB0cjsKLSAgICBET01XaW5kb3dQ
cm9wZXJ0eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7Ci19Ci0KLXZvaWQgRE9N
V2luZG93Tm90aWZpY2F0aW9uczo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCi17
Ci0gICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBudWxscHRyOwotICAgIERPTVdpbmRvd1Byb3Bl
cnR5Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCk7Ci19Ci0KLU5vdGlmaWNhdGlv
bkNlbnRlciogRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90aWZpY2F0aW9ucygpCi17
Ci0gICAgaWYgKCFtX3dpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyKQotICAgICAgICBy
ZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX3dpbmRvdy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBw
cm92aWRlciA9IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20ocGFnZSk7Ci0gICAg
aWYgKHByb3ZpZGVyKSAKLSAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXIgPSBOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZShkb2N1bWVudCwgcHJvdmlkZXIpOyAgICAKLQotICAgIHJldHVybiBt
X25vdGlmaWNhdGlvbkNlbnRlci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2lu
ZG93Tm90aWZpY2F0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5k
b3dOb3RpZmljYXRpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZTI2ZGQ2
MDBiMzdkZmYwZjlkMjEyMzFhMWJmNjYxOTEzZDg2ZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01X
aW5kb3dOb3RpZmljYXRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERPTVdpbmRvd05vdGlm
aWNhdGlvbnNfaAotI2RlZmluZSBET01XaW5kb3dOb3RpZmljYXRpb25zX2gKLQotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNs
dWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0j
aW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBET01XaW5kb3c7Ci1jbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7Ci0KLWNsYXNzIERPTVdpbmRv
d05vdGlmaWNhdGlvbnMgOiBwdWJsaWMgU3VwcGxlbWVudDxET01XaW5kb3c+LCBwdWJsaWMgRE9N
V2luZG93UHJvcGVydHkgewotcHVibGljOgotICAgIHZpcnR1YWwgfkRPTVdpbmRvd05vdGlmaWNh
dGlvbnMoKTsKLQotICAgIHN0YXRpYyBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNh
dGlvbnMoRE9NV2luZG93Kik7Ci0gICAgc3RhdGljIERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIGZy
b20oRE9NV2luZG93Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFn
ZUNhY2hlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBh
Z2VDYWNoZShGcmFtZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBPVkVSUklERTsKLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBET01XaW5kb3dOb3RpZmljYXRpb25zKERPTVdpbmRvdyopOwotCi0gICAg
Tm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCk7Ci0KLSAgICBET01XaW5k
b3cqIG1fd2luZG93OwotICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0
aW9uQ2VudGVyOwotICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fc3VzcGVuZGVkTm90
aWZpY2F0aW9uQ2VudGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
LQotI2VuZGlmIC8vIERPTVdpbmRvd05vdGlmaWNhdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOGExMjljNTdhMWRjNjg2NWIxNTU4YzllM2M3NDY1
M2Q5ZGYyOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbAor
KysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotbW9kdWxlIHdpbmRvdyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRp
b25hbD1OT1RJRklDQVRJT05TfExFR0FDWV9OT1RJRklDQVRJT05TLAotICAgICAgICBTdXBwbGVt
ZW50YWw9RE9NV2luZG93Ci0gICAgXSBET01XaW5kb3dOb3RpZmljYXRpb25zIHsKLSNpZiBkZWZp
bmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBO
b3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90aWZpY2F0aW9uczsKLSNlbmRpZgotI2lmIGRlZmlu
ZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklDQVRJT05TCi0gICAgICAg
IGF0dHJpYnV0ZSBOb3RpZmljYXRpb25Db25zdHJ1Y3RvciBOb3RpZmljYXRpb247Ci0jZW5kaWYK
LSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ODk5MmFlYjMzMWU5NjhkMGJk
N2JmNDI0YWRiMDE1NTk4YWRkYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKLQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgotCi0jaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCi0jaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgotI2luY2x1ZGUgIkRp
Y3Rpb25hcnkuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVycm9yRXZlbnQu
aCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVy
LmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSAiV2luZG93
Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdCgwLCB0aGlzKQotewotfQotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgS1VSTCYgdXJsLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQotICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2lzSFRNTCh0cnVlKQotICAgICwgbV9zdGF0ZShJZGxl
KQotICAgICwgbV9ub3RpZmljYXRpb25DZW50ZXIocHJvdmlkZXIpCi17Ci0gICAgaWYgKG1fbm90
aWZpY2F0aW9uQ2VudGVyLT5jaGVja1Blcm1pc3Npb24oKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV9ub3RpZmljYXRpb25VUkwgPSB1cmw7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKQotICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2lzSFRNTChmYWxzZSkKLSAgICAsIG1fdGl0bGUodGl0
bGUpCi0gICAgLCBtX2JvZHkoYm9keSkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fbm90
aWZpY2F0aW9uQ2VudGVyKHByb3ZpZGVyKQotewotICAgIGlmIChtX25vdGlmaWNhdGlvbkNlbnRl
ci0+Y2hlY2tQZXJtaXNzaW9uKCkgIT0gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uQWxs
b3dlZCkgewotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIG1faWNvbiA9IGljb25VUkkuaXNFbXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKLSAgICBpZiAoIW1faWNvbi5p
c0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCi0gICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKLSAgICAsIG1faXNIVE1MKGZhbHNlKQotICAgICwgbV90aXRsZSh0aXRs
ZSkKLSAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fdGFza1RpbWVyKGFkb3B0UHRyKG5ldyBU
aW1lcjxOb3RpZmljYXRpb24+KHRoaXMsICZOb3RpZmljYXRpb246OnRhc2tUaW1lckZpcmVkKSkp
Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9ub3RpZmljYXRp
b25DZW50ZXIgPSBET01XaW5kb3dOb3RpZmljYXRpb25zOjp3ZWJraXROb3RpZmljYXRpb25zKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygpKTsKLSAgICAKLSAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKTsKLSAgICBtX3Rhc2tUaW1lci0+
c3RhcnRPbmVTaG90KDApOwotfQotI2VuZGlmCi0KLU5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlv
bigpIAotewotfQotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCi17IAotICAgIFJlZlB0cjxOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4
dCwgZWMsIHByb3ZpZGVyKSkpOwotICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7
Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBwcm92aWRlcikgCi17IAotICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNh
dGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBib2R5LCBpY29uVVJJLCBjb250
ZXh0LCBlYywgcHJvdmlkZXIpKSk7Ci0gICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKLX0KLSNlbmRpZgotCi0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi1zdGF0aWMgdm9pZCBnZXRBbmRBZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eSwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0g
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gb3B0aW9ucy5nZXRFdmVudExpc3Rl
bmVyKHByb3BlcnR5LCBub3RpZmljYXRpb24pOwotICAgIGlmIChsaXN0ZW5lcikKLSAgICAgICAg
bm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgbGlzdGVuZXIucmVsZWFz
ZSgpLCBmYWxzZSk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQotewotICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxl
KSkpOwotICAgIFN0cmluZyBhcmd1bWVudDsKLSAgICBpZiAob3B0aW9ucy5nZXQoImJvZHkiLCBh
cmd1bWVudCkpCi0gICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0Qm9keShhcmd1bWVudCk7Ci0gICAg
aWYgKG9wdGlvbnMuZ2V0KCJ0YWciLCBhcmd1bWVudCkpCi0gICAgICAgIG5vdGlmaWNhdGlvbi0+
c2V0VGFnKGFyZ3VtZW50KTsKLSAgICBnZXRBbmRBZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5zaG93RXZlbnQsICJvbnNob3ciLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOwotICAg
IGdldEFuZEFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsICJvbmNsb3Nl
Iiwgb3B0aW9ucywgbm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBnZXRBbmRBZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAib25lcnJvciIsIG9wdGlvbnMsIG5vdGlmaWNh
dGlvbi5nZXQoKSk7Ci0gICAgZ2V0QW5kQWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCwgIm9uY2xpY2siLCBvcHRpb25zLCBub3RpZmljYXRpb24uZ2V0KCkpOwotCi0gICAg
bm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbm90aWZpY2F0aW9u
LnJlbGVhc2UoKTsKLX0KLSNlbmRpZgotCi1jb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlv
bjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JOb3RpZmljYXRpb247Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCi17
Ci0gICAgLy8gcHJldmVudCBkb3VibGUtc2hvd2luZwotICAgIGlmIChtX3N0YXRlID09IElkbGUg
JiYgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpICYmIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+c2hvdyh0aGlzKSkgewotICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKLSAg
ICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIH0KLX0KLQotdm9pZCBOb3RpZmlj
YXRpb246OmNsb3NlKCkKLXsKLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIElkbGU6
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2hvd2luZzoKLSAgICAgICAgaWYgKG1fbm90aWZp
Y2F0aW9uQ2VudGVyLT5jbGllbnQoKSkKLSAgICAgICAgICAgIG1fbm90aWZpY2F0aW9uQ2VudGVy
LT5jbGllbnQoKS0+Y2FuY2VsKHRoaXMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENsb3Nl
ZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1FdmVudFRhcmdldERhdGEqIE5vdGlmaWNh
dGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OwotfQotCi1FdmVudFRhcmdldERhdGEqIE5vdGlmaWNhdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250
ZXh0RGVzdHJveWVkKCk7Ci0gICAgaWYgKG1fbm90aWZpY2F0aW9uQ2VudGVyLT5jbGllbnQoKSkK
LSAgICAgICAgbV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpLT5ub3RpZmljYXRpb25PYmpl
Y3REZXN0cm95ZWQodGhpcyk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCi17
Ci0gICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2VkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0
ZSA9IENsb3NlZDsKLSAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLX0KLQotdm9pZCBO
b3RpZmljYXRpb246OmRpc3BhdGNoU2hvd0V2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0K
LXZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQoKQotewotICAgIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
LX0KLQotdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCi17Ci0gICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKLSAgICBmaW5hbGl6ZSgpOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0
Y2hFcnJvckV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotfQotCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi12b2lkIE5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQoVGltZXI8Tm90aWZp
Y2F0aW9uPiogdGltZXIpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5wYWdlKCkpOwotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRp
bWVyID09IG1fdGFza1RpbWVyLmdldCgpKTsKLSAgICBpZiAoTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkt
PnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSAhPSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkKSB7Ci0gICAgICAg
IGRpc3BhdGNoRXJyb3JFdmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNob3co
KTsKLX0KLSNlbmRpZgotCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLWNvbnN0IFN0cmlu
ZyYgTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uTGV2ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKTsKLSAgICByZXR1cm4g
cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSktPmNsaWVudCgpLT5jaGVja1Blcm1pc3Npb24o
Y29udGV4dCkpOwotfQotCi1jb25zdCBTdHJpbmcmIE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0
cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWlzc2lvbikKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYWxsb3dlZFBlcm1pc3Npb24sICgiZ3Jh
bnRlZCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGVuaWVkUGVy
bWlzc2lvbiwgKCJkZW5pZWQiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGRlZmF1bHRQZXJtaXNzaW9uLCAoImRlZmF1bHQiKSk7Ci0gICAgc3dpdGNoIChwZXJtaXNz
aW9uKSB7Ci0gICAgY2FzZSBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkOgot
ICAgICAgICByZXR1cm4gYWxsb3dlZFBlcm1pc3Npb247Ci0gICAgY2FzZSBOb3RpZmljYXRpb25D
bGllbnQ6OlBlcm1pc3Npb25EZW5pZWQ6Ci0gICAgICAgIHJldHVybiBkZW5pZWRQZXJtaXNzaW9u
OwotICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uTm90QWxsb3dlZDoKLSAg
ICAgICAgcmV0dXJuIGRlZmF1bHRQZXJtaXNzaW9uOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZGVuaWVkUGVybWlzc2lvbjsKLX0KLQotdm9pZCBO
b3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFj
aykKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpKTsKLSAgICBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpmcm9tKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSkt
PmNsaWVudCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjb250ZXh0LCBjYWxsYmFjayk7Ci19Ci0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZGU5MTAwNzNiMDI2YmU2M2MxMjlkMTIwNDI4ZDY0MDUxMTBkOTZhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIE5vdGlmaWNhdGlvbl9oICAKLSNkZWZpbmUgTm90aWZpY2F0aW9uX2gKLQot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJU
ZXh0RGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQotI2luY2x1ZGUgIlRpbWVyLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIERpY3Rpb25hcnk7Ci1jbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7Ci1jbGFzcyBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7Ci1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBU
aHJlYWRhYmxlTG9hZGVyOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBO
b3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIE5vdGlmaWNhdGlvbigpOwotI2lmIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0
ZShjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQ
YXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRl
cik7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7Ci0jZW5kaWYKLSAgICAK
LSAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKLQotICAgIHZvaWQgc2hvdygpOwotI2lmIEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICB2b2lkIGNhbmNlbCgpIHsgY2xvc2UoKTsg
fQotI2VuZGlmCi0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgYm9vbCBpc0hUTUwoKSBjb25zdCB7
IHJldHVybiBtX2lzSFRNTDsgfQotICAgIHZvaWQgc2V0SFRNTChib29sIGlzSFRNTCkgeyBtX2lz
SFRNTCA9IGlzSFRNTDsgfQotICAgIAotICAgIEtVUkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9u
b3RpZmljYXRpb25VUkw7IH0KLSAgICB2b2lkIHNldFVSTChLVVJMIHVybCkgeyBtX25vdGlmaWNh
dGlvblVSTCA9IHVybDsgfQotICAgIAotICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1faWNvbjsgfQotCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsg
fQotICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9Ci0KLSAgICBTdHJp
bmcgZGlyKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KLSAgICB2b2lkIHNldERpcihj
b25zdCBTdHJpbmcmIGRpcikgeyBtX2RpcmVjdGlvbiA9IGRpcjsgfQotCi0jaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotICAgIFN0cmluZyByZXBsYWNlSWQoKSBjb25zdCB7IHJldHVy
biB0YWcoKTsgfQotICAgIHZvaWQgc2V0UmVwbGFjZUlkKGNvbnN0IFN0cmluZyYgcmVwbGFjZUlk
KSB7IHNldFRhZyhyZXBsYWNlSWQpOyB9Ci0jZW5kaWYKLQotICAgIFN0cmluZyB0YWcoKSBjb25z
dCB7IHJldHVybiBtX3RhZzsgfQotICAgIHZvaWQgc2V0VGFnKGNvbnN0IFN0cmluZyYgdGFnKSB7
IG1fdGFnID0gdGFnOyB9Ci0KLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGRpcigpID09ICJydGwiID8gUlRMIDogTFRSOyB9Ci0KLSAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHNob3cpOwotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGRpc3BsYXkpOwotI2VuZGlm
Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7Ci0gICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7Ci0gICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihjbGljayk7Ci0gICAgCi0gICAgdm9pZCBkaXNwYXRjaENsaWNrRXZlbnQo
KTsKLSAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaFNob3dFdmVudCgpOwotCi0gICAgdXNpbmcgUmVm
Q291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmlj
YXRpb24+OjpkZXJlZjsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpOwotCi0gICAgdm9pZCBzdG9wTG9hZGluZ0ljb24oKTsKLQotICAgIC8vIERl
cHJlY2F0ZWQuIFVzZSBmdW5jdGlvbnMgZnJvbSBOb3RpZmljYXRpb25DZW50ZXIuCi0gICAgdm9p
ZCBkZXRhY2hQcmVzZW50ZXIoKSB7IH0KLQotICAgIHZvaWQgZmluYWxpemUoKTsKLQotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBlcm1pc3Npb25M
ZXZlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
cGVybWlzc2lvblN0cmluZyhOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24pOwotICAgIHN0
YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pOwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIE5vdGlmaWNhdGlvbihj
b25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwotICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4pOwotI2VuZGlmCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgTm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
LSNlbmRpZgotCi0gICAgdm9pZCBzZXRCb2R5KGNvbnN0IFN0cmluZyYgYm9keSkgeyBtX2JvZHkg
PSBib2R5OyB9Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZl
bnRUYXJnZXREYXRhKCk7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpOwotCi0gICAgdm9pZCBzdGFydExvYWRpbmdJY29uKCk7Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nSWNvbigpOwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgdm9p
ZCB0YXNrVGltZXJGaXJlZChUaW1lcjxOb3RpZmljYXRpb24+Kik7Ci0jZW5kaWYKLSAgICAKLSAg
ICBib29sIG1faXNIVE1MOwotCi0gICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgotICAgIEtVUkwg
bV9pY29uOwotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX2JvZHk7Ci0gICAgLy8g
RklYTUU6IERlcHJlY2F0ZSBIVE1MIE5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX25vdGlmaWNh
dGlvblVSTDsKLQotICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKLSAgICBTdHJpbmcgbV90YWc7Ci0K
LSAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKLSAgICAgICAgSWRsZSA9IDAsCi0gICAgICAg
IFNob3dpbmcgPSAxLAotICAgICAgICBDbG9zZWQgPSAyLAotICAgIH07Ci0KLSAgICBOb3RpZmlj
YXRpb25TdGF0ZSBtX3N0YXRlOwotCi0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbV9u
b3RpZmljYXRpb25DZW50ZXI7Ci0gICAgCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgT3duUHRyPFRpbWVyPE5v
dGlmaWNhdGlvbj4gPiBtX3Rhc2tUaW1lcjsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKLQotI2VuZGlmIC8vIE5vdGlmaWNhdGlvbnNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkYTJlYjdmMjQ1ZjlmNTZjNmViM2I3NTVhOGQ2NjY1ZGNiNGJlMzNmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDg2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAg
Q29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUywKLSAgICAgICAg
QWN0aXZlRE9NT2JqZWN0LAotICAgICAgICBFdmVudFRhcmdldCwKLSNpZiBkZWZpbmVkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTk9USUZJQ0FUSU9OUwotICAgICAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcgdGl0bGUsIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRd
IERpY3Rpb25hcnkgb3B0aW9ucyksCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCi0jZWxzZQotICAgICAgICBPbWl0Q29uc3RydWN0b3IKLSNlbmRpZgotICAgIF0gTm90
aWZpY2F0aW9uIHsKLSAgICAgICAgdm9pZCBzaG93KCk7Ci0jaWYgZGVmaW5lZChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUwotICAgICAg
ICB2b2lkIGNhbmNlbCgpOwotI2VuZGlmCi0jaWYgZGVmaW5lZChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJiYgRU5BQkxFX05PVElGSUNBVElPTlMKLSAgICAgICAgdm9pZCBjbG9zZSgpOwotI2VuZGlm
Ci0KLQotI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9OT1RJRklD
QVRJT05TCi0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzdGF0aWMg
RE9NU3RyaW5nIHBlcm1pc3Npb25MZXZlbCgpOwotICAgICAgICBbQ3VzdG9tXSBzdGF0aWMgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihpbiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgY2Fs
bGJhY2spOwotI2VuZGlmCi0KLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zaG93
OwotI2lmIGRlZmluZWQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAmJiBFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kaXNw
bGF5OwotI2VuZGlmCi0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0g
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xvc2U7Ci0gICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uY2xpY2s7Ci0KLSAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBk
aXI7Ci0jaWYgZGVmaW5lZChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9M
RUdBQ1lfTk9USUZJQ0FUSU9OUwotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlcGxhY2VJ
ZDsKLSNlbmRpZgotI2lmIGRlZmluZWQoRU5BQkxFX05PVElGSUNBVElPTlMpICYmIEVOQUJMRV9O
T1RJRklDQVRJT05TCi0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdGFnOwotI2VuZGlmCi0K
LSAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgICAgIHZvaWQgYWRkRXZlbnRM
aXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAgICAgdm9pZCByZW1v
dmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAg
ICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQotICAgICAgICAgICAgcmFp
c2VzKEV2ZW50RXhjZXB0aW9uKTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBlYmI1NDc0MDA5NWU1NmJmZjY3MDgyY2FkZWZmMWZmM2I2YzU4NjcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNlbnRlci5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJOb3RpZmlj
YXRpb25DbGllbnQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIldv
cmtlckNvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPE5vdGlm
aWNhdGlvbkNlbnRlcj4gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVm
UHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gbm90aWZpY2F0aW9uQ2VudGVyKGFkb3B0UmVmKG5ldyBO
b3RpZmljYXRpb25DZW50ZXIoY29udGV4dCwgY2xpZW50KSkpOwotICAgIG5vdGlmaWNhdGlvbkNl
bnRlci0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIG5vdGlmaWNhdGlvbkNlbnRlci5y
ZWxlYXNlKCk7Ci19Ci0KLU5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uQ2VudGVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50
KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBtX2NsaWVudChj
bGllbnQpCi17Ci19Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1pbnQgTm90
aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Blcm1pc3Npb24oKQotewotICAgIGlmICghY2xpZW50KCkg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbkRlbmllZDsKLQotICAgIHN3aXRjaCAoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5TaG93Tm90aWZpY2F0aW9ucygpKSB7Ci0g
ICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QWx3YXlzQWxsb3c6Ci0gICAgICAgIHJldHVybiBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkOwotICAgIGNhc2UgU2VjdXJpdHlPcmln
aW46OkFsd2F5c0Rlbnk6Ci0gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1p
c3Npb25EZW5pZWQ7Ci0gICAgY2FzZSBTZWN1cml0eU9yaWdpbjo6QXNrOgotICAgICAgICByZXR1
cm4gbV9jbGllbnQtPmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBtX2NsaWVudC0+
Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci19Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVy
OjpyZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCi17
Ci0gICAgaWYgKCFjbGllbnQoKSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuU2hvd05vdGlmaWNhdGlvbnMoKSkgewotICAgIGNhc2UgU2VjdXJpdHlP
cmlnaW46OkFsd2F5c0FsbG93OgotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFsd2F5c0Rlbnk6
IHsKLSAgICAgICAgbV9jYWxsYmFja3MuYWRkKE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6
Y3JlYXRlQW5kU3RhcnRUaW1lcih0aGlzLCBjYWxsYmFjaykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgU2VjdXJpdHlPcmlnaW46OkFzazoKLSAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LT5yZXF1ZXN0UGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNr
KTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBtX2NsaWVudC0+cmVx
dWVzdFBlcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjYWxsYmFjayk7Ci19Ci0j
ZW5kaWYKLQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6OnN0b3AoKQotewotICAgIGlmICghbV9j
bGllbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVudC0+Y2FuY2VsUmVxdWVzdHNGb3JQ
ZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgbV9jbGllbnQtPmNsZWFy
Tm90aWZpY2F0aW9ucyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIG1fY2xpZW50ID0g
MDsKLX0KLQotdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RUaW1lZE91dChOb3RpZmlj
YXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayogcmVxdWVzdCkKLXsKLSAg
ICBtX2NhbGxiYWNrcy5yZW1vdmUocmVxdWVzdCk7Ci19Ci0KLVBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyOjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IE5vdGlmaWNhdGlvbkNlbnRl
cjo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrOjpjcmVhdGVBbmRTdGFydFRpbWVyKE5vdGlm
aWNhdGlvbkNlbnRlciogY2VudGVyLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sp
Ci17Ci0gICAgUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9uUmVxdWVzdENh
bGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sgPSBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVy
OjpOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2soY2VudGVyLCBjYWxsYmFjaykpOwotICAgIHJl
cXVlc3RDYWxsYmFjay0+c3RhcnRUaW1lcigpOwotICAgIHJldHVybiByZXF1ZXN0Q2FsbGJhY2su
cmVsZWFzZSgpOwotfQotCi1Ob3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RD
YWxsYmFjazo6Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrKE5vdGlmaWNhdGlvbkNlbnRlciog
Y2VudGVyLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCi0gICAgOiBtX25vdGlm
aWNhdGlvbkNlbnRlcihjZW50ZXIpCi0gICAgLCBtX3RpbWVyKHRoaXMsICZOb3RpZmljYXRpb25D
ZW50ZXI6Ok5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjazo6dGltZXJGaXJlZCkKLSAgICAsIG1f
Y2FsbGJhY2soY2FsbGJhY2spCi17Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3Rp
ZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s6OnN0YXJ0VGltZXIoKQotewotICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDApOwotfQotCi12b2lkIE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVyPE5vdGlmaWNhdGlvbkNlbnRlcjo6Tm90
aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiopCi17Ci0gICAgbV9jYWxsYmFjay0+aGFuZGxlRXZl
bnQoKTsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlci0+cmVxdWVzdFRpbWVkT3V0KHRoaXMpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNmNmQ2ODkwMmYzMDU3NWM4MDdiYTNjMjEwMjFkOTcwNTM3YTUxZWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgTm90aWZpY2F0aW9uQ2VudGVyX2gKLSNkZWZpbmUgTm90
aWZpY2F0aW9uQ2VudGVyX2gKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRl
ICJOb3RpZmljYXRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwotY2xhc3MgVm9pZENhbGxiYWNr
OwotCi1jbGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmlj
YXRpb25DZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0KLSNpZiBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCi0gICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAg
ICAgaWYgKCFjbGllbnQoKSkgewotICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChVUkkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChVUkkpLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGVjLCB0aGlzKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKLSAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKLSAgICB7Ci0gICAgICAgIGlmICghY2xpZW50
KCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUo
dGl0bGUsIGJvZHksIGljb25VUkksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZWMsIHRoaXMp
OwotICAgIH0KLSNlbmRpZgotCi0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudDsgfQotCi0jaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQotICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKLSAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgTm90aWZpY2F0aW9uQ2VudGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKLQotICAgIGNsYXNzIE5v
dGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
blJlcXVlc3RDYWxsYmFjaz4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Tm90aWZpY2F0aW9uUmVxdWVzdENhbGxiYWNrPiBjcmVhdGVBbmRTdGFydFRpbWVyKE5vdGlm
aWNhdGlvbkNlbnRlciosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0gICAgICAgIHZvaWQg
c3RhcnRUaW1lcigpOwotICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Tm90aWZpY2F0aW9u
UmVxdWVzdENhbGxiYWNrPiopOwotICAgIHByaXZhdGU6Ci0gICAgICAgIE5vdGlmaWNhdGlvblJl
cXVlc3RDYWxsYmFjayhOb3RpZmljYXRpb25DZW50ZXIqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4pOwotCi0gICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1fbm90aWZpY2F0aW9u
Q2VudGVyOwotICAgICAgICBUaW1lcjxOb3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+IG1fdGlt
ZXI7Ci0gICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2s7Ci0gICAgfTsKLQot
ICAgIHZvaWQgcmVxdWVzdFRpbWVkT3V0KE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayopOwot
Ci0gICAgTm90aWZpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNoU2V0PFJlZlB0cjxO
b3RpZmljYXRpb25SZXF1ZXN0Q2FsbGJhY2s+ID4gbV9jYWxsYmFja3M7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gTm90aWZpY2F0aW9uQ2VudGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5OWJhOWZmM2M0MDY1MzJk
OWQ3MzcxYjZiZTY4OWM1ZDhhZjFmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNl
bnRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSB0aHJlYWRz
IHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUxFR0FDWV9OT1RJRklD
QVRJT05TLAotICAgICAgICBBY3RpdmVET01PYmplY3QsCi0gICAgICAgIE9taXRDb25zdHJ1Y3Rv
cgotICAgIF0gTm90aWZpY2F0aW9uQ2VudGVyIHsKLSNpZiAhZGVmaW5lZChFTkFCTEVfVEVYVF9O
T1RJRklDQVRJT05TX09OTFkpIHx8ICFFTkFCTEVfVEVYVF9OT1RJRklDQVRJT05TX09OTFkKLSAg
ICAgICBbVjhDdXN0b21dIE5vdGlmaWNhdGlvbiBjcmVhdGVIVE1MTm90aWZpY2F0aW9uKGluIERP
TVN0cmluZyB1cmwpIHJhaXNlcyhET01FeGNlcHRpb24pOwotI2VuZGlmCi0gICAgICAgW1Y4Q3Vz
dG9tXSBOb3RpZmljYXRpb24gY3JlYXRlTm90aWZpY2F0aW9uKGluIERPTVN0cmluZyBpY29uVXJs
LCBpbiBET01TdHJpbmcgdGl0bGUsIGluIERPTVN0cmluZyBib2R5KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKLQotICAgICAgIGludCBjaGVja1Blcm1pc3Npb24oKTsKLSAgICAgICBbQ3VzdG9tXSB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKGluIFZvaWRDYWxsYmFjayBjYWxsYmFjayk7Ci0gICAgfTsK
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xp
ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTI4MzZlNTY0Y2FjOTZhOTBm
M2YxNWQ5Y2QyOTZjNTljNDViMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGll
bnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRp
b25DbGllbnRfaAotI2RlZmluZSBOb3RpZmljYXRpb25DbGllbnRfaAotCi0jaW5jbHVkZSAiTm90
aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7Ci1jbGFzcyBOb3RpZmljYXRpb247Ci1jbGFzcyBQ
YWdlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotY2xhc3MgTm90aWZpY2F0aW9u
Q2xpZW50IHsKLQotcHVibGljOgotICAgIGVudW0gUGVybWlzc2lvbiB7Ci0gICAgICAgIFBlcm1p
c3Npb25BbGxvd2VkLCAvLyBVc2VyIGhhcyBhbGxvd2VkIG5vdGlmaWNhdGlvbnMKLSAgICAgICAg
UGVybWlzc2lvbk5vdEFsbG93ZWQsIC8vIFVzZXIgaGFzIG5vdCB5ZXQgYWxsb3dlZAotICAgICAg
ICBQZXJtaXNzaW9uRGVuaWVkIC8vIFVzZXIgaGFzIGV4cGxpY2l0bHkgZGVuaWVkIHBlcm1pc3Np
b24KLSAgICB9OwotCi0gICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBiZSBzaG93
bi4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKSA9IDA7Ci0KLSAgICAvLyBS
ZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBi
ZSBjYW5jZWxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsK
LQotICAgIC8vIFdoZW4gdGhlIHVzZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVu
dCBhcHBsaWNhdGlvbiwgYWxsIG9mIHRoZSBwYWdlJ3MKLSAgICAvLyBhc3NvY2lhdGVkIG5vdGlm
aWNhdGlvbnMgYXJlIGNsZWFyZWQuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9Ci0gICAgCi0gICAgLy8gSW5mb3JtcyB0aGUg
cHJlc2VudGVyIHRoYXQgYSBOb3RpZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAot
ICAgIC8vIChzdWNoIGFzIGJ5IGEgcGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkg
Y29udGludWUgc2hvd2luZwotICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBh
dHRlbXB0IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRsZXJzLgotICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKikgPSAwOwotCi0gICAgLy8gSW5m
b3JtcyB0aGUgcHJlc2VudGVyIHRoZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhh
cyBiZWVuIGRlc3Ryb3llZC4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCgpID0gMDsKLQotI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAg
ICAvLyBSZXF1ZXN0cyB1c2VyIHBlcm1pc3Npb24gdG8gc2hvdyBkZXNrdG9wIG5vdGlmaWNhdGlv
bnMgZnJvbSBhIHBhcnRpY3VsYXIKLSAgICAvLyBzY3JpcHQgY29udGV4dC4gVGhlIGNhbGxiYWNr
IHBhcmFtZXRlciBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIHVzZXIgaGFzCi0gICAgLy8gbWFkZSBh
IGRlY2lzaW9uLgotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSA9IDA7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrPikgPSAwOwotI2VuZGlmCi0KLSAgICAvLyBDYW5jZWwgYWxsIG91dHN0YW5k
aW5nIHJlcXVlc3RzIGZvciB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAotICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
ID0gMDsKLQotICAgIC8vIENoZWNrcyB0aGUgY3VycmVudCBsZXZlbCBvZiBwZXJtaXNzaW9uLgot
ICAgIHZpcnR1YWwgUGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbkNsaWVu
dCgpIHsgfQotfTsKLQotdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqLCBOb3RpZmljYXRp
b25DbGllbnQqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTm90aWZp
Y2F0aW9uQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5YmJkOWJmM2MyMGQ1MjZjOWQ2MzA3ZDk4YjljODFjYjI1MjA3MDU5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCIKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5v
dGlmaWNhdGlvbkNvbnRyb2xsZXI6Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9u
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi17Ci19Ci0KLU5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6On5Ob3RpZmljYXRpb25Db250cm9sbGVyKCkKLXsKLSAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVk
KCk7Ci19Ci0KLVBhc3NPd25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4gTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6Y3JlYXRlKE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTm90aWZpY2F0aW9uQ29udHJvbGxlcihjbGllbnQpKTsKLX0KLQot
Tm90aWZpY2F0aW9uQ2xpZW50KiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpjbGllbnRGcm9tKFBh
Z2UqIHBhZ2UpCi17Ci0gICAgaWYgKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpKQotICAgICAgICByZXR1cm4gY29u
dHJvbGxlci0+Y2xpZW50KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmlu
ZyYgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIk5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIiKSk7Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQ
YWdlKiBwYWdlLCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKLXsKLSAgICBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3Vw
cGxlbWVudE5hbWUoKSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKGNsaWVudCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmQxOTY4ZWQ0ZDE1ZTI3ZGQyYzQ2OWFjNjczNmQ0MTBjNmMw
MDNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSog
YXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotKi8KLQotI2lmbmRlZiBOb3RpZmljYXRpb25Db250cm9sbGVyX2gKLSNkZWZpbmUgTm90
aWZpY2F0aW9uQ29udHJvbGxlcl9oCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwotCi1jbGFzcyBOb3RpZmlj
YXRpb25Db250cm9sbGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4gewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIpOwotcHVibGljOgotICAgIH5Ob3Rp
ZmljYXRpb25Db250cm9sbGVyKCk7Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxOb3RpZmljYXRp
b25Db250cm9sbGVyPiBjcmVhdGUoTm90aWZpY2F0aW9uQ2xpZW50Kik7Ci0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKLSAgICBzdGF0aWMgTm90aWZpY2F0
aW9uQ29udHJvbGxlciogZnJvbShQYWdlKiBwYWdlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxOb3Rp
ZmljYXRpb25Db250cm9sbGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVt
ZW50TmFtZSgpKSk7IH0KLSAgICBzdGF0aWMgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnRGcm9t
KFBhZ2UqKTsKLQotICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQ7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3Rp
ZmljYXRpb25DbGllbnQqKTsKLQotICAgIE5vdGlmaWNhdGlvbkNsaWVudCogbV9jbGllbnQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gTm90aWZp
Y2F0aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODRlNzMyYTdmOWEyOTk5ZDI2ZjJiNzhkZGJhM2Y2MjkwMDhiZjZm
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOb3RpZmljYXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2tfaAotI2RlZmluZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tfaAotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0KLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhbmRsZUV2ZW50KGNvbnN0IFN0cmluZyYgcGVybWlzc2lvbikgPSAwOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCi0K
LSNlbmRpZiAvLyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaWRsIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjExMTYxMmUy
NDBjZWNhYTE5ZmI1ZWE3MWFhY2Q3ZDI2MDkzYzIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLW1vZHVsZSB0aHJlYWRzIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAg
IENvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMsCi0gICAgICAgIENhbGxiYWNrCi0gICAgXSBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgewotICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50
KGluIERPTVN0cmluZyBwZXJtaXNzaW9uKTsKLSAgICB9OwotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWVkYjk5MmNkMjJjNGNjZmUxMTE1
YmM4MzYzNzFlMTZjYzEwOTYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvV29ya2VyQ29udGV4dE5vdGlm
aWNhdGlvbnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0Tm90aWZp
Y2F0aW9ucy5oIgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKLQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgotI2luY2x1
ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6V29ya2VyQ29udGV4
dE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCogY29udGV4dCkKLSAgICA6IG1fY29udGV4dChj
b250ZXh0KQotewotfQotCi1Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6fldvcmtlckNvbnRl
eHROb3RpZmljYXRpb25zKCkKLXsKLX0KLQotV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMqIFdv
cmtlckNvbnRleHROb3RpZmljYXRpb25zOjpmcm9tKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgQXRvbWljU3RyaW5nIHN1cHBsZW1lbnROYW1lID0gIldvcmtlckNvbnRleHROb3RpZmlj
YXRpb25zIjsKLSAgICBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PFdvcmtlckNvbnRleHROb3RpZmljYXRpb25zKj4oU3VwcGxlbWVudDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSkpOwotICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBzdXBwbGVtZW50ID0gbmV3IFdvcmtlckNvbnRleHRO
b3RpZmljYXRpb25zKGNvbnRleHQpOwotICAgICAgICBTdXBwbGVtZW50PFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+Ojpwcm92aWRlVG8oY29udGV4dCwgc3VwcGxlbWVudE5hbWUsIGFkb3B0UHRyKHN1
cHBsZW1lbnQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBsZW1lbnQ7Ci19Ci0KLU5vdGlmaWNh
dGlvbkNlbnRlciogV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnM6OndlYmtpdE5vdGlmaWNhdGlv
bnMoV29ya2VyQ29udGV4dCogY29udGV4dCkKLXsKLSAgICByZXR1cm4gV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnM6OmZyb20oY29udGV4dCktPndlYmtpdE5vdGlmaWNhdGlvbnMoKTsKLX0KLQot
Tm90aWZpY2F0aW9uQ2VudGVyKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uczo6d2Via2l0Tm90
aWZpY2F0aW9ucygpCi17Ci0gICAgaWYgKCFtX25vdGlmaWNhdGlvbkNlbnRlcikKLSAgICAgICAg
bV9ub3RpZmljYXRpb25DZW50ZXIgPSBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShtX2NvbnRl
eHQsIG1fY29udGV4dC0+dGhyZWFkKCktPmdldE5vdGlmaWNhdGlvbkNsaWVudCgpKTsKLSAgICBy
ZXR1cm4gbV9ub3RpZmljYXRpb25DZW50ZXIuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDYzNTRmY2ExODA4YjJiMTAyMjUzNjgxNDk0MmYwOTNmMjM1YWZmZDUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Xb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgV29ya2VyQ29udGV4dE5v
dGlmaWNhdGlvbnNfaAotI2RlZmluZSBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9uc19oCi0KLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQot
Ci0jaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBOb3RpZmljYXRpb25DZW50ZXI7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Y2xhc3MgV29ya2VyQ29udGV4dDsKLQotY2xhc3MgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMg
OiBwdWJsaWMgU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+V29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMoKTsKLQotICAgIHN0YXRpYyBO
b3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoV29ya2VyQ29udGV4dCopOwot
ICAgIHN0YXRpYyBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucyogZnJvbShXb3JrZXJDb250ZXh0
Kik7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV29ya2VyQ29udGV4dE5vdGlmaWNhdGlvbnMo
V29ya2VyQ29udGV4dCopOwotCi0gICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmlj
YXRpb25zKCk7Ci0KLSAgICBXb3JrZXJDb250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4gbV9ub3RpZmljYXRpb25DZW50ZXI7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQotCi0jZW5kaWYgLy8gV29ya2VyQ29udGV4dE5vdGlmaWNh
dGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Xb3JrZXJD
b250ZXh0Tm90aWZpY2F0aW9ucy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL1dv
cmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2M5M2JjMmIzZmNiNGYxZjM2ODQ3ZjA4MDc4ZjlhZmUzMzhkMTA5YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL1dvcmtlckNvbnRleHROb3RpZmljYXRpb25zLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotbW9kdWxlIHRocmVhZHMgewotCi0gICAgaW50ZXJm
YWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FU
SU9OUywKLSAgICAgICAgU3VwcGxlbWVudGFsPVdvcmtlckNvbnRleHQKLSAgICBdIFdvcmtlckNv
bnRleHROb3RpZmljYXRpb25zIHsKLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJiYgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TCi0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBOb3RpZmljYXRpb25DZW50ZXIgd2Via2l0Tm90
aWZpY2F0aW9uczsKLSNlbmRpZgotICAgIH07Ci0KLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>