<?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>112171</bug_id>
          
          <creation_ts>2013-03-12 11:12:51 -0700</creation_ts>
          <short_desc>Moved RunLoopTimer and SchedulePair to WTF</short_desc>
          <delta_ts>2013-03-17 13:15:14 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853639</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 11:12:51 -0700</bug_when>
    <thetext>Moved RunLoopTimer and SchedulePair to WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853643</commentid>
    <comment_count>1</comment_count>
      <attachid>192773</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 11:16:19 -0700</bug_when>
    <thetext>Created attachment 192773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853646</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 11:19:50 -0700</bug_when>
    <thetext>Attachment 192773 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/AutodrainedPool.h&apos;, u&apos;Source/WTF/wtf/AutodrainedPoolMac.mm&apos;, u&apos;Source/WTF/wtf/RunLoopTimer.h&apos;, u&apos;Source/WTF/wtf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.h&apos;, u&apos;Source/WTF/wtf/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/loader/DocumentLoader.h&apos;, u&apos;Source/WebCore/loader/MainResourceLoader.h&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/platform/AutodrainedPool.h&apos;, u&apos;Source/WebCore/platform/cf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.h&apos;, u&apos;Source/WebCore/platform/mac/AutodrainedPool.mm&apos;, u&apos;Source/WebCore/platform/mac/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/platform/network/NetworkingContext.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RunLoopTimer.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/RunLoopTimerCF.cpp:33:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853655</commentid>
    <comment_count>3</comment_count>
      <attachid>192773</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-12 11:24:35 -0700</bug_when>
    <thetext>Comment on attachment 192773
Patch

Attachment 192773 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17196061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853656</commentid>
    <comment_count>4</comment_count>
      <attachid>192773</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-12 11:26:38 -0700</bug_when>
    <thetext>Comment on attachment 192773
Patch

Attachment 192773 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17174102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853661</commentid>
    <comment_count>5</comment_count>
      <attachid>192776</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 11:29:24 -0700</bug_when>
    <thetext>Created attachment 192776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853665</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 11:31:36 -0700</bug_when>
    <thetext>Attachment 192776 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/AutodrainedPool.h&apos;, u&apos;Source/WTF/wtf/AutodrainedPoolMac.mm&apos;, u&apos;Source/WTF/wtf/RunLoopTimer.h&apos;, u&apos;Source/WTF/wtf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.h&apos;, u&apos;Source/WTF/wtf/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/fileapi/FileThread.cpp&apos;, u&apos;Source/WebCore/loader/DocumentLoader.h&apos;, u&apos;Source/WebCore/loader/MainResourceLoader.h&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.cpp&apos;, u&apos;Source/WebCore/loader/icon/wince/IconDatabaseWinCE.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/platform/AutodrainedPool.h&apos;, u&apos;Source/WebCore/platform/cf/RunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/cf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/LayerFlushSchedulerMac.cpp&apos;, u&apos;Source/WebCore/platform/mac/AutodrainedPool.mm&apos;, u&apos;Source/WebCore/platform/mac/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/platform/network/NetworkingContext.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RunLoopTimer.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/RunLoopTimerCF.cpp:33:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 2 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853669</commentid>
    <comment_count>7</comment_count>
      <attachid>192776</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-12 11:36:47 -0700</bug_when>
    <thetext>Comment on attachment 192776
Patch

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

&gt; Source/WTF/wtf/AutodrainedPool.h:2
&gt; + * Copyright (C) 2007 Apple Inc. All rights reserved.

Drive by comment: update copyright headers?  Same for other moved files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853716</commentid>
    <comment_count>8</comment_count>
      <attachid>192791</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 12:56:46 -0700</bug_when>
    <thetext>Created attachment 192791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853719</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 12:57:30 -0700</bug_when>
    <thetext>Updated copyright in moved files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853721</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:00:59 -0700</bug_when>
    <thetext>Attachment 192791 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/AutodrainedPool.h&apos;, u&apos;Source/WTF/wtf/AutodrainedPoolMac.mm&apos;, u&apos;Source/WTF/wtf/RunLoopTimer.h&apos;, u&apos;Source/WTF/wtf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.cpp&apos;, u&apos;Source/WTF/wtf/SchedulePair.h&apos;, u&apos;Source/WTF/wtf/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/fileapi/FileThread.cpp&apos;, u&apos;Source/WebCore/loader/DocumentLoader.h&apos;, u&apos;Source/WebCore/loader/MainResourceLoader.h&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.cpp&apos;, u&apos;Source/WebCore/loader/icon/wince/IconDatabaseWinCE.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/platform/AutodrainedPool.h&apos;, u&apos;Source/WebCore/platform/cf/RunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/cf/RunLoopTimerCF.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.cpp&apos;, u&apos;Source/WebCore/platform/cf/SchedulePair.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/LayerFlushSchedulerMac.cpp&apos;, u&apos;Source/WebCore/platform/mac/AutodrainedPool.mm&apos;, u&apos;Source/WebCore/platform/mac/SchedulePairMac.mm&apos;, u&apos;Source/WebCore/platform/network/NetworkingContext.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceHandleMac.mm&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RunLoopTimer.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/RunLoopTimerCF.cpp:33:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 2 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853796</commentid>
    <comment_count>11</comment_count>
      <attachid>192791</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-12 14:52:06 -0700</bug_when>
    <thetext>Comment on attachment 192791
Patch

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

r=me, fix style issues before landing, and watch the windows bot

&gt;&gt; Source/WTF/wtf/RunLoopTimer.h:32
&gt;&gt; +#include &lt;wtf/SchedulePair.h&gt;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

Please to be fixing this :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853820</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-12 15:06:10 -0700</bug_when>
    <thetext>Committed r145592: &lt;http://trac.webkit.org/changeset/145592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856740</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-03-17 13:15:14 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Committed r145592: &lt;http://trac.webkit.org/changeset/145592&gt;

Build fix:  http://trac.webkit.org/changeset/146023</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192773</attachid>
            <date>2013-03-12 11:16:19 -0700</date>
            <delta_ts>2013-03-12 11:29:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112171-20130312111218.patch</filename>
            <type>text/plain</type>
            <size>78651</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDU1NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTEyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgUnVuTG9vcFRpbWVyIGFuZCBTY2hlZHVs
ZVBhaXIgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gdXNlIHRpbWVycyBpbiBsb3dlciBsZXZlbCBwcmlt
aXRpdmVzIHdpdGhvdXQKKyAgICAgICAgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0F1dG9k
cmFpbmVkUG9vbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BdXRvZHJh
aW5lZFBvb2wuaC4KKyAgICAgICAgKEF1dG9kcmFpbmVkUG9vbCk6CisgICAgICAgICogd3RmL0F1
dG9kcmFpbmVkUG9vbE1hYy5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0F1dG9kcmFpbmVkUG9vbC5tbS4KKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3BUaW1lci5oLgorICAgICAg
ICAqIHd0Zi9SdW5Mb29wVGltZXJDRi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWly
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQYWly
LmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oLgorICAgICAgICAoU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyTWFjLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tLgorCiAyMDEzLTAzLTExICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4LiAgUm9sbGluZyBvdXQgaW5hZHZlcnRlbnQgc2V0dGluZyBvZiBEQVRBX0xPR19U
T19GSUxFLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMyBAQAogCQkwRkREQkZBODE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQ
cmludFN0cmVhbS5oICovOyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNG
NjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTE0Njk0MTkyMTZFQUFGNkQw
MDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDY5
NDE5MzE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2OTQxOTExNkVBQUY2RDAwMjRFMTQ2
IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLzsgfTsKKwkJMTQ2OTQxOTYxNkVBQUZGODAwMjRFMTQ2
IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Njk0MTk3MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyTWFjLm1tICovOyB9OworCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuY3BwICovOyB9Owor
CQkxNDY5NDE5QzE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5QTE2RUFCMTBBMDAy
NEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFp
bmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2xNYWMubW0gKi87
IH07CiAJCTE0OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5RUYxNjIxNkJCRkUwRDAwMEE0
MzMxIC8qIFRyaVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsK
IAkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMEY2MTVFNDVF
NDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoKTsgfTsgfTsKIAkJMUE2QkI3NjkxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2
QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovOyB9OwpAQCAtMzM1LDYg
KzM0MiwxMyBAQAogCQkwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFN
U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJB
TVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTAxNkVBQUY2RDAw
MjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTEx
NkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY2hlZHVsZVBhaXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxl
UGFpck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjaGVk
dWxlUGFpck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTgxNkVB
QjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY2hlZHVsZVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9vbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWlu
ZWRQb29sTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0
b2RyYWluZWRQb29sTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDlFRjE2
MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJpU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0Iw
RjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkzLDYgKzcwNyw4IEBACiAJCQkJQThBNDcyNUIx
NTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovLAogCQkJCUE4QTQ3MjVDMTUxQTgy
NUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmggKi8sCiAJCQkJQThBNDcyNUQxNTFBODI1QTAwNDEy
M0ZGIC8qIEF0b21pY3MuaCAqLywKKwkJCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0
b2RyYWluZWRQb29sLmggKi8sCisJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1MUE4MjVBMDA0MTIzRkYgLyogQVZM
VHJlZS5oICovLAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICov
LAogCQkJCUE4QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKQEAgLTgzMSw3
ICs4NDcsMTIgQEAKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8s
CiAJCQkJQThBNDczMDQxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ckhhc2hNYXAuaCAqLywKIAkJ
CQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCisJCQkJMTQ2OTQx
OTAxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovLAorCQkJCTE0Njk0MTkxMTZF
QUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCiAJCQkJMTRGM0IwRjYxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKKwkJCQkxNDY5NDE5NDE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCisJCQkJMTQ2OTQxOTgxNkVBQjA0
MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8sCisJCQkJMTQ2OTQxOTUxNkVBQUZGODAw
MjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0
MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJQThBNDczMDcxNTFBODI1QjAwNDEy
M0ZGIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oICovLAogCQkJCUE4QTQ3MzA4MTUxQTgyNUIwMDQx
MjNGRiAvKiBTSEExLmNwcCAqLywKQEAgLTEwNjcsNiArMTA4OCw3IEBACiAJCQkJODEzNDAxMzkx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTkx
NTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNBQjE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDY5
NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjAzMjFCQzE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3MzhBMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRtYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE3OCw2ICsxMjAwLDcgQEAKIAkJCQlBODc2REJEODE1MTgxNkU1MDBEQURC
OTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDBFMTUxQTgyNUIwMDQx
MjNGRiAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MEYxNTFBODI1QjAw
NDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ2OTQxOTIxNkVB
QUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMz
NjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjI3LDYgKzEyNTAsNyBAQAogCQkJCUE4QTQ3NDUwMTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NDE1
MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQ2OTQxOUMxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5RUYxNjMxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NzE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRB
cnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDU5MTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjEsOCArMTM4NSwxMSBAQAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgyNUIwMDQx
MjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk3MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjMyMkNDREYxNjU2OTlGRjAwNDg1MkREIC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzODUsNiArMTQxMiw3IEBACiAJCQkJ
QThBNDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAvKiBT
Y2hlZHVsZVBhaXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDMxMTUx
QTgyNUIwMDQxMjNGRiAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQXV0b2RyYWluZWRQb29sLmgJKHJldmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQXV0b2RyYWluZWRQb29sLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93
dGYvQXV0b2RyYWluZWRQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBdXRvZHJhaW5lZFBvb2xfaAorI2RlZmluZSBBdXRvZHJhaW5lZFBvb2xfaAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK09CSkNfQ0xBU1MgTlNBdXRvcmVsZWFzZVBv
b2w7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0b2RyYWluZWRQb29sIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRvZHJhaW5lZFBvb2wpOworcHVibGljOgorICAgIGV4
cGxpY2l0IEF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQgPSAxKTsKKyAgICB+QXV0
b2RyYWluZWRQb29sKCk7CisgICAgCisgICAgdm9pZCBjeWNsZSgpOworICAgIAorcHJpdmF0ZToK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaW50IG1faXRlcmF0aW9uTGltaXQ7CisgICAgaW50IG1f
aXRlcmF0aW9uQ291bnQ7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIG1fcG9vbDsKKyNlbmRpZgor
fTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxpbmUgQXV0b2RyYWluZWRQb29sOjpBdXRvZHJh
aW5lZFBvb2woaW50KSB7IH0KK2lubGluZSBBdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJhaW5lZFBv
b2woKSB7IH0KK2lubGluZSB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKSB7IH0KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0F1dG9kcmFpbmVkUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F1
dG9kcmFpbmVkUG9vbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJh
aW5lZFBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE1IEBACiAKIE9CSkNfQ0xB
U1MgTlNBdXRvcmVsZWFzZVBvb2w7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBX
VEYgewogCiBjbGFzcyBBdXRvZHJhaW5lZFBvb2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1dG9kcmFpbmVkUG9vbCk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXV0b2RyYWluZWRQb29s
KGludCBpdGVyYXRpb25MaW1pdCA9IDEpOwotICAgIH5BdXRvZHJhaW5lZFBvb2woKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgQXV0b2RyYWluZWRQb29sKGludCBpdGVyYXRpb25M
aW1pdCA9IDEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+QXV0b2RyYWluZWRQb29sKCk7CiAg
ICAgCi0gICAgdm9pZCBjeWNsZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGN5Y2xl
KCk7CiAgICAgCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU3LDcgKzU3LDkgQEAg
aW5saW5lIEF1dG9kcmFpbmVkUG9vbDo6fkF1dG9kcmFpbmVkUG9vbAogaW5saW5lIHZvaWQgQXV0
b2RyYWluZWRQb29sOjpjeWNsZSgpIHsgfQogI2VuZGlmCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkF1dG9kcmFpbmVkUG9vbDsKIAog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHJldmlzaW9u
IDE0NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9v
bC5tbToxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJBdXRvZHJhaW5lZFBvb2wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRvZHJh
aW5lZFBvb2w6OkF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCisgICAgOiBtX2l0
ZXJhdGlvbkxpbWl0KGl0ZXJhdGlvbkxpbWl0KQorICAgICwgbV9pdGVyYXRpb25Db3VudCgwKQor
ICAgICwgbV9wb29sKFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdKQoreyAKK30KKwor
QXV0b2RyYWluZWRQb29sOjp+QXV0b2RyYWluZWRQb29sKCkKK3sKKyAgICBbbV9wb29sIGRyYWlu
XTsKK30KKwordm9pZCBBdXRvZHJhaW5lZFBvb2w6OmN5Y2xlKCkKK3sKKyAgICBpZiAoKyttX2l0
ZXJhdGlvbkNvdW50ID09IG1faXRlcmF0aW9uTGltaXQpIHsKKyAgICAgICAgW21fcG9vbCBkcmFp
bl07CisgICAgICAgIG1fcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwor
ICAgICAgICBtX2l0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdvcmtpbmcg
Y29weSkKKysrIFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBdXRv
ZHJhaW5lZFBvb2wuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXVEYgewogCiBBdXRvZHJhaW5lZFBvb2w6OkF1
dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCiAgICAgOiBtX2l0ZXJhdGlvbkxpbWl0
KGl0ZXJhdGlvbkxpbWl0KQpAQCAtNTIsNCArNTQsNCBAQCB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6
Y3ljbGUoKQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wVGltZXIuaDoxNDUyNTkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFJ1bkxvb3BUaW1lcl9oCisjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCisKKyNpbmNsdWRl
ICJTY2hlZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgorCitj
bGFzcyBSdW5Mb29wVGltZXJCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29w
VGltZXJCYXNlKTsKK3B1YmxpYzoKKyAgICBSdW5Mb29wVGltZXJCYXNlKCkgeyB9CisgICAgdmly
dHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOworCisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBTY2hl
ZHVsZVBhaXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQm
KTsKKworICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBl
YXRJbnRlcnZhbCk7CisKKyAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRl
cnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CisgICAgdm9p
ZCBzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQor
CisgICAgdm9pZCBzdG9wKCk7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIGZpcmVkKCkgPSAwOworCitwcml2YXRlOgorI2lmIFVTRShDRikKKyAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisjZW5kaWYKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUaW1lckZpcmVkQ2xhc3M+IGNsYXNzIFJ1bkxvb3BUaW1lciA6IHB1YmxpYyBS
dW5Mb29wVGltZXJCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKFRpbWVyRmlyZWRD
bGFzczo6KlRpbWVyRmlyZWRGdW5jdGlvbikoUnVuTG9vcFRpbWVyKik7CisKKyAgICBSdW5Mb29w
VGltZXIoVGltZXJGaXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKKyAgICAgICAg
OiBtX29iamVjdChvKSwgbV9mdW5jdGlvbihmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7IH0KKworcHJpdmF0ZToKKyAgICBU
aW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OworICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0
aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1
bkxvb3BUaW1lci5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGlt
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDI4IEBACiAjaWZuZGVmIFJ1bkxvb3BU
aW1lcl9oCiAjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCiAKLSNpbmNsdWRlICJTY2hlZHVsZVBhaXIu
aCIKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogLy8gVGltZSBp
bnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgogCi1jbGFzcyBSdW5Mb29wVGltZXJCYXNlIHsK
K2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBSdW5Mb29wVGltZXJCYXNlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSdW5Mb29wVGltZXJCYXNlKTsKIHB1YmxpYzoKICAgICBSdW5Mb29wVGlt
ZXJCYXNlKCkgeyB9Ci0gICAgdmlydHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5SdW5Mb29wVGltZXJCYXNlKCk7CiAKLSAgICB2b2lkIHNj
aGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpciopOwotICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgU2No
ZWR1bGVQYWlySGFzaFNldCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVk
dWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKIAotICAgIHZvaWQgc3RhcnQoZG91Ymxl
IG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBl
YXRJbnRlcnZhbCk7CiAKICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRl
cnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CiAgICAgdm9p
ZCBzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQog
Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwog
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0g
MDsKQEAgLTc1LDYgKzc1LDggQEAgcHJpdmF0ZToKICAgICBUaW1lckZpcmVkRnVuY3Rpb24gbV9m
dW5jdGlvbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdU
RgorCit1c2luZyBXVEY6OlJ1bkxvb3BUaW1lcjsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SdW5Mb29wVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVu
TG9vcFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAxNDUyNTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcDoxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wVGltZXJDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIp
CisKKyNpbmNsdWRlICJSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJBdXRvZHJhaW5lZFBvb2wu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSdW5Mb29wVGltZXJCYXNlOjp+UnVuTG9vcFRp
bWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENG
UnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQoreworICAgIC8vIENGUnVuTG9vcFRpbWVy
IGRvZXMgbm90IGNyZWF0ZSBhbiBOU0F1dG9yZWxlYXNlUG9vbCwgbGlrZSBOU1RpbWVyIGRvZXMu
IFRoaXMgY2FuIGxlYWQgdG8KKyAgICAvLyBhdXRvcmVsZWFzZWQgb2JqZWN0cyBiZWluZyBwdXNo
ZWQgaW50byBOU0F1dG9yZWxlYXNlUG9vbHMgdW5kZXJuZWF0aCB0aGUgcnVuIGxvb3AsIHdoaWNo
CisgICAgLy8gYXJlIHZlcnkgaW5mcmVxdWVudGx5IGRyYWluZWQuIENyZWF0ZSBhIG5ldyBhdXRv
cmVsZWFzZSBwb29sIGhlcmUgdG8gZ2l2ZSBhdXRvcmVsZWFzZWQgb2JqZWN0cworICAgIC8vIGEg
cGxhY2UgdG8gY29sbGVjdC4KKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBSdW5Mb29w
VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3BUaW1lckJhc2UqPihjb250ZXh0
KTsKKyAgICB0aW1lci0+ZmlyZWQoKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzdGFy
dChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoreworICAg
IGlmIChtX3RpbWVyKQorICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5n
ZXQoKSk7CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAs
IDAsIDAgfTsKKyAgICBtX3RpbWVyLmFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZB
YnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLCByZXBlYXRJbnRlcnZh
bCwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJC
YXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXIqIHNjaGVkdWxlUGFpcikKK3sKKyAgICBB
U1NFUlRfQVJHKHNjaGVkdWxlUGFpciwgc2NoZWR1bGVQYWlyKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fdGltZXIsICJUaW1lciBtdXN0IGhhdmUgb25lIG9mIHRoZSBzdGFydCBmdW5jdGlv
bnMgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIHNjaGVkdWxlKCkuIik7CisgICAgQ0ZSdW5Mb29wQWRk
VGltZXIoc2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIG1fdGltZXIuZ2V0KCksIHNjaGVkdWxlUGFp
ci0+bW9kZSgpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBT
Y2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzKQoreworICAgIFNjaGVkdWxlUGFpckhh
c2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjaGVkdWxlUGFpcnMuZW5kKCk7CisgICAgZm9y
IChTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjaGVkdWxlUGFpcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBzY2hlZHVsZSgoKml0KS5nZXQoKSk7
Cit9CisKK3ZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKCFtX3RpbWVy
KQorICAgICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIu
Z2V0KCkpOworICAgIG1fdGltZXIgPSAwOworfQorCitib29sIFJ1bkxvb3BUaW1lckJhc2U6Omlz
QWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aW1lciAmJiBDRlJ1bkxvb3BUaW1lcklz
VmFsaWQobV90aW1lci5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgSEFWRShSVU5MT09QX1RJTUVSKQpJbmRleDogU291cmNl
L1dURi93dGYvUnVuTG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1J1bkxvb3BUaW1lckNGLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvUnVu
TG9vcFRpbWVyQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSAiUnVuTG9vcFRpbWVyLmgiCiAjaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBSdW5Mb29wVGltZXJCYXNlOjp+UnVu
TG9vcFRpbWVyQmFzZSgpCiB7CkBAIC04Niw2ICs4Niw2IEBAIGJvb2wgUnVuTG9vcFRpbWVyQmFz
ZTo6aXNBY3RpdmUoKSBjb25zdAogICAgIHJldHVybiBtX3RpbWVyICYmIENGUnVuTG9vcFRpbWVy
SXNWYWxpZChtX3RpbWVyLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAv
LyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEhBVkUoUlVOTE9P
UF9USU1FUikKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmNwcAkocmV2aXNpb24gMTQ1MjU5KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwOjE0NTI1OSkK
KysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKENG
UnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQorICAgIDogbV9ydW5Mb29wKHJ1
bkxvb3ApCit7CisgICAgaWYgKG1vZGUpCisgICAgICAgIG1fbW9kZS5hZG9wdENGKENGU3RyaW5n
Q3JlYXRlQ29weSgwLCBtb2RlKSk7Cit9CisKK2Jvb2wgU2NoZWR1bGVQYWlyOjpvcGVyYXRvcj09
KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHJ1bkxvb3AoKSAh
PSBvdGhlci5ydW5Mb29wKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDRlN0cmluZ1Jl
ZiB0aGlzTW9kZSA9IG1vZGUoKTsKKyAgICBDRlN0cmluZ1JlZiBvdGhlck1vZGUgPSBvdGhlci5t
b2RlKCk7CisgICAgaWYgKCF0aGlzTW9kZSB8fCAhb3RoZXJNb2RlKQorICAgICAgICByZXR1cm4g
dGhpc01vZGUgPT0gb3RoZXJNb2RlOworICAgIHJldHVybiBDRkVxdWFsKHRoaXNNb2RlLCBvdGhl
ck1vZGUpOworfQorCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3Bw
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2NoZWR1bGVQYWlyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYg
ewogCiBTY2hlZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZT
dHJpbmdSZWYgbW9kZSkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dU
Ri93dGYvU2NoZWR1bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmgJKHJldmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2NoZWR1bGVQYWlyLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWly
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY2hlZHVsZVBhaXJf
aAorI2RlZmluZSBTY2hlZHVsZVBhaXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TUnVuTG9vcDsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjaGVkdWxlUGFpciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjaGVkdWxlUGFpcj4gY3JlYXRlKENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBt
b2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsg
fQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5n
UmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZVBhaXIocnVuTG9vcCwgbW9k
ZSkpOyB9CisgICAgTlNSdW5Mb29wKiBuc1J1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX25zUnVu
TG9vcC5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGUuZ2V0KCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
Y2hlZHVsZVBhaXImIG90aGVyKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTY2hlZHVsZVBhaXIo
Q0ZSdW5Mb29wUmVmLCBDRlN0cmluZ1JlZik7CisKKyNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
Q0ZORVRXT1JLKQorICAgIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7Cisg
ICAgUmV0YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOworI2VuZGlmCisKKyAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtX21vZGU7Cit9OworCitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaCB7CisgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIHBhaXIpCisgICAgeworICAg
ICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzJdID0geyByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocGFpci0+cnVuTG9vcCgpKSwgcGFpci0+bW9kZSgpID8gQ0ZIYXNoKHBhaXItPm1vZGUoKSkg
OiAwIH07CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhh
c2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIGEsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZVBhaXI+JiBi
KSB7IHJldHVybiBhID09IGI7IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8
U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWlySGFzaFNldDsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Nj
aGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5o
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogT0JKQ19DTEFTUyBOU1J1bkxvb3A7CiAjZW5kaWYK
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFNjaGVkdWxl
UGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4gewogcHVibGljOgpAQCAtNTMs
MTMgKzUzLDEzIEBAIHB1YmxpYzoKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsg
cmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQogICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25zdCB7
IHJldHVybiBtX21vZGUuZ2V0KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY2hl
ZHVsZVBhaXImIG90aGVyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFNjaGVkdWxlUGFpcihDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU2NoZWR1bGVQYWlyKENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKLSAgICBTY2hlZHVsZVBhaXIoTlNSdW5M
b29wKiwgQ0ZTdHJpbmdSZWYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTY2hlZHVsZVBhaXIo
TlNSdW5Mb29wKiwgQ0ZTdHJpbmdSZWYpOwogICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25z
UnVuTG9vcDsKICNlbmRpZgogCkBAIC04MSw2ICs4MSw5IEBAIHN0cnVjdCBTY2hlZHVsZVBhaXJI
YXNoIHsKIAogdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTY2hlZHVsZVBhaXI+LCBTY2hlZHVsZVBh
aXJIYXNoPiBTY2hlZHVsZVBhaXJIYXNoU2V0OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY2hlZHVsZVBhaXI7Cit1c2luZyBXVEY6
OlNjaGVkdWxlUGFpckhhc2hTZXQ7CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFp
ck1hYy5tbQkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2NoZWR1bGVQYWlyTWFjLm1tOjE0NTI1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxl
UGFpck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKKworI2lmICFVU0UoQ0ZORVRXT1JL
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5T
UnVuTG9vcCogcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkKKyAgICA6IG1fbnNSdW5Mb29wKHJ1
bkxvb3ApCisgICAgLCBtX3J1bkxvb3AoW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXSkKK3sKKyAgICBp
ZiAobW9kZSkKKyAgICAgICAgbV9tb2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1v
ZGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyTWFjLm1tCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBh
aXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgogCiAjaWYgIVVTRShD
Rk5FVFdPUkspCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1v
ZGUpCiAgICAgOiBtX25zUnVuTG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ1NTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2ls
bCBhbGxvdyB1cyB0byB1c2UgdGltZXJzIGluIGxvd2VyIGxldmVsIHByaW1pdGl2ZXMgd2l0aG91
dAorICAgICAgICBkdXBsaWNhdGluZyBhbGwgdGhlIGNvZGUuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChEb2N1bWVudExvYWRlcik6CisgICAgICAgICogbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL0F1dG9kcmFpbmVkUG9vbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL1J1bkxvb3BUaW1lckNGLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9T
Y2hlZHVsZVBhaXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NjaGVkdWxl
UGFpci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9BdXRvZHJhaW5lZFBvb2wu
bW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisKIDIwMTMt
MDMtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
S2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIEdyYXBoaWNzTGF5ZXJzIHdpdGggdGlsZWQgYmFj
a2luZyBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNzkwLDE2ICs3OTAsMTYgQEAgX19aTjdXZWJDb3JlNFBhZ2UxM3JhbmdlT2ZT
dHJpbmdFUktOM1dURgogX19aTjdXZWJDb3JlNFBhZ2UxM3NldElzSW5XaW5kb3dFYgogX19aTjdX
ZWJDb3JlNFBhZ2UxM3NldFBhZ2luYXRpb25FUktOU18xMFBhZ2luYXRpb25FCiBfX1pON1dlYkNv
cmU0UGFnZTE0c2V0TWVkaWFWb2x1bWVFZgotX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxl
UGFpckVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNjaGVkdWxlUGFpckVFRQorX19aTjdXZWJDb3Jl
NFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOUzFfMTJTY2hlZHVsZVBh
aXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgogX19aTjdXZWJDb3Jl
NFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xv
YWRpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKLV9fWk43V2Vi
Q29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hl
ZHVsZVBhaXJFRUUKK19fWk43V2ViQ29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYx
MFBhc3NSZWZQdHJJTlMxXzEyU2NoZWR1bGVQYWlyRUVFCiBfX1pON1dlYkNvcmU0UGFnZTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTRQYWdlMTlhZGRM
YXlvdXRNaWxlc3RvbmVzRWoKLV9fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2Vk
RVBOU185UGFnZUdyb3VwRXkKIF9fWk43V2ViQ29yZTRQYWdlMTlzZXRSdWJiZXJCYW5kc0F0VG9w
RWIKK19fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2VkRVBOU185UGFnZUdyb3Vw
RXkKIF9fWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmCiBfX1pON1dlYkNv
cmU0UGFnZTIwdW5tYXJrQWxsVGV4dE1hdGNoZXNFdgogX19aTjdXZWJDb3JlNFBhZ2UyMW1hcmtB
bGxNYXRjaGVzRm9yVGV4dEVSS04zV1RGNlN0cmluZ0VqYmoKQEAgLTIzMDUsNyArMjMwNSw2IEBA
IF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIAogI2lmIFVTRShDRk5F
VFdPUkspCiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQOV9fQ0ZFcnJvckV2Ci1fX1pO
N1dlYkNvcmUxMlNjaGVkdWxlUGFpckMxRVAxMV9fQ0ZSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9f
Wk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEyY2ZVUkxSZXF1ZXN0RU5TXzIwSFRUUEJvZHlV
cGRhdGVQb2xpY3lFCiBfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTNjZlVSTFJlc3Bv
bnNlRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyOHJlbGVhc2VDb25uZWN0aW9uRm9y
RG93bmxvYWRFdgpAQCAtMjMxOCw3ICsyMzE3LDYgQEAgX3drR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlCiBfd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVl
c3RTdG9yYWdlU2Vzc2lvbgogI2Vsc2UKLV9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlO
U1J1bkxvb3BQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVs
ZWFzZVByb3h5RXYKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTY2MCw4ICs2NjAsNiBAQAogCQkxQzVGQUVEMTBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNUZBRUNGMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwogCQkxQzVGQUVEMjBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzVGQUVEMDBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87
IH07CiAJCTFDNUZBRUU3MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1RkFFRTYwRENGREE2ODAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAgKi87IH07Ci0JCTFDNjNBMjQ4MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjNBMjQ2MEY3
MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQzYzQTI0OTBGNzE2NDY2MDBDMDlENUEgLyogUnVu
TG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM2M0EyNDcwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLzsg
fTsKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU2MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUIwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwICovOyB9OwogCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3OCwxMSArNjc2LDgg
QEAKIAkJMUNCNDIxNEQwQUYyQjJDQTAwODVBRDkxIC8qIERPTVJhbmdlSW50ZXJuYWwuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1MzhGMDVBMEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZUludGVybmFsLmggKi87IH07CiAJ
CTFDQ0E3MzIyMTBBREQ0NEEwMEZENDQwRCAvKiBET01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNDQTczMjExMEFERDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2
YXRlLmggKi87IH07CiAJCTFDREMxNDA1MEREMzkzNEMwMDZFQUNEMyAvKiBsb2NhbGl6ZWRTdHJp
bmdzLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLzsgfTsKLQkJ
MUNFMjRGOTcwRDdDQUYwRTAwN0UwNEMyIC8qIFNjaGVkdWxlUGFpck1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTI0Rjk2MEQ3Q0FGMEUwMDdF
MDRDMiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi87IH07CiAJCTFDRTgzQUMzMEFEQUZGRDcwMDkz
NTRGNiAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNEM4RUZGMEFEODVEODcwMDk0NzVDRSAvKiBEZWxl
dGVCdXR0b25Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMUNFODNBQzQwQURBRkZEODAwOTM1NEY2
IC8qIERlbGV0ZUJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzRDOEY2MzBBRDg2NTVEMDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uLmNwcCAq
LzsgfTsKLQkJMUNFRkM5QjkwRDc4REM4QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFRkM5QjcwRDc4REM4
QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTFDRUZDOUJBMEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVs
ZVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNFRkM5QjgwRDc4REM4QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5jcHAgKi87IH07CiAJCTFD
RjZCREZBMEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNkJERjgwRTlCQjI2QTAwMjVF
MUNEIC8qIE9iakNFdmVudExpc3RlbmVyLmggKi87IH07CiAJCTFDRjZCREZCMEU5QkIyNkEwMDI1
RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCREY5MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRM
aXN0ZW5lci5tbSAqLzsgfTsKIAkJMUNGNkJFMTQwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNGNkJFMTIwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uLm1tICovOyB9OwpAQCAtMTY2Niw4ICsxNjYxLDYgQEAKIAkJNTFFMEJBRUIwREE1NUQ0QTAw
QTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUUwQkFFOTBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZl
bnQuaCAqLzsgfTsKIAkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQjM2MERB
NUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMEJCMzkwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3Jh
Z2VNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFFMEJCMzcwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuY3BwICovOyB9OwotCQk1MUUx
RUNBRjBDOTFDNTQ2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUVDQUQwQzkxQzU0NjAwREMyNTVC
IC8qIEF1dG9kcmFpbmVkUG9vbC5tbSAqLzsgfTsKLQkJNTFFMUVDQjMwQzkxQzU1NjAwREMyNTVC
IC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFMUVDQjEwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5o
ICovOyB9OwogCQk1MUUxRUNCRTBDOTFDOTA0MDBEQzI1NUIgLyogSWNvbkRhdGFiYXNlQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUxRUNC
ODBDOTFDOTA0MDBEQzI1NUIgLyogSWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFMUVDQzAwQzkxQzkwNDAwREMy
NTVCIC8qIEljb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFFMUVDQkEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuY3BwICov
OyB9OwogCQk1MUUxRUNDMTBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMUVDQkIwQzkxQzkwNDAw
REMyNTVCIC8qIEljb25SZWNvcmQuaCAqLzsgfTsKQEAgLTgwMjgsOCArODAyMSw2IEBACiAJCTFD
NUZBRUNGMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1RkFFRDAwRENGRDkwMTAwRDU4Rjc4
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM1RkFFRTYwRENGREE2ODAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRD
YWxsRnJhbWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzYzQTI0
NjBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJ1bkxvb3BUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzYzQTI0NzBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVuTG9vcFRpbWVyQ0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU3MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9y
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA0OCw5ICs4MDM5LDYgQEAKIAkJ
MUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3Jl
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0
NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRTI0Rjk2MEQ3Q0FGMEUw
MDdFMDRDMiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTY2hlZHVsZVBhaXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDRUZDOUI3MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDRUZDOUI4MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNkJERjgwRTlCQjI2QTAwMjVFMUNE
IC8qIE9iakNFdmVudExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9iakNFdmVudExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZC
REY5MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iakNFdmVudExpc3RlbmVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2QkUxMjBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05v
ZGVGaWx0ZXJDb25kaXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTkxNDAsOCArOTEyOCw2IEBACiAJCTUxRTBCQUU5MERBNTVENEEwMEE5RTQxNyAvKiBK
U1N0b3JhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0b3Jh
Z2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUwQkIzNjBEQTVBQ0I2
MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTBCQjM3MERB
NUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0b3JhZ2VNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MUUxRUNBRDBDOTFDNTQ2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUUxRUNCMTBDOTFDNTU2MDBEQzI1NUIgLyogQXV0
b2RyYWluZWRQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9kcmFp
bmVkUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUxRUNCODBDOTFDOTA0
MDBEQzI1NUIgLyogSWNvbkRhdGFiYXNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEljb25EYXRhYmFzZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUUxRUNCQTBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMUVDQkIwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvblJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxMzEsOSArMTUxMTcsNiBAQAogCQkJCTUxNjAzMDZC
MENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAogCQkJCTI5QTMwOUFCMTU2MUM5OUIw
MEJCRDhFNSAvKiBSdW5Mb29wQ0YuY3BwICovLAotCQkJCTFDNjNBMjQ3MEY3MTY0NjYwMEMwOUQ1
QSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCi0JCQkJMUNFRkM5QjgwRDc4REM4QzAwN0QyNTc5
IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8sCi0JCQkJMUNFRkM5QjcwRDc4REM4QzAwN0QyNTc5IC8q
IFNjaGVkdWxlUGFpci5oICovLAogCQkJCTUxMkREOEUyMEQ5MUUyQjQwMDBGODlFRSAvKiBTaGFy
ZWRCdWZmZXJDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwpAQCAtMTYzMDksNyArMTYy
OTIsNiBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1MUUxRUNBRDBDOTFDNTQ2MDBEQzI1
NUIgLyogQXV0b2RyYWluZWRQb29sLm1tICovLAogCQkJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3
NyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCAqLywKIAkJCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYg
LyogQmxvY2tFeGNlcHRpb25zLm1tICovLAogCQkJCTJEOTA2NjBCMDY2NUQ5MzcwMDZCNkYxQSAv
KiBDbGlwYm9hcmRNYWMuaCAqLywKQEAgLTE2MzU1LDcgKzE2MzM3LDYgQEAKIAkJCQkwMDgxRkVG
RTE2QjBBMkI2MDA4QUFBN0EgLyogUHVibGljU3VmZml4TWFjLm1tICovLAogCQkJCUU0RDY4Nzc2
MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwICovLAogCQkJCUJDMEIz
NTgyMTRDNEY5NTQwMDU1RTIyQSAvKiBSdW5Mb29wTWFjLm1tICovLAotCQkJCTFDRTI0Rjk2MEQ3
Q0FGMEUwMDdFMDRDMiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJQkNBRTFGQTUxMjkz
OURCNzAwNENCMDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggKi8sCiAJCQkJQkM1MTE1NkQxMkIx
NzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tICovLAogCQkJCUJDOEI4NTNDMEU3
QzdGMTEwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZU1hYy5oICovLApAQCAtMjE2MTIsNyArMjE1
OTMsNiBAQAogCQkJCTg5RDA4RDlDMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW0u
Y3BwICovLAogCQkJCTg5RDA4RDlEMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW0u
aCAqLywKIAkJCQk4OUQwOEQ5RTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmggKi8sCi0JCQkJNTFFMUVDQjEwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVk
UG9vbC5oICovLAogCQkJCTQ5QUUyRDk0MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZh
bHVlLmNwcCAqLywKIAkJCQk0OUFFMkQ5NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25W
YWx1ZS5oICovLAogCQkJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5jcHAgKi8s
CkBAIC0yMTczNSw3ICsyMTcxNSw2IEBACiAJCQkJOTgzMUFFNDkxNTQyMjVBMjAwRkUyNjQ0IC8q
IFJlZmVycmVyUG9saWN5LmggKi8sCiAJCQkJQkMwQjM1ODUxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1
bkxvb3AuY3BwICovLAogCQkJCUJDMEIzNTg2MTRDNEY5ODMwMDU1RTIyQSAvKiBSdW5Mb29wLmgg
Ki8sCi0JCQkJMUM2M0EyNDYwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lci5oICovLAog
CQkJCTI5M0VBRTIwMTM1NkIzMkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwICovLAogCQkJCTI5M0VBRTFFMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCAqLywKIAkJCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVn
aXN0cnkuY3BwICovLApAQCAtMjMzOTAsNyArMjMzNjksNiBAQAogCQkJCTkzNEY3MTNBMEQ1QTZG
MTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIg
LyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTgzMEQ0RTE2NzlCNEY4
MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
Q0ZGMDRFMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1OTM5LDcgKzI1OTE3LDYgQEAKIAkJCQlBNzlCQURBMjE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZUZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OUJBREE0MTYxRTdG
M0YwMEMyRTY1MiAvKiBSdWxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzBCMzU4ODE0QzRG
OTgzMDA1NUUyMkEgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUM2M0EyNDgwRjcx
NjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlE
MUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDIxMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTI1OTQ4LDcgKzI1OTI1LDYgQEAKIAkJCQk4QzZFQTYxQTExRUY3RTA0
MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDlFOTExQ0IwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQ0VGQzlCOTBENzhEQzhDMDA3RDI1NzkgLyogU2No
ZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUg
LyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCRDBCRjkzMTJBNDJCRjUw
MDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFC
RTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTE3LDcg
KzI3MDkzLDYgQEAKIAkJCQk3RUU2ODQ1RjEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRp
b25DRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3
NjREMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTUxRTFFQ0FGMEM5MUM1NDYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAwQTE1NEYwOTAwMEE0MjM0
IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQUE3MjhGOTE2RDFE
OEJDMDBEM0JCQzYgLyogQVhPYmplY3RDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjky
NjgsNyArMjkyNDMsNiBAQAogCQkJCUJDMEIzNTg3MTRDNEY5ODMwMDU1RTIyQSAvKiBSdW5Mb29w
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5QTMwOUFDMTU2MUM5OUIwMEJCRDhFNSAvKiBSdW5M
b29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwQjM1ODMxNEM0Rjk1NDAwNTVFMjJBIC8q
IFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzYzQTI0OTBGNzE2NDY2MDBDMDlE
NUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMUUwRDdF
MkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
NjlEMjAwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5Mjc3LDggKzI5MjUxLDYgQEAKIAkJCQk4QzZFQTYxOTExRUY3RTA0
MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFDQTBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNURGRThGNTYwRDE2NDc3QjAwNzZFOTM3IC8qIFNjaGVkdWxl
ZEFjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0VGQzlCQTBENzhEQzhDMDA3RDI1Nzkg
LyogU2NoZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDRTI0Rjk3MEQ3Q0FGMEUw
MDdFMDRDMiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYyQzdG
NDExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOUJEMEJGOTQxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFQzAxQkQwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsMTEgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgV1RGIHsKK2NsYXNzIFNjaGVkdWxlUGFpcjsKK30KIAorbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogI2lmIEVOQUJMRShXRUJfQVJDSElW
RSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIGNsYXNzIEFyY2hpdmU7CkBAIC01OSw3ICs2Miw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFJlc291cmNl
QnVmZmVyOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwotICAgIGNsYXNzIFNjaGVkdWxlUGFp
cjsKICAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNl
OwogCkBAIC0xMzIsOCArMTM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25z
dCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5j
b2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgdm9pZCBzY2hlZHVsZShTY2hl
ZHVsZVBhaXIqKTsKLSAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciopOworICAg
ICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7CisgICAgICAgIHZvaWQgdW5z
Y2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FS
Q0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0j
aW5jbHVkZSAiUnVuTG9vcFRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3BUaW1lci5oPgog
I2Vsc2UKICNpbmNsdWRlICJUaW1lci5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2luY2x1
ZGUgIlNjaGVkdWxlUGFpci5oIgorI2luY2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0F1dG9k
cmFpbmVkUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0F1dG9k
cmFpbmVkUG9vbC5oCShyZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BdXRvZHJhaW5lZFBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEF1dG9kcmFpbmVkUG9vbF9oCi0jZGVmaW5lIEF1dG9kcmFpbmVkUG9vbF9oCi0KLSNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotT0JKQ19DTEFTUyBOU0F1dG9yZWxlYXNlUG9v
bDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdXRvZHJhaW5lZFBvb2wgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dG9kcmFpbmVkUG9vbCk7Ci1wdWJsaWM6Ci0gICAgZXhw
bGljaXQgQXV0b2RyYWluZWRQb29sKGludCBpdGVyYXRpb25MaW1pdCA9IDEpOwotICAgIH5BdXRv
ZHJhaW5lZFBvb2woKTsKLSAgICAKLSAgICB2b2lkIGN5Y2xlKCk7Ci0gICAgCi1wcml2YXRlOgot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpbnQgbV9pdGVyYXRpb25MaW1pdDsKLSAgICBpbnQgbV9p
dGVyYXRpb25Db3VudDsKLSAgICBOU0F1dG9yZWxlYXNlUG9vbCogbV9wb29sOwotI2VuZGlmCi19
OwotCi0jaWYgIVBMQVRGT1JNKE1BQykKLWlubGluZSBBdXRvZHJhaW5lZFBvb2w6OkF1dG9kcmFp
bmVkUG9vbChpbnQpIHsgfQotaW5saW5lIEF1dG9kcmFpbmVkUG9vbDo6fkF1dG9kcmFpbmVkUG9v
bCgpIHsgfQotaW5saW5lIHZvaWQgQXV0b2RyYWluZWRQb29sOjpjeWNsZSgpIHsgfQotI2VuZGlm
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcAkocmV2aXNpb24gMTQ1NDQx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFBM
QVRGT1JNKE1BQykgJiYgSEFWRShSVU5MT09QX1RJTUVSKQotCi0jaW5jbHVkZSAiUnVuTG9vcFRp
bWVyLmgiCi0jaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUnVuTG9vcFRpbWVyQmFzZTo6flJ1bkxvb3BUaW1lckJhc2UoKQotewotICAgIHN0b3Ao
KTsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCog
Y29udGV4dCkKLXsKLSAgICAvLyBDRlJ1bkxvb3BUaW1lciBkb2VzIG5vdCBjcmVhdGUgYW4gTlNB
dXRvcmVsZWFzZVBvb2wsIGxpa2UgTlNUaW1lciBkb2VzLiBUaGlzIGNhbiBsZWFkIHRvCi0gICAg
Ly8gYXV0b3JlbGVhc2VkIG9iamVjdHMgYmVpbmcgcHVzaGVkIGludG8gTlNBdXRvcmVsZWFzZVBv
b2xzIHVuZGVybmVhdGggdGhlIHJ1biBsb29wLCB3aGljaAotICAgIC8vIGFyZSB2ZXJ5IGluZnJl
cXVlbnRseSBkcmFpbmVkLiBDcmVhdGUgYSBuZXcgYXV0b3JlbGVhc2UgcG9vbCBoZXJlIHRvIGdp
dmUgYXV0b3JlbGVhc2VkIG9iamVjdHMKLSAgICAvLyBhIHBsYWNlIHRvIGNvbGxlY3QuCi0gICAg
QXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgUnVuTG9vcFRpbWVyQmFzZSogdGltZXIgPSBzdGF0
aWNfY2FzdDxSdW5Mb29wVGltZXJCYXNlKj4oY29udGV4dCk7Ci0gICAgdGltZXItPmZpcmVkKCk7
Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2
YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCkKLXsKLSAgICBpZiAobV90aW1lcikKLSAgICAgICAg
Q0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkpOwotICAgIENGUnVuTG9vcFRp
bWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgbV90aW1lci5h
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
ICsgbmV4dEZpcmVJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwsIDAsIDAsIHRpbWVyRmlyZWQsICZj
b250ZXh0KSk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c2NoZWR1bGUoY29uc3QgU2No
ZWR1bGVQYWlyKiBzY2hlZHVsZVBhaXIpCi17Ci0gICAgQVNTRVJUX0FSRyhzY2hlZHVsZVBhaXIs
IHNjaGVkdWxlUGFpcik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyLCAiVGltZXIg
bXVzdCBoYXZlIG9uZSBvZiB0aGUgc3RhcnQgZnVuY3Rpb25zIGNhbGxlZCBiZWZvcmUgY2FsbGlu
ZyBzY2hlZHVsZSgpLiIpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKHNjaGVkdWxlUGFpci0+cnVu
TG9vcCgpLCBtX3RpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUoKSk7Ci19Ci0KLXZvaWQg
UnVuTG9vcFRpbWVyQmFzZTo6c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2No
ZWR1bGVQYWlycykKLXsKLSAgICBTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBzY2hlZHVsZVBhaXJzLmVuZCgpOwotICAgIGZvciAoU2NoZWR1bGVQYWlySGFzaFNldDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBzY2hlZHVsZVBhaXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgc2NoZWR1bGUoKCppdCkuZ2V0KCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1l
ckJhc2U6OnN0b3AoKQotewotICAgIGlmICghbV90aW1lcikKLSAgICAgICAgcmV0dXJuOwotICAg
IENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKLSAgICBtX3RpbWVyID0g
MDsKLX0KLQotYm9vbCBSdW5Mb29wVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdGltZXIgJiYgQ0ZSdW5Mb29wVGltZXJJc1ZhbGlkKG1fdGltZXIuZ2V0KCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpICYm
IEhBVkUoUlVOTE9PUF9USU1FUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1Nj
aGVkdWxlUGFpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2NoZWR1bGVQYWlyLmNwcAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2NoZWR1bGVQYWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsK
LSAgICBpZiAobW9kZSkKLSAgICAgICAgbV9tb2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5
KDAsIG1vZGUpKTsKLX0KLQotYm9vbCBTY2hlZHVsZVBhaXI6Om9wZXJhdG9yPT0oY29uc3QgU2No
ZWR1bGVQYWlyJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAocnVuTG9vcCgpICE9IG90aGVyLnJ1
bkxvb3AoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENGU3RyaW5nUmVmIHRoaXNNb2Rl
ID0gbW9kZSgpOwotICAgIENGU3RyaW5nUmVmIG90aGVyTW9kZSA9IG90aGVyLm1vZGUoKTsKLSAg
ICBpZiAoIXRoaXNNb2RlIHx8ICFvdGhlck1vZGUpCi0gICAgICAgIHJldHVybiB0aGlzTW9kZSA9
PSBvdGhlck1vZGU7Ci0gICAgcmV0dXJuIENGRXF1YWwodGhpc01vZGUsIG90aGVyTW9kZSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hl
ZHVsZVBhaXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hl
ZHVsZVBhaXIuaAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2NoZWR1bGVQYWlyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBTY2hlZHVsZVBhaXJfaAotI2RlZmluZSBTY2hlZHVsZVBhaXJfaAotCi0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi1PQkpDX0NMQVNTIE5T
UnVuTG9vcDsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjaGVkdWxl
UGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4gewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4gY3JlYXRlKENGUnVuTG9vcFJlZiBydW5Mb29w
LCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVQYWlyKHJ1
bkxvb3AsIG1vZGUpKTsgfQotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShOU1J1bkxvb3AqIHJ1
bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZVBh
aXIocnVuTG9vcCwgbW9kZSkpOyB9Ci0gICAgTlNSdW5Mb29wKiBuc1J1bkxvb3AoKSBjb25zdCB7
IHJldHVybiBtX25zUnVuTG9vcC5nZXQoKTsgfQotI2VuZGlmCi0KLSAgICBDRlJ1bkxvb3BSZWYg
cnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQotICAgIENGU3RyaW5n
UmVmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGUuZ2V0KCk7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY2hlZHVsZVBhaXImIG90aGVyKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBTY2hlZHVsZVBhaXIoQ0ZSdW5Mb29wUmVmLCBDRlN0cmluZ1JlZik7Ci0KLSNpZiBQTEFURk9S
TShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQotICAgIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBD
RlN0cmluZ1JlZik7Ci0gICAgUmV0YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwotI2Vu
ZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBtX21vZGU7Ci19OwotCi1zdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaCB7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIHBh
aXIpCi0gICAgewotICAgICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzJdID0geyByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocGFpci0+cnVuTG9vcCgpKSwgcGFpci0+bW9kZSgpID8gQ0ZIYXNo
KHBhaXItPm1vZGUoKSkgOiAwIH07Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hN
ZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIGEsIGNvbnN0IFJlZlB0cjxT
Y2hlZHVsZVBhaXI+JiBiKSB7IHJldHVybiBhID09IGI7IH0KLQotICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXR5cGVkZWYg
SGFzaFNldDxSZWZQdHI8U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQ
YWlySGFzaFNldDsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9BdXRvZHJhaW5lZFBvb2wubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9vbC5tbQkocmV2aXNp
b24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9v
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkF1dG9kcmFpbmVkUG9vbC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUF1dG9kcmFpbmVkUG9vbDo6QXV0b2RyYWluZWRQb29sKGludCBpdGVyYXRpb25MaW1pdCkKLSAg
ICA6IG1faXRlcmF0aW9uTGltaXQoaXRlcmF0aW9uTGltaXQpCi0gICAgLCBtX2l0ZXJhdGlvbkNv
dW50KDApCi0gICAgLCBtX3Bvb2woW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF0pCi17
IAotfQotCi1BdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJhaW5lZFBvb2woKQotewotICAgIFttX3Bv
b2wgZHJhaW5dOwotfQotCi12b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKQotewotICAgIGlm
ICgrK21faXRlcmF0aW9uQ291bnQgPT0gbV9pdGVyYXRpb25MaW1pdCkgewotICAgICAgICBbbV9w
b29sIGRyYWluXTsKLSAgICAgICAgbV9wb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10g
aW5pdF07Ci0gICAgICAgIG1faXRlcmF0aW9uQ291bnQgPSAwOwotICAgIH0KLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NjaGVk
dWxlUGFpck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2NoZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgot
Ci0jaWYgIVVTRShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2NoZWR1bGVQ
YWlyOjpTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQot
ICAgIDogbV9uc1J1bkxvb3AocnVuTG9vcCkKLSAgICAsIG1fcnVuTG9vcChbcnVuTG9vcCBnZXRD
RlJ1bkxvb3BdKQotewotICAgIGlmIChtb2RlKQotICAgICAgICBtX21vZGUuYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZUNvcHkoMCwgbW9kZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKLSNp
bmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMTQ1NDQxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw4ICs3NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBD
b29raWVTdG9yYWdlCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24q
IENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBTY2hlZHVsZVBhaXI7Cit9CiAKK25hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEZyYW1lOwpAQCAtODcsNyArOTAsNiBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVu
dDsKIGNsYXNzIFJlc291cmNlSGFuZGxlSW50ZXJuYWw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2NoZWR1bGVQYWlyOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGltZXI7CkBAIC0xMjgs
OCArMTMwLDggQEAgcHVibGljOgogICAgIGlkIHJlbGVhc2VQcm94eSgpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciopOwotICAgIHZvaWQgdW5zY2hlZHVsZShTY2hl
ZHVsZVBhaXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7CisgICAg
dm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7CiAjZW5kaWYKICNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKLSNpbmNsdWRlICJT
Y2hlZHVsZVBhaXIuaCIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0JKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIg
QEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbXBvcnQgIlNjaGVkdWxlUGFpci5oIgogI2ltcG9ydCAi
U2V0dGluZ3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiU3VicmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQg
IldlYkNvcmVVUkxSZXNwb25zZS5oIgorI2ltcG9ydCA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2lt
cG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTU2
NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDEzLTAzLTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZWQgUnVuTG9vcFRpbWVyIGFuZCBTY2hlZHVsZVBhaXIgdG8gV1RGCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIxNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgYWxs
b3cgdXMgdG8gdXNlIHRpbWVycyBpbiBsb3dlciBsZXZlbCBwcmltaXRpdmVzIHdpdGhvdXQKKyAg
ICAgICAgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAo
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dCk6CisKIDIwMTMtMDMtMTIgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSBISUxET05fQ1BQ
RkxBR1MgYW5kIEhJTERPTl9DRkxBR1MgcmVmZXJlbmNlcyBmcm9tIEdOVW1ha2VmaWxlcwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNp
b24gMTQ1NDQxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtz
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlm
ZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWly
cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NoZWR1bGVQYWlySGFzaFNldCogc2No
ZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NTY0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMTIgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlZCBSdW5Mb29wVGltZXIg
YW5kIFNjaGVkdWxlUGFpciB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMjE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB1cyB0byB1c2UgdGltZXJzIGluIGxvd2Vy
IGxldmVsIHByaW1pdGl2ZXMgd2l0aG91dAorICAgICAgICBkdXBsaWNhdGluZyBhbGwgdGhlIGNv
ZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lmg6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KToKKwogMjAxMy0wMy0xMiAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlcGxhY2Ug
c3RhdGljX2Nhc3RzIHdpdGggdG8qIGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25p
ZmZpbmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFp
cnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjaGVkdWxlUGFpckhhc2hTZXQqIHNj
aGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192776</attachid>
            <date>2013-03-12 11:29:24 -0700</date>
            <delta_ts>2013-03-12 12:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112171-20130312112522.patch</filename>
            <type>text/plain</type>
            <size>82808</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDU1NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTEyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgUnVuTG9vcFRpbWVyIGFuZCBTY2hlZHVs
ZVBhaXIgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gdXNlIHRpbWVycyBpbiBsb3dlciBsZXZlbCBwcmlt
aXRpdmVzIHdpdGhvdXQKKyAgICAgICAgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0F1dG9k
cmFpbmVkUG9vbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BdXRvZHJh
aW5lZFBvb2wuaC4KKyAgICAgICAgKEF1dG9kcmFpbmVkUG9vbCk6CisgICAgICAgICogd3RmL0F1
dG9kcmFpbmVkUG9vbE1hYy5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0F1dG9kcmFpbmVkUG9vbC5tbS4KKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3BUaW1lci5oLgorICAgICAg
ICAqIHd0Zi9SdW5Mb29wVGltZXJDRi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWly
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQYWly
LmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oLgorICAgICAgICAoU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyTWFjLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tLgorCiAyMDEzLTAzLTExICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4LiAgUm9sbGluZyBvdXQgaW5hZHZlcnRlbnQgc2V0dGluZyBvZiBEQVRBX0xPR19U
T19GSUxFLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMyBAQAogCQkwRkREQkZBODE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQ
cmludFN0cmVhbS5oICovOyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNG
NjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTE0Njk0MTkyMTZFQUFGNkQw
MDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDY5
NDE5MzE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2OTQxOTExNkVBQUY2RDAwMjRFMTQ2
IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLzsgfTsKKwkJMTQ2OTQxOTYxNkVBQUZGODAwMjRFMTQ2
IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Njk0MTk3MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyTWFjLm1tICovOyB9OworCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuY3BwICovOyB9Owor
CQkxNDY5NDE5QzE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5QTE2RUFCMTBBMDAy
NEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFp
bmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2xNYWMubW0gKi87
IH07CiAJCTE0OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5RUYxNjIxNkJCRkUwRDAwMEE0
MzMxIC8qIFRyaVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsK
IAkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMEY2MTVFNDVF
NDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoKTsgfTsgfTsKIAkJMUE2QkI3NjkxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2
QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovOyB9OwpAQCAtMzM1LDYg
KzM0MiwxMyBAQAogCQkwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFN
U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJB
TVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTAxNkVBQUY2RDAw
MjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTEx
NkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY2hlZHVsZVBhaXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxl
UGFpck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjaGVk
dWxlUGFpck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTgxNkVB
QjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY2hlZHVsZVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9vbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWlu
ZWRQb29sTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0
b2RyYWluZWRQb29sTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDlFRjE2
MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJpU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0Iw
RjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkzLDYgKzcwNyw4IEBACiAJCQkJQThBNDcyNUIx
NTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovLAogCQkJCUE4QTQ3MjVDMTUxQTgy
NUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmggKi8sCiAJCQkJQThBNDcyNUQxNTFBODI1QTAwNDEy
M0ZGIC8qIEF0b21pY3MuaCAqLywKKwkJCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0
b2RyYWluZWRQb29sLmggKi8sCisJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1MUE4MjVBMDA0MTIzRkYgLyogQVZM
VHJlZS5oICovLAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICov
LAogCQkJCUE4QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKQEAgLTgzMSw3
ICs4NDcsMTIgQEAKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8s
CiAJCQkJQThBNDczMDQxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ckhhc2hNYXAuaCAqLywKIAkJ
CQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCisJCQkJMTQ2OTQx
OTAxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovLAorCQkJCTE0Njk0MTkxMTZF
QUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCiAJCQkJMTRGM0IwRjYxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKKwkJCQkxNDY5NDE5NDE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCisJCQkJMTQ2OTQxOTgxNkVBQjA0
MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8sCisJCQkJMTQ2OTQxOTUxNkVBQUZGODAw
MjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0
MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJQThBNDczMDcxNTFBODI1QjAwNDEy
M0ZGIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oICovLAogCQkJCUE4QTQ3MzA4MTUxQTgyNUIwMDQx
MjNGRiAvKiBTSEExLmNwcCAqLywKQEAgLTEwNjcsNiArMTA4OCw3IEBACiAJCQkJODEzNDAxMzkx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTkx
NTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNBQjE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDY5
NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjAzMjFCQzE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3MzhBMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRtYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE3OCw2ICsxMjAwLDcgQEAKIAkJCQlBODc2REJEODE1MTgxNkU1MDBEQURC
OTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDBFMTUxQTgyNUIwMDQx
MjNGRiAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MEYxNTFBODI1QjAw
NDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ2OTQxOTIxNkVB
QUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMz
NjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjI3LDYgKzEyNTAsNyBAQAogCQkJCUE4QTQ3NDUwMTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NDE1
MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQ2OTQxOUMxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5RUYxNjMxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NzE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRB
cnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDU5MTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjEsOCArMTM4NSwxMSBAQAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgyNUIwMDQx
MjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk3MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjMyMkNDREYxNjU2OTlGRjAwNDg1MkREIC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzODUsNiArMTQxMiw3IEBACiAJCQkJ
QThBNDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAvKiBT
Y2hlZHVsZVBhaXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDMxMTUx
QTgyNUIwMDQxMjNGRiAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQXV0b2RyYWluZWRQb29sLmgJKHJldmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQXV0b2RyYWluZWRQb29sLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93
dGYvQXV0b2RyYWluZWRQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBdXRvZHJhaW5lZFBvb2xfaAorI2RlZmluZSBBdXRvZHJhaW5lZFBvb2xfaAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK09CSkNfQ0xBU1MgTlNBdXRvcmVsZWFzZVBv
b2w7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0b2RyYWluZWRQb29sIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRvZHJhaW5lZFBvb2wpOworcHVibGljOgorICAgIGV4
cGxpY2l0IEF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQgPSAxKTsKKyAgICB+QXV0
b2RyYWluZWRQb29sKCk7CisgICAgCisgICAgdm9pZCBjeWNsZSgpOworICAgIAorcHJpdmF0ZToK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaW50IG1faXRlcmF0aW9uTGltaXQ7CisgICAgaW50IG1f
aXRlcmF0aW9uQ291bnQ7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIG1fcG9vbDsKKyNlbmRpZgor
fTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxpbmUgQXV0b2RyYWluZWRQb29sOjpBdXRvZHJh
aW5lZFBvb2woaW50KSB7IH0KK2lubGluZSBBdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJhaW5lZFBv
b2woKSB7IH0KK2lubGluZSB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKSB7IH0KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0F1dG9kcmFpbmVkUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F1
dG9kcmFpbmVkUG9vbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJh
aW5lZFBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE1IEBACiAKIE9CSkNfQ0xB
U1MgTlNBdXRvcmVsZWFzZVBvb2w7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBX
VEYgewogCiBjbGFzcyBBdXRvZHJhaW5lZFBvb2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1dG9kcmFpbmVkUG9vbCk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXV0b2RyYWluZWRQb29s
KGludCBpdGVyYXRpb25MaW1pdCA9IDEpOwotICAgIH5BdXRvZHJhaW5lZFBvb2woKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgQXV0b2RyYWluZWRQb29sKGludCBpdGVyYXRpb25M
aW1pdCA9IDEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+QXV0b2RyYWluZWRQb29sKCk7CiAg
ICAgCi0gICAgdm9pZCBjeWNsZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGN5Y2xl
KCk7CiAgICAgCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU3LDcgKzU3LDkgQEAg
aW5saW5lIEF1dG9kcmFpbmVkUG9vbDo6fkF1dG9kcmFpbmVkUG9vbAogaW5saW5lIHZvaWQgQXV0
b2RyYWluZWRQb29sOjpjeWNsZSgpIHsgfQogI2VuZGlmCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkF1dG9kcmFpbmVkUG9vbDsKIAog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHJldmlzaW9u
IDE0NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9v
bC5tbToxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJBdXRvZHJhaW5lZFBvb2wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRvZHJh
aW5lZFBvb2w6OkF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCisgICAgOiBtX2l0
ZXJhdGlvbkxpbWl0KGl0ZXJhdGlvbkxpbWl0KQorICAgICwgbV9pdGVyYXRpb25Db3VudCgwKQor
ICAgICwgbV9wb29sKFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdKQoreyAKK30KKwor
QXV0b2RyYWluZWRQb29sOjp+QXV0b2RyYWluZWRQb29sKCkKK3sKKyAgICBbbV9wb29sIGRyYWlu
XTsKK30KKwordm9pZCBBdXRvZHJhaW5lZFBvb2w6OmN5Y2xlKCkKK3sKKyAgICBpZiAoKyttX2l0
ZXJhdGlvbkNvdW50ID09IG1faXRlcmF0aW9uTGltaXQpIHsKKyAgICAgICAgW21fcG9vbCBkcmFp
bl07CisgICAgICAgIG1fcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwor
ICAgICAgICBtX2l0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdvcmtpbmcg
Y29weSkKKysrIFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBdXRv
ZHJhaW5lZFBvb2wuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXVEYgewogCiBBdXRvZHJhaW5lZFBvb2w6OkF1
dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCiAgICAgOiBtX2l0ZXJhdGlvbkxpbWl0
KGl0ZXJhdGlvbkxpbWl0KQpAQCAtNTIsNCArNTQsNCBAQCB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6
Y3ljbGUoKQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wVGltZXIuaDoxNDUyNTkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFJ1bkxvb3BUaW1lcl9oCisjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCisKKyNpbmNsdWRl
ICJTY2hlZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgorCitj
bGFzcyBSdW5Mb29wVGltZXJCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29w
VGltZXJCYXNlKTsKK3B1YmxpYzoKKyAgICBSdW5Mb29wVGltZXJCYXNlKCkgeyB9CisgICAgdmly
dHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOworCisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBTY2hl
ZHVsZVBhaXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQm
KTsKKworICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBl
YXRJbnRlcnZhbCk7CisKKyAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRl
cnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CisgICAgdm9p
ZCBzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQor
CisgICAgdm9pZCBzdG9wKCk7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIGZpcmVkKCkgPSAwOworCitwcml2YXRlOgorI2lmIFVTRShDRikKKyAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisjZW5kaWYKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUaW1lckZpcmVkQ2xhc3M+IGNsYXNzIFJ1bkxvb3BUaW1lciA6IHB1YmxpYyBS
dW5Mb29wVGltZXJCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKFRpbWVyRmlyZWRD
bGFzczo6KlRpbWVyRmlyZWRGdW5jdGlvbikoUnVuTG9vcFRpbWVyKik7CisKKyAgICBSdW5Mb29w
VGltZXIoVGltZXJGaXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKKyAgICAgICAg
OiBtX29iamVjdChvKSwgbV9mdW5jdGlvbihmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7IH0KKworcHJpdmF0ZToKKyAgICBU
aW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OworICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0
aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1
bkxvb3BUaW1lci5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGlt
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDI4IEBACiAjaWZuZGVmIFJ1bkxvb3BU
aW1lcl9oCiAjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCiAKLSNpbmNsdWRlICJTY2hlZHVsZVBhaXIu
aCIKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogLy8gVGltZSBp
bnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgogCi1jbGFzcyBSdW5Mb29wVGltZXJCYXNlIHsK
K2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBSdW5Mb29wVGltZXJCYXNlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSdW5Mb29wVGltZXJCYXNlKTsKIHB1YmxpYzoKICAgICBSdW5Mb29wVGlt
ZXJCYXNlKCkgeyB9Ci0gICAgdmlydHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5SdW5Mb29wVGltZXJCYXNlKCk7CiAKLSAgICB2b2lkIHNj
aGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpciopOwotICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgU2No
ZWR1bGVQYWlySGFzaFNldCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVk
dWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKIAotICAgIHZvaWQgc3RhcnQoZG91Ymxl
IG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBl
YXRJbnRlcnZhbCk7CiAKICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRl
cnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CiAgICAgdm9p
ZCBzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQog
Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwog
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0g
MDsKQEAgLTc1LDYgKzc1LDggQEAgcHJpdmF0ZToKICAgICBUaW1lckZpcmVkRnVuY3Rpb24gbV9m
dW5jdGlvbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdU
RgorCit1c2luZyBXVEY6OlJ1bkxvb3BUaW1lcjsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SdW5Mb29wVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVu
TG9vcFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAxNDUyNTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcDoxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wVGltZXJDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIp
CisKKyNpbmNsdWRlICJSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJBdXRvZHJhaW5lZFBvb2wu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSdW5Mb29wVGltZXJCYXNlOjp+UnVuTG9vcFRp
bWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENG
UnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQoreworICAgIC8vIENGUnVuTG9vcFRpbWVy
IGRvZXMgbm90IGNyZWF0ZSBhbiBOU0F1dG9yZWxlYXNlUG9vbCwgbGlrZSBOU1RpbWVyIGRvZXMu
IFRoaXMgY2FuIGxlYWQgdG8KKyAgICAvLyBhdXRvcmVsZWFzZWQgb2JqZWN0cyBiZWluZyBwdXNo
ZWQgaW50byBOU0F1dG9yZWxlYXNlUG9vbHMgdW5kZXJuZWF0aCB0aGUgcnVuIGxvb3AsIHdoaWNo
CisgICAgLy8gYXJlIHZlcnkgaW5mcmVxdWVudGx5IGRyYWluZWQuIENyZWF0ZSBhIG5ldyBhdXRv
cmVsZWFzZSBwb29sIGhlcmUgdG8gZ2l2ZSBhdXRvcmVsZWFzZWQgb2JqZWN0cworICAgIC8vIGEg
cGxhY2UgdG8gY29sbGVjdC4KKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBSdW5Mb29w
VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3BUaW1lckJhc2UqPihjb250ZXh0
KTsKKyAgICB0aW1lci0+ZmlyZWQoKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzdGFy
dChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoreworICAg
IGlmIChtX3RpbWVyKQorICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5n
ZXQoKSk7CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAs
IDAsIDAgfTsKKyAgICBtX3RpbWVyLmFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZB
YnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLCByZXBlYXRJbnRlcnZh
bCwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJC
YXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXIqIHNjaGVkdWxlUGFpcikKK3sKKyAgICBB
U1NFUlRfQVJHKHNjaGVkdWxlUGFpciwgc2NoZWR1bGVQYWlyKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fdGltZXIsICJUaW1lciBtdXN0IGhhdmUgb25lIG9mIHRoZSBzdGFydCBmdW5jdGlv
bnMgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIHNjaGVkdWxlKCkuIik7CisgICAgQ0ZSdW5Mb29wQWRk
VGltZXIoc2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIG1fdGltZXIuZ2V0KCksIHNjaGVkdWxlUGFp
ci0+bW9kZSgpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBT
Y2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzKQoreworICAgIFNjaGVkdWxlUGFpckhh
c2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjaGVkdWxlUGFpcnMuZW5kKCk7CisgICAgZm9y
IChTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjaGVkdWxlUGFpcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBzY2hlZHVsZSgoKml0KS5nZXQoKSk7
Cit9CisKK3ZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKCFtX3RpbWVy
KQorICAgICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIu
Z2V0KCkpOworICAgIG1fdGltZXIgPSAwOworfQorCitib29sIFJ1bkxvb3BUaW1lckJhc2U6Omlz
QWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aW1lciAmJiBDRlJ1bkxvb3BUaW1lcklz
VmFsaWQobV90aW1lci5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgSEFWRShSVU5MT09QX1RJTUVSKQpJbmRleDogU291cmNl
L1dURi93dGYvUnVuTG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1J1bkxvb3BUaW1lckNGLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvUnVu
TG9vcFRpbWVyQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSAiUnVuTG9vcFRpbWVyLmgiCiAjaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBSdW5Mb29wVGltZXJCYXNlOjp+UnVu
TG9vcFRpbWVyQmFzZSgpCiB7CkBAIC04Niw2ICs4Niw2IEBAIGJvb2wgUnVuTG9vcFRpbWVyQmFz
ZTo6aXNBY3RpdmUoKSBjb25zdAogICAgIHJldHVybiBtX3RpbWVyICYmIENGUnVuTG9vcFRpbWVy
SXNWYWxpZChtX3RpbWVyLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAv
LyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEhBVkUoUlVOTE9P
UF9USU1FUikKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmNwcAkocmV2aXNpb24gMTQ1MjU5KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwOjE0NTI1OSkK
KysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKENG
UnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQorICAgIDogbV9ydW5Mb29wKHJ1
bkxvb3ApCit7CisgICAgaWYgKG1vZGUpCisgICAgICAgIG1fbW9kZS5hZG9wdENGKENGU3RyaW5n
Q3JlYXRlQ29weSgwLCBtb2RlKSk7Cit9CisKK2Jvb2wgU2NoZWR1bGVQYWlyOjpvcGVyYXRvcj09
KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHJ1bkxvb3AoKSAh
PSBvdGhlci5ydW5Mb29wKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDRlN0cmluZ1Jl
ZiB0aGlzTW9kZSA9IG1vZGUoKTsKKyAgICBDRlN0cmluZ1JlZiBvdGhlck1vZGUgPSBvdGhlci5t
b2RlKCk7CisgICAgaWYgKCF0aGlzTW9kZSB8fCAhb3RoZXJNb2RlKQorICAgICAgICByZXR1cm4g
dGhpc01vZGUgPT0gb3RoZXJNb2RlOworICAgIHJldHVybiBDRkVxdWFsKHRoaXNNb2RlLCBvdGhl
ck1vZGUpOworfQorCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3Bw
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2NoZWR1bGVQYWlyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYg
ewogCiBTY2hlZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZT
dHJpbmdSZWYgbW9kZSkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dU
Ri93dGYvU2NoZWR1bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmgJKHJldmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2NoZWR1bGVQYWlyLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWly
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY2hlZHVsZVBhaXJf
aAorI2RlZmluZSBTY2hlZHVsZVBhaXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TUnVuTG9vcDsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjaGVkdWxlUGFpciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjaGVkdWxlUGFpcj4gY3JlYXRlKENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBt
b2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsg
fQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5n
UmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZVBhaXIocnVuTG9vcCwgbW9k
ZSkpOyB9CisgICAgTlNSdW5Mb29wKiBuc1J1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX25zUnVu
TG9vcC5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGUuZ2V0KCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
Y2hlZHVsZVBhaXImIG90aGVyKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTY2hlZHVsZVBhaXIo
Q0ZSdW5Mb29wUmVmLCBDRlN0cmluZ1JlZik7CisKKyNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
Q0ZORVRXT1JLKQorICAgIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7Cisg
ICAgUmV0YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOworI2VuZGlmCisKKyAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtX21vZGU7Cit9OworCitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaCB7CisgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIHBhaXIpCisgICAgeworICAg
ICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzJdID0geyByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocGFpci0+cnVuTG9vcCgpKSwgcGFpci0+bW9kZSgpID8gQ0ZIYXNoKHBhaXItPm1vZGUoKSkg
OiAwIH07CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhh
c2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIGEsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZVBhaXI+JiBi
KSB7IHJldHVybiBhID09IGI7IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8
U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWlySGFzaFNldDsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Nj
aGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5o
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogT0JKQ19DTEFTUyBOU1J1bkxvb3A7CiAjZW5kaWYK
IAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFNjaGVkdWxl
UGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4gewogcHVibGljOgpAQCAtNTMs
MTMgKzUzLDEzIEBAIHB1YmxpYzoKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsg
cmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQogICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25zdCB7
IHJldHVybiBtX21vZGUuZ2V0KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY2hl
ZHVsZVBhaXImIG90aGVyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFNjaGVkdWxlUGFpcihDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU2NoZWR1bGVQYWlyKENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKLSAgICBTY2hlZHVsZVBhaXIoTlNSdW5M
b29wKiwgQ0ZTdHJpbmdSZWYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTY2hlZHVsZVBhaXIo
TlNSdW5Mb29wKiwgQ0ZTdHJpbmdSZWYpOwogICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25z
UnVuTG9vcDsKICNlbmRpZgogCkBAIC04MSw2ICs4MSw5IEBAIHN0cnVjdCBTY2hlZHVsZVBhaXJI
YXNoIHsKIAogdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTY2hlZHVsZVBhaXI+LCBTY2hlZHVsZVBh
aXJIYXNoPiBTY2hlZHVsZVBhaXJIYXNoU2V0OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY2hlZHVsZVBhaXI7Cit1c2luZyBXVEY6
OlNjaGVkdWxlUGFpckhhc2hTZXQ7CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFp
ck1hYy5tbQkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2NoZWR1bGVQYWlyTWFjLm1tOjE0NTI1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxl
UGFpck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKKworI2lmICFVU0UoQ0ZORVRXT1JL
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5T
UnVuTG9vcCogcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkKKyAgICA6IG1fbnNSdW5Mb29wKHJ1
bkxvb3ApCisgICAgLCBtX3J1bkxvb3AoW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXSkKK3sKKyAgICBp
ZiAobW9kZSkKKyAgICAgICAgbV9tb2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1v
ZGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyTWFjLm1tCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBh
aXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgogCiAjaWYgIVVTRShD
Rk5FVFdPUkspCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1v
ZGUpCiAgICAgOiBtX25zUnVuTG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ1NTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2ls
bCBhbGxvdyB1cyB0byB1c2UgdGltZXJzIGluIGxvd2VyIGxldmVsIHByaW1pdGl2ZXMgd2l0aG91
dAorICAgICAgICBkdXBsaWNhdGluZyBhbGwgdGhlIGNvZGUuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChEb2N1bWVudExvYWRlcik6CisgICAgICAgICogbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL0F1dG9kcmFpbmVkUG9vbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL1J1bkxvb3BUaW1lckNGLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9T
Y2hlZHVsZVBhaXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NjaGVkdWxl
UGFpci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9BdXRvZHJhaW5lZFBvb2wu
bW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisKIDIwMTMt
MDMtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
S2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIEdyYXBoaWNzTGF5ZXJzIHdpdGggdGlsZWQgYmFj
a2luZyBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNzkwLDE2ICs3OTAsMTYgQEAgX19aTjdXZWJDb3JlNFBhZ2UxM3JhbmdlT2ZT
dHJpbmdFUktOM1dURgogX19aTjdXZWJDb3JlNFBhZ2UxM3NldElzSW5XaW5kb3dFYgogX19aTjdX
ZWJDb3JlNFBhZ2UxM3NldFBhZ2luYXRpb25FUktOU18xMFBhZ2luYXRpb25FCiBfX1pON1dlYkNv
cmU0UGFnZTE0c2V0TWVkaWFWb2x1bWVFZgotX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxl
UGFpckVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNjaGVkdWxlUGFpckVFRQorX19aTjdXZWJDb3Jl
NFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOUzFfMTJTY2hlZHVsZVBh
aXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgogX19aTjdXZWJDb3Jl
NFBhZ2UxNnNldENhblN0YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xv
YWRpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKLV9fWk43V2Vi
Q29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hl
ZHVsZVBhaXJFRUUKK19fWk43V2ViQ29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYx
MFBhc3NSZWZQdHJJTlMxXzEyU2NoZWR1bGVQYWlyRUVFCiBfX1pON1dlYkNvcmU0UGFnZTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTRQYWdlMTlhZGRM
YXlvdXRNaWxlc3RvbmVzRWoKLV9fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2Vk
RVBOU185UGFnZUdyb3VwRXkKIF9fWk43V2ViQ29yZTRQYWdlMTlzZXRSdWJiZXJCYW5kc0F0VG9w
RWIKK19fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2VkRVBOU185UGFnZUdyb3Vw
RXkKIF9fWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmCiBfX1pON1dlYkNv
cmU0UGFnZTIwdW5tYXJrQWxsVGV4dE1hdGNoZXNFdgogX19aTjdXZWJDb3JlNFBhZ2UyMW1hcmtB
bGxNYXRjaGVzRm9yVGV4dEVSS04zV1RGNlN0cmluZ0VqYmoKQEAgLTIzMDUsNyArMjMwNSw2IEBA
IF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIAogI2lmIFVTRShDRk5F
VFdPUkspCiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQOV9fQ0ZFcnJvckV2Ci1fX1pO
N1dlYkNvcmUxMlNjaGVkdWxlUGFpckMxRVAxMV9fQ0ZSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9f
Wk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEyY2ZVUkxSZXF1ZXN0RU5TXzIwSFRUUEJvZHlV
cGRhdGVQb2xpY3lFCiBfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTNjZlVSTFJlc3Bv
bnNlRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyOHJlbGVhc2VDb25uZWN0aW9uRm9y
RG93bmxvYWRFdgpAQCAtMjMxOCw3ICsyMzE3LDYgQEAgX3drR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlCiBfd2tTZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVl
c3RTdG9yYWdlU2Vzc2lvbgogI2Vsc2UKLV9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlO
U1J1bkxvb3BQSzEwX19DRlN0cmluZwogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVs
ZWFzZVByb3h5RXYKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAkocmV2aXNpb24gMTQ1NDQxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRl
IDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjAsOCArNjYwLDYgQEAKIAkJMUM1RkFFRDEwRENG
RDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVGQUVDRjBEQ0ZEOTAxMDBENThGNzgg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJMUM1RkFFRDIwRENGRDkwMTAw
RDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1RkFFRDAwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQkxQzVGQUVFNzBEQ0ZEQTY4MDBENThGNzggLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovOyB9OwotCQkxQzYzQTI0ODBGNzE2NDY2MDBDMDlE
NUEgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzYzQTI0NjBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUM2M0EyNDkw
RjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjNBMjQ3MEY3MTY0NjYwMEMwOUQ1QSAvKiBS
dW5Mb29wVGltZXJDRi5jcHAgKi87IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJ
bnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFD
ODFCOTVCMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU3MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMUM4MUI5NUMwRTk3
MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3Bl
Y3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC02NzgsMTEgKzY3Niw4IEBACiAJCTFDQjQyMTREMEFGMkIyQ0EwMDg1QUQ5MSAvKiBE
T01SYW5nZUludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTM4RjA1QTBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFu
Z2VJbnRlcm5hbC5oICovOyB9OwogCQkxQ0NBNzMyMjEwQURENDRBMDBGRDQ0MEQgLyogRE9NSFRN
TElucHV0RWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0E3MzIxMTBBREQ0M0UwMEZENDQwRCAvKiBE
T01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwogCQkxQ0RDMTQwNTBERDM5MzRDMDA2
RUFDRDMgLyogbG9jYWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXpl
ZFN0cmluZ3MuanMgKi87IH07Ci0JCTFDRTI0Rjk3MEQ3Q0FGMEUwMDdFMDRDMiAvKiBTY2hlZHVs
ZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0UyNEY5NjBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovOyB9Owog
CQkxQ0U4M0FDMzBBREFGRkQ3MDA5MzU0RjYgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEVGRjBB
RDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTFD
RTgzQUM0MEFEQUZGRDgwMDkzNTRGNiAvKiBEZWxldGVCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0QzhGNjMwQUQ4NjU1RDAwOTQ3NUNF
IC8qIERlbGV0ZUJ1dHRvbi5jcHAgKi87IH07Ci0JCTFDRUZDOUI5MEQ3OERDOEMwMDdEMjU3OSAv
KiBTY2hlZHVsZVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDRUZDOUI3MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0VGQzlCQTBENzhE
QzhDMDA3RDI1NzkgLyogU2NoZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUZDOUI4MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVs
ZVBhaXIuY3BwICovOyB9OwogCQkxQ0Y2QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRjZCREY4MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oICovOyB9Owog
CQkxQ0Y2QkRGQjBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkRGOTBFOUJCMjZB
MDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gKi87IH07CiAJCTFDRjZCRTE0MEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAv
KiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsgfTsKQEAgLTE2NjYsOCArMTY2MSw2IEBA
CiAJCTUxRTBCQUVCMERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAw
QTlFNDE3IC8qIEpTU3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5
RTQxNyAvKiBTdG9yYWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTBCQjM5MERB
NUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQjM3MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdl
TWFwLmNwcCAqLzsgfTsKLQkJNTFFMUVDQUYwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVk
UG9vbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTFFQ0FEMEM5MUM1NDYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wubW0gKi87IH07Ci0JCTUx
RTFFQ0IzMEM5MUM1NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0IxMEM5MUM1NTYwMERDMjU1
QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLzsgfTsKIAkJNTFFMUVDQkUwQzkxQzkwNDAwREMyNTVC
IC8qIEljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFMUVDQjgwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRhYmFzZUNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JBMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmNwcCAqLzsgfTsKIAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8q
IEljb25SZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmggKi87IH07CkBAIC04
MDI4LDggKzgwMjEsNiBAQAogCQkxQzVGQUVDRjBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
NUZBRUQwMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM2M0EyNDYwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5Mb29wVGltZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM2M0EyNDcwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxv
b3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxv
b3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3
MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgwNDgsOSArODAzOSw2IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxl
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlD
ODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQ0UyNEY5NjBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VGQzlCNzBENzhEQzhDMDA3RDI1NzkgLyog
U2NoZWR1bGVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVkdWxl
UGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VGQzlCODBENzhEQzhDMDA3
RDI1NzkgLyogU2NoZWR1bGVQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjaGVkdWxlUGFpci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
RjZCREY4MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpDRXZlbnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0Y2QkRGOTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlz
dGVuZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPYmpDRXZl
bnRMaXN0ZW5lci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNkJFMTIwRTlC
QjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTQwLDggKzkxMjgsNiBAQAogCQk1MUUwQkFF
OTBEQTU1RDRBMDBBOUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTdG9yYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMEJCMzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUUwQkIzNzBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMUVDQUQwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9k
cmFpbmVkUG9vbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1
dG9kcmFpbmVkUG9vbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMUVDQjEw
QzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdXRvZHJhaW5lZFBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFMUVDQjgwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRhYmFzZUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJY29uRGF0YWJhc2VDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMUVDQkEwQzkxQzkwNDAwREMyNTVCIC8qIElj
b25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvblJl
Y29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTFFQ0JCMEM5MUM5MDQw
MERDMjU1QiAvKiBJY29uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEljb25SZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTMxLDkgKzE1
MTE3LDYgQEAKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNw
cCAqLywKIAkJCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCAqLywK
IAkJCQkyOUEzMDlBQjE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCAqLywKLQkJCQkx
QzYzQTI0NzBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovLAotCQkJCTFD
RUZDOUI4MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuY3BwICovLAotCQkJCTFDRUZD
OUI3MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQk1MTJERDhFMjBE
OTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjZjsKQEAgLTE2MzA5LDcgKzE2MjkyLDYgQEAKIAkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZE
IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
NTFFMUVDQUQwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5tbSAqLywKIAkJCQk2
NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8sCiAJCQkJNjVG
ODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLywKIAkJCQkyRDkw
NjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi8sCkBAIC0xNjM1NSw3ICsx
NjMzNyw2IEBACiAJCQkJMDA4MUZFRkUxNkIwQTJCNjAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeE1h
Yy5tbSAqLywKIAkJCQlFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVy
TWFjLmNwcCAqLywKIAkJCQlCQzBCMzU4MjE0QzRGOTU0MDA1NUUyMkEgLyogUnVuTG9vcE1hYy5t
bSAqLywKLQkJCQkxQ0UyNEY5NjBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1t
ICovLAogCQkJCUJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5o
ICovLAogCQkJCUJDNTExNTZEMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1hYy5t
bSAqLywKIAkJCQlCQzhCODUzQzBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMu
aCAqLywKQEAgLTIxNjEyLDcgKzIxNTkzLDYgQEAKIAkJCQk4OUQwOEQ5QzEyMjI4NDUxMDAxMjQx
REYgLyogQXN5bmNGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk4OUQwOEQ5RDEyMjI4NDUxMDAxMjQx
REYgLyogQXN5bmNGaWxlU3lzdGVtLmggKi8sCiAJCQkJODlEMDhEOUUxMjIyODQ1MTAwMTI0MURG
IC8qIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oICovLAotCQkJCTUxRTFFQ0IxMEM5MUM1NTYw
MERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3
MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAw
NzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUuaCAqLywKIAkJCQlDREVBNzYzMzE0NjBCNDYyMDA4
QjMxRjEgLyogQ2xvY2suY3BwICovLApAQCAtMjE3MzUsNyArMjE3MTUsNiBAQAogCQkJCTk4MzFB
RTQ5MTU0MjI1QTIwMEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oICovLAogCQkJCUJDMEIzNTg1
MTRDNEY5ODMwMDU1RTIyQSAvKiBSdW5Mb29wLmNwcCAqLywKIAkJCQlCQzBCMzU4NjE0QzRGOTgz
MDA1NUUyMkEgLyogUnVuTG9vcC5oICovLAotCQkJCTFDNjNBMjQ2MEY3MTY0NjYwMEMwOUQ1QSAv
KiBSdW5Mb29wVGltZXIuaCAqLywKIAkJCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCAqLywKIAkJCQkyOTNFQUUxRTEzNTZCMkZFMDA2N0FD
RjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggKi8sCiAJCQkJNTE2MkM3RjIxMUY3N0VG
QTAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCAqLywKQEAgLTIzMzkwLDcgKzIzMzY5LDYg
QEAKIAkJCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyog
QXV0aGVudGljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjRDMENFOTIz
NEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFF
MUVDQjMwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDU4MzBENEUxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA0RTBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxl
TGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBGQkI5QzFEMDA1MTAyOTMgLyog
QVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTkzOSw3ICsyNTkxNyw2IEBACiAJ
CQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwQjM1ODgxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTFDNjNBMjQ4MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGlt
ZV9tZXRob2QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDIzMEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX29iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk0OCw3ICsyNTkyNSw2IEBA
CiAJCQkJOEM2RUE2MUExMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAw
NzZFOTM3IC8qIFNjaGVkdWxlZEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUNFRkM5Qjkw
RDc4REM4QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2
MkM3RjUxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5QkQwQkY5MzEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzExNyw3ICsyNzA5Myw2IEBACiAJCQkJN0VFNjg0NUYxMkQyNkUzODAw
RTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0Rjcx
MzgwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTRDNzY0RDBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRp
b25NYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUUxRUNBRjBDOTFDNTQ2MDBEQzI1NUIgLyog
QXV0b2RyYWluZWRQb29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDU4MzBENEQxNjc5QjRGODAw
QUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
Q0ZGMDUwMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQUFBNzI4RjkxNkQxRDhCQzAwRDNCQkM2IC8qIEFYT2JqZWN0Q2FjaGVJT1MubW0g
aW4gU291cmNlcyAqLywKQEAgLTI5MjY4LDcgKzI5MjQzLDYgQEAKIAkJCQlCQzBCMzU4NzE0QzRG
OTgzMDA1NUUyMkEgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUEzMDlBQzE1
NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEIz
NTgzMTRDNEY5NTQwMDU1RTIyQSAvKiBSdW5Mb29wTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MUM2M0EyNDkwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21l
dGhvZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9vYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI3Nyw4ICsyOTI1MSw2IEBA
CiAJCQkJOEM2RUE2MTkxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQ0EwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVERkU4RjU2MEQxNjQ3
N0IwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNF
RkM5QkEwRDc4REM4QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkxQ0UyNEY5NzBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29w
ZWRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUMwMUJEMEMyNzREQUMwMDlG
NEVDOSAvKiBTY3JlZW4uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVRocmVhZC5jcHAJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAKIAog
I2luY2x1ZGUgIkZpbGVUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCwxMSBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU2NoZWR1bGVQYWlyOworfQogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xhc3MgQXJjaGl2ZTsKQEAgLTU5
LDcgKzYyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xh
c3MgUmVzb3VyY2VCdWZmZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci0gICAgY2xhc3Mg
U2NoZWR1bGVQYWlyOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdWJzdGl0
dXRlUmVzb3VyY2U7CiAKQEAgLTEzMiw4ICsxMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
b3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHNj
aGVkdWxlKFNjaGVkdWxlUGFpciopOwotICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQ
YWlyKik7CisgICAgICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIqKTsKKyAgICAg
ICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIEhBVkUoUlVOTE9P
UF9USU1FUikKLSNpbmNsdWRlICJSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cFRpbWVyLmg+CiAjZWxzZQogI2luY2x1ZGUgIlRpbWVyLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQ1NDQx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKIAot
I2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudC5o
IgpAQCAtNDAsNiArMzksNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1
ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24uaCIK
KyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi93aW5jZS9JY29uRGF0
YWJhc2VXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
d2luY2UvSWNvbkRhdGFiYXNlV2luQ0UuY3BwCShyZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi93aW5jZS9JY29uRGF0YWJhc2VXaW5DRS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDEyICsyMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ikljb25EYXRhYmFzZS5oIgogCi0jaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
SWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiSWNvblJlY29yZC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCisjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BdXRvZHJhaW5lZFBvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BdXRvZHJhaW5lZFBvb2wuaAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQXV0b2RyYWluZWRQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBBdXRvZHJhaW5lZFBvb2xfaAotI2RlZmluZSBBdXRvZHJhaW5lZFBvb2xf
aAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLU9CSkNfQ0xBU1MgTlNBdXRvcmVs
ZWFzZVBvb2w7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXV0b2RyYWluZWRQb29s
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRvZHJhaW5lZFBvb2wpOwotcHVibGljOgot
ICAgIGV4cGxpY2l0IEF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQgPSAxKTsKLSAg
ICB+QXV0b2RyYWluZWRQb29sKCk7Ci0gICAgCi0gICAgdm9pZCBjeWNsZSgpOwotICAgIAotcHJp
dmF0ZToKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaW50IG1faXRlcmF0aW9uTGltaXQ7Ci0gICAg
aW50IG1faXRlcmF0aW9uQ291bnQ7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wqIG1fcG9vbDsKLSNl
bmRpZgotfTsKLQotI2lmICFQTEFURk9STShNQUMpCi1pbmxpbmUgQXV0b2RyYWluZWRQb29sOjpB
dXRvZHJhaW5lZFBvb2woaW50KSB7IH0KLWlubGluZSBBdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJh
aW5lZFBvb2woKSB7IH0KLWlubGluZSB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKSB7IH0K
LSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMTQ1NDQxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxv
b3AuaCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
KyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wVGltZXJD
Ri5jcHAJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1
bkxvb3BUaW1lckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShNQUMpICYmIEhBVkUoUlVOTE9PUF9USU1FUikK
LQotI2luY2x1ZGUgIlJ1bkxvb3BUaW1lci5oIgotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJ1bkxvb3BUaW1lckJhc2U6On5SdW5Mb29wVGlt
ZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZS
dW5Mb29wVGltZXJSZWYsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgLy8gQ0ZSdW5Mb29wVGltZXIg
ZG9lcyBub3QgY3JlYXRlIGFuIE5TQXV0b3JlbGVhc2VQb29sLCBsaWtlIE5TVGltZXIgZG9lcy4g
VGhpcyBjYW4gbGVhZCB0bwotICAgIC8vIGF1dG9yZWxlYXNlZCBvYmplY3RzIGJlaW5nIHB1c2hl
ZCBpbnRvIE5TQXV0b3JlbGVhc2VQb29scyB1bmRlcm5lYXRoIHRoZSBydW4gbG9vcCwgd2hpY2gK
LSAgICAvLyBhcmUgdmVyeSBpbmZyZXF1ZW50bHkgZHJhaW5lZC4gQ3JlYXRlIGEgbmV3IGF1dG9y
ZWxlYXNlIHBvb2wgaGVyZSB0byBnaXZlIGF1dG9yZWxlYXNlZCBvYmplY3RzCi0gICAgLy8gYSBw
bGFjZSB0byBjb2xsZWN0LgotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwotICAgIFJ1bkxvb3BU
aW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcFRpbWVyQmFzZSo+KGNvbnRleHQp
OwotICAgIHRpbWVyLT5maXJlZCgpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnN0YXJ0
KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBkb3VibGUgcmVwZWF0SW50ZXJ2YWwpCi17Ci0gICAg
aWYgKG1fdGltZXIpCi0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdl
dCgpKTsKLSAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwg
MCwgMCB9OwotICAgIG1fdGltZXIuYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwsIHJlcGVhdEludGVydmFs
LCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJh
c2U6OnNjaGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpciogc2NoZWR1bGVQYWlyKQotewotICAgIEFT
U0VSVF9BUkcoc2NoZWR1bGVQYWlyLCBzY2hlZHVsZVBhaXIpOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV90aW1lciwgIlRpbWVyIG11c3QgaGF2ZSBvbmUgb2YgdGhlIHN0YXJ0IGZ1bmN0aW9u
cyBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgc2NoZWR1bGUoKS4iKTsKLSAgICBDRlJ1bkxvb3BBZGRU
aW1lcihzY2hlZHVsZVBhaXItPnJ1bkxvb3AoKSwgbV90aW1lci5nZXQoKSwgc2NoZWR1bGVQYWly
LT5tb2RlKCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnNjaGVkdWxlKGNvbnN0IFNj
aGVkdWxlUGFpckhhc2hTZXQmIHNjaGVkdWxlUGFpcnMpCi17Ci0gICAgU2NoZWR1bGVQYWlySGFz
aFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc2NoZWR1bGVQYWlycy5lbmQoKTsKLSAgICBmb3Ig
KFNjaGVkdWxlUGFpckhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NoZWR1bGVQYWlycy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHNjaGVkdWxlKCgqaXQpLmdldCgpKTsK
LX0KLQotdm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzdG9wKCkKLXsKLSAgICBpZiAoIW1fdGltZXIp
Ci0gICAgICAgIHJldHVybjsKLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5n
ZXQoKSk7Ci0gICAgbV90aW1lciA9IDA7Ci19Ci0KLWJvb2wgUnVuTG9vcFRpbWVyQmFzZTo6aXNB
Y3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3RpbWVyICYmIENGUnVuTG9vcFRpbWVySXNW
YWxpZChtX3RpbWVyLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5jcHAJKHJldmlzaW9uIDE0NTQ0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNj
aGVkdWxlUGFpci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjaGVkdWxlUGFpcjo6U2No
ZWR1bGVQYWlyKENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQotICAgIDog
bV9ydW5Mb29wKHJ1bkxvb3ApCi17Ci0gICAgaWYgKG1vZGUpCi0gICAgICAgIG1fbW9kZS5hZG9w
dENGKENGU3RyaW5nQ3JlYXRlQ29weSgwLCBtb2RlKSk7Ci19Ci0KLWJvb2wgU2NoZWR1bGVQYWly
OjpvcGVyYXRvcj09KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYg
KHJ1bkxvb3AoKSAhPSBvdGhlci5ydW5Mb29wKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBDRlN0cmluZ1JlZiB0aGlzTW9kZSA9IG1vZGUoKTsKLSAgICBDRlN0cmluZ1JlZiBvdGhlck1v
ZGUgPSBvdGhlci5tb2RlKCk7Ci0gICAgaWYgKCF0aGlzTW9kZSB8fCAhb3RoZXJNb2RlKQotICAg
ICAgICByZXR1cm4gdGhpc01vZGUgPT0gb3RoZXJNb2RlOwotICAgIHJldHVybiBDRkVxdWFsKHRo
aXNNb2RlLCBvdGhlck1vZGUpOwotfQotCi19IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQYWlyLmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NoZWR1bGVQYWlyX2gKLSNkZWZpbmUgU2NoZWR1bGVQ
YWlyX2gKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotT0JKQ19DTEFTUyBOU1J1bkxvb3A7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBTY2hlZHVsZVBhaXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTY2hlZHVsZVBh
aXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+IGNyZWF0
ZShDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KLQotI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NoZWR1bGVQYWly
PiBjcmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsgfQotICAgIE5TUnVuTG9v
cCogbnNSdW5Mb29wKCkgY29uc3QgeyByZXR1cm4gbV9uc1J1bkxvb3AuZ2V0KCk7IH0KLSNlbmRp
ZgotCi0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3Au
Z2V0KCk7IH0KLSAgICBDRlN0cmluZ1JlZiBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlLmdl
dCgpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NoZWR1bGVQYWlyJiBvdGhlcikg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU2NoZWR1bGVQYWlyKENGUnVuTG9vcFJlZiwgQ0ZTdHJp
bmdSZWYpOwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKLSAgICBTY2hl
ZHVsZVBhaXIoTlNSdW5Mb29wKiwgQ0ZTdHJpbmdSZWYpOwotICAgIFJldGFpblB0cjxOU1J1bkxv
b3AqPiBtX25zUnVuTG9vcDsKLSNlbmRpZgotCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4g
bV9ydW5Mb29wOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9tb2RlOwotfTsKLQotc3Ry
dWN0IFNjaGVkdWxlUGFpckhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJl
ZlB0cjxTY2hlZHVsZVBhaXI+JiBwYWlyKQotICAgIHsKLSAgICAgICAgdWludHB0cl90IGhhc2hD
b2Rlc1syXSA9IHsgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHBhaXItPnJ1bkxvb3AoKSks
IHBhaXItPm1vZGUoKSA/IENGSGFzaChwYWlyLT5tb2RlKCkpIDogMCB9OwotICAgICAgICByZXR1
cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMp
OwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTY2hlZHVsZVBh
aXI+JiBhLCBjb25zdCBSZWZQdHI8U2NoZWR1bGVQYWlyPiYgYikgeyByZXR1cm4gYSA9PSBiOyB9
Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7Ci19OwotCi10eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNjaGVkdWxlUGFpcj4sIFNjaGVk
dWxlUGFpckhhc2g+IFNjaGVkdWxlUGFpckhhc2hTZXQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCShy
ZXZpc2lvbiAxNDU0NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkxheWVyRmx1c2hTY2hlZHVsZXIuaCIKIAotI2luY2x1ZGUgIkF1
dG9kcmFpbmVkUG9vbC5oIgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQXV0
b2RyYWluZWRQb29sLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9BdXRvZHJhaW5lZFBvb2wubW0JKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9BdXRvZHJhaW5lZFBvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdXRvZHJhaW5lZFBvb2wu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRvZHJhaW5lZFBvb2w6OkF1dG9kcmFpbmVk
UG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCi0gICAgOiBtX2l0ZXJhdGlvbkxpbWl0KGl0ZXJhdGlv
bkxpbWl0KQotICAgICwgbV9pdGVyYXRpb25Db3VudCgwKQotICAgICwgbV9wb29sKFtbTlNBdXRv
cmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdKQoteyAKLX0KLQotQXV0b2RyYWluZWRQb29sOjp+QXV0
b2RyYWluZWRQb29sKCkKLXsKLSAgICBbbV9wb29sIGRyYWluXTsKLX0KLQotdm9pZCBBdXRvZHJh
aW5lZFBvb2w6OmN5Y2xlKCkKLXsKLSAgICBpZiAoKyttX2l0ZXJhdGlvbkNvdW50ID09IG1faXRl
cmF0aW9uTGltaXQpIHsKLSAgICAgICAgW21fcG9vbCBkcmFpbl07Ci0gICAgICAgIG1fcG9vbCA9
IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotICAgICAgICBtX2l0ZXJhdGlvbkNv
dW50ID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbQkocmV2aXNpb24g
MTQ1NDQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKLQotI2lmICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLVNjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9vcCog
cnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkKLSAgICA6IG1fbnNSdW5Mb29wKHJ1bkxvb3ApCi0g
ICAgLCBtX3J1bkxvb3AoW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXSkKLXsKLSAgICBpZiAobW9kZSkK
LSAgICAgICAgbV9tb2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxNDU0NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKICNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCisjaW5j
bHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsMTEgQEAg
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZQogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU2NoZWR1
bGVQYWlyOworfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKQEAgLTg3LDcgKzkwLDYg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVy
bmFsOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNjaGVkdWxlUGFpcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIFRpbWVyOwpAQCAtMTI4LDggKzEzMCw4IEBAIHB1YmxpYzoKICAgICBpZCBy
ZWxlYXNlUHJveHkoKTsKICNlbmRpZgogCi0gICAgdm9pZCBzY2hlZHVsZShTY2hlZHVsZVBhaXIq
KTsKLSAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyKik7CisgICAgdm9pZCBzY2hlZHVs
ZShXVEY6OlNjaGVkdWxlUGFpciopOworICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxl
UGFpciopOwogI2VuZGlmCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAJ
KHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBA
QAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCiAjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFp
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAJKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgVVNFKENGTkVUV09SSykKIAotI2luY2x1ZGUg
IkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE0NTQ0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJl
c291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbXBvcnQgIlNj
aGVkdWxlUGFpci5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZl
ci5oIgogI2ltcG9ydCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZS5oIgorI2ltcG9ydCA8
d3RmL1NjaGVkdWxlUGFpci5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkocmV2aXNpb24gMTQ1NDQx
KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VUYXNrLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFTeW5jLmgiCisjaW5jbHVkZSA8
d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NTY0KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB1
cyB0byB1c2UgdGltZXJzIGluIGxvd2VyIGxldmVsIHByaW1pdGl2ZXMgd2l0aG91dAorICAgICAg
ICBkdXBsaWNhdGluZyBhbGwgdGhlIGNvZGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0KToKKwogMjAxMy0wMy0xMiAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIEhJTERPTl9DUFBGTEFH
UyBhbmQgSElMRE9OX0NGTEFHUyByZWZlcmVuY2VzIGZyb20gR05VbWFrZWZpbGVzCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAx
NDU0NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVs
ZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxD
RkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDU1NjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMy0xMiAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmVkIFJ1bkxvb3BUaW1lciBhbmQg
U2NoZWR1bGVQYWlyIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEyMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIHVzZSB0aW1lcnMgaW4gbG93ZXIgbGV2
ZWwgcHJpbWl0aXZlcyB3aXRob3V0CisgICAgICAgIGR1cGxpY2F0aW5nIGFsbCB0aGUgY29kZS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorCiAyMDEzLTAzLTEyICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAkocmV2aXNpb24gMTQ1NDQxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmlu
Z0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1
bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192791</attachid>
            <date>2013-03-12 12:56:46 -0700</date>
            <delta_ts>2013-03-12 14:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112171-20130312125244.patch</filename>
            <type>text/plain</type>
            <size>84506</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDU1NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTEyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgUnVuTG9vcFRpbWVyIGFuZCBTY2hlZHVs
ZVBhaXIgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTIxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gdXNlIHRpbWVycyBpbiBsb3dlciBsZXZlbCBwcmlt
aXRpdmVzIHdpdGhvdXQKKyAgICAgICAgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0F1dG9k
cmFpbmVkUG9vbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BdXRvZHJh
aW5lZFBvb2wuaC4KKyAgICAgICAgKEF1dG9kcmFpbmVkUG9vbCk6CisgICAgICAgICogd3RmL0F1
dG9kcmFpbmVkUG9vbE1hYy5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0F1dG9kcmFpbmVkUG9vbC5tbS4KKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3BUaW1lci5oLgorICAgICAg
ICAqIHd0Zi9SdW5Mb29wVGltZXJDRi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWly
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQYWly
LmNwcC4KKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oLgorICAgICAgICAoU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyTWFjLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tLgorCiAyMDEzLTAzLTExICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4LiAgUm9sbGluZyBvdXQgaW5hZHZlcnRlbnQgc2V0dGluZyBvZiBEQVRBX0xPR19U
T19GSUxFLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNDU1NjkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMyBAQAogCQkwRkREQkZBODE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQ
cmludFN0cmVhbS5oICovOyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNG
NjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTE0Njk0MTkyMTZFQUFGNkQw
MDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDY5
NDE5MzE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2OTQxOTExNkVBQUY2RDAwMjRFMTQ2
IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLzsgfTsKKwkJMTQ2OTQxOTYxNkVBQUZGODAwMjRFMTQ2
IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Njk0MTk3MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyTWFjLm1tICovOyB9OworCQkxNDY5NDE5OTE2RUFCMDQxMDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuY3BwICovOyB9Owor
CQkxNDY5NDE5QzE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDY5NDE5QTE2RUFCMTBBMDAy
NEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFp
bmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2xNYWMubW0gKi87
IH07CiAJCTE0OUVGMTYzMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5RUYxNjIxNkJCRkUwRDAwMEE0
MzMxIC8qIFRyaVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsK
IAkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMEY2MTVFNDVF
NDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoKTsgfTsgfTsKIAkJMUE2QkI3NjkxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2
QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovOyB9OwpAQCAtMzM1LDYg
KzM0MiwxMyBAQAogCQkwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFN
U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJB
TVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTAxNkVBQUY2RDAw
MjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTEx
NkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY2hlZHVsZVBhaXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxl
UGFpck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjaGVk
dWxlUGFpck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2OTQxOTgxNkVB
QjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY2hlZHVsZVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9vbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWlu
ZWRQb29sTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0
b2RyYWluZWRQb29sTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDlFRjE2
MjE2QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJpU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0Iw
RjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkzLDYgKzcwNyw4IEBACiAJCQkJQThBNDcyNUIx
NTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwICovLAogCQkJCUE4QTQ3MjVDMTUxQTgy
NUEwMDQxMjNGRiAvKiBBc3NlcnRpb25zLmggKi8sCiAJCQkJQThBNDcyNUQxNTFBODI1QTAwNDEy
M0ZGIC8qIEF0b21pY3MuaCAqLywKKwkJCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0
b2RyYWluZWRQb29sLmggKi8sCisJCQkJMTQ2OTQxOUIxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSAqLywKIAkJCQlBOEE0NzI1RTE1MUE4MjVBMDA0MTIzRkYgLyogQVZM
VHJlZS5oICovLAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICov
LAogCQkJCUE4QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKQEAgLTgzMSw3
ICs4NDcsMTIgQEAKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8s
CiAJCQkJQThBNDczMDQxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ckhhc2hNYXAuaCAqLywKIAkJ
CQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCisJCQkJMTQ2OTQx
OTAxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oICovLAorCQkJCTE0Njk0MTkxMTZF
QUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCiAJCQkJMTRGM0IwRjYxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKKwkJCQkxNDY5NDE5NDE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCisJCQkJMTQ2OTQxOTgxNkVBQjA0
MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5jcHAgKi8sCisJCQkJMTQ2OTQxOTUxNkVBQUZGODAw
MjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKIAkJCQlBOEE0NzMwNjE1MUE4MjVCMDA0
MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJQThBNDczMDcxNTFBODI1QjAwNDEy
M0ZGIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oICovLAogCQkJCUE4QTQ3MzA4MTUxQTgyNUIwMDQx
MjNGRiAvKiBTSEExLmNwcCAqLywKQEAgLTEwNjcsNiArMTA4OCw3IEBACiAJCQkJODEzNDAxMzkx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTkx
NTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNBQjE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDY5
NDE5NjE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjAzMjFCQzE1NkFBOEQxMDA2RUJBRjYgLyogQml0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QTQ3MzhBMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRtYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE3OCw2ICsxMjAwLDcgQEAKIAkJCQlBODc2REJEODE1MTgxNkU1MDBEQURC
OTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDBFMTUxQTgyNUIwMDQx
MjNGRiAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MEYxNTFBODI1QjAw
NDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ2OTQxOTIxNkVB
QUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMz
NjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjI3LDYgKzEyNTAsNyBAQAogCQkJCUE4QTQ3NDUwMTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NDE1
MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQ2OTQxOUMxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5RUYxNjMxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1NzE1MUE4MjVCMDA0MTIzRkYgLyogVHlwZWRB
cnJheUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDU5MTUxQTgyNUIwMDQxMjNGRiAv
KiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNjEsOCArMTM4NSwxMSBAQAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ2OTQxOUQxNkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9k
cmFpbmVkUG9vbE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgyNUIwMDQx
MjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk3MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTE0Njk0MTkzMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjMyMkNDREYxNjU2OTlGRjAwNDg1MkREIC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzODUsNiArMTQxMiw3IEBACiAJCQkJ
QThBNDc0M0MxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0Njk0MTk5MTZFQUIwNDEwMDI0RTE0NiAvKiBT
Y2hlZHVsZVBhaXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDMxMTUx
QTgyNUIwMDQxMjNGRiAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dURi93dGYvQXV0b2RyYWluZWRQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQXV0b2RyYWluZWRQb29sLmgJKHJldmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQXV0b2RyYWluZWRQb29sLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93
dGYvQXV0b2RyYWluZWRQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBdXRvZHJhaW5lZFBvb2xfaAorI2RlZmluZSBBdXRvZHJhaW5lZFBvb2xfaAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK09CSkNfQ0xBU1MgTlNBdXRvcmVsZWFzZVBv
b2w7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0b2RyYWluZWRQb29sIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRvZHJhaW5lZFBvb2wpOworcHVibGljOgorICAgIGV4
cGxpY2l0IEF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQgPSAxKTsKKyAgICB+QXV0
b2RyYWluZWRQb29sKCk7CisgICAgCisgICAgdm9pZCBjeWNsZSgpOworICAgIAorcHJpdmF0ZToK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaW50IG1faXRlcmF0aW9uTGltaXQ7CisgICAgaW50IG1f
aXRlcmF0aW9uQ291bnQ7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wqIG1fcG9vbDsKKyNlbmRpZgor
fTsKKworI2lmICFQTEFURk9STShNQUMpCitpbmxpbmUgQXV0b2RyYWluZWRQb29sOjpBdXRvZHJh
aW5lZFBvb2woaW50KSB7IH0KK2lubGluZSBBdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJhaW5lZFBv
b2woKSB7IH0KK2lubGluZSB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKSB7IH0KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0F1dG9kcmFpbmVkUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F1
dG9kcmFpbmVkUG9vbC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJh
aW5lZFBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsMTUgKzMzLDE1IEBACiAKIE9CSkNfQ0xBU1Mg
TlNBdXRvcmVsZWFzZVBvb2w7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYg
ewogCiBjbGFzcyBBdXRvZHJhaW5lZFBvb2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1
dG9kcmFpbmVkUG9vbCk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXV0b2RyYWluZWRQb29sKGlu
dCBpdGVyYXRpb25MaW1pdCA9IDEpOwotICAgIH5BdXRvZHJhaW5lZFBvb2woKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgQXV0b2RyYWluZWRQb29sKGludCBpdGVyYXRpb25MaW1p
dCA9IDEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+QXV0b2RyYWluZWRQb29sKCk7CiAgICAg
Ci0gICAgdm9pZCBjeWNsZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGN5Y2xlKCk7
CiAgICAgCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTU3LDcgKzU3LDkgQEAgaW5s
aW5lIEF1dG9kcmFpbmVkUG9vbDo6fkF1dG9kcmFpbmVkUG9vbAogaW5saW5lIHZvaWQgQXV0b2Ry
YWluZWRQb29sOjpjeWNsZSgpIHsgfQogI2VuZGlmCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkF1dG9kcmFpbmVkUG9vbDsKIAogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHJldmlzaW9uIDE0
NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0F1dG9kcmFpbmVkUG9vbC5t
bToxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJBdXRvZHJhaW5lZFBvb2wuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRvZHJhaW5l
ZFBvb2w6OkF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCisgICAgOiBtX2l0ZXJh
dGlvbkxpbWl0KGl0ZXJhdGlvbkxpbWl0KQorICAgICwgbV9pdGVyYXRpb25Db3VudCgwKQorICAg
ICwgbV9wb29sKFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdKQoreyAKK30KKworQXV0
b2RyYWluZWRQb29sOjp+QXV0b2RyYWluZWRQb29sKCkKK3sKKyAgICBbbV9wb29sIGRyYWluXTsK
K30KKwordm9pZCBBdXRvZHJhaW5lZFBvb2w6OmN5Y2xlKCkKK3sKKyAgICBpZiAoKyttX2l0ZXJh
dGlvbkNvdW50ID09IG1faXRlcmF0aW9uTGltaXQpIHsKKyAgICAgICAgW21fcG9vbCBkcmFpbl07
CisgICAgICAgIG1fcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAg
ICAgICBtX2l0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvZHJhaW5lZFBvb2xNYWMubW0JKHdvcmtpbmcgY29w
eSkKKysrIFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbE1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNyArMjksOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBdXRvZHJhaW5l
ZFBvb2wuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXVEYgewogCiBBdXRvZHJhaW5lZFBvb2w6OkF1dG9kcmFp
bmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQpCiAgICAgOiBtX2l0ZXJhdGlvbkxpbWl0KGl0ZXJh
dGlvbkxpbWl0KQpAQCAtNTIsNCArNTQsNCBAQCB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUo
KQogICAgIH0KIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wVGltZXIuaDoxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9SdW5Mb29wVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFJ1bkxvb3BUaW1lcl9oCisjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCisKKyNpbmNsdWRlICJTY2hl
ZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgorCitjbGFzcyBS
dW5Mb29wVGltZXJCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29wVGltZXJC
YXNlKTsKK3B1YmxpYzoKKyAgICBSdW5Mb29wVGltZXJCYXNlKCkgeyB9CisgICAgdmlydHVhbCB+
UnVuTG9vcFRpbWVyQmFzZSgpOworCisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBh
aXIqKTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKKwor
ICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRl
cnZhbCk7CisKKyAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRlcnZhbCkg
eyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CisgICAgdm9pZCBzdGFy
dE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQorCisgICAg
dm9pZCBzdG9wKCk7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2
b2lkIGZpcmVkKCkgPSAwOworCitwcml2YXRlOgorI2lmIFVTRShDRikKKyAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisjZW5kaWYKK307CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUaW1lckZpcmVkQ2xhc3M+IGNsYXNzIFJ1bkxvb3BUaW1lciA6IHB1YmxpYyBSdW5Mb29w
VGltZXJCYXNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKFRpbWVyRmlyZWRDbGFzczo6
KlRpbWVyRmlyZWRGdW5jdGlvbikoUnVuTG9vcFRpbWVyKik7CisKKyAgICBSdW5Mb29wVGltZXIo
VGltZXJGaXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKKyAgICAgICAgOiBtX29i
amVjdChvKSwgbV9mdW5jdGlvbihmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsg
KG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7IH0KKworcHJpdmF0ZToKKyAgICBUaW1lckZp
cmVkQ2xhc3MqIG1fb2JqZWN0OworICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3BU
aW1lci5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDI4IEBACiAjaWZuZGVmIFJ1bkxvb3BUaW1lcl9o
CiAjZGVmaW5lIFJ1bkxvb3BUaW1lcl9oCiAKLSNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKKyNp
bmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogLy8gVGltZSBpbnRlcnZh
bHMgYXJlIGFsbCBpbiBzZWNvbmRzLgogCi1jbGFzcyBSdW5Mb29wVGltZXJCYXNlIHsKK2NsYXNz
IFdURl9FWFBPUlRfUFJJVkFURSBSdW5Mb29wVGltZXJCYXNlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSdW5Mb29wVGltZXJCYXNlKTsKIHB1YmxpYzoKICAgICBSdW5Mb29wVGltZXJCYXNl
KCkgeyB9Ci0gICAgdmlydHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIH5SdW5Mb29wVGltZXJCYXNlKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpciopOwotICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQ
YWlySGFzaFNldCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxlKGNvbnN0
IFNjaGVkdWxlUGFpciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxlKGNv
bnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKIAotICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRG
aXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRl
cnZhbCk7CiAKICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRlcnZhbCkg
eyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CiAgICAgdm9pZCBzdGFy
dE9uZVNob3QoZG91YmxlIGludGVydmFsKSB7IHN0YXJ0KGludGVydmFsLCAwKTsgfQogCi0gICAg
dm9pZCBzdG9wKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKQEAg
LTc1LDYgKzc1LDggQEAgcHJpdmF0ZToKICAgICBUaW1lckZpcmVkRnVuY3Rpb24gbV9mdW5jdGlv
bjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OlJ1bkxvb3BUaW1lcjsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcFRp
bWVyQ0YuY3BwCShyZXZpc2lvbiAxNDUyNTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1J1bkxvb3BUaW1lckNGLmNwcDoxNDUyNTkpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
VGltZXJDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIpCisKKyNp
bmNsdWRlICJSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlICJBdXRvZHJhaW5lZFBvb2wuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSdW5Mb29wVGltZXJCYXNlOjp+UnVuTG9vcFRpbWVyQmFz
ZSgpCit7CisgICAgc3RvcCgpOworfQorCitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQoreworICAgIC8vIENGUnVuTG9vcFRpbWVyIGRvZXMg
bm90IGNyZWF0ZSBhbiBOU0F1dG9yZWxlYXNlUG9vbCwgbGlrZSBOU1RpbWVyIGRvZXMuIFRoaXMg
Y2FuIGxlYWQgdG8KKyAgICAvLyBhdXRvcmVsZWFzZWQgb2JqZWN0cyBiZWluZyBwdXNoZWQgaW50
byBOU0F1dG9yZWxlYXNlUG9vbHMgdW5kZXJuZWF0aCB0aGUgcnVuIGxvb3AsIHdoaWNoCisgICAg
Ly8gYXJlIHZlcnkgaW5mcmVxdWVudGx5IGRyYWluZWQuIENyZWF0ZSBhIG5ldyBhdXRvcmVsZWFz
ZSBwb29sIGhlcmUgdG8gZ2l2ZSBhdXRvcmVsZWFzZWQgb2JqZWN0cworICAgIC8vIGEgcGxhY2Ug
dG8gY29sbGVjdC4KKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBSdW5Mb29wVGltZXJC
YXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3BUaW1lckJhc2UqPihjb250ZXh0KTsKKyAg
ICB0aW1lci0+ZmlyZWQoKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzdGFydChkb3Vi
bGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoreworICAgIGlmICht
X3RpbWVyKQorICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5nZXQoKSk7
CisgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAg
fTsKKyAgICBtX3RpbWVyLmFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLCByZXBlYXRJbnRlcnZhbCwgMCwg
MCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpz
Y2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXIqIHNjaGVkdWxlUGFpcikKK3sKKyAgICBBU1NFUlRf
QVJHKHNjaGVkdWxlUGFpciwgc2NoZWR1bGVQYWlyKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fdGltZXIsICJUaW1lciBtdXN0IGhhdmUgb25lIG9mIHRoZSBzdGFydCBmdW5jdGlvbnMgY2Fs
bGVkIGJlZm9yZSBjYWxsaW5nIHNjaGVkdWxlKCkuIik7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIo
c2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIG1fdGltZXIuZ2V0KCksIHNjaGVkdWxlUGFpci0+bW9k
ZSgpKTsKK30KKwordm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVs
ZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzKQoreworICAgIFNjaGVkdWxlUGFpckhhc2hTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjaGVkdWxlUGFpcnMuZW5kKCk7CisgICAgZm9yIChTY2hl
ZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjaGVkdWxlUGFpcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBzY2hlZHVsZSgoKml0KS5nZXQoKSk7Cit9CisK
K3ZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKCFtX3RpbWVyKQorICAg
ICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkp
OworICAgIG1fdGltZXIgPSAwOworfQorCitib29sIFJ1bkxvb3BUaW1lckJhc2U6OmlzQWN0aXZl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aW1lciAmJiBDRlJ1bkxvb3BUaW1lcklzVmFsaWQo
bV90aW1lci5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykgJiYgSEFWRShSVU5MT09QX1RJTUVSKQpJbmRleDogU291cmNlL1dURi93
dGYvUnVuTG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxv
b3BUaW1lckNGLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcFRp
bWVyQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiUnVuTG9v
cFRpbWVyLmgiCiAjaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBSdW5Mb29wVGltZXJCYXNlOjp+UnVuTG9vcFRpbWVy
QmFzZSgpCiB7CkBAIC04Niw2ICs4Niw2IEBAIGJvb2wgUnVuTG9vcFRpbWVyQmFzZTo6aXNBY3Rp
dmUoKSBjb25zdAogICAgIHJldHVybiBtX3RpbWVyICYmIENGUnVuTG9vcFRpbWVySXNWYWxpZCht
X3RpbWVyLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEhBVkUoUlVOTE9PUF9USU1FUikK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmNwcAkocmV2aXNpb24gMTQ1MjU5KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwOjE0NTI1OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKENGUnVuTG9vcFJl
ZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQorICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCit7
CisgICAgaWYgKG1vZGUpCisgICAgICAgIG1fbW9kZS5hZG9wdENGKENGU3RyaW5nQ3JlYXRlQ29w
eSgwLCBtb2RlKSk7Cit9CisKK2Jvb2wgU2NoZWR1bGVQYWlyOjpvcGVyYXRvcj09KGNvbnN0IFNj
aGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHJ1bkxvb3AoKSAhPSBvdGhlci5y
dW5Mb29wKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDRlN0cmluZ1JlZiB0aGlzTW9k
ZSA9IG1vZGUoKTsKKyAgICBDRlN0cmluZ1JlZiBvdGhlck1vZGUgPSBvdGhlci5tb2RlKCk7Cisg
ICAgaWYgKCF0aGlzTW9kZSB8fCAhb3RoZXJNb2RlKQorICAgICAgICByZXR1cm4gdGhpc01vZGUg
PT0gb3RoZXJNb2RlOworICAgIHJldHVybiBDRkVxdWFsKHRoaXNNb2RlLCBvdGhlck1vZGUpOwor
fQorCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3BwCSh3b3JraW5n
IGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVQ
YWlyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBTY2hlZHVs
ZVBhaXI6OlNjaGVkdWxlUGFpcihDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9k
ZSkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dURi93dGYvU2NoZWR1
bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgJKHJl
dmlzaW9uIDE0NTI1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2NoZWR1bGVQ
YWlyLmg6MTQ1MjU5KQorKysgU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY2hlZHVsZVBhaXJfaAorI2RlZmluZSBT
Y2hlZHVsZVBhaXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNp
ZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TUnVuTG9vcDsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjaGVkdWxlUGFpciA6IHB1YmxpYyBSZWZDb3VudGVkPFNj
aGVkdWxlUGFpcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjaGVkdWxlUGFp
cj4gY3JlYXRlKENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsgfQorCisjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY2hl
ZHVsZVBhaXI+IGNyZWF0ZShOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZVBhaXIocnVuTG9vcCwgbW9kZSkpOyB9CisgICAg
TlNSdW5Mb29wKiBuc1J1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX25zUnVuTG9vcC5nZXQoKTsg
fQorI2VuZGlmCisKKyAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1f
cnVuTG9vcC5nZXQoKTsgfQorICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25zdCB7IHJldHVybiBt
X21vZGUuZ2V0KCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY2hlZHVsZVBhaXIm
IG90aGVyKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTY2hlZHVsZVBhaXIoQ0ZSdW5Mb29wUmVm
LCBDRlN0cmluZ1JlZik7CisKKyNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQor
ICAgIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CisgICAgUmV0YWluUHRy
PE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOworI2VuZGlmCisKKyAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wUmVmPiBtX3J1bkxvb3A7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtX21vZGU7Cit9
OworCitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgUmVmUHRyPFNjaGVkdWxlUGFpcj4mIHBhaXIpCisgICAgeworICAgICAgICB1aW50cHRy
X3QgaGFzaENvZGVzWzJdID0geyByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocGFpci0+cnVu
TG9vcCgpKSwgcGFpci0+bW9kZSgpID8gQ0ZIYXNoKHBhaXItPm1vZGUoKSkgOiAwIH07CisgICAg
ICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhh
c2hDb2Rlcyk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFNj
aGVkdWxlUGFpcj4mIGEsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZVBhaXI+JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2NoZWR1bGVQYWly
PiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWlySGFzaFNldDsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCSh3b3JraW5nIGNv
cHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzks
NyArMzksNyBAQAogT0JKQ19DTEFTUyBOU1J1bkxvb3A7CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFNjaGVkdWxlUGFpciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNjaGVkdWxlUGFpcj4gewogcHVibGljOgpAQCAtNTMsMTMgKzUzLDEzIEBAIHB1
YmxpYzoKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuTG9v
cC5nZXQoKTsgfQogICAgIENGU3RyaW5nUmVmIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGUu
Z2V0KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY2hlZHVsZVBhaXImIG90aGVy
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
aGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNjaGVkdWxlUGFpcihD
RlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU2NoZWR1
bGVQYWlyKENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKENGTkVUV09SSykKLSAgICBTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiwgQ0ZTdHJpbmdS
ZWYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiwgQ0ZT
dHJpbmdSZWYpOwogICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25zUnVuTG9vcDsKICNlbmRp
ZgogCkBAIC04MSw2ICs4MSw5IEBAIHN0cnVjdCBTY2hlZHVsZVBhaXJIYXNoIHsKIAogdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxTY2hlZHVsZVBhaXI+LCBTY2hlZHVsZVBhaXJIYXNoPiBTY2hlZHVs
ZVBhaXJIYXNoU2V0OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpTY2hlZHVsZVBhaXI7Cit1c2luZyBXVEY6OlNjaGVkdWxlUGFpckhh
c2hTZXQ7CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpck1hYy5tbQkocmV2aXNp
b24gMTQ1MjU5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2NoZWR1bGVQYWly
TWFjLm1tOjE0NTI1OSkKKysrIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJTY2hlZHVsZVBhaXIuaCIKKworI2lmICFVU0UoQ0ZORVRXT1JLKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1NjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9vcCogcnVuTG9v
cCwgQ0ZTdHJpbmdSZWYgbW9kZSkKKyAgICA6IG1fbnNSdW5Mb29wKHJ1bkxvb3ApCisgICAgLCBt
X3J1bkxvb3AoW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXSkKK3sKKyAgICBpZiAobW9kZSkKKyAgICAg
ICAgbV9tb2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDEyICsyNywxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQog
I2luY2x1ZGUgIlNjaGVkdWxlUGFpci5oIgogCiAjaWYgIVVTRShDRk5FVFdPUkspCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBTY2hlZHVsZVBhaXI6OlNjaGVkdWxl
UGFpcihOU1J1bkxvb3AqIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpCiAgICAgOiBtX25zUnVu
TG9vcChydW5Mb29wKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTMt
MDMtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
ZCBSdW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB1cyB0byB1c2Ug
dGltZXJzIGluIGxvd2VyIGxldmVsIHByaW1pdGl2ZXMgd2l0aG91dAorICAgICAgICBkdXBsaWNh
dGluZyBhbGwgdGhlIGNvZGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChEb2N1bWVudExvYWRlcik6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0F1dG9kcmFp
bmVkUG9vbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxvb3BUaW1lckNG
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9BdXRvZHJhaW5lZFBvb2wubW06IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisKIDIwMTMtMDMtMTIgIFZpYXRjaGVzbGF2
IE9zdGFwZW5rbyAgPHNsLm9zdGFwZW5rb0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBXZWJraXQg
dW5hYmxlIHRvIHNob3cgZ2lmcyB3aXRoIGFwcGxjYXRpb24gZXh0ZW5zaW9uIHN0cmluZyBzaG9y
dGVyIHRoYW4gMTEgYnl0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDU1
NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDE2ICs3OTAsMTYgQEAgX19aTjdXZWJDb3JlNFBhZ2UxM3JhbmdlT2ZTdHJpbmdFUktOM1dU
RgogX19aTjdXZWJDb3JlNFBhZ2UxM3NldElzSW5XaW5kb3dFYgogX19aTjdXZWJDb3JlNFBhZ2Ux
M3NldFBhZ2luYXRpb25FUktOU18xMFBhZ2luYXRpb25FCiBfX1pON1dlYkNvcmU0UGFnZTE0c2V0
TWVkaWFWb2x1bWVFZgotX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNjaGVkdWxlUGFpckVOM1dURjEw
UGFzc1JlZlB0cklOU18xMlNjaGVkdWxlUGFpckVFRQorX19aTjdXZWJDb3JlNFBhZ2UxNWFkZFNj
aGVkdWxlUGFpckVOM1dURjEwUGFzc1JlZlB0cklOUzFfMTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43
V2ViQ29yZTRQYWdlMTVkaWRNb3ZlT25zY3JlZW5FdgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldENh
blN0YXJ0TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xvYWRpbmdFYgogX19a
TjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKLV9fWk43V2ViQ29yZTRQYWdlMThy
ZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUK
K19fWk43V2ViQ29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJ
TlMxXzEyU2NoZWR1bGVQYWlyRUVFCiBfX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFnZVNjYWxlRmFj
dG9yRWZSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTRQYWdlMTlhZGRMYXlvdXRNaWxlc3Rv
bmVzRWoKLV9fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2VkRVBOU185UGFnZUdy
b3VwRXkKIF9fWk43V2ViQ29yZTRQYWdlMTlzZXRSdWJiZXJCYW5kc0F0VG9wRWIKK19fWk43V2Vi
Q29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2VkRVBOU185UGFnZUdyb3VwRXkKIF9fWk43V2Vi
Q29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVmCiBfX1pON1dlYkNvcmU0UGFnZTIwdW5t
YXJrQWxsVGV4dE1hdGNoZXNFdgogX19aTjdXZWJDb3JlNFBhZ2UyMW1hcmtBbGxNYXRjaGVzRm9y
VGV4dEVSS04zV1RGNlN0cmluZ0VqYmoKQEAgLTIzMDUsNyArMjMwNSw2IEBAIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIAogI2lmIFVTRShDRk5FVFdPUkspCiBfX1pO
SzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQOV9fQ0ZFcnJvckV2Ci1fX1pON1dlYkNvcmUxMlNj
aGVkdWxlUGFpckMxRVAxMV9fQ0ZSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKIF9fWk5LN1dlYkNvcmUx
NVJlc291cmNlUmVxdWVzdDEyY2ZVUkxSZXF1ZXN0RU5TXzIwSFRUUEJvZHlVcGRhdGVQb2xpY3lF
CiBfX1pOSzdXZWJDb3JlMTZSZXNvdXJjZVJlc3BvbnNlMTNjZlVSTFJlc3BvbnNlRXYKIF9fWk43
V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyOHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWRFdgpA
QCAtMjMxOCw3ICsyMzE3LDYgQEAgX3drR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlCiBfd2tT
ZXRDRlVSTFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVlc3RTdG9yYWdlU2Vz
c2lvbgogI2Vsc2UKLV9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlOU1J1bkxvb3BQSzEw
X19DRlN0cmluZwogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEycmVsZWFzZVByb3h5RXYK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDEyICszMSwxMiBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTFRy
YW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ1NTY5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjIsOCArNjYyLDYgQEAKIAkJMUM1RkFFRDEwRENGRDkwMTAwRDU4Rjc4
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVGQUVDRjBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJMUM1RkFFRDIwRENGRDkwMTAwRDU4Rjc4IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM1RkFFRDAwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oICovOyB9OwogCQkxQzVGQUVFNzBEQ0ZEQTY4MDBENThGNzggLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWVDdXN0b20uY3BwICovOyB9OwotCQkxQzYzQTI0ODBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9v
cFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzYzQTI0NjBGNzE2NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUM2M0EyNDkwRjcxNjQ2NjAwQzA5
RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNjNBMjQ3MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgKi87IH07CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVCMEU5NzMz
MDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02ODAs
MTEgKzY3OCw4IEBACiAJCTFDQjQyMTREMEFGMkIyQ0EwMDg1QUQ5MSAvKiBET01SYW5nZUludGVy
bmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTM4RjA1QTBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFuZ2VJbnRlcm5hbC5o
ICovOyB9OwogCQkxQ0NBNzMyMjEwQURENDRBMDBGRDQ0MEQgLyogRE9NSFRNTElucHV0RWxlbWVu
dFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDQ0E3MzIxMTBBREQ0M0UwMEZENDQwRCAvKiBET01IVE1MSW5wdXRF
bGVtZW50UHJpdmF0ZS5oICovOyB9OwogCQkxQ0RDMTQwNTBERDM5MzRDMDA2RUFDRDMgLyogbG9j
YWxpemVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMg
Ki87IH07Ci0JCTFDRTI0Rjk3MEQ3Q0FGMEUwMDdFMDRDMiAvKiBTY2hlZHVsZVBhaXJNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0UyNEY5NjBE
N0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovOyB9OwogCQkxQ0U4M0FDMzBB
REFGRkQ3MDA5MzU0RjYgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEVGRjBBRDg1RDg3MDA5NDc1
Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTFDRTgzQUM0MEFEQUZG
RDgwMDkzNTRGNiAvKiBEZWxldGVCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0QzhGNjMwQUQ4NjU1RDAwOTQ3NUNFIC8qIERlbGV0ZUJ1
dHRvbi5jcHAgKi87IH07Ci0JCTFDRUZDOUI5MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBh
aXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUZD
OUI3MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0VGQzlCQTBENzhEQzhDMDA3RDI1Nzkg
LyogU2NoZWR1bGVQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDRUZDOUI4MEQ3OERDOEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuY3BwICov
OyB9OwogCQkxQ0Y2QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCREY4MEU5
QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQkxQ0Y2QkRGQjBF
OUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkRGOTBFOUJCMjZBMDAyNUUxQ0QgLyog
T2JqQ0V2ZW50TGlzdGVuZXIubW0gKi87IH07CiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAv
KiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbi5tbSAqLzsgfTsKQEAgLTE2NjgsOCArMTY2Myw2IEBACiAJCTUxRTBCQUVC
MERBNTVENEEwMEE5RTQxNyAvKiBKU1N0b3JhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMEJBRTkwREE1NUQ0QTAwQTlFNDE3IC8qIEpT
U3RvcmFnZUV2ZW50LmggKi87IH07CiAJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUUwQkIzNjBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTBCQjM5MERBNUFDQjYwMEE5RTQx
NyAvKiBTdG9yYWdlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRTBCQjM3MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmNwcCAqLzsg
fTsKLQkJNTFFMUVDQUYwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0FEMEM5MUM1
NDYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wubW0gKi87IH07Ci0JCTUxRTFFQ0IzMEM5MUM1
NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0IxMEM5MUM1NTYwMERDMjU1QiAvKiBBdXRvZHJh
aW5lZFBvb2wuaCAqLzsgfTsKIAkJNTFFMUVDQkUwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRh
YmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFFMUVDQjgwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRhYmFzZUNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTFFQ0MwMEM5
MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JBMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVj
b3JkLmNwcCAqLzsgfTsKIAkJNTFFMUVDQzEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFFQ0JC
MEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmggKi87IH07CkBAIC04MDM3LDggKzgwMzAs
NiBAQAogCQkxQzVGQUVDRjBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUZBRUQwMERDRkQ5
MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxs
RnJhbWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM2M0EyNDYwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUM2M0EyNDcwRjcxNjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BUaW1lckNGLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNTcsOSArODA0
OCw2IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcg
LyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJD
b3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNjBCQTlD
ODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0UyNEY5
NjBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0VGQzlCNzBENzhEQzhDMDA3RDI1NzkgLyogU2NoZWR1bGVQYWly
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVkdWxlUGFpci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VGQzlCODBENzhEQzhDMDA3RDI1NzkgLyogU2No
ZWR1bGVQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjaGVk
dWxlUGFpci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCREY4MEU5QkIy
NkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPYmpDRXZlbnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0Y2QkRGOTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPYmpDRXZlbnRMaXN0ZW5lci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNkJFMTIwRTlCQjQ2NzAwMjVFMUNE
IC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05MTQ5LDggKzkxMzcsNiBAQAogCQk1MUUwQkFFOTBEQTU1RDRBMDBB
OUU0MTcgLyogSlNTdG9yYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTdG9yYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMEJC
MzYwREE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUUwQkIzNzBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFFMUVDQUQwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9v
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFFMUVDQjEwQzkxQzU1NjAwREMy
NTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdXRvZHJhaW5lZFBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMUVD
QjgwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRhYmFzZUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJY29uRGF0YWJhc2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFFMUVDQkEwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvblJlY29yZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTFFQ0JCMEM5MUM5MDQwMERDMjU1QiAvKiBJ
Y29uUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb25SZWNvcmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTQ1LDkgKzE1MTMxLDYgQEAKIAkJ
CQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQkx
QTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCAqLywKIAkJCQkyOUEzMDlB
QjE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCAqLywKLQkJCQkxQzYzQTI0NzBGNzE2
NDY2MDBDMDlENUEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovLAotCQkJCTFDRUZDOUI4MEQ3OERD
OEMwMDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuY3BwICovLAotCQkJCTFDRUZDOUI3MEQ3OERDOEMw
MDdEMjU3OSAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5
RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKQEAgLTE2
MzI2LDcgKzE2MzA5LDYgQEAKIAkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZEIC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTFFMUVDQUQwQzkx
QzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5tbSAqLywKIAkJCQk2NUE2NDBGMDA1MzNC
QjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8sCiAJCQkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLywKIAkJCQkyRDkwNjYwQjA2NjVEOTM3
MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi8sCkBAIC0xNjM3Miw3ICsxNjM1NCw2IEBACiAJ
CQkJMDA4MUZFRkUxNkIwQTJCNjAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeE1hYy5tbSAqLywKIAkJ
CQlFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCAqLywK
IAkJCQlCQzBCMzU4MjE0QzRGOTU0MDA1NUUyMkEgLyogUnVuTG9vcE1hYy5tbSAqLywKLQkJCQkx
Q0UyNEY5NjBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAogCQkJCUJD
QUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oICovLAogCQkJCUJD
NTExNTZEMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1hYy5tbSAqLywKIAkJCQlC
QzhCODUzQzBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMuaCAqLywKQEAgLTIx
NjI5LDcgKzIxNjEwLDYgQEAKIAkJCQk4OUQwOEQ5QzEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNG
aWxlU3lzdGVtLmNwcCAqLywKIAkJCQk4OUQwOEQ5RDEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNG
aWxlU3lzdGVtLmggKi8sCiAJCQkJODlEMDhEOUUxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcy5oICovLAotCQkJCTUxRTFFQ0IxMEM5MUM1NTYwMERDMjU1QiAvKiBB
dXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQk0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAgKi8sCiAJCQkJNDlBRTJEOTUxMzRFRTVGOTAwNzI5MjBBIC8qIENh
bGN1bGF0aW9uVmFsdWUuaCAqLywKIAkJCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xv
Y2suY3BwICovLApAQCAtMjE3NTIsNyArMjE3MzIsNiBAQAogCQkJCTk4MzFBRTQ5MTU0MjI1QTIw
MEZFMjY0NCAvKiBSZWZlcnJlclBvbGljeS5oICovLAogCQkJCUJDMEIzNTg1MTRDNEY5ODMwMDU1
RTIyQSAvKiBSdW5Mb29wLmNwcCAqLywKIAkJCQlCQzBCMzU4NjE0QzRGOTgzMDA1NUUyMkEgLyog
UnVuTG9vcC5oICovLAotCQkJCTFDNjNBMjQ2MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGlt
ZXIuaCAqLywKIAkJCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmNwcCAqLywKIAkJCQkyOTNFQUUxRTEzNTZCMkZFMDA2N0FDRjkgLyogUnVudGlt
ZUFwcGxpY2F0aW9uQ2hlY2tzLmggKi8sCiAJCQkJNTE2MkM3RjIxMUY3N0VGQTAwNjEyRUZFIC8q
IFNjaGVtZVJlZ2lzdHJ5LmNwcCAqLywKQEAgLTIzNDExLDcgKzIzMzkwLDYgQEAKIAkJCQk5MzRG
NzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGljYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjRDMENFOTIzNEUwMDdFRjNDRCAv
KiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFFMUVDQjMwQzkxQzU1
NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDU4MzBE
NEUxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjA0RTBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk2MCw3ICsyNTkzOCw2IEBACiAJCQkJQTc5QkFEQTIx
NjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlC
QURBNDE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
QjM1ODgxNEM0Rjk4MzAwNTVFMjJBIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAotCQkJCTFD
NjNBMjQ4MEY3MTY0NjYwMEMwOUQ1QSAvKiBSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNTY5RDFGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU2OUQyMTBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTY5RDIzMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29i
amVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk2OSw3ICsyNTk0Niw2IEBACiAJCQkJOEM2RUE2
MUExMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RTkxMUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNj
aGVkdWxlZEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUNFRkM5QjkwRDc4REM4QzAwN0Qy
NTc5IC8qIFNjaGVkdWxlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MkM3RjUxMUY3N0VG
QjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQwQkY5
MzEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzE0MSw3ICsyNzExNyw2IEBACiAJCQkJN0VFNjg0NUYxMkQyNkUzODAwRTc5NDE1IC8qIEF1
dGhlbnRpY2F0aW9uQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0RjcxMzgwRDVBNkVGRjAw
MDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY0RDBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQk1MUUxRUNBRjBDOTFDNTQ2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQ
b29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDU4MzBENEQxNjc5QjRGODAwQUNGOEMzIC8qIEF1
dG9zY3JvbGxDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDUwMEExNTRG
MDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUFB
NzI4RjkxNkQxRDhCQzAwRDNCQkM2IC8qIEFYT2JqZWN0Q2FjaGVJT1MubW0gaW4gU291cmNlcyAq
LywKQEAgLTI5MjkyLDcgKzI5MjY3LDYgQEAKIAkJCQlCQzBCMzU4NzE0QzRGOTgzMDA1NUUyMkEg
LyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUEzMDlBQzE1NjFDOTlCMDBCQkQ4
RTUgLyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEIzNTgzMTRDNEY5NTQw
MDU1RTIyQSAvKiBSdW5Mb29wTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM2M0EyNDkwRjcx
NjQ2NjAwQzA5RDVBIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NTY5RDFFMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5RDIwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTMwMSw4ICsyOTI3NSw2IEBACiAJCQkJOEM2RUE2
MTkxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlFOTExQ0EwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVERkU4RjU2MEQxNjQ3N0IwMDc2RTkzNyAv
KiBTY2hlZHVsZWRBY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUNFRkM5QkEwRDc4REM4
QzAwN0QyNTc5IC8qIFNjaGVkdWxlUGFpci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQ0UyNEY5
NzBEN0NBRjBFMDA3RTA0QzIgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUMwMUJEMEMyNzREQUMwMDlGNEVDOSAvKiBTY3Jl
ZW4uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVU
aHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVh
ZC5jcHAJKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRo
cmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAKIAogI2luY2x1ZGUgIkZp
bGVUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgU2NoZWR1bGVQYWlyOworfQogCituYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xhc3MgQXJjaGl2ZTsKQEAgLTU5LDcgKzYyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgUmVzb3VyY2VC
dWZmZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci0gICAgY2xhc3MgU2NoZWR1bGVQYWly
OwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7
CiAKQEAgLTEzMiw4ICsxMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNv
ZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVk
dWxlUGFpciopOwotICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyKik7CisgICAg
ICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIqKTsKKyAgICAgICAgdm9pZCB1bnNj
aGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyKik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgfHwgRU5BQkxFKE1IVE1MKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5S
ZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSNp
bmNsdWRlICJSdW5Mb29wVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+CiAj
ZWxzZQogI2luY2x1ZGUgIlRpbWVyLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkF1
dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudC5oIgpAQCAtNDAsNiAr
MzksNyBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRpb24uaCIKKyNpbmNsdWRlIDx3
dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi93aW5jZS9JY29uRGF0YWJhc2VXaW5DRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vd2luY2UvSWNvbkRh
dGFiYXNlV2luQ0UuY3BwCShyZXZpc2lvbiAxNDU1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi93aW5jZS9JY29uRGF0YWJhc2VXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDEyICsyMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFz
ZS5oIgogCi0jaW5jbHVkZSAiQXV0b2RyYWluZWRQb29sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiSWNvblJlY29yZC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9u
IDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJT
Y2hlZHVsZVBhaXIuaCIKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BdXRvZHJhaW5l
ZFBvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BdXRvZHJhaW5l
ZFBvb2wuaAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXV0
b2RyYWluZWRQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBBdXRvZHJhaW5lZFBvb2xfaAotI2RlZmluZSBBdXRvZHJhaW5lZFBvb2xfaAotCi0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLU9CSkNfQ0xBU1MgTlNBdXRvcmVsZWFzZVBvb2w7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXV0b2RyYWluZWRQb29sIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdXRvZHJhaW5lZFBvb2wpOwotcHVibGljOgotICAgIGV4cGxpY2l0
IEF1dG9kcmFpbmVkUG9vbChpbnQgaXRlcmF0aW9uTGltaXQgPSAxKTsKLSAgICB+QXV0b2RyYWlu
ZWRQb29sKCk7Ci0gICAgCi0gICAgdm9pZCBjeWNsZSgpOwotICAgIAotcHJpdmF0ZToKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgaW50IG1faXRlcmF0aW9uTGltaXQ7Ci0gICAgaW50IG1faXRlcmF0
aW9uQ291bnQ7Ci0gICAgTlNBdXRvcmVsZWFzZVBvb2wqIG1fcG9vbDsKLSNlbmRpZgotfTsKLQot
I2lmICFQTEFURk9STShNQUMpCi1pbmxpbmUgQXV0b2RyYWluZWRQb29sOjpBdXRvZHJhaW5lZFBv
b2woaW50KSB7IH0KLWlubGluZSBBdXRvZHJhaW5lZFBvb2w6On5BdXRvZHJhaW5lZFBvb2woKSB7
IH0KLWlubGluZSB2b2lkIEF1dG9kcmFpbmVkUG9vbDo6Y3ljbGUoKSB7IH0KLSNlbmRpZgotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2lu
Y2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDx3
dGYvQXV0b2RyYWluZWRQb29sLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BUaW1lckNGLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wVGltZXJDRi5jcHAJKHJldmlz
aW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BUaW1lckNG
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBQTEFURk9STShNQUMpICYmIEhBVkUoUlVOTE9PUF9USU1FUikKLQotI2luY2x1ZGUg
IlJ1bkxvb3BUaW1lci5oIgotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVJ1bkxvb3BUaW1lckJhc2U6On5SdW5Mb29wVGltZXJCYXNlKCkKLXsK
LSAgICBzdG9wKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJS
ZWYsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgLy8gQ0ZSdW5Mb29wVGltZXIgZG9lcyBub3QgY3Jl
YXRlIGFuIE5TQXV0b3JlbGVhc2VQb29sLCBsaWtlIE5TVGltZXIgZG9lcy4gVGhpcyBjYW4gbGVh
ZCB0bwotICAgIC8vIGF1dG9yZWxlYXNlZCBvYmplY3RzIGJlaW5nIHB1c2hlZCBpbnRvIE5TQXV0
b3JlbGVhc2VQb29scyB1bmRlcm5lYXRoIHRoZSBydW4gbG9vcCwgd2hpY2gKLSAgICAvLyBhcmUg
dmVyeSBpbmZyZXF1ZW50bHkgZHJhaW5lZC4gQ3JlYXRlIGEgbmV3IGF1dG9yZWxlYXNlIHBvb2wg
aGVyZSB0byBnaXZlIGF1dG9yZWxlYXNlZCBvYmplY3RzCi0gICAgLy8gYSBwbGFjZSB0byBjb2xs
ZWN0LgotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwotICAgIFJ1bkxvb3BUaW1lckJhc2UqIHRp
bWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcFRpbWVyQmFzZSo+KGNvbnRleHQpOwotICAgIHRpbWVy
LT5maXJlZCgpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBuZXh0
RmlyZUludGVydmFsLCBkb3VibGUgcmVwZWF0SW50ZXJ2YWwpCi17Ci0gICAgaWYgKG1fdGltZXIp
Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKLSAgICBD
RlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OwotICAg
IG1fdGltZXIuYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwsIHJlcGVhdEludGVydmFsLCAwLCAwLCB0aW1l
ckZpcmVkLCAmY29udGV4dCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpciogc2NoZWR1bGVQYWlyKQotewotICAgIEFTU0VSVF9BUkcoc2No
ZWR1bGVQYWlyLCBzY2hlZHVsZVBhaXIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV90aW1l
ciwgIlRpbWVyIG11c3QgaGF2ZSBvbmUgb2YgdGhlIHN0YXJ0IGZ1bmN0aW9ucyBjYWxsZWQgYmVm
b3JlIGNhbGxpbmcgc2NoZWR1bGUoKS4iKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihzY2hlZHVs
ZVBhaXItPnJ1bkxvb3AoKSwgbV90aW1lci5nZXQoKSwgc2NoZWR1bGVQYWlyLT5tb2RlKCkpOwot
fQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnNjaGVkdWxlKGNvbnN0IFNjaGVkdWxlUGFpckhh
c2hTZXQmIHNjaGVkdWxlUGFpcnMpCi17Ci0gICAgU2NoZWR1bGVQYWlySGFzaFNldDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gc2NoZWR1bGVQYWlycy5lbmQoKTsKLSAgICBmb3IgKFNjaGVkdWxlUGFp
ckhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NoZWR1bGVQYWlycy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIHNjaGVkdWxlKCgqaXQpLmdldCgpKTsKLX0KLQotdm9pZCBS
dW5Mb29wVGltZXJCYXNlOjpzdG9wKCkKLXsKLSAgICBpZiAoIW1fdGltZXIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5nZXQoKSk7Ci0gICAg
bV90aW1lciA9IDA7Ci19Ci0KLWJvb2wgUnVuTG9vcFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25z
dAotewotICAgIHJldHVybiBtX3RpbWVyICYmIENGUnVuTG9vcFRpbWVySXNWYWxpZChtX3RpbWVy
LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TY2hlZHVsZVBhaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NjaGVkdWxlUGFpci5jcHAJKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjaGVkdWxlUGFpci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKENG
UnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQotICAgIDogbV9ydW5Mb29wKHJ1
bkxvb3ApCi17Ci0gICAgaWYgKG1vZGUpCi0gICAgICAgIG1fbW9kZS5hZG9wdENGKENGU3RyaW5n
Q3JlYXRlQ29weSgwLCBtb2RlKSk7Ci19Ci0KLWJvb2wgU2NoZWR1bGVQYWlyOjpvcGVyYXRvcj09
KGNvbnN0IFNjaGVkdWxlUGFpciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKHJ1bkxvb3AoKSAh
PSBvdGhlci5ydW5Mb29wKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBDRlN0cmluZ1Jl
ZiB0aGlzTW9kZSA9IG1vZGUoKTsKLSAgICBDRlN0cmluZ1JlZiBvdGhlck1vZGUgPSBvdGhlci5t
b2RlKCk7Ci0gICAgaWYgKCF0aGlzTW9kZSB8fCAhb3RoZXJNb2RlKQotICAgICAgICByZXR1cm4g
dGhpc01vZGUgPT0gb3RoZXJNb2RlOwotICAgIHJldHVybiBDRkVxdWFsKHRoaXNNb2RlLCBvdGhl
ck1vZGUpOwotfQotCi19IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2NoZWR1bGVQYWlyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2NoZWR1bGVQYWlyLmgJKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NjaGVkdWxlUGFpci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgU2NoZWR1bGVQYWlyX2gKLSNkZWZpbmUgU2NoZWR1bGVQYWlyX2gKLQotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JK
Q19DTEFTUyBOU1J1bkxvb3A7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTY2hlZHVsZVBhaXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTY2hlZHVsZVBhaXI+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+IGNyZWF0ZShDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVk
dWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShD
Rk5FVFdPUkspCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NoZWR1bGVQYWlyPiBjcmVhdGUoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
U2NoZWR1bGVQYWlyKHJ1bkxvb3AsIG1vZGUpKTsgfQotICAgIE5TUnVuTG9vcCogbnNSdW5Mb29w
KCkgY29uc3QgeyByZXR1cm4gbV9uc1J1bkxvb3AuZ2V0KCk7IH0KLSNlbmRpZgotCi0gICAgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3AuZ2V0KCk7IH0KLSAg
ICBDRlN0cmluZ1JlZiBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlLmdldCgpOyB9Ci0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NoZWR1bGVQYWlyJiBvdGhlcikgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgU2NoZWR1bGVQYWlyKENGUnVuTG9vcFJlZiwgQ0ZTdHJpbmdSZWYpOwotCi0j
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKLSAgICBTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiwgQ0ZTdHJpbmdSZWYpOwotICAgIFJldGFpblB0cjxOU1J1bkxvb3AqPiBtX25zUnVu
TG9vcDsKLSNlbmRpZgotCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9tb2RlOwotfTsKLQotc3RydWN0IFNjaGVkdWxl
UGFpckhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxTY2hlZHVs
ZVBhaXI+JiBwYWlyKQotICAgIHsKLSAgICAgICAgdWludHB0cl90IGhhc2hDb2Rlc1syXSA9IHsg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHBhaXItPnJ1bkxvb3AoKSksIHBhaXItPm1vZGUo
KSA/IENGSGFzaChwYWlyLT5tb2RlKCkpIDogMCB9OwotICAgICAgICByZXR1cm4gU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTY2hlZHVsZVBhaXI+JiBhLCBjb25z
dCBSZWZQdHI8U2NoZWR1bGVQYWlyPiYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19Owot
Ci10eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNjaGVkdWxlUGFpcj4sIFNjaGVkdWxlUGFpckhhc2g+
IFNjaGVkdWxlUGFpckhhc2hTZXQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvTGF5ZXJGbHVz
aFNjaGVkdWxlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCShyZXZpc2lvbiAxNDU1
NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvTGF5ZXJGbHVz
aFNjaGVkdWxlck1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkxheWVyRmx1c2hTY2hlZHVsZXIuaCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9v
bC5oIgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQXV0b2RyYWluZWRQb29s
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9BdXRvZHJhaW5l
ZFBvb2wubW0JKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9BdXRvZHJhaW5lZFBvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdXRvZHJhaW5lZFBvb2wuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1BdXRvZHJhaW5lZFBvb2w6OkF1dG9kcmFpbmVkUG9vbChpbnQgaXRl
cmF0aW9uTGltaXQpCi0gICAgOiBtX2l0ZXJhdGlvbkxpbWl0KGl0ZXJhdGlvbkxpbWl0KQotICAg
ICwgbV9pdGVyYXRpb25Db3VudCgwKQotICAgICwgbV9wb29sKFtbTlNBdXRvcmVsZWFzZVBvb2wg
YWxsb2NdIGluaXRdKQoteyAKLX0KLQotQXV0b2RyYWluZWRQb29sOjp+QXV0b2RyYWluZWRQb29s
KCkKLXsKLSAgICBbbV9wb29sIGRyYWluXTsKLX0KLQotdm9pZCBBdXRvZHJhaW5lZFBvb2w6OmN5
Y2xlKCkKLXsKLSAgICBpZiAoKyttX2l0ZXJhdGlvbkNvdW50ID09IG1faXRlcmF0aW9uTGltaXQp
IHsKLSAgICAgICAgW21fcG9vbCBkcmFpbl07Ci0gICAgICAgIG1fcG9vbCA9IFtbTlNBdXRvcmVs
ZWFzZVBvb2wgYWxsb2NdIGluaXRdOwotICAgICAgICBtX2l0ZXJhdGlvbkNvdW50ID0gMDsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbQkocmV2aXNpb24gMTQ1NTY5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NjaGVkdWxlUGFpck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJT
Y2hlZHVsZVBhaXIuaCIKLQotI2lmICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVNjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9vcCogcnVuTG9vcCwgQ0ZT
dHJpbmdSZWYgbW9kZSkKLSAgICA6IG1fbnNSdW5Mb29wKHJ1bkxvb3ApCi0gICAgLCBtX3J1bkxv
b3AoW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXSkKLXsKLSAgICBpZiAobW9kZSkKLSAgICAgICAgbV9t
b2RlLmFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxNDU1NjkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQ
TEFURk9STShNQUMpCi0jaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCisjaW5jbHVkZSA8d3RmL1Nj
aGVkdWxlUGFpci5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJl
dmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsMTEgQEAgdHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVS
TFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU2NoZWR1bGVQYWlyOworfQog
CituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKQEAgLTg3LDcgKzkwLDYgQEAgY2xhc3MgUmVz
b3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNjaGVkdWxl
UGFpcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFRpbWVyOwpAQCAtMTI4LDggKzEzMCw4IEBAIHB1YmxpYzoKICAgICBpZCByZWxlYXNlUHJveHko
KTsKICNlbmRpZgogCi0gICAgdm9pZCBzY2hlZHVsZShTY2hlZHVsZVBhaXIqKTsKLSAgICB2b2lk
IHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyKik7CisgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVk
dWxlUGFpciopOworICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciopOwogI2Vu
ZGlmCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAJKHJldmlzaW9uIDE0
NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCi0jaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRl
clJ1bkxvb3BDRi5jcHAJKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OSArMjgsOSBAQAogCiAjaWYgVVNFKENGTkVUV09SSykKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVk
UG9vbC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE0NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMiArNDQsMTIgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3Iu
aCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbXBvcnQgIlNjaGVkdWxlUGFpci5o
IgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9y
dCAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZS5oIgorI2ltcG9ydCA8d3RmL1NjaGVkdWxl
UGFpci5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9C
YXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
OSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUaHJlYWQu
aCIKIAotI2luY2x1ZGUgIkF1dG9kcmFpbmVkUG9vbC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUYXNr
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFTeW5jLmgiCisjaW5jbHVkZSA8d3RmL0F1dG9kcmFp
bmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1NTY5KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMt
MTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlZCBS
dW5Mb29wVGltZXIgYW5kIFNjaGVkdWxlUGFpciB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjE3MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB1cyB0byB1c2UgdGlt
ZXJzIGluIGxvd2VyIGxldmVsIHByaW1pdGl2ZXMgd2l0aG91dAorICAgICAgICBkdXBsaWNhdGlu
ZyBhbGwgdGhlIGNvZGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KToKKwogMjAxMy0wMy0xMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIEhJTERPTl9DUFBGTEFHUyBhbmQgSElMRE9O
X0NGTEFHUyByZWZlcmVuY2VzIGZyb20gR05VbWFrZWZpbGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxNDU1NjkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFp
cnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkRhdGFSZWY+IHNv
dXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNDU1NjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMy0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmVkIFJ1bkxvb3BUaW1lciBhbmQgU2NoZWR1bGVQYWly
IHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEyMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyB3aWxsIGFsbG93IHVzIHRvIHVzZSB0aW1lcnMgaW4gbG93ZXIgbGV2ZWwgcHJpbWl0aXZl
cyB3aXRob3V0CisgICAgICAgIGR1cGxpY2F0aW5nIGFsbCB0aGUgY29kZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQpOgorCiAyMDEzLTAzLTEyICBBYmhpc2hlayBBcnlhICA8
aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0
aCB0byogZnVuY3Rpb25zLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24g
MTQ1NTY5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgU2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBh
aXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9Owo=
</data>
<flag name="review"
          id="214135"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>