<?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>99358</bug_id>
          
          <creation_ts>2012-10-15 13:20:25 -0700</creation_ts>
          <short_desc>Rename some AudioNodes</short_desc>
          <delta_ts>2012-10-16 12:43:56 -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="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742354</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-10-15 13:20:25 -0700</bug_when>
    <thetext>Rename some AudioNodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742359</commentid>
    <comment_count>1</comment_count>
      <attachid>168770</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-10-15 13:27:57 -0700</bug_when>
    <thetext>Created attachment 168770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742491</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-15 15:04:28 -0700</bug_when>
    <thetext>Attachment 168770 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/webaudio/AudioContext.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/webaudio/AudioContext.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/webaudio/AudioContext.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/webaudio/AudioContext.cpp:55:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/webaudio/AnalyserNode.h:48:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/Modules/webaudio/AnalyserNode.h:49:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp:146:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp:200:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/webaudio/AnalyserNode.cpp:68:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/webaudio/AnalyserNode.cpp:78:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/Modules/webaudio/PannerNode.cpp:323:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/Modules/webaudio/OscillatorNode.cpp:221:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/Modules/webaudio/OscillatorNode.cpp:222:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/Modules/webaudio/OscillatorNode.cpp:223:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 15 in 42 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>742559</commentid>
    <comment_count>3</comment_count>
      <attachid>168801</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-10-15 16:15:00 -0700</bug_when>
    <thetext>Created attachment 168801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742789</commentid>
    <comment_count>4</comment_count>
      <attachid>168801</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-10-15 21:59:54 -0700</bug_when>
    <thetext>Comment on attachment 168801
Patch

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

Please sort the file listing in the Xcode project file such that the files are listed according to the Unix sort command.

&gt; Source/WebCore/ChangeLog:37
&gt; +        (WebCore):
&gt; +        (WebCore::AnalyserNode::AnalyserNode):
&gt; +        (WebCore::AnalyserNode::~AnalyserNode):
&gt; +        (WebCore::AnalyserNode::process):
&gt; +        (WebCore::AnalyserNode::reset):
&gt; +        (WebCore::AnalyserNode::setFftSize):

We tend to omit the function listings when we rename a file since the functions have not actually changed. Omitting such listings will also decrease the length of the change log/commit message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743432</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-10-16 12:43:56 -0700</bug_when>
    <thetext>Committed r131486: &lt;http://trac.webkit.org/changeset/131486&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168770</attachid>
            <date>2012-10-15 13:27:57 -0700</date>
            <delta_ts>2012-10-15 16:14:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99358-20121015132647.patch</filename>
            <type>text/plain</type>
            <size>328376</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUwYzM2MmExNTU2NTAx
YjI4NzI0NTllYWFmYzRhMGQyNzMzOGQ4Zi4uMWEwNDNkODllNDFhMjU1ZGE4Y2M2ZTA0MGJmMjBl
ZmE2Y2I0MmNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMiBAQAorMjAxMi0xMC0xNSAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBzb21lIEF1
ZGlvTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U29tZSBBdWRpb05vZGUgbmFtZXMgYXJlIGNoYW5naW5nIGR1ZSB0byB0aWdodGVuaW5nIG9mIHRo
ZSBXZWIgQXVkaW8gQVBJIHNwZWNpZmljYXRpb24uCisgICAgICAgIEZvciBkZXRhaWxzIHNlZToK
KyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0x
NzQwNworICAgICAgICAKKyAgICAgICAgSGVyZSdzIGEgbGlzdCBvZiB0aGUgbm9kZSBuYW1lcywg
c2hvd2luZyB0aGUgY2hhbmdpbmcgb25lczoKKyAgICAgICAgICAgIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZQorICAgICAgICAgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlCisgICAgICAgICAg
ICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZQorICAgICAgICAgICAgSmF2YVNjcmlwdEF1ZGlv
Tm9kZSAtLS0tLS0tLS0tLS0+IFNjcmlwdFByb2Nlc3Nvck5vZGUKKyAgICAgICAgICAgIFJlYWx0
aW1lQW5hbHlzZXJOb2RlIC0tLS0tLS0tLS0tLT4gQW5hbHlzZXJOb2RlCisgICAgICAgICAgICBB
dWRpb0dhaW5Ob2RlIC0tLS0tLS0tLS0tLT4gR2Fpbk5vZGUKKyAgICAgICAgICAgIERlbGF5Tm9k
ZQorICAgICAgICAgICAgQmlxdWFkRmlsdGVyTm9kZQorICAgICAgICAgICAgQXVkaW9QYW5uZXJO
b2RlIC0tLS0tLS0tLS0tLT4gUGFubmVyTm9kZQorICAgICAgICAgICAgQ29udm9sdmVyTm9kZQor
ICAgICAgICAgICAgQXVkaW9DaGFubmVsU3BsaXR0ZXIgLS0tLS0tLS0tLS0tPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlCisgICAgICAgICAgICBBdWRpb0NoYW5uZWxNZXJnZXIgLS0tLS0tLS0tLS0tPiBD
aGFubmVsTWVyZ2VyTm9kZQorICAgICAgICAgICAgRHluYW1pY3NDb21wcmVzc29yTm9kZQorICAg
ICAgICAgICAgT3NjaWxsYXRvciAtLS0tLS0tLS0tLS0+IE9zY2lsbGF0b3JOb2RlCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUu
Y3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6
OkFuYWx5c2VyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6On5BbmFseXNl
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpwcm9jZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpzZXRGZnRTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5
c2VyTm9kZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyTm9kZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBbmFs
eXNlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpmZnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuYWx5c2VyTm9kZTo6ZnJlcXVlbmN5QmluQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpzZXRNaW5EZWNpYmVscyk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5v
ZGU6Om1pbkRlY2liZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0TWF4
RGVjaWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjptYXhEZWNpYmVscyk6
CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNldFNtb290aGluZ1RpbWVDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OnNtb290aGluZ1RpbWVDb25zdGFu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEZsb2F0RnJlcXVlbmN5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmdldEJ5dGVGcmVxdWVuY3lEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGw6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2Rl
LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldFBhbm5lck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg6
CisgICAgICAgIChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
Y3JlYXRlSmF2YVNjcmlwdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
cmVhdGVQYW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVBbmFs
eXNlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW5Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NoYW5uZWxNZXJnZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxN
ZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVs
TWVyZ2VyTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9k
ZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OmNoZWNrTnVt
YmVyT2ZDaGFubmVsc0ZvcklucHV0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
aGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVy
Z2VyTm9kZS5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbE1lcmdlci5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDaGFubmVsU3BsaXR0ZXJOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OnJlc2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6R2Fpbk5vZGU6OkdhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okdh
aW5Ob2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChHYWluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpnYWluKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpP
c2NpbGxhdG9yTm9kZTo6fk9zY2lsbGF0b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2ls
bGF0b3JOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpj
YWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpPc2NpbGxhdG9yTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9y
Tm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6OnNldFdhdmVU
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6cHJvcGFnYXRlc1NpbGVu
Y2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpPc2NpbGxhdG9yTm9kZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9y
Tm9kZTo6ZnJlcXVlbmN5KToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpkZXR1
bmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpmaXhOQU5zKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVy
Tm9kZTo6flBhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cHVsbElu
cHV0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpwcm9jZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
ck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6ZG9wcGxlclJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6ZGlzdGFuY2VD
b25lR2Fpbik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJj
ZXNDb25uZWN0ZWRUb05vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
bm5lck5vZGUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFubmVyTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6cGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhbm5lck5vZGU6OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
bm5lck5vZGU6OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFZl
bG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cmVmRGlzdGFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6bWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0
TWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cm9sbG9mZkZhY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRSb2xsb2ZmRmFjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmNvbmVJbm5lckFuZ2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVJbm5lckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6OmNvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnNldENvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmNv
bmVPdXRlckdhaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0Q29uZU91dGVy
R2Fpbik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpkaXN0YW5jZUdhaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6Y29uZUdhaW4pOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6On5TY3JpcHRQcm9jZXNz
b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6ZmlyZVByb2Nlc3NFdmVudERpc3Bh
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmZpcmVQcm9jZXNz
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6cmVzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6aW50ZXJmYWNlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnRhaWxUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmxhdGVuY3lUaW1lKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmV2ZW50VGFyZ2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjplbnN1cmVFdmVudFRhcmdldERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6YnVmZmVyU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpkb3VibGVCdWZmZXJJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpzd2FwQnVmZmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpyZWZFdmVudFRhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXYXZlVGFibGU6OmNyZWF0ZVNpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVRhYmxlOjpjcmVhdGVTcXVhcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVRhYmxl
OjpjcmVhdGVTYXd0b290aCk6CisgICAgICAgIChXZWJDb3JlOjpXYXZlVGFibGU6OmNyZWF0ZVRy
aWFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVUYWJsZTo6Z2VuZXJhdGVCYXNpY1dhdmVm
b3JtKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vzc29yTm9kZUN1
c3RvbS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFT
Y3JpcHRBdWRpb05vZGVDdXN0b20uY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NjcmlwdFByb2Nlc3Nvck5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKwogMjAxMi0xMC0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbUmVncmVzc2lvbiByMTMxMTY3XSBydW4td2Via2l0
LXRlc3RzIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU4NjFkODA3NDhjZTU5NTY0ZmIy
NmM2NjBiMWUwOTU3MmRkMmYwOGQuLjkwY2ZjOGZhZWM5OWY3OWJkYzAyNzVmZTMzODNkNzMwMjAw
ODA2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNjAsMTUgKzI2MCwxNSBAQCBTRVQoV2Vi
Q29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVs
TWVyZ2VyLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwK
KyAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW4uaWRsCi0gICAg
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1Byb2Nlc3NpbmdFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNl
Tm9kZS5pZGwKQEAgLTI3NywxMiArMjc3LDEyIEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAg
IE1vZHVsZXMvd2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwK
KyAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3IuaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAorICAgIE1vZHVs
ZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUuaWRsCiAKQEAgLTkw
MiwxNiArOTAyLDE2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
Ci0gICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwCi0gICAgTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAotICAgIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5jcHAKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNw
cAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5jcHAKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0
LmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAotICAgIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCiAgICAgTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKQEAgLTkyNiwxNCArOTI2LDE0IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRB
dWRpb05vZGUuY3BwCisgICAgTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNw
cAogICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAog
ICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCiAgICAgTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCi0gICAgTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcAorICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAotICAg
IE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwCisgICAgTW9kdWxlcy93
ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggNGMxOTljNDY2YTAyYWIwMmNjYTdkNTg3M2MxNzkzYzQxMTc2
NzlkYS4uNDk4N2U1OTQ1MzlkZTg3NTY2OWVjMjZhMjgxMWIwYjMxMGJmYmU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjIsMTUgKzEyMiwxNSBAQCBCSU5ESU5HX0lETFMg
PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlk
bCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5p
ZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRl
ci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW4uaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJv
Y2Vzc2luZ0V2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U291cmNlTm9kZS5pZGwgXApAQCAtMTM5LDEyICsxMzksMTIgQEAgQklORElOR19JRExTID0gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9ET01XaW5kb3dXZWJBdWRpby5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29t
cGxldGlvbkV2ZW50LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0
aW1lQW5hbHlzZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0
YWJhc2UuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA4NGM5ZDA3NzcxZWQx
YTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi41YjVkNTZmNDg4ZDdkZjI0OWM4NjVhM2IzNGJh
MWQxNGMzNjIxZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0xMzksMTUgKzEz
OSwxNSBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXIuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2Vy
LmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5p
ZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsIFwK
KyAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsIFwKICAg
ICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAogICAgICQkUFdEL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbi5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9HYWluTm9kZS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUu
aWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAg
ICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXAotICAgICQkUFdEL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVu
dC5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmlkbCBc
CkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9E
T01XaW5kb3dXZWJBdWRpby5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNj
cmlwdEF1ZGlvTm9kZS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyTm9kZS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgXAog
ICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkJFBX
RC9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGYwZWI3N2U5M2ZkY2QxYzAwOThkOGY2NTRkZWRhZjUwOTJhZDc3NTUuLmYx
M2JkMzdmNmVkOGQxZTNhZWNiNmQ4N2VmYzM3ZjUwZTIxZmIzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNDMsMjQgKzQzLDI0IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxNZXJnZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlND
aGFubmVsTWVyZ2VyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVs
TWVyZ2VyTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2hhbm5lbFNwbGl0dGVy
Tm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVsU3BsaXR0ZXJOb2Rl
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9HYWluLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvR2Fpbi5oIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9HYWluTm9kZS5jcHAgXAotCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb0dhaW5Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHYWluTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluTm9kZS5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb05vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9O
b2RlLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYW5uZXJOb2RlLmggXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1Bhbm5lck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFyYW0u
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwIFwKQEAgLTQ4Nyw4ICs0
ODcsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNJbnQzMkFycmF5LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnQ4QXJyYXku
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW50OEFycmF5LmggXAotCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBcCi0JRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTU2NyaXB0UHJvY2Vzc29yTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNLZXlib2FyZEV2ZW50
LmNwcCBcCkBAIC01ODEsOCArNTgxLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTVmVydGV4QXJyYXlPYmplY3QuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCi0J
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09zY2lsbGF0b3IuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTT3NjaWxsYXRvci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3Nj
aWxsYXRvck5vZGUuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3NjaWxsYXRvck5v
ZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXApAQCAtNjE5LDggKzYxOSw4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Jh
bmdlRXhjZXB0aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JhbmdlRXhjZXB0
aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSYW5nZS5oIFwKLQlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0FuYWx5c2VyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbmFs
eXNlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlY3QuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUmVjdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIFwKQEAgLTEyNTksMTUgKzEyNTksMTUg
QEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
Q2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5l
bE1lcmdlci5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxT
cGxpdHRlci5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2Vy
Tm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJO
b2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW4uaWRsIFwKLQkkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUu
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtMTI3NiwxMiArMTI3Niwx
MiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0RPTVdpbmRvd1dl
YkF1ZGlvLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvci5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFs
eXNlck5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlk
bCBcCkBAIC0xOTk3LDE3ICsxOTk3LDE3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1l
cmdlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVs
TWVyZ2VyLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVs
U3BsaXR0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hh
bm5lbFNwbGl0dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bE1lcmdlck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9H
YWluLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuY3BwIFwKQEAgLTIwMTYsOCArMjAxNiw4IEBAIHdlYmNvcmVfbW9k
dWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZUlucHV0LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5v
ZGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9k
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBcCkBAIC0yMDQ3LDggKzIwNDcsOCBA
QCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuY3BwIFwKQEAgLTIwNTcsMTIgKzIwNTcsMTIgQEAgd2ViY29yZV9tb2R1bGVz
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJEU1BLZXJuZWwuY3BwIFwKQEAgLTIzMzYsNyArMjMzNiw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhkNDBmZmY2Y2E3
MjhlNDgwZjU1ZTdlNTQ3NDVjYmQ1NzlmZjQwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5w
dXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQW5hbHlzZXJOb2RlOjpBbmFseXNlck5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKKyAgICBhZGRJbnB1dChh
ZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKKyAgICBhZGRPdXRwdXQoYWRvcHRQ
dHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAyKSkpOworICAgIAorICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlQW5hbHlzZXIpOworICAgIAorICAgIGluaXRpYWxpemUoKTsKK30KKworQW5hbHlz
ZXJOb2RlOjp+QW5hbHlzZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9p
ZCBBbmFseXNlck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBB
dWRpb0J1cyogb3V0cHV0QnVzID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0
aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSkgeworICAgICAgICBvdXRwdXRC
dXMtPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1ZGlvQnVzKiBpbnB1
dEJ1cyA9IGlucHV0KDApLT5idXMoKTsKKyAgICAKKyAgICAvLyBHaXZlIHRoZSBhbmFseXNlciB0
aGUgYXVkaW8gd2hpY2ggaXMgcGFzc2luZyB0aHJvdWdoIHRoaXMgQXVkaW9Ob2RlLgorICAgIG1f
YW5hbHlzZXIud3JpdGVJbnB1dChpbnB1dEJ1cywgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8v
IEZvciBpbi1wbGFjZSBwcm9jZXNzaW5nLCBvdXIgb3ZlcnJpZGUgb2YgcHVsbElucHV0cygpIHdp
bGwganVzdCBwYXNzIHRoZSBhdWRpbyBkYXRhIHRocm91Z2ggdW5jaGFuZ2VkIGlmIHRoZSBjaGFu
bmVsIGNvdW50IG1hdGNoZXMgZnJvbSBpbnB1dCB0byBvdXRwdXQKKyAgICAvLyAocmVzdWx0aW5n
IGluIGlucHV0QnVzID09IG91dHB1dEJ1cykuICBPdGhlcndpc2UsIGRvIGFuIHVwLW1peCB0byBz
dGVyZW8uCisgICAgaWYgKGlucHV0QnVzICE9IG91dHB1dEJ1cykKKyAgICAgICAgb3V0cHV0QnVz
LT5jb3B5RnJvbSgqaW5wdXRCdXMpOworfQorCit2b2lkIEFuYWx5c2VyTm9kZTo6cmVzZXQoKQor
eworICAgIG1fYW5hbHlzZXIucmVzZXQoKTsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnNldEZm
dFNpemUodW5zaWduZWQgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
bV9hbmFseXNlci5zZXRGZnRTaXplKHNpemUpKQorICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFs
eXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTNlNzgzZWFiYmQ5NmY5YjM1NWYwYzYzOWI1MGJjM2Y2ODEwMmEwMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQW5hbHlzZXJO
b2RlX2gKKyNkZWZpbmUgQW5hbHlzZXJOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVBbmFseXNlci5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5hbHlzZXJOb2Rl
IDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFuYWx5
c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCisgICAgfQorCisgICAgdmlydHVh
bCB+QW5hbHlzZXJOb2RlKCk7CisgICAgCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdmlydHVhbCB2
b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHJl
c2V0KCk7CisKKyAgICAvLyBKYXZhc2NyaXB0IGJpbmRpbmdzCisgICAgdW5zaWduZWQgaW50IGZm
dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLmZmdFNpemUoKTsgfQorICAgIHZvaWQg
c2V0RmZ0U2l6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdW5z
aWduZWQgZnJlcXVlbmN5QmluQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLmZyZXF1
ZW5jeUJpbkNvdW50KCk7IH0KKworICAgIHZvaWQgc2V0TWluRGVjaWJlbHMoZmxvYXQgaykgeyBt
X2FuYWx5c2VyLnNldE1pbkRlY2liZWxzKGspOyB9CisgICAgZmxvYXQgbWluRGVjaWJlbHMoKSBj
b25zdCB7IHJldHVybiBtX2FuYWx5c2VyLm1pbkRlY2liZWxzKCk7IH0KKworICAgIHZvaWQgc2V0
TWF4RGVjaWJlbHMoZmxvYXQgaykgeyBtX2FuYWx5c2VyLnNldE1heERlY2liZWxzKGspOyB9Cisg
ICAgZmxvYXQgbWF4RGVjaWJlbHMoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLm1heERlY2li
ZWxzKCk7IH0KKworICAgIHZvaWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGZsb2F0IGspIHsg
bV9hbmFseXNlci5zZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQoayk7IH0KKyAgICBmbG9hdCBzbW9v
dGhpbmdUaW1lQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLnNtb290aGluZ1Rp
bWVDb25zdGFudCgpOyB9CisKKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9hdDMy
QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5KTsg
fQorICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9h
bmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YShhcnJheSk7IH0KKyAgICB2b2lkIGdldEJ5dGVU
aW1lRG9tYWluRGF0YShVaW50OEFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1l
RG9tYWluRGF0YShhcnJheSk7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKworICAgIEFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIFJlYWx0aW1lQW5h
bHlzZXIgbV9hbmFseXNlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEFuYWx5c2VyTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FuYWx5c2VyTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUwMDZlMTc5NTkzMmRhODg4OGY0Nzg5MDJm
ZTM0ODU0Mzg4OGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAor
XSBpbnRlcmZhY2UgQW5hbHlzZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBmZnRTaXplCisgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBmcmVxdWVuY3lCaW5Db3VudDsK
KworICAgIC8vIG1pbkRlY2liZWxzIC8gbWF4RGVjaWJlbHMgcmVwcmVzZW50IHRoZSByYW5nZSB0
byBzY2FsZSB0aGUgRkZUIGFuYWx5c2lzIGRhdGEgZm9yIGNvbnZlcnNpb24gdG8gdW5zaWduZWQg
Ynl0ZSB2YWx1ZXMuCisgICAgYXR0cmlidXRlIGZsb2F0IG1pbkRlY2liZWxzOworICAgIGF0dHJp
YnV0ZSBmbG9hdCBtYXhEZWNpYmVsczsKKworICAgIC8vIEEgdmFsdWUgZnJvbSAwLjAgLT4gMS4w
IHdoZXJlIDAuMCByZXByZXNlbnRzIG5vIHRpbWUgYXZlcmFnaW5nIHdpdGggdGhlIGxhc3QgYW5h
bHlzaXMgZnJhbWUuCisgICAgYXR0cmlidXRlIGZsb2F0IHNtb290aGluZ1RpbWVDb25zdGFudDsK
KworICAgIC8vIENvcGllcyB0aGUgY3VycmVudCBmcmVxdWVuY3kgZGF0YSBpbnRvIHRoZSBwYXNz
ZWQgYXJyYXkuCisgICAgLy8gSWYgdGhlIGFycmF5IGhhcyBmZXdlciBlbGVtZW50cyB0aGFuIHRo
ZSBmcmVxdWVuY3lCaW5Db3VudCwgdGhlIGV4Y2VzcyBlbGVtZW50cyB3aWxsIGJlIGRyb3BwZWQu
CisgICAgdm9pZCBnZXRGbG9hdEZyZXF1ZW5jeURhdGEoaW4gRmxvYXQzMkFycmF5IGFycmF5KTsK
KyAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lEYXRhKGluIFVpbnQ4QXJyYXkgYXJyYXkpOworCisg
ICAgLy8gUmVhbC10aW1lIHdhdmVmb3JtIGRhdGEKKyAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWlu
RGF0YShpbiBVaW50OEFycmF5IGFycmF5KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNGY3
NDMyNTcyNjc4YzcwYjQ2NzMwMmM5MGY1ZmViZmQ1OWJkY2NmNy4uZTUyYWNlNDYyYjQxZmI0YTk2
YmZiNDU4NGFhMTFjZjYwYmUxMDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDQ3LDcgKzQ0
Nyw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNv
bnN0CiAgICAgcmV0dXJuICFpc1BsYXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkg
fHwgIW1fYnVmZmVyOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVy
Tm9kZShBdWRpb1Bhbm5lck5vZGUqIHBhbm5lck5vZGUpCit2b2lkIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5uZXJOb2RlKQogewogICAgIGlmICht
X3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQoKSkgewogICAgICAgICBp
ZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDI0NzM2ZTE2NTFiY2M5MWUwMGRhOTk2
NTY0OTY1OTJmNjhkOTlhNGQuLjQ3YzAyMDUzNzU4ZmRhYzczM2IxODEwN2VjMmZkYTYwZmYwNDYw
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0dhaW4uaCIKLSNp
bmNsdWRlICJBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCiAjaW5j
bHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTgyLDcgKzgyLDcgQEAgcHVi
bGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1fcGxheWJhY2tS
YXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwgdGhlbiB3ZSBj
YW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBwaXRjaCByYXRl
LgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShBdWRpb1Bhbm5lck5vZGUqKTsKKyAgICB2b2lkIHNl
dFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwogICAgIHZvaWQgY2xlYXJQYW5uZXJOb2RlKCk7CiAK
ICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3BvZ2F0ZSBzaWxlbmNlIGFo
ZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICAvLyBXZSBvcHRpb25hbGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGlj
aCBoYXMgYSBkb3BwbGVyIHNoaWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0
aGUgcGl0Y2ggcmF0ZS4gV2UgbWFudWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdl
IHdhbnQgdG8gdXNlIFJlZlR5cGVDb25uZWN0aW9uLgotICAgIEF1ZGlvUGFubmVyTm9kZSogbV9w
YW5uZXJOb2RlOworICAgIFBhbm5lck5vZGUqIG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMg
c3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBk
eW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRhYmxlIE11dGV4IG1fcHJvY2Vz
c0xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbE1lcmdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q2hhbm5lbE1lcmdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZGZjY2Vm
NGI2ZDk1Y2Y2YzVkZWI5YzkwYzY5ZDNhNTY0NGVjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NoYW5uZWxNZXJnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAi
QXVkaW9DaGFubmVsTWVyZ2VyLmgiCi0KLSNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKLSNpbmNs
dWRlICJBdWRpb05vZGVJbnB1dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBBdWRp
b0NoYW5uZWxNZXJnZXI6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQotewotICAgIGlmICghbnVtYmVyT2ZJbnB1
dHMgfHwgbnVtYmVyT2ZJbnB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRp
b0NoYW5uZWxNZXJnZXIoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZJbnB1dHMpKTsgICAg
ICAKLX0KLQotQXVkaW9DaGFubmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykK
LSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQotewotICAgIC8vIENyZWF0ZSB0
aGUgcmVxdWVzdGVkIG51bWJlciBvZiBpbnB1dHMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mSW5wdXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBB
dWRpb05vZGVJbnB1dCh0aGlzKSkpOwotCi0gICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVPdXRwdXQodGhpcywgMSkpKTsKLSAgICAKLSAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNo
YW5uZWxNZXJnZXIpOwotICAgIAotICAgIGluaXRpYWxpemUoKTsKLX0KLQotdm9pZCBBdWRpb0No
YW5uZWxNZXJnZXI6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKLXsKLSAgICBBdWRp
b05vZGVPdXRwdXQqIG91dHB1dCA9IHRoaXMtPm91dHB1dCgwKTsKLSAgICBBU1NFUlQob3V0cHV0
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09
IG91dHB1dC0+YnVzKCktPmxlbmd0aCgpKTsgICAgCi0gICAgCi0gICAgLy8gTWVyZ2UgYWxsIHRo
ZSBjaGFubmVscyBmcm9tIGFsbCB0aGUgaW5wdXRzIGludG8gb25lIG91dHB1dC4KLSAgICB1bnNp
Z25lZCBvdXRwdXRDaGFubmVsSW5kZXggPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZklucHV0cygpOyArK2kpIHsKLSAgICAgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0
ID0gdGhpcy0+aW5wdXQoaSk7Ci0gICAgICAgIGlmIChpbnB1dC0+aXNDb25uZWN0ZWQoKSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gaW5wdXQtPmJ1cygp
LT5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIE1lcmdl
IGNoYW5uZWxzIGZyb20gdGhpcyBwYXJ0aWN1bGFyIGlucHV0LgotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IG51bWJlck9mSW5wdXRDaGFubmVsczsgKytqKSB7Ci0gICAgICAg
ICAgICAgICAgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWwgPSBpbnB1dC0+YnVzKCktPmNoYW5u
ZWwoaik7Ci0gICAgICAgICAgICAgICAgQXVkaW9DaGFubmVsKiBvdXRwdXRDaGFubmVsID0gb3V0
cHV0LT5idXMoKS0+Y2hhbm5lbChvdXRwdXRDaGFubmVsSW5kZXgpOwotICAgICAgICAgICAgICAg
IG91dHB1dENoYW5uZWwtPmNvcHlGcm9tKGlucHV0Q2hhbm5lbCk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgKytvdXRwdXRDaGFubmVsSW5kZXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKG91dHB1dENoYW5uZWxJbmRleCA9PSBv
dXRwdXQtPm51bWJlck9mQ2hhbm5lbHMoKSk7Ci19Ci0KLXZvaWQgQXVkaW9DaGFubmVsTWVyZ2Vy
OjpyZXNldCgpCi17Ci19Ci0KLS8vIEFueSB0aW1lIGEgY29ubmVjdGlvbiBvciBkaXNjb25uZWN0
aW9uIGhhcHBlbnMgb24gYW55IG9mIG91ciBpbnB1dHMsIHdlIHBvdGVudGlhbGx5IG5lZWQgdG8g
Y2hhbmdlIHRoZQotLy8gbnVtYmVyIG9mIGNoYW5uZWxzIG9mIG91ciBvdXRwdXQuCi12b2lkIEF1
ZGlvQ2hhbm5lbE1lcmdlcjo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2Rl
SW5wdXQqIGlucHV0KQotewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAm
JiBjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKLQotICAgIC8vIENvdW50IGhvdyBtYW55IGNo
YW5uZWxzIHdlIGhhdmUgYWxsIHRvZ2V0aGVyIGZyb20gYWxsIG9mIHRoZSBpbnB1dHMuCi0gICAg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mSW5wdXRzKCk7ICsraSkgewotICAgICAgICBBdWRpb05vZGVJbnB1
dCogaW5wdXQgPSB0aGlzLT5pbnB1dChpKTsKLSAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3Rl
ZCgpKQotICAgICAgICAgICAgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyArPSBpbnB1dC0+YnVzKCkt
Pm51bWJlck9mQ2hhbm5lbHMoKTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGNvcnJlY3QgbnVt
YmVyIG9mIGNoYW5uZWxzIG9uIHRoZSBvdXRwdXQKLSAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1
dCA9IHRoaXMtPm91dHB1dCgwKTsKLSAgICBBU1NFUlQob3V0cHV0KTsKLSAgICBvdXRwdXQtPnNl
dE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7Ci0KLSAgICBBdWRpb05v
ZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTFkNTc1MjI4YmYxNGZkNWViNGNjMzk2MGNhODlj
MTc3OWU3ZjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBdWRpb0NoYW5uZWxNZXJnZXJf
aAotI2RlZmluZSBBdWRpb0NoYW5uZWxNZXJnZXJfaAotCi0jaW5jbHVkZSAiQXVkaW9Ob2RlLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAgCi1jbGFzcyBBdWRpb0NoYW5uZWxNZXJnZXIgOiBwdWJs
aWMgQXVkaW9Ob2RlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NoYW5u
ZWxNZXJnZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cyk7Ci0KLSAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQg
cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KTsKLQotICAgIC8vIENhbGxlZCBpbiB0aGUgYXVkaW8gdGhyZWFkIChwcmUtcmVuZGVyaW5nIHRh
c2spIHdoZW4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgYW4gaW5wdXQgbWF5IGhhdmUgY2hh
bmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVk
aW9Ob2RlSW5wdXQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KLQotICAgIEF1ZGlvQ2hhbm5lbE1l
cmdlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBdWRpb0No
YW5uZWxNZXJnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NoYW5uZWxNZXJnZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NoYW5uZWxNZXJnZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MDM1ZDI2YWM4NTAyMzgxYWZlNDM2MDRjNGFkMjkxZmUwZWYwYmFjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPCi1dIGludGVyZmFjZSBBdWRpb0NoYW5u
ZWxNZXJnZXIgOiBBdWRpb05vZGUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY3ODM2MTVmYzYxNmQxZjY2ZDI2OWIwNDkzOTVjY2MzM2Y4NzkxMTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVy
LmgiCi0KLSNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi1QYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NoYW5uZWxTcGxp
dHRlcjo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRzKQotewotICAgIGlmICghbnVtYmVyT2ZPdXRwdXRzIHx8IG51
bWJlck9mT3V0cHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVsU3Bs
aXR0ZXIoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCi19Ci0K
LUF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKLSAg
ICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQotewotICAgIGFkZElucHV0KGFkb3B0
UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotCi0gICAgLy8gQ3JlYXRlIGEgZml4ZWQg
bnVtYmVyIG9mIG91dHB1dHMgKGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBj
aGFubmVscyBmZWQgdG8gYW4gaW5wdXQpLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZk91dHB1dHM7ICsraSkKLSAgICAgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVPdXRwdXQodGhpcywgMSkpKTsKLSAgICAKLSAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNo
YW5uZWxTcGxpdHRlcik7Ci0gICAgCi0gICAgaW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIEF1ZGlv
Q2hhbm5lbFNwbGl0dGVyOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0gICAg
QXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKLSAgICBBU1NFUlQoc291cmNlKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09IHNv
dXJjZS0+bGVuZ3RoKCkpOwotICAgIAotICAgIHVuc2lnbmVkIG51bWJlck9mU291cmNlQ2hhbm5l
bHMgPSBzb3VyY2UtPm51bWJlck9mQ2hhbm5lbHMoKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzKCk7ICsraSkgewotICAgICAgICBBdWRpb0J1cyog
ZGVzdGluYXRpb24gPSBvdXRwdXQoaSktPmJ1cygpOwotICAgICAgICBBU1NFUlQoZGVzdGluYXRp
b24pOwotICAgICAgICAKLSAgICAgICAgaWYgKGkgPCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzKSB7
Ci0gICAgICAgICAgICAvLyBTcGxpdCB0aGUgY2hhbm5lbCBvdXQgaWYgaXQgZXhpc3RzIGluIHRo
ZSBzb3VyY2UuCi0gICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGF2b2lkIHRoZSBj
b3B5IGFuZCBzaW1wbHkgcGFzcyBhbG9uZyBwb2ludGVycywgYnV0IHRoaXMgYmVjb21lcyBleHRy
ZW1lbHkgZGlmZmljdWx0IHdpdGggZmFub3V0IGFuZCBmYW5pbi4KLSAgICAgICAgICAgIGRlc3Rp
bmF0aW9uLT5jaGFubmVsKDApLT5jb3B5RnJvbShzb3VyY2UtPmNoYW5uZWwoaSkpOwotICAgICAg
ICB9IGVsc2UgaWYgKG91dHB1dChpKS0+cmVuZGVyaW5nRmFuT3V0Q291bnQoKSA+IDApIHsKLSAg
ICAgICAgICAgIC8vIE9ubHkgYm90aGVyIHplcm9pbmcgb3V0IHRoZSBkZXN0aW5hdGlvbiBpZiBp
dCdzIGNvbm5lY3RlZCB0byBhbnl0aGluZwotICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8o
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cmVz
ZXQoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTU3
OGFjMDFjNmNlNzhlZDJmZWNiNzA3NzhhOTVlMmVhYTZjN2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0g
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gKLSNkZWZpbmUgQXVk
aW9DaGFubmVsU3BsaXR0ZXJfaAotCi0jaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0Nv
bnRleHQ7Ci0gICAgCi1jbGFzcyBBdWRpb0NoYW5uZWxTcGxpdHRlciA6IHB1YmxpYyBBdWRpb05v
ZGUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVy
PiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKTsKLQotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCi1w
cml2YXRlOgotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gMDsgfQotCi0gICAgQXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0
KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVs
U3BsaXR0ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5u
ZWxTcGxpdHRlci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Mzc2Zjk3YTZk
NGNkOWQ2MGMwMTgyMWRiNWIyMzc0OGU2OGU5NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NoYW5uZWxTcGxpdHRlci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTwotXSBpbnRlcmZhY2UgQXVkaW9D
aGFubmVsU3BsaXR0ZXIgOiBBdWRpb05vZGUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAxYzk0ZGU1MmVkOWNiYTk5NTcz
MTViNjkzMGJkODEwN2RhMTA0NmFlLi5iMWUwNzRiMzBhNjhjNTVmNTI4NjgwZTljY2IxMzZhODhl
OTcxMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKICNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgog
I2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0NoYW5uZWxNZXJnZXIuaCIKLSNpbmNsdWRlICJB
dWRpb0NoYW5uZWxTcGxpdHRlci5oIgotI2luY2x1ZGUgIkF1ZGlvR2Fpbk5vZGUuaCIKKyNpbmNs
dWRlICJDaGFubmVsTWVyZ2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUu
aCIKKyNpbmNsdWRlICJHYWluTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKICNp
bmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgot
I2luY2x1ZGUgIkF1ZGlvUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKICNp
bmNsdWRlICJCaXF1YWRGaWx0ZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgog
I2luY2x1ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgpAQCAtNDksMTEgKzQ5LDEx
IEBACiAjaW5jbHVkZSAiRkZURnJhbWUuaCIKICNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIu
aCIKICNpbmNsdWRlICJIUlRGUGFubmVyLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2Nlc3Nvck5vZGUuaCIKICNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKLSNpbmNsdWRlICJPc2NpbGxhdG9yLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVBbmFs
eXNlck5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIkFuYWx5
c2VyTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIldhdmVT
aGFwZXJOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVRhYmxlLmgiCkBAIC00MjAsMjMgKzQyMCwyMyBA
QCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZAogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8SmF2YVNj
cmlwdEF1ZGlvTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3Qg
YnVmZmVyU2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nv
ck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNp
emUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFNldCBudW1iZXIgb2YgaW5wdXQvb3V0
cHV0IGNoYW5uZWxzIHRvIHN0ZXJlbyBieSBkZWZhdWx0LgogICAgIHJldHVybiBjcmVhdGVKYXZh
U2NyaXB0Tm9kZShidWZmZXJTaXplLCAyLCAyLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SmF2YVNj
cmlwdEF1ZGlvTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3Qg
YnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
SmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFNldCBudW1iZXIgb2Ygb3V0cHV0
IGNoYW5uZWxzIHRvIHN0ZXJlbyBieSBkZWZhdWx0LgogICAgIHJldHVybiBjcmVhdGVKYXZhU2Ny
aXB0Tm9kZShidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIDIsIGVjKTsKIH0KIAot
UGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUphdmFT
Y3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNz
UmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNjcmlw
dE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgUmVmUHRy
PEphdmFTY3JpcHRBdWRpb05vZGU+IG5vZGUgPSBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpjcmVhdGUo
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBSZWZQdHI8U2Ny
aXB0UHJvY2Vzc29yTm9kZT4gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSh0aGlz
LCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBidWZmZXJTaXplLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgaWYgKCFub2RlLmdl
dCgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTQ2MSwxMSArNDYxLDExIEBAIFBh
c3NSZWZQdHI8V2F2ZVNoYXBlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigp
CiAgICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUodGhpcyk7CiB9CiAKLVBhc3NSZWZQ
dHI8QXVkaW9QYW5uZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcigpCitQYXNzUmVm
UHRyPFBhbm5lck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIEF1
ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRl
KCkpOworICAgIHJldHVybiBQYW5uZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5v
ZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gQXVkaW9D
b250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQpAQCAtNDgyLDE4ICs0ODIsMTggQEAgUGFzc1JlZlB0
cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29t
cHJlc3NvcigpCiAgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSh0aGlz
LCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxSZWFs
dGltZUFuYWx5c2VyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcigpCitQYXNzUmVm
UHRyPEFuYWx5c2VyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcigpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIHJldHVy
biBSZWFsdGltZUFuYWx5c2VyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCkpOworICAgIHJldHVybiBBbmFseXNlck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rl
c3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBdWRpb0dhaW5O
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW5Ob2RlKCkKK1Bhc3NSZWZQdHI8R2Fpbk5vZGU+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbk5vZGUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gQXVkaW9HYWluTm9kZTo6
Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOworICAgIHJldHVy
biBHYWluTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkp
OwogfQogCiBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheU5v
ZGUoKQpAQCAtNTA5LDE4ICs1MDksMTggQEAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlRGVsYXlOb2RlKGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgcmV0dXJuIERl
bGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG1h
eERlbGF5VGltZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxp
dHRlcihFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCB1bnNpZ25lZCBDaGFubmVsU3Bs
aXR0ZXJEZWZhdWx0TnVtYmVyT2ZPdXRwdXRzID0gNjsKICAgICByZXR1cm4gY3JlYXRlQ2hhbm5l
bFNwbGl0dGVyKENoYW5uZWxTcGxpdHRlckRlZmF1bHROdW1iZXJPZk91dHB1dHMsIGVjKTsKIH0K
IAotUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVD
aGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cywgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hh
bm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAot
ICAgIFJlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gbm9kZSA9IEF1ZGlvQ2hhbm5lbFNwbGl0
dGVyOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVy
T2ZPdXRwdXRzKTsKKyAgICBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gbm9kZSA9IENoYW5u
ZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0
ZSgpLCBudW1iZXJPZk91dHB1dHMpOwogCiAgICAgaWYgKCFub2RlLmdldCgpKSB7CiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKQEAgLTUzMCwxOCArNTMwLDE4IEBAIFBhc3NSZWZQdHI8QXVkaW9D
aGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVf
dCBudW1iCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVy
Z2VyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5u
ZWxNZXJnZXIoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgdW5zaWduZWQgQ2hhbm5l
bE1lcmdlckRlZmF1bHROdW1iZXJPZklucHV0cyA9IDY7CiAgICAgcmV0dXJuIGNyZWF0ZUNoYW5u
ZWxNZXJnZXIoQ2hhbm5lbE1lcmdlckRlZmF1bHROdW1iZXJPZklucHV0cywgZWMpOwogfQogCi1Q
YXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVs
TWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPENoYW5uZWxNZXJnZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIo
c2l6ZV90IG51bWJlck9mSW5wdXRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVk
aW9DaGFubmVsTWVyZ2VyPiBub2RlID0gQXVkaW9DaGFubmVsTWVyZ2VyOjpjcmVhdGUodGhpcywg
bV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1dHMpOworICAgIFJl
ZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gbm9kZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUo
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1dHMpOwog
CiAgICAgaWYgKCFub2RlLmdldCgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTU1
MSwxMiArNTUxLDEyIEBAIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mCiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKLVBhc3NSZWZQdHI8T3NjaWxsYXRvcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVPc2NpbGxh
dG9yKCkKK1Bhc3NSZWZQdHI8T3NjaWxsYXRvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT3Nj
aWxsYXRvcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlh
bGl6ZSgpOwogCi0gICAgUmVmUHRyPE9zY2lsbGF0b3I+IG5vZGUgPSBPc2NpbGxhdG9yOjpjcmVh
dGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgUmVmUHRyPE9z
Y2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIAogICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVu
dGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgogICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIEF1ZGlvQ29udGV4dDo6bm90
aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggZmQ0MGI4NGFhOGVmM2UzZGFlOWM5YTUxNWM0
NzlhY2ZlNjhmMjJhNC4uMDgxNjdmNTMxNThjNzViYTM5MjhiZTBiMGJlODUyNjEwZGY0OTJlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBA
IC01MSwxMCArNTEsMTAgQEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOwogY2xhc3MgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGU7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgQXVkaW9DaGFubmVsTWVyZ2VyOwot
Y2xhc3MgQXVkaW9DaGFubmVsU3BsaXR0ZXI7Ci1jbGFzcyBBdWRpb0dhaW5Ob2RlOwotY2xhc3Mg
QXVkaW9QYW5uZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVs
U3BsaXR0ZXJOb2RlOworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBQYW5uZXJOb2RlOwogY2xhc3Mg
QXVkaW9MaXN0ZW5lcjsKIGNsYXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uOwogY2xhc3MgQmlxdWFk
RmlsdGVyTm9kZTsKQEAgLTYyLDEwICs2MiwxMCBAQCBjbGFzcyBEZWxheU5vZGU7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIENvbnZvbHZlck5vZGU7CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JO
b2RlOwotY2xhc3MgUmVhbHRpbWVBbmFseXNlck5vZGU7CitjbGFzcyBBbmFseXNlck5vZGU7CiBj
bGFzcyBXYXZlU2hhcGVyTm9kZTsKLWNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7Ci1jbGFzcyBP
c2NpbGxhdG9yOworY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKK2NsYXNzIE9zY2lsbGF0b3JO
b2RlOwogY2xhc3MgV2F2ZVRhYmxlOwogCiAvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0
b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBm
cm9tIGl0LgpAQCAtMTE5LDIzICsxMTksMjMgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRl
TWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYK
LSAgICBQYXNzUmVmUHRyPEF1ZGlvR2Fpbk5vZGU+IGNyZWF0ZUdhaW5Ob2RlKCk7CisgICAgUGFz
c1JlZlB0cjxHYWluTm9kZT4gY3JlYXRlR2Fpbk5vZGUoKTsKICAgICBQYXNzUmVmUHRyPEJpcXVh
ZEZpbHRlck5vZGU+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFBhc3NSZWZQdHI8V2F2ZVNo
YXBlck5vZGU+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKICAgICBQYXNzUmVmUHRyPERlbGF5Tm9kZT4g
Y3JlYXRlRGVsYXlOb2RlKCk7CiAgICAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5
Tm9kZShkb3VibGUgbWF4RGVsYXlUaW1lKTsKLSAgICBQYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9k
ZT4gY3JlYXRlUGFubmVyKCk7CisgICAgUGFzc1JlZlB0cjxQYW5uZXJOb2RlPiBjcmVhdGVQYW5u
ZXIoKTsKICAgICBQYXNzUmVmUHRyPENvbnZvbHZlck5vZGU+IGNyZWF0ZUNvbnZvbHZlcigpOwog
ICAgIFBhc3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCk7ICAgIAotICAgIFBhc3NSZWZQdHI8UmVhbHRpbWVBbmFseXNlck5vZGU+IGNyZWF0
ZUFuYWx5c2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBjcmVhdGVK
YXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBh
c3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90
IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0ZUphdmFTY3JpcHRO
b2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQ
dHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25D
b2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxTcGxpdHRlcj4gY3JlYXRlQ2hhbm5l
bFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQ
YXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZUNoYW5u
ZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFz
c1JlZlB0cjxPc2NpbGxhdG9yPiBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgUGFzc1JlZlB0cjxB
bmFseXNlck5vZGU+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgUGFzc1JlZlB0cjxTY3JpcHRQcm9j
ZXNzb3JOb2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlSmF2
YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+
IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0aW9uQ29k
ZSYpOworICAgIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRlck5v
ZGU+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlQ2hhbm5l
bE1lcmdlcihFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9k
ZT4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGVPc2NpbGxhdG9yKCk7
CiAgICAgUGFzc1JlZlB0cjxXYXZlVGFibGU+IGNyZWF0ZVdhdmVUYWJsZShGbG9hdDMyQXJyYXkq
IHJlYWwsIEZsb2F0MzJBcnJheSogaW1hZywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gV2hl
biBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hl
ZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApp
bmRleCBlN2Y5NzJlNjBjMDYyZmE5YTJkNmIwZjI2MWQ1MTk4MDJhZTBjMjE3Li44ZWUyZGMyOWQw
YTk0YjFkOWY1MmY1Mzc5ZDc2NjQxZDg5ODhkNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC02OSwyNCArNjksMjQgQEAKICNl
bmRpZgogCiAgICAgLy8gUHJvY2Vzc2luZyBub2RlcwotICAgIEF1ZGlvR2Fpbk5vZGUgY3JlYXRl
R2Fpbk5vZGUoKTsKKyAgICBHYWluTm9kZSBjcmVhdGVHYWluTm9kZSgpOwogICAgIERlbGF5Tm9k
ZSBjcmVhdGVEZWxheU5vZGUoaW4gW09wdGlvbmFsXSBkb3VibGUgbWF4RGVsYXlUaW1lKTsKICAg
ICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFdhdmVTaGFwZXJO
b2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKLSAgICBBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVy
KCk7CisgICAgUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKICAgICBDb252b2x2ZXJOb2RlIGNy
ZWF0ZUNvbnZvbHZlcigpOwogICAgIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1p
Y3NDb21wcmVzc29yKCk7Ci0gICAgUmVhbHRpbWVBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIo
KTsKLSAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNyZWF0ZUphdmFTY3JpcHROb2RlKGluIHVuc2ln
bmVkIGxvbmcgYnVmZmVyU2l6ZSwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9m
SW5wdXRDaGFubmVscywgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCisgICAgQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgU2NyaXB0
UHJvY2Vzc29yTm9kZSBjcmVhdGVKYXZhU2NyaXB0Tm9kZShpbiB1bnNpZ25lZCBsb25nIGJ1ZmZl
clNpemUsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzKQogICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICBPc2NpbGxhdG9yIGNyZWF0ZU9zY2lsbGF0
b3IoKTsKKyAgICBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7CiAgICAgV2F2ZVRh
YmxlIGNyZWF0ZVdhdmVUYWJsZShpbiBGbG9hdDMyQXJyYXkgcmVhbCwgaW4gRmxvYXQzMkFycmF5
IGltYWcpCiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgLy8gQ2hhbm5lbCBz
cGxpdHRpbmcgYW5kIG1lcmdpbmcKLSAgICBBdWRpb0NoYW5uZWxTcGxpdHRlciBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cykK
KyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihpbiBbT3B0aW9u
YWxdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzKQogICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICBBdWRpb0NoYW5uZWxNZXJnZXIgY3JlYXRlQ2hhbm5lbE1lcmdlcihpbiBb
T3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMpCisgICAgQ2hhbm5lbE1lcmdl
ck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZJbnB1dHMpCiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgLy8gT2Zm
bGluZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvR2Fpbk5vZGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjUxM2MwMDBk
ZTVmMmQ3YzMyN2FiODcxZjA1ODExOTBlNjcxNmM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9HYWluTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
Ci0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNs
dWRlICJBdWRpb0dhaW5Ob2RlLmgiCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQXVkaW9HYWluTm9kZTo6QXVkaW9HYWluTm9kZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkKLSAgICAsIG1fbGFzdEdhaW4oMS4wKQotICAgICwgbV9zYW1wbGVBY2N1cmF0
ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBGSVhNRTog
Y2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKLXsKLSAgICBtX2dhaW4g
PSBBdWRpb0dhaW46OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwotCi0g
ICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7Ci0gICAgYWRk
T3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMSkpKTsKLSAgICAKLSAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUdhaW4pOwotICAgIAotICAgIGluaXRpYWxpemUoKTsKLX0K
LQotdm9pZCBBdWRpb0dhaW5Ob2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17
Ci0gICAgLy8gRklYTUU6IGZvciBzb21lIGNhc2VzIHRoZXJlIGlzIGEgbmljZSBvcHRpbWl6YXRp
b24gdG8gYXZvaWQgcHJvY2Vzc2luZyBoZXJlLCBhbmQgbGV0IHRoZSBnYWluIGNoYW5nZQotICAg
IC8vIGhhcHBlbiBpbiB0aGUgc3VtbWluZyBqdW5jdGlvbiBpbnB1dCBvZiB0aGUgQXVkaW9Ob2Rl
IHdlJ3JlIGNvbm5lY3RlZCB0by4KLSAgICAvLyBUaGVuIHdlIGNhbiBhdm9pZCBhbGwgb2YgdGhl
IGZvbGxvd2luZzoKLQotICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygp
OwotICAgIEFTU0VSVChvdXRwdXRCdXMpOwotCi0gICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwg
IWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpKQotICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQXVkaW9CdXMqIGlucHV0QnVzID0gaW5wdXQoMCktPmJ1cygpOwot
Ci0gICAgICAgIGlmIChnYWluKCktPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkpIHsKLSAgICAg
ICAgICAgIC8vIEFwcGx5IHNhbXBsZS1hY2N1cmF0ZSBnYWluIHNjYWxpbmcgZm9yIHByZWNpc2Ug
ZW52ZWxvcGVzLCBncmFpbiB3aW5kb3dzLCBldGMuCi0gICAgICAgICAgICBBU1NFUlQoZnJhbWVz
VG9Qcm9jZXNzIDw9IG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLnNpemUoKSk7Ci0gICAgICAg
ICAgICBpZiAoZnJhbWVzVG9Qcm9jZXNzIDw9IG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLnNp
emUoKSkgewotICAgICAgICAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9zYW1wbGVBY2N1
cmF0ZUdhaW5WYWx1ZXMuZGF0YSgpOwotICAgICAgICAgICAgICAgIGdhaW4oKS0+Y2FsY3VsYXRl
U2FtcGxlQWNjdXJhdGVWYWx1ZXMoZ2FpblZhbHVlcywgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAg
ICAgICAgICAgICBvdXRwdXRCdXMtPmNvcHlXaXRoU2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzRnJv
bSgqaW5wdXRCdXMsIGdhaW5WYWx1ZXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBBcHBseSB0aGUgZ2FpbiB3aXRoIGRl
LXppcHBlcmluZyBpbnRvIHRoZSBvdXRwdXQgYnVzLgotICAgICAgICAgICAgb3V0cHV0QnVzLT5j
b3B5V2l0aEdhaW5Gcm9tKCppbnB1dEJ1cywgJm1fbGFzdEdhaW4sIGdhaW4oKS0+dmFsdWUoKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9HYWluTm9kZTo6cmVzZXQoKQotewot
ICAgIC8vIFNuYXAgZGlyZWN0bHkgdG8gZGVzaXJlZCBnYWluLgotICAgIG1fbGFzdEdhaW4gPSBn
YWluKCktPnZhbHVlKCk7Ci19Ci0KLS8vIEZJWE1FOiB0aGlzIGNhbiBnbyBhd2F5IHdoZW4gd2Ug
ZG8gbWl4aW5nIHdpdGggZ2FpbiBkaXJlY3RseSBpbiBzdW1taW5nIGp1bmN0aW9uIG9mIEF1ZGlv
Tm9kZUlucHV0Ci0vLwotLy8gQXMgc29vbiBhcyB3ZSBrbm93IHRoZSBjaGFubmVsIGNvdW50IG9m
IG91ciBpbnB1dCwgd2UgY2FuIGxhemlseSBpbml0aWFsaXplLgotLy8gU29tZXRpbWVzIHRoaXMg
bWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRoIGRpZmZlcmVudCBjaGFubmVsIGNvdW50
cywgaW4gd2hpY2ggY2FzZSB3ZSBtdXN0IHNhZmVseQotLy8gdW5pbml0aWFsaXplIGFuZCB0aGVu
IHJlLWluaXRpYWxpemUgd2l0aCB0aGUgbmV3IGNoYW5uZWwgY291bnQuCi12b2lkIEF1ZGlvR2Fp
bk5vZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KiBpbnB1
dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgp
LT5pc0dyYXBoT3duZXIoKSk7Ci0KLSAgICBBU1NFUlQoaW5wdXQgJiYgaW5wdXQgPT0gdGhpcy0+
aW5wdXQoMCkpOwotICAgIGlmIChpbnB1dCAhPSB0aGlzLT5pbnB1dCgwKSkKLSAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gaW5wdXQtPm51
bWJlck9mQ2hhbm5lbHMoKTsgICAgCi0KLSAgICBpZiAoaXNJbml0aWFsaXplZCgpICYmIG51bWJl
ck9mQ2hhbm5lbHMgIT0gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCkpIHsKLSAgICAgICAg
Ly8gV2UncmUgYWxyZWFkeSBpbml0aWFsaXplZCBidXQgdGhlIGNoYW5uZWwgY291bnQgaGFzIGNo
YW5nZWQuCi0gICAgICAgIHVuaW5pdGlhbGl6ZSgpOwotICAgIH0KLQotICAgIGlmICghaXNJbml0
aWFsaXplZCgpKSB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBwcm9wYWdhdGUgdGhlIGNoYW5uZWwg
Y291bnQgdG8gYW55IG5vZGVzIGNvbm5lY3RlZCBmdXJ0aGVyIGRvd25zdHJlYW0gaW4gdGhlIGdy
YXBoLgotICAgICAgICBvdXRwdXQoMCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFu
bmVscyk7Ci0gICAgICAgIGluaXRpYWxpemUoKTsKLSAgICB9Ci0KLSAgICBBdWRpb05vZGU6OmNo
ZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY5YTY0YjQ3MWUzNjk1ODMwZmRiNTA0N2FlZTQ5YjIzMjk2ZGVlZDcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBdWRpb0dhaW5Ob2RlX2gKLSNkZWZpbmUgQXVk
aW9HYWluTm9kZV9oCi0KLSNpbmNsdWRlICJBdWRpb0dhaW4uaCIKLSNpbmNsdWRlICJBdWRpb05v
ZGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAg
Ci0vLyBBdWRpb0dhaW5Ob2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25l
IG91dHB1dCB3aGljaCBhcHBsaWVzIGEgZ2FpbiAodm9sdW1lKSBjaGFuZ2UgdG8gdGhlIGF1ZGlv
IHNpZ25hbC4KLS8vIERlLXppcHBlcmluZyAoc21vb3RoaW5nKSBpcyBhcHBsaWVkIHdoZW4gdGhl
IGdhaW4gdmFsdWUgaXMgY2hhbmdlZCBkeW5hbWljYWxseS4KLQotY2xhc3MgQXVkaW9HYWluTm9k
ZSA6IHB1YmxpYyBBdWRpb05vZGUgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvR2Fpbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvR2Fpbk5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAotICAgIH0KLSAgICAKLSAgICAvLyBBdWRpb05vZGUK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vIENhbGxlZCBpbiB0aGUgbWFpbiB0aHJlYWQg
d2hlbiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGUgaW5wdXQgbWF5IGhhdmUgY2hhbmdl
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9O
b2RlSW5wdXQqKTsKLQotICAgIC8vIEphdmFTY3JpcHQgaW50ZXJmYWNlCi0gICAgQXVkaW9HYWlu
KiBnYWluKCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5j
eVRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9Ci0KLSAgICBBdWRpb0dhaW5Ob2Rl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwotCi0gICAgZmxvYXQgbV9sYXN0R2Fp
bjsgLy8gZm9yIGRlLXppcHBlcmluZwotICAgIFJlZlB0cjxBdWRpb0dhaW4+IG1fZ2FpbjsKLQot
ICAgIEF1ZGlvRmxvYXRBcnJheSBtX3NhbXBsZUFjY3VyYXRlR2FpblZhbHVlczsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvR2Fpbk5vZGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTkzNmU3OWY1NTkzMjY5MGQ1YzZmOGRhMzkyNzU2
ZDk0MDdhMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmlkbAorKysgL2Rl
di9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0Ci1dIGludGVyZmFjZSBBdWRpb0dh
aW5Ob2RlIDogQXVkaW9Ob2RlIHsKLSAgICAvLyBGSVhNRTogZXZlbnR1YWxseSBpdCB3aWxsIGJl
IGludGVyZXN0aW5nIHRvIHJlbW92ZSB0aGUgcmVhZG9ubHkgcmVzdHJpY3Rpb24sIGJ1dCBuZWVk
IHRvIHByb3Blcmx5IGRlYWwgd2l0aCB0aHJlYWQgc2FmZXR5IGhlcmUuCi0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIEF1ZGlvR2FpbiBnYWluOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDg1MWEyNTEzNzMyZjUxMzU0ZmI4YzhmZDFmY2U3MzliNzQ1ODYzMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJBdWRpb1Bhbm5lck5vZGUuaCIKLQotI2luY2x1ZGUg
IkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVk
ZSAiQXVkaW9Db250ZXh0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKLSNpbmNsdWRl
ICJBdWRpb05vZGVPdXRwdXQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiSFJURlBhbm5lci5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQgZml4TkFO
cyhkb3VibGUgJngpCi17Ci0gICAgaWYgKGlzbmFuKHgpIHx8IGlzaW5mKHgpKQotICAgICAgICB4
ID0gMC4wOwotfQotCi1BdWRpb1Bhbm5lck5vZGU6OkF1ZGlvUGFubmVyTm9kZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkKLSAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5lcjo6UGFubmluZ01vZGVsSFJU
RikKLSAgICAsIG1fbGFzdEdhaW4oLTEuMCkKLSAgICAsIG1fY29ubmVjdGlvbkNvdW50KDApCi17
Ci0gICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7Ci0gICAg
YWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMikpKTsKLSAgICAK
LSAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvR2Fpbjo6Y3JlYXRlKGNvbnRleHQsICJkaXN0YW5j
ZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKLSAgICBtX2NvbmVHYWluID0gQXVkaW9HYWluOjpjcmVh
dGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7Ci0KLSAgICBtX3Bvc2l0aW9u
ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOwotICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50
M0QoMSwgMCwgMCk7Ci0gICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAg
ICAKLSAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7Ci0KLSAgICBpbml0aWFsaXplKCk7
Ci19Ci0KLUF1ZGlvUGFubmVyTm9kZTo6fkF1ZGlvUGFubmVyTm9kZSgpCi17Ci0gICAgdW5pbml0
aWFsaXplKCk7Ci19Ci0KLXZvaWQgQXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCi17Ci0gICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3
ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRv
IHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgotICAgIC8vIFRoZXNlIEF1ZGlvU291
cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIg
dG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KLSAgICBpZiAobV9jb25uZWN0
aW9uQ291bnQgIT0gY29udGV4dCgpLT5jb25uZWN0aW9uQ291bnQoKSkgewotICAgICAgICBtX2Nv
bm5lY3Rpb25Db3VudCA9IGNvbnRleHQoKS0+Y29ubmVjdGlvbkNvdW50KCk7Ci0KLSAgICAgICAg
Ly8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgotICAg
ICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcyk7Ci0gICAgfQotICAg
IAotICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi12b2lk
IEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAg
IEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7Ci0KLSAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdl
dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOwotCi0gICAgaWYg
KCFzb3VyY2UpIHsKLSAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4KLSAgICBkb3VibGUg
YXppbXV0aDsKLSAgICBkb3VibGUgZWxldmF0aW9uOwotICAgIGdldEF6aW11dGhFbGV2YXRpb24o
JmF6aW11dGgsICZlbGV2YXRpb24pOwotICAgIG1fcGFubmVyLT5wYW4oYXppbXV0aCwgZWxldmF0
aW9uLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgLy8gR2V0
IHRoZSBkaXN0YW5jZSBhbmQgY29uZSBnYWluLgotICAgIGRvdWJsZSB0b3RhbEdhaW4gPSBkaXN0
YW5jZUNvbmVHYWluKCk7Ci0KLSAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2FpbiBhdCB0aGUgYmVn
aW5uaW5nLgotICAgIGlmIChtX2xhc3RHYWluID09IC0xLjApCi0gICAgICAgIG1fbGFzdEdhaW4g
PSB0b3RhbEdhaW47Ci0gICAgICAgIAotICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBk
ZS16aXBwZXJpbmcuCi0gICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0
aW9uLCAmbV9sYXN0R2FpbiwgdG90YWxHYWluKTsKLX0KLQotdm9pZCBBdWRpb1Bhbm5lck5vZGU6
OnJlc2V0KCkKLXsKLSAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBp
bml0aWFsIGdhaW4KLSAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCi0gICAgICAgIG1fcGFubmVyLT5y
ZXNldCgpOwotfQotCi12b2lkIEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCi17Ci0gICAg
aWYgKGlzSW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX3Bh
bm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCkpOwotCi0g
ICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgQXVkaW9QYW5uZXJOb2RlOjp1
bmluaXRpYWxpemUoKQotewotICAgIGlmICghaXNJbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgIG1fcGFubmVyLmNsZWFyKCk7Ci0gICAgQXVkaW9Ob2RlOjp1bmlu
aXRpYWxpemUoKTsKLX0KLQotQXVkaW9MaXN0ZW5lciogQXVkaW9QYW5uZXJOb2RlOjpsaXN0ZW5l
cigpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQoKS0+bGlzdGVuZXIoKTsKLX0KLQotdm9pZCBBdWRp
b1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2RlbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgc3dpdGNoIChtb2RlbCkgewotICAgIGNhc2UgRVFVQUxQT1dF
UjoKLSAgICBjYXNlIEhSVEY6Ci0gICAgICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwg
IT0gbV9wYW5uaW5nTW9kZWwpIHsKLSAgICAgICAgICAgIE93blB0cjxQYW5uZXI+IG5ld1Bhbm5l
ciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRlKCkpOwotICAgICAgICAgICAgbV9w
YW5uZXIgPSBuZXdQYW5uZXIucmVsZWFzZSgpOwotICAgICAgICAgICAgbV9wYW5uaW5nTW9kZWwg
PSBtb2RlbDsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNPVU5ERklFTEQ6
Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc291bmQgZmllbGQgbW9kZWwuIFNlZSAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjcuCi0gICAgICAgIC8v
IEZvciBub3csIGZhbGwgdGhyb3VnaCB0byB0aHJvdyBhbiBleGNlcHRpb24uCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotfQotCi12b2lkIEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBz
aG9ydCBtb2RlbCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgc3dpdGNoIChtb2RlbCkgewot
ICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsTGluZWFyOgotICAgIGNhc2UgRGlzdGFuY2VF
ZmZlY3Q6Ok1vZGVsSW52ZXJzZToKLSAgICBjYXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbEV4cG9u
ZW50aWFsOgotICAgICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKHN0YXRpY19jYXN0PERp
c3RhbmNlRWZmZWN0OjpNb2RlbFR5cGU+KG1vZGVsKSwgdHJ1ZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRp
b24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKLXsKLSAgICAvLyBG
SVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYgcG9zc2libGUp
LCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBtYWRlLgotCi0g
ICAgZG91YmxlIGF6aW11dGggPSAwLjA7Ci0KLSAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1s
aXN0ZW5lciB2ZWN0b3IKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3Rl
bmVyKCktPnBvc2l0aW9uKCk7Ci0gICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3RlbmVyID0gbV9w
b3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247Ci0KLSAgICBpZiAoc291cmNlTGlzdGVuZXIuaXNa
ZXJvKCkpIHsKLSAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVu
ZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50Ci0gICAgICAgICpvdXRBemltdXRoID0gMC4wOwotICAg
ICAgICAqb3V0RWxldmF0aW9uID0gMC4wOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7Ci0KLSAgICAvLyBBbGlnbiBheGVzCi0gICAgRmxv
YXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigpOwotICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsKLSAgICBG
bG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3MobGlzdGVuZXJV
cCk7Ci0gICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBs
aXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7Ci0gICAgbGlzdGVuZXJGcm9udE5vcm0u
bm9ybWFsaXplKCk7Ci0KLSAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0LmNyb3Nz
KGxpc3RlbmVyRnJvbnROb3JtKTsKLQotICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNvdXJjZUxp
c3RlbmVyLmRvdCh1cCk7Ci0KLSAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNlID0gc291
cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKLSAgICBwcm9qZWN0ZWRTb3VyY2Uubm9y
bWFsaXplKCk7Ci0KLSAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNvdXJjZS5k
b3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7Ci0gICAgZml4TkFOcyhhemltdXRoKTsgLy8g
YXZvaWQgaWxsZWdhbCB2YWx1ZXMKLQotICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQgb3IgYmVoaW5k
IHRoZSBsaXN0ZW5lcgotICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3VyY2UuZG90
KGxpc3RlbmVyRnJvbnROb3JtKTsKLSAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQotICAgICAgICBh
emltdXRoID0gMzYwLjAgLSBhemltdXRoOwotCi0gICAgLy8gTWFrZSBhemltdXRoIHJlbGF0aXZl
IHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgotICAgIGlmICgoYXpp
bXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKLSAgICAgICAgYXppbXV0aCA9IDkw
LjAgLSBhemltdXRoOwotICAgIGVsc2UKLSAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0gYXppbXV0
aDsKLQotICAgIC8vIEVsZXZhdGlvbgotICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4wIC0gMTgw
LjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7Ci0gICAgZml4TkFO
cyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwotCi0gICAgaWYgKGVsZXZhdGlv
biA+IDkwLjApCi0gICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9uOwotICAgIGVs
c2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQotICAgICAgICBlbGV2YXRpb24gPSAtMTgwLjAgLSBl
bGV2YXRpb247Ci0KLSAgICBpZiAob3V0QXppbXV0aCkKLSAgICAgICAgKm91dEF6aW11dGggPSBh
emltdXRoOwotICAgIGlmIChvdXRFbGV2YXRpb24pCi0gICAgICAgICpvdXRFbGV2YXRpb24gPSBl
bGV2YXRpb247Ci19Ci0KLWZsb2F0IEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQotewot
ICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7Ci0KLSAgICAvLyBGSVhNRTogb3B0aW1pemUg
Zm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFzIGNoYW5nZWQuLi4K
LSAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBsZXJGYWN0b3IoKTsK
LQotICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7Ci0gICAgICAgIGRvdWJsZSBzcGVlZE9m
U291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKLQotICAgICAgICBjb25zdCBGbG9h
dFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAgICAgICAgY29uc3QgRmxv
YXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsKLQot
ICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxpc3RlbmVyIGhhdmUg
bm8gdmVsb2NpdHkKLSAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9ICFzb3VyY2VWZWxv
Y2l0eS5pc1plcm8oKTsKLSAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9jaXR5ID0gIWxpc3Rl
bmVyVmVsb2NpdHkuaXNaZXJvKCk7Ci0KLSAgICAgICAgaWYgKHNvdXJjZUhhc1ZlbG9jaXR5IHx8
IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKLSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291
cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgotICAgICAgICAgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVy
UG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwotICAgICAgICAgICAgRmxvYXRQb2lu
dDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVuZXJQb3NpdGlvbjsKLQot
ICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0gc291cmNlVG9MaXN0
ZW5lci5sZW5ndGgoKTsKLQotICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVyUHJvamVjdGlvbiA9
IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJN
YWduaXR1ZGU7Ci0gICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlvbiA9IHNvdXJjZVRv
TGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOwot
Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQcm9qZWN0aW9uOwot
ICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0aW9uOwotCi0gICAg
ICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kIC8gZG9wcGxl
ckZhY3RvcjsKLSAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IG1pbihsaXN0ZW5lclBy
b2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0gICAgICAgICAgICBzb3VyY2VQcm9qZWN0
aW9uID0gbWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Ci0KLSAgICAg
ICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIGxp
c3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIHNvdXJj
ZVByb2plY3Rpb24pKTsKLSAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZv
aWQgaWxsZWdhbCB2YWx1ZXMKLQotICAgICAgICAgICAgLy8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0
aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCi0gICAgICAgICAgICBpZiAo
ZG9wcGxlclNoaWZ0ID4gMTYuMCkKLSAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAxNi4w
OwotICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4xMjUpCi0gICAgICAgICAg
ICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7ICAgCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Ci19Ci0KLWZsb2F0IEF1ZGlv
UGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCi17Ci0gICAgRmxvYXRQb2ludDNEIGxpc3Rl
bmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwotCi0gICAgZG91YmxlIGxpc3Rl
bmVyRGlzdGFuY2UgPSBtX3Bvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7Ci0g
ICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRp
c3RhbmNlKTsKLSAgICAKLSAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOwotCi0gICAgLy8gRklYTUU6IGNvdWxkIG9wdGltaXplIGJ5
IGNhY2hpbmcgY29uZUdhaW4KLSAgICBkb3VibGUgY29uZUdhaW4gPSBtX2NvbmVFZmZlY3QuZ2Fp
bihtX3Bvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKLSAgICAKLSAg
ICBtX2NvbmVHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oY29uZUdhaW4pKTsKLQot
ICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Ci19Ci0KLXZvaWQgQXVk
aW9QYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2Rl
KiBub2RlKQotewotICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAgICAgCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1
ZGlvQnVmZmVyU291cmNlTm9kZS4gIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBzbyB0aGF0
IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KLSAgICBpZiAo
bm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7Ci0gICAgICAg
IEF1ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7Ci0gICAgICAgIGJ1ZmZlclNvdXJjZU5v
ZGUtPnNldFBhbm5lck5vZGUodGhpcyk7Ci0gICAgfSBlbHNlIHsgICAgCi0gICAgICAgIC8vIEdv
IHRocm91Z2ggYWxsIGlucHV0cyB0byB0aGlzIG5vZGUuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBub2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKLSAgICAgICAgICAgIEF1
ZGlvTm9kZUlucHV0KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOwotCi0gICAgICAgICAgICAvLyBG
b3IgZWFjaCBpbnB1dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25zLCBsb29raW5n
IGZvciBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IGlucHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraikgewot
ICAgICAgICAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0ID0gaW5wdXQt
PnJlbmRlcmluZ091dHB1dChqKTsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGUqIGNvbm5lY3Rl
ZE5vZGUgPSBjb25uZWN0ZWRPdXRwdXQtPm5vZGUoKTsKLSAgICAgICAgICAgICAgICBub3RpZnlB
dWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoY29ubmVjdGVkTm9kZSk7IC8vIHJlY3Vyc2UKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYmI4NjEzNjExODFlOThiNGY2NzA5ZjNlNzUyYjZlNjJjMzJkYTUxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9QYW5uZXJOb2RlX2gKLSNkZWZpbmUg
QXVkaW9QYW5uZXJOb2RlX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVk
aW9HYWluLmgiCi0jaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgotI2luY2x1ZGUgIkF1ZGlvTm9k
ZS5oIgotI2luY2x1ZGUgIkNvbmUuaCIKLSNpbmNsdWRlICJEaXN0YW5jZS5oIgotI2luY2x1ZGUg
IkZsb2F0UG9pbnQzRC5oIgotI2luY2x1ZGUgIlBhbm5lci5oIgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBdWRpb1Bhbm5lck5vZGUgaXMgYW4g
QXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgotLy8gSXQgcG9zaXRpb25z
IGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24g
dGhlIHBhbm5pbmcgbW9kZWwuCi0vLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRp
b24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmll
bnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCi0vLyBBIGRpc3RhbmNlIGVm
ZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBm
cm9tIHRoZSBsaXN0ZW5lci4KLS8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdh
aW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBB
bGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkg
Y2xvc2VseS4KLQotY2xhc3MgQXVkaW9QYW5uZXJOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7Ci1w
dWJsaWM6Ci0gICAgLy8gVGhlc2UgbXVzdCBiZSBkZWZpbmVkIGFzIGluIHRoZSAuaWRsIGZpbGUg
YW5kIG11c3QgbWF0Y2ggdGhvc2UgaW4gdGhlIFBhbm5lciBjbGFzcy4KLSAgICBlbnVtIHsKLSAg
ICAgICAgRVFVQUxQT1dFUiA9IDAsCi0gICAgICAgIEhSVEYgPSAxLAotICAgICAgICBTT1VOREZJ
RUxEID0gMiwKLSAgICB9OwotCi0gICAgLy8gVGhlc2UgbXVzdCBiZSBkZWZpbmVkIGFzIGluIHRo
ZSAuaWRsIGZpbGUgYW5kIG11c3QgbWF0Y2ggdGhvc2UKLSAgICAvLyBpbiB0aGUgRGlzdGFuY2VF
ZmZlY3QgY2xhc3MuCi0gICAgZW51bSB7Ci0gICAgICAgIExJTkVBUl9ESVNUQU5DRSA9IDAsCi0g
ICAgICAgIElOVkVSU0VfRElTVEFOQ0UgPSAxLAotICAgICAgICBFWFBPTkVOVElBTF9ESVNUQU5D
RSA9IDIsCi0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1Bhbm5lck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvUGFubmVyTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+QXVkaW9QYW5uZXJOb2RlKCk7Ci0K
LSAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKLQotICAgIC8vIExp
c3RlbmVyCi0gICAgQXVkaW9MaXN0ZW5lciogbGlzdGVuZXIoKTsKLQotICAgIC8vIFBhbm5pbmcg
bW9kZWwKLSAgICB1bnNpZ25lZCBzaG9ydCBwYW5uaW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBt
X3Bhbm5pbmdNb2RlbDsgfQotICAgIHZvaWQgc2V0UGFubmluZ01vZGVsKHVuc2lnbmVkIHNob3J0
LCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBw
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQz
RCh4LCB5LCB6KTsgfQotCi0gICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmll
bnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KLQotICAgIC8vIFZlbG9jaXR5Ci0gICAgRmxvYXRQb2ludDNE
IHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQotICAgIHZvaWQgc2V0VmVs
b2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9Ci0KLSAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCi0gICAgdW5zaWdu
ZWQgc2hvcnQgZGlzdGFuY2VNb2RlbCgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubW9kZWwo
KTsgfQotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbCh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9u
Q29kZSYpOwotCi0gICAgZmxvYXQgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4obV9kaXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5jZSgpKTsgfQotICAgIHZvaWQgc2V0UmVm
RGlzdGFuY2UoZmxvYXQgcmVmRGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0
YW5jZShyZWZEaXN0YW5jZSk7IH0KLQotICAgIGZsb2F0IG1heERpc3RhbmNlKCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKSk7IH0KLSAg
ICB2b2lkIHNldE1heERpc3RhbmNlKGZsb2F0IG1heERpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZl
Y3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9Ci0KLSAgICBmbG9hdCByb2xsb2ZmRmFj
dG9yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9m
ZkZhY3RvcigpKTsgfQotICAgIHZvaWQgc2V0Um9sbG9mZkZhY3RvcihmbG9hdCByb2xsb2ZmRmFj
dG9yKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsg
fQotCi0gICAgLy8gU291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcwotICAgIGZsb2F0IGNv
bmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fY29uZUVm
ZmVjdC5pbm5lckFuZ2xlKCkpOyB9Ci0gICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShmbG9hdCBh
bmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJBbmdsZShhbmdsZSk7IH0KLQotICAgIGZsb2F0
IGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fY29u
ZUVmZmVjdC5vdXRlckFuZ2xlKCkpOyB9Ci0gICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShmbG9h
dCBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0KLQotICAgIGZs
b2F0IGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9j
b25lRWZmZWN0Lm91dGVyR2FpbigpKTsgfQotICAgIHZvaWQgc2V0Q29uZU91dGVyR2FpbihmbG9h
dCBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQotCi0gICAgdm9p
ZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2
YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7Ci0KLSAgICAvLyBBY2Nlc3NvcnMgZm9y
IGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCi0gICAgQXVkaW9HYWluKiBkaXN0
YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICBBdWRpb0dhaW4qIGNvbmVHYWluKCkgeyBy
ZXR1cm4gbV9jb25lR2Fpbi5nZXQoKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKLQotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRpbWUoKSA6IDA7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGFubmVy
ID8gbV9wYW5uZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgQXVkaW9Q
YW5uZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwotCi0gICAgLy8gUmV0
dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KLSAg
ICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7Ci0KLSAgICAvLyBOb3RpZmllcyBhbnkgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGly
ZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KLSAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRvIGhh
bmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQuCi0g
ICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKik7Ci0K
LSAgICBPd25QdHI8UGFubmVyPiBtX3Bhbm5lcjsKLSAgICB1bnNpZ25lZCBtX3Bhbm5pbmdNb2Rl
bDsKLQotICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29y
aWVudGF0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OwotCi0gICAgLy8gR2Fpbgot
ICAgIFJlZlB0cjxBdWRpb0dhaW4+IG1fZGlzdGFuY2VHYWluOwotICAgIFJlZlB0cjxBdWRpb0dh
aW4+IG1fY29uZUdhaW47Ci0gICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKLSAg
ICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKLSAgICBmbG9hdCBtX2xhc3RHYWluOwotCi0gICAg
dW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBBdWRpb1Bhbm5lck5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2NTNjNmQ4NTZhYzk3MDdiNzNjMGU4MGI1ZWIyMjExNWI2ZWYxNDRlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbAorKysgL2Rldi9udWxsCkBAIC0x
LDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAot
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0Ci1dIGludGVyZmFjZSBBdWRpb1Bhbm5lck5vZGUgOiBB
dWRpb05vZGUgewotICAgIC8vIFBhbm5pbmcgbW9kZWwKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBFUVVBTFBPV0VSID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIUlRGID0gMTsKLSAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTT1VOREZJRUxEID0gMjsKLQotICAgIC8vIERpc3RhbmNl
IG1vZGVsCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTElORUFSX0RJU1RBTkNFID0gMDsKLSAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBJTlZFUlNFX0RJU1RBTkNFID0gMTsKLSAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBFWFBPTkVOVElBTF9ESVNUQU5DRSA9IDI7Ci0KLSAgICAvLyBEZWZhdWx0
IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKLSAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
cGFubmluZ01vZGVsCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLQotICAg
IC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0gCi0gICAgdm9pZCBzZXRQ
b3NpdGlvbihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6KTsKLSAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHopOwotICAgIHZv
aWQgc2V0VmVsb2NpdHkoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7Ci0KLSAg
ICAvLyBEaXN0YW5jZSBtb2RlbAotICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBkaXN0YW5j
ZU1vZGVsCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLQotICAgIGF0dHJp
YnV0ZSBmbG9hdCByZWZEaXN0YW5jZTsKLSAgICBhdHRyaWJ1dGUgZmxvYXQgbWF4RGlzdGFuY2U7
Ci0gICAgYXR0cmlidXRlIGZsb2F0IHJvbGxvZmZGYWN0b3I7Ci0KLSAgICAvLyBEaXJlY3Rpb25h
bCBzb3VuZCBjb25lCi0gICAgYXR0cmlidXRlIGZsb2F0IGNvbmVJbm5lckFuZ2xlOwotICAgIGF0
dHJpYnV0ZSBmbG9hdCBjb25lT3V0ZXJBbmdsZTsKLSAgICBhdHRyaWJ1dGUgZmxvYXQgY29uZU91
dGVyR2FpbjsKLQotICAgIC8vIER5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMgICAg
ICAgICAgCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvR2FpbiBjb25lR2FpbjsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9HYWluIGRpc3RhbmNlR2FpbjsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5ZmFjZTdjMTY2ZGNjNDNiNDE1ZmI1MGQ0MjBmYjE1MmVlNjNmZjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJn
ZXJOb2RlLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJDaGFubmVsTWVyZ2VyTm9kZS5oIgorCisj
aW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNp
bmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
UmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dHMpCit7CisgICAgaWYgKCFudW1iZXJPZklucHV0cyB8fCBudW1iZXJPZklucHV0cyA+IEF1ZGlv
Q29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIG51bWJlck9mSW5wdXRzKSk7ICAgICAgCit9CisKK0NoYW5uZWxNZXJnZXJOb2RlOjpD
aGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCit7CisgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlucHV0cy4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKKyAgICAg
ICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisKKyAgICBh
ZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIAor
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbE1lcmdlcik7CisgICAgCisgICAgaW5pdGlh
bGl6ZSgpOworfQorCit2b2lkIENoYW5uZWxNZXJnZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQgPSB0aGlzLT5vdXRw
dXQoMCk7CisgICAgQVNTRVJUKG91dHB1dCk7CisgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1By
b2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBvdXRwdXQtPmJ1cygpLT5sZW5ndGgoKSk7ICAgIAor
ICAgIAorICAgIC8vIE1lcmdlIGFsbCB0aGUgY2hhbm5lbHMgZnJvbSBhbGwgdGhlIGlucHV0cyBp
bnRvIG9uZSBvdXRwdXQuCisgICAgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbEluZGV4ID0gMDsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAg
ICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IHRoaXMtPmlucHV0KGkpOworICAgICAgICBpZiAo
aW5wdXQtPmlzQ29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscyA9IGlucHV0LT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBNZXJnZSBjaGFubmVscyBmcm9tIHRoaXMgcGFydGljdWxhciBp
bnB1dC4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1iZXJPZklucHV0
Q2hhbm5lbHM7ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFu
bmVsID0gaW5wdXQtPmJ1cygpLT5jaGFubmVsKGopOworICAgICAgICAgICAgICAgIEF1ZGlvQ2hh
bm5lbCogb3V0cHV0Q2hhbm5lbCA9IG91dHB1dC0+YnVzKCktPmNoYW5uZWwob3V0cHV0Q2hhbm5l
bEluZGV4KTsKKyAgICAgICAgICAgICAgICBvdXRwdXRDaGFubmVsLT5jb3B5RnJvbShpbnB1dENo
YW5uZWwpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICsrb3V0cHV0Q2hhbm5l
bEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIEFTU0VS
VChvdXRwdXRDaGFubmVsSW5kZXggPT0gb3V0cHV0LT5udW1iZXJPZkNoYW5uZWxzKCkpOworfQor
Cit2b2lkIENoYW5uZWxNZXJnZXJOb2RlOjpyZXNldCgpCit7Cit9CisKKy8vIEFueSB0aW1lIGEg
Y29ubmVjdGlvbiBvciBkaXNjb25uZWN0aW9uIGhhcHBlbnMgb24gYW55IG9mIG91ciBpbnB1dHMs
IHdlIHBvdGVudGlhbGx5IG5lZWQgdG8gY2hhbmdlIHRoZQorLy8gbnVtYmVyIG9mIGNoYW5uZWxz
IG9mIG91ciBvdXRwdXQuCit2b2lkIENoYW5uZWxNZXJnZXJOb2RlOjpjaGVja051bWJlck9mQ2hh
bm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCit7CisgICAgQVNTRVJUKGNvbnRl
eHQoKS0+aXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworCisg
ICAgLy8gQ291bnQgaG93IG1hbnkgY2hhbm5lbHMgd2UgaGF2ZSBhbGwgdG9nZXRoZXIgZnJvbSBh
bGwgb2YgdGhlIGlucHV0cy4KKyAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzID0g
MDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7
CisgICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IHRoaXMtPmlucHV0KGkpOworICAgICAg
ICBpZiAoaW5wdXQtPmlzQ29ubmVjdGVkKCkpCisgICAgICAgICAgICBudW1iZXJPZk91dHB1dENo
YW5uZWxzICs9IGlucHV0LT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpOworICAgIH0KKworICAg
IC8vIFNldCB0aGUgY29ycmVjdCBudW1iZXIgb2YgY2hhbm5lbHMgb24gdGhlIG91dHB1dAorICAg
IEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KDApOworICAgIEFTU0VSVChv
dXRwdXQpOworICAgIG91dHB1dC0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZk91dHB1dENo
YW5uZWxzKTsKKworICAgIEF1ZGlvTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQo
aW5wdXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsTWVyZ2VyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5NzY1ZDU4NDk5ODNmNTRhOGMyODFlODI3YjM3
YjNmNDAxODNiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hh
bm5lbE1lcmdlck5vZGVfaAorI2RlZmluZSBDaGFubmVsTWVyZ2VyTm9kZV9oCisKKyNpbmNsdWRl
ICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICAKK2NsYXNzIENoYW5uZWxNZXJn
ZXJOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVS
YXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENhbGxlZCBpbiB0aGUgYXVkaW8gdGhyZWFkIChwcmUt
cmVuZGVyaW5nIHRhc2spIHdoZW4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgYW4gaW5wdXQg
bWF5IGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxz
Rm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGRvdWJs
ZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKworICAgIENo
YW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRzKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIENoYW5uZWxNZXJnZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc5Y2U1YTJkNTll
NThiMzcyMzMwY2MwNTkzNTBjMDFlZWVkNjUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPCitdIGludGVyZmFjZSBDaGFubmVs
TWVyZ2VyTm9kZSA6IEF1ZGlvTm9kZSB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M1
MDUyNmQ3YjdlN2JmMTA0MDYxMTMyODYwNTU1MGU0ZDNkNmUyYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJDaGFubmVsU3BsaXR0ZXJOb2RlLmgiCisK
KyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgor
I2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
CitQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cykKK3sKKyAgICBpZiAoIW51bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91
dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENoYW5uZWxTcGxpdHRlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCit9CisKK0NoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCisgICAgOiBBdWRpb05v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKKyAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVk
aW9Ob2RlSW5wdXQodGhpcykpKTsKKworICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBv
dXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVk
IHRvIGFuIGlucHV0KS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRw
dXRzOyArK2kpCisgICAgICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0
KHRoaXMsIDEpKSk7CisgICAgCisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0
ZXIpOworICAgIAorICAgIGluaXRpYWxpemUoKTsKK30KKwordm9pZCBDaGFubmVsU3BsaXR0ZXJO
b2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9CdXMqIHNv
dXJjZSA9IGlucHV0KDApLT5idXMoKTsKKyAgICBBU1NFUlQoc291cmNlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09IHNvdXJjZS0+bGVuZ3Ro
KCkpOworICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mU291cmNlQ2hhbm5lbHMgPSBzb3VyY2Ut
Pm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZPdXRwdXRzKCk7ICsraSkgeworICAgICAgICBBdWRpb0J1cyogZGVzdGluYXRpb24g
PSBvdXRwdXQoaSktPmJ1cygpOworICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOworICAgICAg
ICAKKyAgICAgICAgaWYgKGkgPCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzKSB7CisgICAgICAgICAg
ICAvLyBTcGxpdCB0aGUgY2hhbm5lbCBvdXQgaWYgaXQgZXhpc3RzIGluIHRoZSBzb3VyY2UuCisg
ICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGF2b2lkIHRoZSBjb3B5IGFuZCBzaW1w
bHkgcGFzcyBhbG9uZyBwb2ludGVycywgYnV0IHRoaXMgYmVjb21lcyBleHRyZW1lbHkgZGlmZmlj
dWx0IHdpdGggZmFub3V0IGFuZCBmYW5pbi4KKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLT5jaGFu
bmVsKDApLT5jb3B5RnJvbShzb3VyY2UtPmNoYW5uZWwoaSkpOworICAgICAgICB9IGVsc2UgaWYg
KG91dHB1dChpKS0+cmVuZGVyaW5nRmFuT3V0Q291bnQoKSA+IDApIHsKKyAgICAgICAgICAgIC8v
IE9ubHkgYm90aGVyIHplcm9pbmcgb3V0IHRoZSBkZXN0aW5hdGlvbiBpZiBpdCdzIGNvbm5lY3Rl
ZCB0byBhbnl0aGluZworICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBDaGFubmVsU3BsaXR0ZXJOb2RlOjpyZXNldCgpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRl
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVy
Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkNzE5MDdkNjBhYWYwMmE5MjVlNDZhYWM5ZTE2OTc2YmU0MTVj
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDaGFubmVsU3BsaXR0ZXJOb2RlX2gKKyNkZWZpbmUgQ2hhbm5lbFNwbGl0dGVyTm9kZV9oCisK
KyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICAKK2NsYXNzIENo
YW5uZWxTcGxpdHRlck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0Kiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKKworICAgIC8vIEF1
ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
OworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorCisgICAg
Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ2hhbm5lbFNwbGl0dGVyTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YWJmYmExZWY5NmQ4MTNlOWFmNTkwNWRhNTk0ZTFkYThiZTkwYmZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlk
bApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTworXSBpbnRlcmZhY2UgQ2hhbm5lbFNwbGl0dGVyTm9kZSA6IEF1ZGlvTm9kZSB7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9ET01XaW5kb3dXZWJB
dWRpby5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1
ZGlvLmlkbAppbmRleCAyNzM3ZWNmZGRlMDM3NmFmMmE1Nzc3N2U3ZTY2MmRhODlkOWE0ZTQ2Li5k
Zjg4ZmIwZjYxNzBlM2YyODE5NzBlMWI0Y2YyMDA0OGE3YmQ2NTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbApAQCAt
MzAsNyArMzAsNyBAQAogXSBpbnRlcmZhY2UgRE9NV2luZG93V2ViQXVkaW8gewogI2lmICFkZWZp
bmVkKExBTkdVQUdFX0NQUCkgfHwgIUxBTkdVQUdFX0NQUAogICAgIFtKU0N1c3RvbUdldHRlciwg
VjhFbmFibGVkQXRSdW50aW1lXSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0Q29uc3RydWN0b3Igd2Vi
a2l0QXVkaW9Db250ZXh0OwotICAgIGF0dHJpYnV0ZSBBdWRpb1Bhbm5lck5vZGVDb25zdHJ1Y3Rv
ciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7CisgICAgYXR0cmlidXRlIFBhbm5lck5vZGVDb25zdHJ1
Y3RvciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7CiAgICAgYXR0cmlidXRlIEF1ZGlvUHJvY2Vzc2lu
Z0V2ZW50Q29uc3RydWN0b3IgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ7CiAgICAgYXR0cmlidXRlIE9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudENvbnN0cnVjdG9yIE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5O
b2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MDA4NzcyOWJjN2MxNTU5ZjAxYzkzYWNjODU4OTE2ZWUwYWUy
YjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIK
KworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNp
bmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYWlu
Tm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQor
ICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgLCBtX2xhc3RHYWluKDEu
MCkKKyAgICAsIG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2lu
Z1NpemVJbkZyYW1lcykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBp
biBjb250ZXh0Cit7CisgICAgbV9nYWluID0gQXVkaW9HYWluOjpjcmVhdGUoY29udGV4dCwgImdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKKworICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05v
ZGVJbnB1dCh0aGlzKSkpOworICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0
cHV0KHRoaXMsIDEpKSk7CisgICAgCisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVHYWluKTsKKyAg
ICAKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgR2Fpbk5vZGU6OnByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBGSVhNRTogZm9yIHNvbWUgY2FzZXMgdGhlcmUg
aXMgYSBuaWNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBwcm9jZXNzaW5nIGhlcmUsIGFuZCBsZXQg
dGhlIGdhaW4gY2hhbmdlCisgICAgLy8gaGFwcGVuIGluIHRoZSBzdW1taW5nIGp1bmN0aW9uIGlu
cHV0IG9mIHRoZSBBdWRpb05vZGUgd2UncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIFRoZW4gd2Ug
Y2FuIGF2b2lkIGFsbCBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgQXVkaW9CdXMqIG91dHB1dEJ1
cyA9IG91dHB1dCgwKS0+YnVzKCk7CisgICAgQVNTRVJUKG91dHB1dEJ1cyk7CisKKyAgICBpZiAo
IWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkpCisgICAgICAgIG91
dHB1dEJ1cy0+emVybygpOworICAgIGVsc2UgeworICAgICAgICBBdWRpb0J1cyogaW5wdXRCdXMg
PSBpbnB1dCgwKS0+YnVzKCk7CisKKyAgICAgICAgaWYgKGdhaW4oKS0+aGFzU2FtcGxlQWNjdXJh
dGVWYWx1ZXMoKSkgeworICAgICAgICAgICAgLy8gQXBwbHkgc2FtcGxlLWFjY3VyYXRlIGdhaW4g
c2NhbGluZyBmb3IgcHJlY2lzZSBlbnZlbG9wZXMsIGdyYWluIHdpbmRvd3MsIGV0Yy4KKyAgICAg
ICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MgPD0gbV9zYW1wbGVBY2N1cmF0ZUdhaW5WYWx1
ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChmcmFtZXNUb1Byb2Nlc3MgPD0gbV9zYW1wbGVB
Y2N1cmF0ZUdhaW5WYWx1ZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmxvYXQqIGdhaW5W
YWx1ZXMgPSBtX3NhbXBsZUFjY3VyYXRlR2FpblZhbHVlcy5kYXRhKCk7CisgICAgICAgICAgICAg
ICAgZ2FpbigpLT5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhnYWluVmFsdWVzLCBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgICAgICAgICAgICAgIG91dHB1dEJ1cy0+Y29weVdpdGhTYW1wbGVB
Y2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKCppbnB1dEJ1cywgZ2FpblZhbHVlcywgZnJhbWVzVG9Qcm9j
ZXNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFw
cGx5IHRoZSBnYWluIHdpdGggZGUtemlwcGVyaW5nIGludG8gdGhlIG91dHB1dCBidXMuCisgICAg
ICAgICAgICBvdXRwdXRCdXMtPmNvcHlXaXRoR2FpbkZyb20oKmlucHV0QnVzLCAmbV9sYXN0R2Fp
biwgZ2FpbigpLT52YWx1ZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHYWluTm9k
ZTo6cmVzZXQoKQoreworICAgIC8vIFNuYXAgZGlyZWN0bHkgdG8gZGVzaXJlZCBnYWluLgorICAg
IG1fbGFzdEdhaW4gPSBnYWluKCktPnZhbHVlKCk7Cit9CisKKy8vIEZJWE1FOiB0aGlzIGNhbiBn
byBhd2F5IHdoZW4gd2UgZG8gbWl4aW5nIHdpdGggZ2FpbiBkaXJlY3RseSBpbiBzdW1taW5nIGp1
bmN0aW9uIG9mIEF1ZGlvTm9kZUlucHV0CisvLworLy8gQXMgc29vbiBhcyB3ZSBrbm93IHRoZSBj
aGFubmVsIGNvdW50IG9mIG91ciBpbnB1dCwgd2UgY2FuIGxhemlseSBpbml0aWFsaXplLgorLy8g
U29tZXRpbWVzIHRoaXMgbWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRoIGRpZmZlcmVu
dCBjaGFubmVsIGNvdW50cywgaW4gd2hpY2ggY2FzZSB3ZSBtdXN0IHNhZmVseQorLy8gdW5pbml0
aWFsaXplIGFuZCB0aGVuIHJlLWluaXRpYWxpemUgd2l0aCB0aGUgbmV3IGNoYW5uZWwgY291bnQu
Cit2b2lkIEdhaW5Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJ
bnB1dCogaW5wdXQpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpICYm
IGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworCisgICAgQVNTRVJUKGlucHV0ICYmIGlucHV0
ID09IHRoaXMtPmlucHV0KDApKTsKKyAgICBpZiAoaW5wdXQgIT0gdGhpcy0+aW5wdXQoMCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9
IGlucHV0LT5udW1iZXJPZkNoYW5uZWxzKCk7ICAgIAorCisgICAgaWYgKGlzSW5pdGlhbGl6ZWQo
KSAmJiBudW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dCgwKS0+bnVtYmVyT2ZDaGFubmVscygpKSB7
CisgICAgICAgIC8vIFdlJ3JlIGFscmVhZHkgaW5pdGlhbGl6ZWQgYnV0IHRoZSBjaGFubmVsIGNv
dW50IGhhcyBjaGFuZ2VkLgorICAgICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9CisKKyAgICBp
ZiAoIWlzSW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAvLyBUaGlzIHdpbGwgcHJvcGFnYXRlIHRo
ZSBjaGFubmVsIGNvdW50IHRvIGFueSBub2RlcyBjb25uZWN0ZWQgZnVydGhlciBkb3duc3RyZWFt
IGluIHRoZSBncmFwaC4KKyAgICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51
bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBpbml0aWFsaXplKCk7CisgICAgfQorCisgICAgQXVk
aW9Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChpbnB1dCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0MWFkMjFk
YWYxYzMwMGQ2MTgxMjkwY2MxN2JjOGI2NmJiNzUyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaApAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHYWluTm9kZV9oCisjZGVmaW5lIEdhaW5Ob2RlX2gKKworI2lu
Y2x1ZGUgIkF1ZGlvR2Fpbi5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQ29udGV4dDsKKyAgICAKKy8vIEdhaW5Ob2RlIGlzIGFu
IEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dCB3aGljaCBhcHBsaWVzIGEg
Z2FpbiAodm9sdW1lKSBjaGFuZ2UgdG8gdGhlIGF1ZGlvIHNpZ25hbC4KKy8vIERlLXppcHBlcmlu
ZyAoc21vb3RoaW5nKSBpcyBhcHBsaWVkIHdoZW4gdGhlIGdhaW4gdmFsdWUgaXMgY2hhbmdlZCBk
eW5hbWljYWxseS4KKworY2xhc3MgR2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR2Fpbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAorICAgIH0KKyAgICAK
KyAgICAvLyBBdWRpb05vZGUKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENhbGxlZCBp
biB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGUgaW5w
dXQgbWF5IGhhdmUgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5u
ZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKKworICAgIC8vIEphdmFTY3JpcHQgaW50ZXJm
YWNlCisgICAgQXVkaW9HYWluKiBnYWluKCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAKK3ByaXZhdGU6CisgICAgdmlydHVh
bCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisK
KyAgICBHYWluTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIGZs
b2F0IG1fbGFzdEdhaW47IC8vIGZvciBkZS16aXBwZXJpbmcKKyAgICBSZWZQdHI8QXVkaW9HYWlu
PiBtX2dhaW47CisKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9zYW1wbGVBY2N1cmF0ZUdhaW5WYWx1
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHYWluTm9kZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyM2Q4OWUwNGNjYTc0MDAyMDMzNWIwZGY2NTg5ZTNkNjEwNDc4MTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbApAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBpbnRlcmZhY2UgR2Fpbk5vZGUgOiBBdWRpb05v
ZGUgeworICAgIC8vIEZJWE1FOiBldmVudHVhbGx5IGl0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8g
cmVtb3ZlIHRoZSByZWFkb25seSByZXN0cmljdGlvbiwgYnV0IG5lZWQgdG8gcHJvcGVybHkgZGVh
bCB3aXRoIHRocmVhZCBzYWZldHkgaGVyZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9H
YWluIGdhaW47Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJlNjBhZjg4N2Q2MWMzMmU4MWY1MmJlMWM4ZjI3Zjc1NDdkZjlhMTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdF
Ql9BVURJTykKLQotI2luY2x1ZGUgIkphdmFTY3JpcHRBdWRpb05vZGUuaCIKLQotI2luY2x1ZGUg
IkF1ZGlvQnVmZmVyLmgiCi0jaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9k
ZU91dHB1dC5oIgotI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBzaXplX3QgRGVm
YXVsdEJ1ZmZlclNpemUgPSA0MDk2OwotCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+
IEphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCi17Ci0gICAgLy8gQ2hlY2sg
Zm9yIHZhbGlkIGJ1ZmZlciBzaXplLgotICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgewotICAgIGNh
c2UgMjU2OgotICAgIGNhc2UgNTEyOgotICAgIGNhc2UgMTAyNDoKLSAgICBjYXNlIDIwNDg6Ci0g
ICAgY2FzZSA0MDk2OgotICAgIGNhc2UgODE5MjoKLSAgICBjYXNlIDE2Mzg0OgotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAo
IW51bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gQXVkaW9Db250
ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYg
KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5l
bHMoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEphdmFT
Y3JpcHRBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7Ci19Ci0KLUphdmFTY3JpcHRB
dWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQotICAgIDogQXVkaW9Ob2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUpCi0gICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCi0gICAg
LCBtX2RvdWJsZUJ1ZmZlckluZGV4Rm9yRXZlbnQoMCkKLSAgICAsIG1fYnVmZmVyU2l6ZShidWZm
ZXJTaXplKQotICAgICwgbV9idWZmZXJSZWFkV3JpdGVJbmRleCgwKQotICAgICwgbV9pc1JlcXVl
c3RPdXRzdGFuZGluZyhmYWxzZSkKLSAgICAsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzKG51bWJl
ck9mSW5wdXRDaGFubmVscykKLSAgICAsIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyhudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQotICAgICwgbV9pbnRlcm5hbElucHV0QnVzKG51bWJlck9mSW5wdXRD
aGFubmVscywgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBmYWxzZSkKLXsKLSAg
ICAvLyBSZWdhcmRsZXNzIG9mIHRoZSBhbGxvd2VkIGJ1ZmZlciBzaXplcywgd2Ugc3RpbGwgbmVl
ZCB0byBwcm9jZXNzIGF0IHRoZSBncmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgotICAgIGlm
IChtX2J1ZmZlclNpemUgPCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCi0gICAg
ICAgIG1fYnVmZmVyU2l6ZSA9IEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsKLQot
ICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1i
ZXJPZkNoYW5uZWxzKCkpOwotCi0gICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlu
cHV0KHRoaXMpKSk7Ci0gICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQo
dGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpKTsKLQotICAgIHNldE5vZGVUeXBlKE5vZGVU
eXBlSmF2YVNjcmlwdCk7Ci0KLSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLUphdmFTY3JpcHRBdWRp
b05vZGU6On5KYXZhU2NyaXB0QXVkaW9Ob2RlKCkKLXsKLSAgICB1bmluaXRpYWxpemUoKTsKLX0K
LQotdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoaXNJ
bml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCBzYW1wbGVSYXRlID0g
Y29udGV4dCgpLT5zYW1wbGVSYXRlKCk7Ci0KLSAgICAvLyBDcmVhdGUgZG91YmxlIGJ1ZmZlcnMg
b24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KLSAgICAvLyBUaGVzZSBBdWRpb0J1
ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQgYnkgSmF2
YVNjcmlwdC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7Ci0gICAgICAg
IFJlZlB0cjxBdWRpb0J1ZmZlcj4gaW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVs
cyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNp
emUoKSwgc2FtcGxlUmF0ZSkgOiAwOwotICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG91dHB1
dEJ1ZmZlciA9IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUo
bV9udW1iZXJPZk91dHB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsK
LQotICAgICAgICBtX2lucHV0QnVmZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOwotICAgICAgICBt
X291dHB1dEJ1ZmZlcnMuYXBwZW5kKG91dHB1dEJ1ZmZlcik7Ci0gICAgfQotCi0gICAgQXVkaW9O
b2RlOjppbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dW5pbml0
aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9pbnB1dEJ1ZmZlcnMuY2xlYXIoKTsKLSAgICBtX291dHB1dEJ1ZmZlcnMuY2xlYXIo
KTsKLQotICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIC8vIERp
c2N1c3Npb24gYWJvdXQgaW5wdXRzIGFuZCBvdXRwdXRzOgotICAgIC8vIEFzIGluIG90aGVyIEF1
ZGlvTm9kZXMsIEphdmFTY3JpcHRBdWRpb05vZGUgdXNlcyBhbiBBdWRpb0J1cyBmb3IgaXRzIGlu
cHV0IGFuZCBvdXRwdXQgKHNlZSBpbnB1dEJ1cyBhbmQgb3V0cHV0QnVzIGJlbG93KS4KLSAgICAv
LyBBZGRpdGlvbmFsbHksIHRoZXJlIGlzIGEgZG91YmxlLWJ1ZmZlcmluZyBmb3IgaW5wdXQgYW5k
IG91dHB1dCB3aGljaCBpcyBleHBvc2VkIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgKHNlZSBpbnB1
dEJ1ZmZlciBhbmQgb3V0cHV0QnVmZmVyIGJlbG93KS4KLSAgICAvLyBUaGlzIG5vZGUgaXMgdGhl
IHByb2R1Y2VyIGZvciBpbnB1dEJ1ZmZlciBhbmQgdGhlIGNvbnN1bWVyIGZvciBvdXRwdXRCdWZm
ZXIuCi0gICAgLy8gVGhlIEphdmFTY3JpcHQgY29kZSBpcyB0aGUgY29uc3VtZXIgb2YgaW5wdXRC
dWZmZXIgYW5kIHRoZSBwcm9kdWNlciBmb3Igb3V0cHV0QnVmZmVyLgotICAgIAotICAgIC8vIEdl
dCBpbnB1dCBhbmQgb3V0cHV0IGJ1c3Nlcy4KLSAgICBBdWRpb0J1cyogaW5wdXRCdXMgPSB0aGlz
LT5pbnB1dCgwKS0+YnVzKCk7Ci0gICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IHRoaXMtPm91dHB1
dCgwKS0+YnVzKCk7Ci0KLSAgICAvLyBHZXQgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLiAgV2Ug
ZG91YmxlLWJ1ZmZlciBib3RoIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHNpZGVzLgotICAgIHVuc2ln
bmVkIGRvdWJsZUJ1ZmZlckluZGV4ID0gdGhpcy0+ZG91YmxlQnVmZmVySW5kZXgoKTsKLSAgICBi
b29sIGlzRG91YmxlQnVmZmVySW5kZXhHb29kID0gZG91YmxlQnVmZmVySW5kZXggPCAyICYmIGRv
dWJsZUJ1ZmZlckluZGV4IDwgbV9pbnB1dEJ1ZmZlcnMuc2l6ZSgpICYmIGRvdWJsZUJ1ZmZlcklu
ZGV4IDwgbV9vdXRwdXRCdWZmZXJzLnNpemUoKTsKLSAgICBBU1NFUlQoaXNEb3VibGVCdWZmZXJJ
bmRleEdvb2QpOwotICAgIGlmICghaXNEb3VibGVCdWZmZXJJbmRleEdvb2QpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBBdWRpb0J1ZmZlciogaW5wdXRCdWZmZXIgPSBtX2lucHV0QnVmZmVy
c1tkb3VibGVCdWZmZXJJbmRleF0uZ2V0KCk7Ci0gICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZl
ciA9IG1fb3V0cHV0QnVmZmVyc1tkb3VibGVCdWZmZXJJbmRleF0uZ2V0KCk7Ci0KLSAgICAvLyBD
aGVjayB0aGUgY29uc2lzdGVuY3kgb2YgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLgotICAgIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscyA9IG1faW50ZXJuYWxJbnB1dEJ1cy5udW1iZXJP
ZkNoYW5uZWxzKCk7Ci0gICAgYm9vbCBidWZmZXJzQXJlR29vZCA9IG91dHB1dEJ1ZmZlciAmJiBi
dWZmZXJTaXplKCkgPT0gb3V0cHV0QnVmZmVyLT5sZW5ndGgoKSAmJiBtX2J1ZmZlclJlYWRXcml0
ZUluZGV4ICsgZnJhbWVzVG9Qcm9jZXNzIDw9IGJ1ZmZlclNpemUoKTsKLQotICAgIC8vIElmIHRo
ZSBudW1iZXIgb2YgaW5wdXQgY2hhbm5lbHMgaXMgemVybywgaXQncyBvayB0byBoYXZlIGlucHV0
QnVmZmVyID0gMC4KLSAgICBpZiAobV9pbnRlcm5hbElucHV0QnVzLm51bWJlck9mQ2hhbm5lbHMo
KSkKLSAgICAgICAgYnVmZmVyc0FyZUdvb2QgPSBidWZmZXJzQXJlR29vZCAmJiBpbnB1dEJ1ZmZl
ciAmJiBidWZmZXJTaXplKCkgPT0gaW5wdXRCdWZmZXItPmxlbmd0aCgpOwotCi0gICAgQVNTRVJU
KGJ1ZmZlcnNBcmVHb29kKTsKLSAgICBpZiAoIWJ1ZmZlcnNBcmVHb29kKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBXZSBhc3N1bWUgdGhhdCBidWZmZXJTaXplKCkgaXMgZXZlbmx5IGRpdmlz
aWJsZSBieSBmcmFtZXNUb1Byb2Nlc3MgLSBzaG91bGQgYWx3YXlzIGJlIHRydWUsIGJ1dCB3ZSBz
aG91bGQgc3RpbGwgY2hlY2suCi0gICAgYm9vbCBpc0ZyYW1lc1RvUHJvY2Vzc0dvb2QgPSBmcmFt
ZXNUb1Byb2Nlc3MgJiYgYnVmZmVyU2l6ZSgpID49IGZyYW1lc1RvUHJvY2VzcyAmJiAhKGJ1ZmZl
clNpemUoKSAlIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGlzRnJhbWVzVG9Qcm9jZXNz
R29vZCk7Ci0gICAgaWYgKCFpc0ZyYW1lc1RvUHJvY2Vzc0dvb2QpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSBvdXRwdXRCdXMtPm51bWJl
ck9mQ2hhbm5lbHMoKTsKLQotICAgIGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5w
dXRDaGFubmVscyA9PSBtX251bWJlck9mSW5wdXRDaGFubmVscykgJiYgKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMgPT0gbV9udW1iZXJPZk91dHB1dENoYW5uZWxzKTsKLSAgICBBU1NFUlQoY2hhbm5l
bHNBcmVHb29kKTsKLSAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRDaGFubmVsczsgaSsr
KQotICAgICAgICBtX2ludGVybmFsSW5wdXRCdXMuc2V0Q2hhbm5lbE1lbW9yeShpLCBpbnB1dEJ1
ZmZlci0+Z2V0Q2hhbm5lbERhdGEoaSktPmRhdGEoKSArIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgs
IGZyYW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzKQotICAg
ICAgICBtX2ludGVybmFsSW5wdXRCdXMuY29weUZyb20oKmlucHV0QnVzKTsKLQotICAgIC8vIENv
cHkgZnJvbSB0aGUgb3V0cHV0IGJ1ZmZlciB0byB0aGUgb3V0cHV0LiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsgKytpKQotICAgICAgICBtZW1j
cHkob3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpLCBvdXRwdXRCdWZmZXItPmdl
dENoYW5uZWxEYXRhKGkpLT5kYXRhKCkgKyBtX2J1ZmZlclJlYWRXcml0ZUluZGV4LCBzaXplb2Yo
ZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgYnVmZmVyaW5n
IGluZGV4LgotICAgIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXggPSAobV9idWZmZXJSZWFkV3JpdGVJ
bmRleCArIGZyYW1lc1RvUHJvY2VzcykgJSBidWZmZXJTaXplKCk7Ci0KLSAgICAvLyBtX2J1ZmZl
clJlYWRXcml0ZUluZGV4IHdpbGwgd3JhcCBiYWNrIGFyb3VuZCB0byAwIHdoZW4gdGhlIGN1cnJl
bnQgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGFyZSBmdWxsLgotICAgIC8vIFdoZW4gdGhpcyBo
YXBwZW5zLCBmaXJlIGFuIGV2ZW50IGFuZCBzd2FwIGJ1ZmZlcnMuCi0gICAgaWYgKCFtX2J1ZmZl
clJlYWRXcml0ZUluZGV4KSB7Ci0gICAgICAgIC8vIEF2b2lkIGJ1aWxkaW5nIHVwIHJlcXVlc3Rz
IG9uIHRoZSBtYWluIHRocmVhZCB0byBmaXJlIHByb2Nlc3MgZXZlbnRzIHdoZW4gdGhleSdyZSBu
b3QgYmVpbmcgaGFuZGxlZC4KLSAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIHByb2JsZW0gaWYg
dGhlIG1haW4gdGhyZWFkIGlzIHZlcnkgYnVzeSBkb2luZyBvdGhlciB0aGluZ3MgYW5kIGlzIGJl
aW5nIGhlbGQgdXAgaGFuZGxpbmcgcHJldmlvdXMgcmVxdWVzdHMuCi0gICAgICAgIGlmIChtX2lz
UmVxdWVzdE91dHN0YW5kaW5nKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBsYXRlIGluIGhhbmRs
aW5nIHRoZSBwcmV2aW91cyByZXF1ZXN0LiAgVGhlIG1haW4gdGhyZWFkIG11c3QgYmUgdmVyeSBi
dXN5LgotICAgICAgICAgICAgLy8gVGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGNsZWFyIG91dCB0aGUg
YnVmZmVyIG91cnNlbGYgaGVyZS4KLSAgICAgICAgICAgIG91dHB1dEJ1ZmZlci0+emVybygpOyAg
ICAgICAgICAgIAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gUmVmZXJlbmNlIG91
cnNlbGYgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJv
Y2Vzc0V2ZW50KCkgZ2V0cyBjYWxsZWQuCi0gICAgICAgICAgICByZWYoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgLy8gRmlyZSB0aGUgZXZlbnQgb24gdGhlIG1haW4gdGhyZWFkLCBub3Qg
dGhpcyBvbmUgKHdoaWNoIGlzIHRoZSByZWFsdGltZSBhdWRpbyB0aHJlYWQpLgotICAgICAgICAg
ICAgbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50ID0gbV9kb3VibGVCdWZmZXJJbmRleDsKLSAg
ICAgICAgICAgIG1faXNSZXF1ZXN0T3V0c3RhbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChmaXJlUHJvY2Vzc0V2ZW50RGlzcGF0Y2gsIHRoaXMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICB9Ci19Ci0KLXZvaWQgSmF2YVNjcmlwdEF1
ZGlvTm9kZTo6ZmlyZVByb2Nlc3NFdmVudERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQotewotICAg
IEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9Ob2RlID0gc3RhdGljX2Nhc3Q8SmF2YVNjcmlw
dEF1ZGlvTm9kZSo+KHVzZXJEYXRhKTsKLSAgICBBU1NFUlQoanNBdWRpb05vZGUpOwotICAgIGlm
ICghanNBdWRpb05vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGpzQXVkaW9Ob2RlLT5maXJl
UHJvY2Vzc0V2ZW50KCk7Ci0KLSAgICAvLyBEZS1yZWZlcmVuY2UgdG8gbWF0Y2ggdGhlIHJlZigp
IGNhbGwgaW4gcHJvY2VzcygpLgotICAgIGpzQXVkaW9Ob2RlLT5kZXJlZigpOwotfQotCi12b2lk
IEphdmFTY3JpcHRBdWRpb05vZGU6OmZpcmVQcm9jZXNzRXZlbnQoKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSAmJiBtX2lzUmVxdWVzdE91dHN0YW5kaW5nKTsKLSAgICAKLSAgICBib29s
IGlzSW5kZXhHb29kID0gbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50IDwgMjsKLSAgICBBU1NF
UlQoaXNJbmRleEdvb2QpOwotICAgIGlmICghaXNJbmRleEdvb2QpCi0gICAgICAgIHJldHVybjsK
LSAgICAgICAgCi0gICAgQXVkaW9CdWZmZXIqIGlucHV0QnVmZmVyID0gbV9pbnB1dEJ1ZmZlcnNb
bV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50XS5nZXQoKTsKLSAgICBBdWRpb0J1ZmZlciogb3V0
cHV0QnVmZmVyID0gbV9vdXRwdXRCdWZmZXJzW21fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudF0u
Z2V0KCk7Ci0gICAgQVNTRVJUKG91dHB1dEJ1ZmZlcik7Ci0gICAgaWYgKCFvdXRwdXRCdWZmZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhl
IGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KLSAgICBpZiAoY29udGV4dCgpLT5oYXNE
b2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIExldCB0aGUgYXVkaW8gdGhyZWFkIGtub3cgd2UndmUg
Z290dGVuIHRvIHRoZSBwb2ludCB3aGVyZSBpdCdzIE9LIGZvciBpdCB0byBtYWtlIGFub3RoZXIg
cmVxdWVzdC4KLSAgICAgICAgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyA9IGZhbHNlOwotICAgICAg
ICAKLSAgICAgICAgLy8gQ2FsbCB0aGUgSmF2YVNjcmlwdCBldmVudCBoYW5kbGVyIHdoaWNoIHdp
bGwgZG8gdGhlIGF1ZGlvIHByb2Nlc3NpbmcuCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoQXVkaW9Q
cm9jZXNzaW5nRXZlbnQ6OmNyZWF0ZShpbnB1dEJ1ZmZlciwgb3V0cHV0QnVmZmVyKSk7Ci0gICAg
fQotfQotCi12b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnJlc2V0KCkKLXsKLSAgICBtX2J1ZmZl
clJlYWRXcml0ZUluZGV4ID0gMDsKLSAgICBtX2RvdWJsZUJ1ZmZlckluZGV4ID0gMDsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgbV9pbnB1dEJ1ZmZl
cnNbaV0tPnplcm8oKTsKLSAgICAgICAgbV9vdXRwdXRCdWZmZXJzW2ldLT56ZXJvKCk7Ci0gICAg
fQotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIEphdmFTY3JpcHRBdWRpb05vZGU6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySmF2
YVNjcmlwdEF1ZGlvTm9kZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KHRoaXMpLT5jb250ZXh0KCktPmRvY3Vt
ZW50KCk7Ci19Ci0KLWRvdWJsZSBKYXZhU2NyaXB0QXVkaW9Ob2RlOjp0YWlsVGltZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsK
LX0KLQotZG91YmxlIEphdmFTY3JpcHRBdWRpb05vZGU6OmxhdGVuY3lUaW1lKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5OGNmYzg5MjNjNzI4MDk2
ZmQ1ZDU5MjdmNWQzN2NkZmE0ZmRlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRB
dWRpb05vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBKYXZhU2NyaXB0QXVkaW9Ob2RlX2gKLSNkZWZpbmUgSmF2YVNjcmlwdEF1ZGlvTm9k
ZV9oCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJBdWRpb0J1cy5o
IgotI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgotI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF1ZGlvQnVmZmVy
OwotY2xhc3MgQXVkaW9Db250ZXh0OwotY2xhc3MgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ7Ci0KLS8v
IEphdmFTY3JpcHRBdWRpb05vZGUgaXMgYW4gQXVkaW9Ob2RlIHdoaWNoIGFsbG93cyBmb3IgYXJi
aXRyYXJ5IHN5bnRoZXNpcyBvciBwcm9jZXNzaW5nIGRpcmVjdGx5IHVzaW5nIEphdmFTY3JpcHQu
Ci0vLyBUaGUgQVBJIGFsbG93cyBmb3IgYSB2YXJpYWJsZSBudW1iZXIgb2YgaW5wdXRzIGFuZCBv
dXRwdXRzLCBhbHRob3VnaCBpdCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGlucHV0IG9yIG91dHB1
dC4KLS8vIFRoaXMgYmFzaWMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgbm8gbW9yZSB0aGFuIG9u
ZSBpbnB1dCBhbmQgb3V0cHV0LgotLy8gVGhlICJvbmF1ZGlvcHJvY2VzcyIgYXR0cmlidXRlIGlz
IGFuIGV2ZW50IGxpc3RlbmVyIHdoaWNoIHdpbGwgZ2V0IGNhbGxlZCBwZXJpb2RpY2FsbHkgd2l0
aCBhbiBBdWRpb1Byb2Nlc3NpbmdFdmVudCB3aGljaCBoYXMKLS8vIEF1ZGlvQnVmZmVycyBmb3Ig
ZWFjaCBpbnB1dCBhbmQgb3V0cHV0LgotCi0vLyBGSVhNRTogRXZlbnRUYXJnZXQgc2hvdWxkIGJl
IGludHJvZHVjZWQgYXQgdGhlIGJhc2Ugb2YgdGhlIGluaGVyaXRhbmNlIGhpZXJhcmNoeSAoaS5l
LiwgYXMgYSBiYXNlIGNsYXNzIGZvciBBdWRpb05vZGUpLgotY2xhc3MgSmF2YVNjcmlwdEF1ZGlv
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBFdmVudFRhcmdldCB7Ci1wdWJsaWM6Ci0g
ICAgLy8gYnVmZmVyU2l6ZSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogMjU2
LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0LgotICAgIC8vIFRoaXMgdmFsdWUg
Y29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIg
aXMgY2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2Vk
IGVhY2ggY2FsbC4KLSAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVz
dWx0IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBu
ZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCi0gICAgLy8gVGhl
IHZhbHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQg
YXVkaW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7Ci0KLSAgICB2aXJ0dWFsIH5KYXZhU2NyaXB0QXVkaW9Ob2RlKCk7Ci0KLSAg
ICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKLQotICAgIC8vIEV2
ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0gICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpICB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KLQotICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXJTaXplOyB9Ci0KLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF1
ZGlvcHJvY2Vzcyk7Ci0KLSAgICAvLyBSZWNvbmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZp
bmVkIGJvdGggaW4gQXVkaW9Ob2RlIGFuZCBFdmVudFRhcmdldC4KLSAgICB1c2luZyBBdWRpb05v
ZGU6OnJlZjsKLSAgICB1c2luZyBBdWRpb05vZGU6OmRlcmVmOwotICAgIAotcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICBKYXZhU2NyaXB0QXVk
aW9Ob2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXpl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpOwotCi0gICAgc3RhdGljIHZvaWQgZmlyZVByb2Nlc3NFdmVudERpc3BhdGNoKHZv
aWQqIHVzZXJEYXRhKTsKLSAgICB2b2lkIGZpcmVQcm9jZXNzRXZlbnQoKTsKLQotICAgIC8vIERv
dWJsZSBidWZmZXJpbmcKLSAgICB1bnNpZ25lZCBkb3VibGVCdWZmZXJJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG91YmxlQnVmZmVySW5kZXg7IH0KLSAgICB2b2lkIHN3YXBCdWZmZXJzKCkgeyBt
X2RvdWJsZUJ1ZmZlckluZGV4ID0gMSAtIG1fZG91YmxlQnVmZmVySW5kZXg7IH0KLSAgICB1bnNp
Z25lZCBtX2RvdWJsZUJ1ZmZlckluZGV4OwotICAgIHVuc2lnbmVkIG1fZG91YmxlQnVmZmVySW5k
ZXhGb3JFdmVudDsKLSAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVmZmVyPiA+IG1faW5wdXRCdWZm
ZXJzOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9CdWZmZXI+ID4gbV9vdXRwdXRCdWZmZXJzOwot
Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgc2l6ZV90IG1fYnVmZmVyU2l6ZTsKLSAgICB1
bnNpZ25lZCBtX2J1ZmZlclJlYWRXcml0ZUluZGV4OwotICAgIHZvbGF0aWxlIGJvb2wgbV9pc1Jl
cXVlc3RPdXRzdGFuZGluZzsKLQotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxz
OwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKLQotICAgIEF1ZGlvQnVz
IG1faW50ZXJuYWxJbnB1dEJ1czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEphdmFTY3JpcHRBdWRpb05vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQzMjY2NDIyMjNlNDgxNTQ5N2JhZWU4YWJmMGFlYjZjMTkwNTkxMjYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBGb3IgcmVhbC10aW1lIGF1ZGlv
IHN0cmVhbSBzeW50aGVzaXMvcHJvY2Vzc2luZyBpbiBKYXZhU2NyaXB0IAotWwotICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBKU0N1c3Rv
bU1hcmtGdW5jdGlvbiwKLSAgICBFdmVudFRhcmdldAotXSBpbnRlcmZhY2UgSmF2YVNjcmlwdEF1
ZGlvTm9kZSA6IEF1ZGlvTm9kZSB7Ci0gICAgLy8gUmVuZGVyaW5nIGNhbGxiYWNrCi0gICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdWRpb3Byb2Nlc3M7Ci0gICAgCi0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgYnVmZmVyU2l6ZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmFkMWJkNzE0NmI2MzlmNDE5YTBmOWM4NWI0NzhjNmI4MjhjMDM1Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQot
Ci0jaW5jbHVkZSAiT3NjaWxsYXRvci5oIgotCi0jaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCi0j
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9VdGlsaXRpZXMuaCIK
LSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgotI2lu
Y2x1ZGUgIldhdmVUYWJsZS5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBWZWN0b3JNYXRoOwotCi1XYXZlVGFibGUqIE9zY2lsbGF0
b3I6OnNfd2F2ZVRhYmxlU2luZSA9IDA7Ci1XYXZlVGFibGUqIE9zY2lsbGF0b3I6OnNfd2F2ZVRh
YmxlU3F1YXJlID0gMDsKLVdhdmVUYWJsZSogT3NjaWxsYXRvcjo6c193YXZlVGFibGVTYXd0b290
aCA9IDA7Ci1XYXZlVGFibGUqIE9zY2lsbGF0b3I6OnNfd2F2ZVRhYmxlVHJpYW5nbGUgPSAwOwot
Ci1QYXNzUmVmUHRyPE9zY2lsbGF0b3I+IE9zY2lsbGF0b3I6OmNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBP
c2NpbGxhdG9yKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKLX0KLQotT3NjaWxsYXRvcjo6T3NjaWxs
YXRvcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKLSAgICAsIG1fdHlwZShT
SU5FKQotICAgICwgbV9maXJzdFJlbmRlcih0cnVlKQotICAgICwgbV92aXJ0dWFsUmVhZEluZGV4
KDApCi0gICAgLCBtX3BoYXNlSW5jcmVtZW50cyhBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5G
cmFtZXMpCi0gICAgLCBtX2RldHVuZVZhbHVlcyhBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5G
cmFtZXMpCi17Ci0gICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVPc2NpbGxhdG9yKTsKLQotICAgIC8v
IFVzZSBtdXNpY2FsIHBpdGNoIHN0YW5kYXJkIEE0NDAgYXMgYSBkZWZhdWx0LgotICAgIG1fZnJl
cXVlbmN5ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJmcmVxdWVuY3kiLCA0NDAsIDAs
IDEwMDAwMCk7Ci0gICAgLy8gRGVmYXVsdCB0byBubyBkZXR1bmluZy4KLSAgICBtX2RldHVuZSA9
IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZGV0dW5lIiwgMCwgLTQ4MDAsIDQ4MDApOwot
Ci0gICAgLy8gU2V0cyB1cCBkZWZhdWx0IHdhdmV0YWJsZS4KLSAgICBFeGNlcHRpb25Db2RlIGVj
OwotICAgIHNldFR5cGUobV90eXBlLCBlYyk7Ci0KLSAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFs
d2F5cyBtb25vLgotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRo
aXMsIDEpKSk7Ci0KLSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLU9zY2lsbGF0b3I6On5Pc2NpbGxh
dG9yKCkKLXsKLSAgICB1bmluaXRpYWxpemUoKTsKLX0KLQotdm9pZCBPc2NpbGxhdG9yOjpzZXRU
eXBlKHVuc2lnbmVkIHNob3J0IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFdhdmVU
YWJsZSogd2F2ZVRhYmxlID0gMDsKLSAgICBmbG9hdCBzYW1wbGVSYXRlID0gdGhpcy0+c2FtcGxl
UmF0ZSgpOwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTSU5FOgotICAgICAgICBp
ZiAoIXNfd2F2ZVRhYmxlU2luZSkKLSAgICAgICAgICAgIHNfd2F2ZVRhYmxlU2luZSA9IFdhdmVU
YWJsZTo6Y3JlYXRlU2luZShzYW1wbGVSYXRlKS5sZWFrUmVmKCk7Ci0gICAgICAgIHdhdmVUYWJs
ZSA9IHNfd2F2ZVRhYmxlU2luZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTUVVBUkU6Ci0g
ICAgICAgIGlmICghc193YXZlVGFibGVTcXVhcmUpCi0gICAgICAgICAgICBzX3dhdmVUYWJsZVNx
dWFyZSA9IFdhdmVUYWJsZTo6Y3JlYXRlU3F1YXJlKHNhbXBsZVJhdGUpLmxlYWtSZWYoKTsKLSAg
ICAgICAgd2F2ZVRhYmxlID0gc193YXZlVGFibGVTcXVhcmU7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgU0FXVE9PVEg6Ci0gICAgICAgIGlmICghc193YXZlVGFibGVTYXd0b290aCkKLSAgICAg
ICAgICAgIHNfd2F2ZVRhYmxlU2F3dG9vdGggPSBXYXZlVGFibGU6OmNyZWF0ZVNhd3Rvb3RoKHNh
bXBsZVJhdGUpLmxlYWtSZWYoKTsKLSAgICAgICAgd2F2ZVRhYmxlID0gc193YXZlVGFibGVTYXd0
b290aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUUklBTkdMRToKLSAgICAgICAgaWYgKCFz
X3dhdmVUYWJsZVRyaWFuZ2xlKQotICAgICAgICAgICAgc193YXZlVGFibGVUcmlhbmdsZSA9IFdh
dmVUYWJsZTo6Y3JlYXRlVHJpYW5nbGUoc2FtcGxlUmF0ZSkubGVha1JlZigpOwotICAgICAgICB3
YXZlVGFibGUgPSBzX3dhdmVUYWJsZVRyaWFuZ2xlOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENVU1RPTToKLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBUaHJvdyBleGNlcHRpb24gZm9yIGlu
dmFsaWQgdHlwZXMsIGluY2x1ZGluZyBDVVNUT00gc2luY2Ugc2V0V2F2ZVRhYmxlKCkgbWV0aG9k
IG11c3QgYmUKLSAgICAgICAgLy8gY2FsbGVkIGV4cGxpY2l0bHkuCi0gICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzZXRXYXZlVGFi
bGUod2F2ZVRhYmxlKTsKLSAgICBtX3R5cGUgPSB0eXBlOwotfQotCi1ib29sIE9zY2lsbGF0b3I6
OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlUGhhc2VJbmNyZW1lbnRzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCi17Ci0gICAgYm9vbCBpc0dvb2QgPSBmcmFtZXNUb1Byb2Nlc3MgPD0gbV9waGFzZUlu
Y3JlbWVudHMuc2l6ZSgpICYmIGZyYW1lc1RvUHJvY2VzcyA8PSBtX2RldHVuZVZhbHVlcy5zaXpl
KCk7Ci0gICAgQVNTRVJUKGlzR29vZCk7Ci0gICAgaWYgKCFpc0dvb2QpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChtX2ZpcnN0UmVuZGVyKSB7Ci0gICAgICAgIG1fZmlyc3RSZW5k
ZXIgPSBmYWxzZTsKLSAgICAgICAgbV9mcmVxdWVuY3ktPnJlc2V0U21vb3RoZWRWYWx1ZSgpOwot
ICAgICAgICBtX2RldHVuZS0+cmVzZXRTbW9vdGhlZFZhbHVlKCk7Ci0gICAgfQotCi0gICAgYm9v
bCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcyA9IGZhbHNlOwotICAgIGJvb2wgaGFzRnJlcXVlbmN5
Q2hhbmdlcyA9IGZhbHNlOwotICAgIGZsb2F0KiBwaGFzZUluY3JlbWVudHMgPSBtX3BoYXNlSW5j
cmVtZW50cy5kYXRhKCk7Ci0KLSAgICBmbG9hdCBmaW5hbFNjYWxlID0gbV93YXZlVGFibGUtPnJh
dGVTY2FsZSgpOwotCi0gICAgaWYgKG1fZnJlcXVlbmN5LT5oYXNTYW1wbGVBY2N1cmF0ZVZhbHVl
cygpKSB7Ci0gICAgICAgIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzID0gdHJ1ZTsKLSAgICAgICAg
aGFzRnJlcXVlbmN5Q2hhbmdlcyA9IHRydWU7Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBzYW1wbGUt
YWNjdXJhdGUgZnJlcXVlbmN5IHZhbHVlcyBhbmQgY29udmVydCB0byBwaGFzZSBpbmNyZW1lbnRz
LgotICAgICAgICAvLyBUaGV5IHdpbGwgYmUgY29udmVydGVkIHRvIHBoYXNlIGluY3JlbWVudHMg
YmVsb3cuCi0gICAgICAgIG1fZnJlcXVlbmN5LT5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVl
cyhwaGFzZUluY3JlbWVudHMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gSGFuZGxlIG9yZGluYXJ5IHBhcmFtZXRlciBzbW9vdGhpbmcvZGUtemlwcGVyaW5nIGlm
IHRoZXJlIGFyZSBubyBzY2hlZHVsZWQgY2hhbmdlcy4KLSAgICAgICAgbV9mcmVxdWVuY3ktPnNt
b290aCgpOwotICAgICAgICBmbG9hdCBmcmVxdWVuY3kgPSBtX2ZyZXF1ZW5jeS0+c21vb3RoZWRW
YWx1ZSgpOwotICAgICAgICBmaW5hbFNjYWxlICo9IGZyZXF1ZW5jeTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9kZXR1bmUtPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkpIHsKLSAgICAgICAgaGFzU2Ft
cGxlQWNjdXJhdGVWYWx1ZXMgPSB0cnVlOwotCi0gICAgICAgIC8vIEdldCB0aGUgc2FtcGxlLWFj
Y3VyYXRlIGRldHVuZSB2YWx1ZXMuCi0gICAgICAgIGZsb2F0KiBkZXR1bmVWYWx1ZXMgPSBoYXNG
cmVxdWVuY3lDaGFuZ2VzID8gbV9kZXR1bmVWYWx1ZXMuZGF0YSgpIDogcGhhc2VJbmNyZW1lbnRz
OwotICAgICAgICBtX2RldHVuZS0+Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMoZGV0dW5l
VmFsdWVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgICAgIC8vIENvbnZlcnQgZnJvbSBjZW50
cyB0byByYXRlIHNjYWxhci4KLSAgICAgICAgZmxvYXQgayA9IDEuMCAvIDEyMDA7Ci0gICAgICAg
IHZzbXVsKGRldHVuZVZhbHVlcywgMSwgJmssIGRldHVuZVZhbHVlcywgMSwgZnJhbWVzVG9Qcm9j
ZXNzKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvUHJvY2Vzczsg
KytpKQotICAgICAgICAgICAgZGV0dW5lVmFsdWVzW2ldID0gcG93ZigyLCBkZXR1bmVWYWx1ZXNb
aV0pOyAvLyBGSVhNRTogY29udmVydGluZyB0byBleHBmKCkgd2lsbCBiZSBmYXN0ZXIuCi0KLSAg
ICAgICAgaWYgKGhhc0ZyZXF1ZW5jeUNoYW5nZXMpIHsKLSAgICAgICAgICAgIC8vIE11bHRpcGx5
IGZyZXF1ZW5jaWVzIGJ5IGRldHVuZSBzY2FsaW5ncy4KLSAgICAgICAgICAgIHZtdWwoZGV0dW5l
VmFsdWVzLCAxLCBwaGFzZUluY3JlbWVudHMsIDEsIHBoYXNlSW5jcmVtZW50cywgMSwgZnJhbWVz
VG9Qcm9jZXNzKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEhhbmRsZSBv
cmRpbmFyeSBwYXJhbWV0ZXIgc21vb3RoaW5nL2RlLXppcHBlcmluZyBpZiB0aGVyZSBhcmUgbm8g
c2NoZWR1bGVkIGNoYW5nZXMuCi0gICAgICAgIG1fZGV0dW5lLT5zbW9vdGgoKTsKLSAgICAgICAg
ZmxvYXQgZGV0dW5lID0gbV9kZXR1bmUtPnNtb290aGVkVmFsdWUoKTsKLSAgICAgICAgZmxvYXQg
ZGV0dW5lU2NhbGUgPSBwb3dmKDIsIGRldHVuZSAvIDEyMDApOwotICAgICAgICBmaW5hbFNjYWxl
ICo9IGRldHVuZVNjYWxlOwotICAgIH0KLQotICAgIGlmIChoYXNTYW1wbGVBY2N1cmF0ZVZhbHVl
cykgewotICAgICAgICAvLyBDb252ZXJ0IGZyb20gZnJlcXVlbmN5IHRvIHdhdmV0YWJsZSBpbmNy
ZW1lbnQuCi0gICAgICAgIHZzbXVsKHBoYXNlSW5jcmVtZW50cywgMSwgJmZpbmFsU2NhbGUsIHBo
YXNlSW5jcmVtZW50cywgMSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXM7Ci19Ci0KLXZvaWQgT3NjaWxsYXRvcjo6cHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRw
dXQoMCktPmJ1cygpOwotCi0gICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIW91dHB1dEJ1cy0+
bnVtYmVyT2ZDaGFubmVscygpKSB7Ci0gICAgICAgIG91dHB1dEJ1cy0+emVybygpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3BoYXNl
SW5jcmVtZW50cy5zaXplKCkpOwotICAgIGlmIChmcmFtZXNUb1Byb2Nlc3MgPiBtX3BoYXNlSW5j
cmVtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSBhdWRpbyB0aHJl
YWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSBjYWxsIHRyeUxvY2soKSBpbnN0ZWFk
LgotICAgIE11dGV4VHJ5TG9ja2VyIHRyeUxvY2tlcihtX3Byb2Nlc3NMb2NrKTsKLSAgICBpZiAo
IXRyeUxvY2tlci5sb2NrZWQoKSkgewotICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRyeUxvY2so
KSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB3YXZlLXRhYmxl
cy4KLSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBXZSBtdXN0IGFjY2VzcyBtX3dhdmVUYWJsZSBvbmx5IGluc2lkZSB0aGUgbG9jay4K
LSAgICBpZiAoIW1fd2F2ZVRhYmxlLmdldCgpKSB7Ci0gICAgICAgIG91dHB1dEJ1cy0+emVybygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2l6ZV90IHF1YW50dW1GcmFtZU9mZnNl
dDsKLSAgICBzaXplX3Qgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgdXBkYXRlU2No
ZWR1bGluZ0luZm8oZnJhbWVzVG9Qcm9jZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHB1dEJ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudHVtRnJhbWVPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzKTsKLQotICAg
IGlmICghbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzKSB7Ci0gICAgICAgIG91dHB1dEJ1cy0+emVy
bygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdW5zaWduZWQgd2F2ZVRhYmxlU2l6
ZSA9IG1fd2F2ZVRhYmxlLT53YXZlVGFibGVTaXplKCk7Ci0gICAgZG91YmxlIGludldhdmVUYWJs
ZVNpemUgPSAxLjAgLyB3YXZlVGFibGVTaXplOwotCi0gICAgZmxvYXQqIGRlc3RQID0gb3V0cHV0
QnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwotCi0gICAgQVNTRVJUKHF1YW50dW1GcmFt
ZU9mZnNldCA8PSBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgLy8gV2Uga2VlcCB2aXJ0dWFsUmVh
ZEluZGV4IGRvdWJsZS1wcmVjaXNpb24gc2luY2Ugd2UncmUgYWNjdW11bGF0aW5nIHZhbHVlcy4K
LSAgICBkb3VibGUgdmlydHVhbFJlYWRJbmRleCA9IG1fdmlydHVhbFJlYWRJbmRleDsKLQotICAg
IGZsb2F0IHJhdGVTY2FsZSA9IG1fd2F2ZVRhYmxlLT5yYXRlU2NhbGUoKTsKLSAgICBmbG9hdCBp
bnZSYXRlU2NhbGUgPSAxIC8gcmF0ZVNjYWxlOwotICAgIGJvb2wgaGFzU2FtcGxlQWNjdXJhdGVW
YWx1ZXMgPSBjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyhmcmFtZXNUb1By
b2Nlc3MpOwotCi0gICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKLSAgICBmbG9hdCogaGlnaGVyV2F2
ZURhdGEgPSAwOwotICAgIGZsb2F0KiBsb3dlcldhdmVEYXRhID0gMDsKLSAgICBmbG9hdCB0YWJs
ZUludGVycG9sYXRpb25GYWN0b3I7Ci0KLSAgICBpZiAoIWhhc1NhbXBsZUFjY3VyYXRlVmFsdWVz
KSB7Ci0gICAgICAgIGZyZXF1ZW5jeSA9IG1fZnJlcXVlbmN5LT5zbW9vdGhlZFZhbHVlKCk7Ci0g
ICAgICAgIGZsb2F0IGRldHVuZSA9IG1fZGV0dW5lLT5zbW9vdGhlZFZhbHVlKCk7Ci0gICAgICAg
IGZsb2F0IGRldHVuZVNjYWxlID0gcG93ZigyLCBkZXR1bmUgLyAxMjAwKTsKLSAgICAgICAgZnJl
cXVlbmN5ICo9IGRldHVuZVNjYWxlOwotICAgICAgICBtX3dhdmVUYWJsZS0+d2F2ZURhdGFGb3JG
dW5kYW1lbnRhbEZyZXF1ZW5jeShmcmVxdWVuY3ksIGxvd2VyV2F2ZURhdGEsIGhpZ2hlcldhdmVE
YXRhLCB0YWJsZUludGVycG9sYXRpb25GYWN0b3IpOwotICAgIH0KLQotICAgIGZsb2F0IGluY3Ig
PSBmcmVxdWVuY3kgKiByYXRlU2NhbGU7Ci0gICAgZmxvYXQqIHBoYXNlSW5jcmVtZW50cyA9IG1f
cGhhc2VJbmNyZW1lbnRzLmRhdGEoKTsKLQotICAgIHVuc2lnbmVkIHJlYWRJbmRleE1hc2sgPSB3
YXZlVGFibGVTaXplIC0gMTsKLQotICAgIC8vIFN0YXJ0IHJlbmRlcmluZyBhdCB0aGUgY29ycmVj
dCBvZmZzZXQuCi0gICAgZGVzdFAgKz0gcXVhbnR1bUZyYW1lT2Zmc2V0OwotICAgIGludCBuID0g
bm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgd2hpbGUgKG4tLSkgewotICAgICAgICB1
bnNpZ25lZCByZWFkSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlYWRJbmRl
eCk7Ci0gICAgICAgIHVuc2lnbmVkIHJlYWRJbmRleDIgPSByZWFkSW5kZXggKyAxOwotCi0gICAg
ICAgIC8vIENvbnRhaW4gd2l0aGluIHZhbGlkIHJhbmdlLgotICAgICAgICByZWFkSW5kZXggPSBy
ZWFkSW5kZXggJiByZWFkSW5kZXhNYXNrOwotICAgICAgICByZWFkSW5kZXgyID0gcmVhZEluZGV4
MiAmIHJlYWRJbmRleE1hc2s7Ci0KLSAgICAgICAgaWYgKGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVz
KSB7Ci0gICAgICAgICAgICBpbmNyID0gKnBoYXNlSW5jcmVtZW50cysrOwotCi0gICAgICAgICAg
ICBmcmVxdWVuY3kgPSBpbnZSYXRlU2NhbGUgKiBpbmNyOwotICAgICAgICAgICAgbV93YXZlVGFi
bGUtPndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koZnJlcXVlbmN5LCBsb3dlcldhdmVE
YXRhLCBoaWdoZXJXYXZlRGF0YSwgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZsb2F0IHNhbXBsZTFMb3dlciA9IGxvd2VyV2F2ZURhdGFbcmVhZEluZGV4
XTsKLSAgICAgICAgZmxvYXQgc2FtcGxlMkxvd2VyID0gbG93ZXJXYXZlRGF0YVtyZWFkSW5kZXgy
XTsKLSAgICAgICAgZmxvYXQgc2FtcGxlMUhpZ2hlciA9IGhpZ2hlcldhdmVEYXRhW3JlYWRJbmRl
eF07Ci0gICAgICAgIGZsb2F0IHNhbXBsZTJIaWdoZXIgPSBoaWdoZXJXYXZlRGF0YVtyZWFkSW5k
ZXgyXTsKLQotICAgICAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB3aXRoaW4gZWFjaCB0YWJs
ZSAobG93ZXIgYW5kIGhpZ2hlcikuCi0gICAgICAgIGZsb2F0IGludGVycG9sYXRpb25GYWN0b3Ig
PSBzdGF0aWNfY2FzdDxmbG9hdD4odmlydHVhbFJlYWRJbmRleCkgLSByZWFkSW5kZXg7Ci0gICAg
ICAgIGZsb2F0IHNhbXBsZUhpZ2hlciA9ICgxIC0gaW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1w
bGUxSGlnaGVyICsgaW50ZXJwb2xhdGlvbkZhY3RvciAqIHNhbXBsZTJIaWdoZXI7Ci0gICAgICAg
IGZsb2F0IHNhbXBsZUxvd2VyID0gKDEgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHNhbXBsZTFM
b3dlciArIGludGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGUyTG93ZXI7Ci0KLSAgICAgICAgLy8g
VGhlbiBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHRoZSB0d28gdGFibGVzLgotICAgICAgICBmbG9hdCBz
YW1wbGUgPSAoMSAtIHRhYmxlSW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGVIaWdoZXIgKyB0
YWJsZUludGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGVMb3dlcjsKLQotICAgICAgICAqZGVzdFAr
KyA9IHNhbXBsZTsKLQotICAgICAgICAvLyBJbmNyZW1lbnQgdmlydHVhbCByZWFkIGluZGV4IGFu
ZCB3cmFwIHZpcnR1YWxSZWFkSW5kZXggaW50byB0aGUgcmFuZ2UgMCAtPiB3YXZlVGFibGVTaXpl
LgotICAgICAgICB2aXJ0dWFsUmVhZEluZGV4ICs9IGluY3I7Ci0gICAgICAgIHZpcnR1YWxSZWFk
SW5kZXggLT0gZmxvb3IodmlydHVhbFJlYWRJbmRleCAqIGludldhdmVUYWJsZVNpemUpICogd2F2
ZVRhYmxlU2l6ZTsKLSAgICB9Ci0KLSAgICBtX3ZpcnR1YWxSZWFkSW5kZXggPSB2aXJ0dWFsUmVh
ZEluZGV4OwotCi0gICAgb3V0cHV0QnVzLT5jbGVhclNpbGVudEZsYWcoKTsKLX0KLQotdm9pZCBP
c2NpbGxhdG9yOjpyZXNldCgpCi17Ci0gICAgbV92aXJ0dWFsUmVhZEluZGV4ID0gMDsKLX0KLQot
dm9pZCBPc2NpbGxhdG9yOjpzZXRXYXZlVGFibGUoV2F2ZVRhYmxlKiB3YXZlVGFibGUpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdp
dGggcHJvY2VzcygpLgotICAgIE11dGV4TG9ja2VyIHByb2Nlc3NMb2NrZXIobV9wcm9jZXNzTG9j
ayk7Ci0gICAgbV93YXZlVGFibGUgPSB3YXZlVGFibGU7Ci0gICAgbV90eXBlID0gQ1VTVE9NOwot
fQotCi1ib29sIE9zY2lsbGF0b3I6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV93YXZl
VGFibGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGFjYWI5NTE1YzExNjZiYzJj
YWY0ZDI2M2E4YWJmMDdhZGE5NWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE9z
Y2lsbGF0b3JfaAotI2RlZmluZSBPc2NpbGxhdG9yX2gKLQotI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
Ci0jaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgotI2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0NvbnRleHQ7Ci1jbGFz
cyBXYXZlVGFibGU7Ci0KLS8vIE9zY2lsbGF0b3IgaXMgYW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBl
cmlvZGljIHdhdmVmb3Jtcy4KLQotY2xhc3MgT3NjaWxsYXRvciA6IHB1YmxpYyBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUgewotcHVibGljOgotICAgIC8vIFRoZSB3YXZlZm9ybSB0eXBlLgotICAg
IC8vIFRoZXNlIG11c3QgYmUgZGVmaW5lZCBhcyBpbiB0aGUgLmlkbCBmaWxlLgotICAgIGVudW0g
ewotICAgICAgICBTSU5FID0gMCwKLSAgICAgICAgU1FVQVJFID0gMSwKLSAgICAgICAgU0FXVE9P
VEggPSAyLAotICAgICAgICBUUklBTkdMRSA9IDMsCi0gICAgICAgIENVU1RPTSA9IDQKLSAgICB9
OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3NjaWxsYXRvcj4gY3JlYXRlKEF1ZGlvQ29udGV4
dCosIGZsb2F0IHNhbXBsZVJhdGUpOwotCi0gICAgdmlydHVhbCB+T3NjaWxsYXRvcigpOwotICAg
IAotICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCi0gICAgdW5zaWduZWQg
c2hvcnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZSh1
bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgQXVkaW9QYXJhbSogZnJlcXVl
bmN5KCkgeyByZXR1cm4gbV9mcmVxdWVuY3kuZ2V0KCk7IH0KLSAgICBBdWRpb1BhcmFtKiBkZXR1
bmUoKSB7IHJldHVybiBtX2RldHVuZS5nZXQoKTsgfQotCi0gICAgdm9pZCBzZXRXYXZlVGFibGUo
V2F2ZVRhYmxlKik7Ci0KLXByaXZhdGU6Ci0gICAgT3NjaWxsYXRvcihBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgc2Ft
cGxlLWFjY3VyYXRlIHRpbWVsaW5lIHBhcmFtZXRlciBjaGFuZ2VzLgotICAgIGJvb2wgY2FsY3Vs
YXRlU2FtcGxlQWNjdXJhdGVQaGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgcHJvcGFnYXRlc1NpbGVuY2UoKSBjb25zdCBPVkVSUklERTsK
LQotICAgIC8vIE9uZSBvZiB0aGUgd2F2ZWZvcm0gdHlwZXMgZGVmaW5lZCBpbiB0aGUgZW51bS4K
LSAgICB1bnNpZ25lZCBzaG9ydCBtX3R5cGU7Ci0gICAgCi0gICAgLy8gRnJlcXVlbmN5IHZhbHVl
IGluIEhlcnR6LgotICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2ZyZXF1ZW5jeTsKLQotICAgIC8v
IERldHVuZSB2YWx1ZSAoZGV2aWF0aW5nIGZyb20gdGhlIGZyZXF1ZW5jeSkgaW4gQ2VudHMuCi0g
ICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGV0dW5lOwotCi0gICAgYm9vbCBtX2ZpcnN0UmVuZGVy
OwotCi0gICAgLy8gbV92aXJ0dWFsUmVhZEluZGV4IGlzIGEgc2FtcGxlLWZyYW1lIGluZGV4IGlu
dG8gb3VyIGJ1ZmZlciByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24u
Ci0gICAgLy8gU2luY2UgaXQncyBmbG9hdGluZy1wb2ludCwgaXQgaGFzIHN1Yi1zYW1wbGUgYWNj
dXJhY3kuCi0gICAgZG91YmxlIG1fdmlydHVhbFJlYWRJbmRleDsKLQotICAgIC8vIFRoaXMgc3lu
Y2hyb25pemVzIHByb2Nlc3MoKS4KLSAgICBtdXRhYmxlIE11dGV4IG1fcHJvY2Vzc0xvY2s7Ci0K
LSAgICAvLyBTdG9yZXMgc2FtcGxlLWFjY3VyYXRlIHZhbHVlcyBjYWxjdWxhdGVkIGFjY29yZGlu
ZyB0byBmcmVxdWVuY3kgYW5kIGRldHVuZS4KLSAgICBBdWRpb0Zsb2F0QXJyYXkgbV9waGFzZUlu
Y3JlbWVudHM7Ci0gICAgQXVkaW9GbG9hdEFycmF5IG1fZGV0dW5lVmFsdWVzOwotICAgIAotICAg
IFJlZlB0cjxXYXZlVGFibGU+IG1fd2F2ZVRhYmxlOwotCi0gICAgLy8gQ2FjaGUgdGhlIHdhdmUg
dGFibGVzIGZvciBkaWZmZXJlbnQgd2F2ZWZvcm0gdHlwZXMsIGV4Y2VwdCBDVVNUT00uCi0gICAg
c3RhdGljIFdhdmVUYWJsZSogc193YXZlVGFibGVTaW5lOwotICAgIHN0YXRpYyBXYXZlVGFibGUq
IHNfd2F2ZVRhYmxlU3F1YXJlOwotICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxlU2F3
dG9vdGg7Ci0gICAgc3RhdGljIFdhdmVUYWJsZSogc193YXZlVGFibGVUcmlhbmdsZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE9zY2lsbGF0b3JfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5pZGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU0OTA1ODVmMjc0M2I0MDIyZjJjYjA4M2ZhMjg0NWJkMTQyYmYz
OTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBPc2NpbGxhdG9yIGlzIGFuIGF1ZGlvIGdl
bmVyYXRvciBvZiBwZXJpb2RpYyB3YXZlZm9ybXMuCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FV
RElPLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0Ci1dIGludGVyZmFjZSBPc2NpbGxhdG9yIDog
QXVkaW9Tb3VyY2VOb2RlIHsKLQotICAgIC8vIFR5cGUgY29uc3RhbnRzLgotICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFNJTkUgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNRVUFSRSA9
IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0FXVE9PVEggPSAyOwotICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFRSSUFOR0xFID0gMzsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDVVNU
T00gPSA0OwotCi0gICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHR5cGUKLSAgICAgICAgc2V0
dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOyAgICAgICAgCi0KLSAgICAvLyBQbGF5YmFjayBzdGF0
ZSBjb25zdGFudHMuCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RBVEUg
PSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7Ci0gICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgRklOSVNIRURfU1RBVEUgPSAzOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIHNob3J0IHBsYXliYWNrU3RhdGU7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9QYXJhbSBmcmVxdWVuY3k7IC8vIGluIEhlcnR6Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvUGFyYW0gZGV0dW5lOyAvLyBpbiBDZW50cwotCi0gICAgdm9pZCBzdGFydChpbiBkb3VibGUg
d2hlbik7Ci0gICAgdm9pZCBzdG9wKGluIGRvdWJsZSB3aGVuKTsKLQotI2lmIGRlZmluZWQoRU5B
QkxFX0xFR0FDWV9XRUJfQVVESU8pICYmIEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPCi0gICAgdm9p
ZCBub3RlT24oaW4gZG91YmxlIHdoZW4pOwotICAgIHZvaWQgbm90ZU9mZihpbiBkb3VibGUgd2hl
bik7Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0V2F2ZVRhYmxlKGluIFdhdmVUYWJsZSB3YXZlVGFi
bGUpOwotCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDlmODM3NjE3NGMyOTVhNWFjNDExYTM3ZWM0N2Y5
Nzg3ODcwMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTAsMCArMSwzMjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAi
T3NjaWxsYXRvck5vZGUuaCIKKworI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKKyNpbmNsdWRlICJX
YXZlVGFibGUuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1
c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKKworV2F2ZVRhYmxlKiBPc2NpbGxhdG9yTm9kZTo6
c193YXZlVGFibGVTaW5lID0gMDsKK1dhdmVUYWJsZSogT3NjaWxsYXRvck5vZGU6OnNfd2F2ZVRh
YmxlU3F1YXJlID0gMDsKK1dhdmVUYWJsZSogT3NjaWxsYXRvck5vZGU6OnNfd2F2ZVRhYmxlU2F3
dG9vdGggPSAwOworV2F2ZVRhYmxlKiBPc2NpbGxhdG9yTm9kZTo6c193YXZlVGFibGVUcmlhbmds
ZSA9IDA7CisKK1Bhc3NSZWZQdHI8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVh
dGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworfQor
CitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCisgICAgLCBtX3R5cGUoU0lORSkKKyAgICAsIG1fZmlyc3RSZW5kZXIodHJ1
ZSkKKyAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQorICAgICwgbV9waGFzZUluY3JlbWVudHMo
QXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKQorICAgICwgbV9kZXR1bmVWYWx1ZXMo
QXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKQoreworICAgIHNldE5vZGVUeXBlKE5v
ZGVUeXBlT3NjaWxsYXRvcik7CisKKyAgICAvLyBVc2UgbXVzaWNhbCBwaXRjaCBzdGFuZGFyZCBB
NDQwIGFzIGEgZGVmYXVsdC4KKyAgICBtX2ZyZXF1ZW5jeSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShj
b250ZXh0LCAiZnJlcXVlbmN5IiwgNDQwLCAwLCAxMDAwMDApOworICAgIC8vIERlZmF1bHQgdG8g
bm8gZGV0dW5pbmcuCisgICAgbV9kZXR1bmUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
ImRldHVuZSIsIDAsIC00ODAwLCA0ODAwKTsKKworICAgIC8vIFNldHMgdXAgZGVmYXVsdCB3YXZl
dGFibGUuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBzZXRUeXBlKG1fdHlwZSwgZWMpOwor
CisgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KKyAgICBhZGRPdXRwdXQoYWRv
cHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworCisgICAgaW5pdGlhbGl6ZSgp
OworfQorCitPc2NpbGxhdG9yTm9kZTo6fk9zY2lsbGF0b3JOb2RlKCkKK3sKKyAgICB1bmluaXRp
YWxpemUoKTsKK30KKwordm9pZCBPc2NpbGxhdG9yTm9kZTo6c2V0VHlwZSh1bnNpZ25lZCBzaG9y
dCB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBXYXZlVGFibGUqIHdhdmVUYWJsZSA9
IDA7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKKworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0lORToKKyAgICAgICAgaWYgKCFzX3dhdmVUYWJsZVNp
bmUpCisgICAgICAgICAgICBzX3dhdmVUYWJsZVNpbmUgPSBXYXZlVGFibGU6OmNyZWF0ZVNpbmUo
c2FtcGxlUmF0ZSkubGVha1JlZigpOworICAgICAgICB3YXZlVGFibGUgPSBzX3dhdmVUYWJsZVNp
bmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1FVQVJFOgorICAgICAgICBpZiAoIXNfd2F2
ZVRhYmxlU3F1YXJlKQorICAgICAgICAgICAgc193YXZlVGFibGVTcXVhcmUgPSBXYXZlVGFibGU6
OmNyZWF0ZVNxdWFyZShzYW1wbGVSYXRlKS5sZWFrUmVmKCk7CisgICAgICAgIHdhdmVUYWJsZSA9
IHNfd2F2ZVRhYmxlU3F1YXJlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNBV1RPT1RIOgor
ICAgICAgICBpZiAoIXNfd2F2ZVRhYmxlU2F3dG9vdGgpCisgICAgICAgICAgICBzX3dhdmVUYWJs
ZVNhd3Rvb3RoID0gV2F2ZVRhYmxlOjpjcmVhdGVTYXd0b290aChzYW1wbGVSYXRlKS5sZWFrUmVm
KCk7CisgICAgICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRhYmxlU2F3dG9vdGg7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVFJJQU5HTEU6CisgICAgICAgIGlmICghc193YXZlVGFibGVUcmlhbmds
ZSkKKyAgICAgICAgICAgIHNfd2F2ZVRhYmxlVHJpYW5nbGUgPSBXYXZlVGFibGU6OmNyZWF0ZVRy
aWFuZ2xlKHNhbXBsZVJhdGUpLmxlYWtSZWYoKTsKKyAgICAgICAgd2F2ZVRhYmxlID0gc193YXZl
VGFibGVUcmlhbmdsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDVVNUT006CisgICAgZGVm
YXVsdDoKKyAgICAgICAgLy8gVGhyb3cgZXhjZXB0aW9uIGZvciBpbnZhbGlkIHR5cGVzLCBpbmNs
dWRpbmcgQ1VTVE9NIHNpbmNlIHNldFdhdmVUYWJsZSgpIG1ldGhvZCBtdXN0IGJlCisgICAgICAg
IC8vIGNhbGxlZCBleHBsaWNpdGx5LgorICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0V2F2ZVRhYmxlKHdhdmVUYWJsZSk7Cisg
ICAgbV90eXBlID0gdHlwZTsKK30KKworYm9vbCBPc2NpbGxhdG9yTm9kZTo6Y2FsY3VsYXRlU2Ft
cGxlQWNjdXJhdGVQaGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAg
ICBib29sIGlzR29vZCA9IGZyYW1lc1RvUHJvY2VzcyA8PSBtX3BoYXNlSW5jcmVtZW50cy5zaXpl
KCkgJiYgZnJhbWVzVG9Qcm9jZXNzIDw9IG1fZGV0dW5lVmFsdWVzLnNpemUoKTsKKyAgICBBU1NF
UlQoaXNHb29kKTsKKyAgICBpZiAoIWlzR29vZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKG1fZmlyc3RSZW5kZXIpIHsKKyAgICAgICAgbV9maXJzdFJlbmRlciA9IGZhbHNlOwor
ICAgICAgICBtX2ZyZXF1ZW5jeS0+cmVzZXRTbW9vdGhlZFZhbHVlKCk7CisgICAgICAgIG1fZGV0
dW5lLT5yZXNldFNtb290aGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICBib29sIGhhc1NhbXBsZUFj
Y3VyYXRlVmFsdWVzID0gZmFsc2U7CisgICAgYm9vbCBoYXNGcmVxdWVuY3lDaGFuZ2VzID0gZmFs
c2U7CisgICAgZmxvYXQqIHBoYXNlSW5jcmVtZW50cyA9IG1fcGhhc2VJbmNyZW1lbnRzLmRhdGEo
KTsKKworICAgIGZsb2F0IGZpbmFsU2NhbGUgPSBtX3dhdmVUYWJsZS0+cmF0ZVNjYWxlKCk7CisK
KyAgICBpZiAobV9mcmVxdWVuY3ktPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkpIHsKKyAgICAg
ICAgaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMgPSB0cnVlOworICAgICAgICBoYXNGcmVxdWVuY3lD
aGFuZ2VzID0gdHJ1ZTsKKworICAgICAgICAvLyBHZXQgdGhlIHNhbXBsZS1hY2N1cmF0ZSBmcmVx
dWVuY3kgdmFsdWVzIGFuZCBjb252ZXJ0IHRvIHBoYXNlIGluY3JlbWVudHMuCisgICAgICAgIC8v
IFRoZXkgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gcGhhc2UgaW5jcmVtZW50cyBiZWxvdy4KKyAgICAg
ICAgbV9mcmVxdWVuY3ktPmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKHBoYXNlSW5jcmVt
ZW50cywgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBIYW5kbGUg
b3JkaW5hcnkgcGFyYW1ldGVyIHNtb290aGluZy9kZS16aXBwZXJpbmcgaWYgdGhlcmUgYXJlIG5v
IHNjaGVkdWxlZCBjaGFuZ2VzLgorICAgICAgICBtX2ZyZXF1ZW5jeS0+c21vb3RoKCk7CisgICAg
ICAgIGZsb2F0IGZyZXF1ZW5jeSA9IG1fZnJlcXVlbmN5LT5zbW9vdGhlZFZhbHVlKCk7CisgICAg
ICAgIGZpbmFsU2NhbGUgKj0gZnJlcXVlbmN5OworICAgIH0KKworICAgIGlmIChtX2RldHVuZS0+
aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMoKSkgeworICAgICAgICBoYXNTYW1wbGVBY2N1cmF0ZVZh
bHVlcyA9IHRydWU7CisKKyAgICAgICAgLy8gR2V0IHRoZSBzYW1wbGUtYWNjdXJhdGUgZGV0dW5l
IHZhbHVlcy4KKyAgICAgICAgZmxvYXQqIGRldHVuZVZhbHVlcyA9IGhhc0ZyZXF1ZW5jeUNoYW5n
ZXMgPyBtX2RldHVuZVZhbHVlcy5kYXRhKCkgOiBwaGFzZUluY3JlbWVudHM7CisgICAgICAgIG1f
ZGV0dW5lLT5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhkZXR1bmVWYWx1ZXMsIGZyYW1l
c1RvUHJvY2Vzcyk7CisKKyAgICAgICAgLy8gQ29udmVydCBmcm9tIGNlbnRzIHRvIHJhdGUgc2Nh
bGFyLgorICAgICAgICBmbG9hdCBrID0gMS4wIC8gMTIwMDsKKyAgICAgICAgdnNtdWwoZGV0dW5l
VmFsdWVzLCAxLCAmaywgZGV0dW5lVmFsdWVzLCAxLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzVG9Qcm9jZXNzOyArK2kpCisgICAgICAg
ICAgICBkZXR1bmVWYWx1ZXNbaV0gPSBwb3dmKDIsIGRldHVuZVZhbHVlc1tpXSk7IC8vIEZJWE1F
OiBjb252ZXJ0aW5nIHRvIGV4cGYoKSB3aWxsIGJlIGZhc3Rlci4KKworICAgICAgICBpZiAoaGFz
RnJlcXVlbmN5Q2hhbmdlcykgeworICAgICAgICAgICAgLy8gTXVsdGlwbHkgZnJlcXVlbmNpZXMg
YnkgZGV0dW5lIHNjYWxpbmdzLgorICAgICAgICAgICAgdm11bChkZXR1bmVWYWx1ZXMsIDEsIHBo
YXNlSW5jcmVtZW50cywgMSwgcGhhc2VJbmNyZW1lbnRzLCAxLCBmcmFtZXNUb1Byb2Nlc3MpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSGFuZGxlIG9yZGluYXJ5IHBhcmFt
ZXRlciBzbW9vdGhpbmcvZGUtemlwcGVyaW5nIGlmIHRoZXJlIGFyZSBubyBzY2hlZHVsZWQgY2hh
bmdlcy4KKyAgICAgICAgbV9kZXR1bmUtPnNtb290aCgpOworICAgICAgICBmbG9hdCBkZXR1bmUg
PSBtX2RldHVuZS0+c21vb3RoZWRWYWx1ZSgpOworICAgICAgICBmbG9hdCBkZXR1bmVTY2FsZSA9
IHBvd2YoMiwgZGV0dW5lIC8gMTIwMCk7CisgICAgICAgIGZpbmFsU2NhbGUgKj0gZGV0dW5lU2Nh
bGU7CisgICAgfQorCisgICAgaWYgKGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKSB7CisgICAgICAg
IC8vIENvbnZlcnQgZnJvbSBmcmVxdWVuY3kgdG8gd2F2ZXRhYmxlIGluY3JlbWVudC4KKyAgICAg
ICAgdnNtdWwocGhhc2VJbmNyZW1lbnRzLCAxLCAmZmluYWxTY2FsZSwgcGhhc2VJbmNyZW1lbnRz
LCAxLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIH0KKworICAgIHJldHVybiBoYXNTYW1wbGVBY2N1
cmF0ZVZhbHVlczsKK30KKwordm9pZCBPc2NpbGxhdG9yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1
cygpOworCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIW91dHB1dEJ1cy0+bnVtYmVyT2ZD
aGFubmVscygpKSB7CisgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3BoYXNlSW5jcmVtZW50
cy5zaXplKCkpOworICAgIGlmIChmcmFtZXNUb1Byb2Nlc3MgPiBtX3BoYXNlSW5jcmVtZW50cy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3Qg
YmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSBjYWxsIHRyeUxvY2soKSBpbnN0ZWFkLgorICAgIE11
dGV4VHJ5TG9ja2VyIHRyeUxvY2tlcihtX3Byb2Nlc3NMb2NrKTsKKyAgICBpZiAoIXRyeUxvY2tl
ci5sb2NrZWQoKSkgeworICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRyeUxvY2soKSBmYWlsZWQu
IFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB3YXZlLXRhYmxlcy4KKyAgICAg
ICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBX
ZSBtdXN0IGFjY2VzcyBtX3dhdmVUYWJsZSBvbmx5IGluc2lkZSB0aGUgbG9jay4KKyAgICBpZiAo
IW1fd2F2ZVRhYmxlLmdldCgpKSB7CisgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IHF1YW50dW1GcmFtZU9mZnNldDsKKyAgICBz
aXplX3Qgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzOworCisgICAgdXBkYXRlU2NoZWR1bGluZ0lu
Zm8oZnJhbWVzVG9Qcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEJ1cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudHVtRnJhbWVPZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIGlmICghbm9u
U2lsZW50RnJhbWVzVG9Qcm9jZXNzKSB7CisgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5zaWduZWQgd2F2ZVRhYmxlU2l6ZSA9IG1fd2F2
ZVRhYmxlLT53YXZlVGFibGVTaXplKCk7CisgICAgZG91YmxlIGludldhdmVUYWJsZVNpemUgPSAx
LjAgLyB3YXZlVGFibGVTaXplOworCisgICAgZmxvYXQqIGRlc3RQID0gb3V0cHV0QnVzLT5jaGFu
bmVsKDApLT5tdXRhYmxlRGF0YSgpOworCisgICAgQVNTRVJUKHF1YW50dW1GcmFtZU9mZnNldCA8
PSBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gV2Uga2VlcCB2aXJ0dWFsUmVhZEluZGV4IGRv
dWJsZS1wcmVjaXNpb24gc2luY2Ugd2UncmUgYWNjdW11bGF0aW5nIHZhbHVlcy4KKyAgICBkb3Vi
bGUgdmlydHVhbFJlYWRJbmRleCA9IG1fdmlydHVhbFJlYWRJbmRleDsKKworICAgIGZsb2F0IHJh
dGVTY2FsZSA9IG1fd2F2ZVRhYmxlLT5yYXRlU2NhbGUoKTsKKyAgICBmbG9hdCBpbnZSYXRlU2Nh
bGUgPSAxIC8gcmF0ZVNjYWxlOworICAgIGJvb2wgaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMgPSBj
YWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyhmcmFtZXNUb1Byb2Nlc3MpOwor
CisgICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKKyAgICBmbG9hdCogaGlnaGVyV2F2ZURhdGEgPSAw
OworICAgIGZsb2F0KiBsb3dlcldhdmVEYXRhID0gMDsKKyAgICBmbG9hdCB0YWJsZUludGVycG9s
YXRpb25GYWN0b3I7CisKKyAgICBpZiAoIWhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKSB7CisgICAg
ICAgIGZyZXF1ZW5jeSA9IG1fZnJlcXVlbmN5LT5zbW9vdGhlZFZhbHVlKCk7CisgICAgICAgIGZs
b2F0IGRldHVuZSA9IG1fZGV0dW5lLT5zbW9vdGhlZFZhbHVlKCk7CisgICAgICAgIGZsb2F0IGRl
dHVuZVNjYWxlID0gcG93ZigyLCBkZXR1bmUgLyAxMjAwKTsKKyAgICAgICAgZnJlcXVlbmN5ICo9
IGRldHVuZVNjYWxlOworICAgICAgICBtX3dhdmVUYWJsZS0+d2F2ZURhdGFGb3JGdW5kYW1lbnRh
bEZyZXF1ZW5jeShmcmVxdWVuY3ksIGxvd2VyV2F2ZURhdGEsIGhpZ2hlcldhdmVEYXRhLCB0YWJs
ZUludGVycG9sYXRpb25GYWN0b3IpOworICAgIH0KKworICAgIGZsb2F0IGluY3IgPSBmcmVxdWVu
Y3kgKiByYXRlU2NhbGU7CisgICAgZmxvYXQqIHBoYXNlSW5jcmVtZW50cyA9IG1fcGhhc2VJbmNy
ZW1lbnRzLmRhdGEoKTsKKworICAgIHVuc2lnbmVkIHJlYWRJbmRleE1hc2sgPSB3YXZlVGFibGVT
aXplIC0gMTsKKworICAgIC8vIFN0YXJ0IHJlbmRlcmluZyBhdCB0aGUgY29ycmVjdCBvZmZzZXQu
CisgICAgZGVzdFAgKz0gcXVhbnR1bUZyYW1lT2Zmc2V0OworICAgIGludCBuID0gbm9uU2lsZW50
RnJhbWVzVG9Qcm9jZXNzOworCisgICAgd2hpbGUgKG4tLSkgeworICAgICAgICB1bnNpZ25lZCBy
ZWFkSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlYWRJbmRleCk7CisgICAg
ICAgIHVuc2lnbmVkIHJlYWRJbmRleDIgPSByZWFkSW5kZXggKyAxOworCisgICAgICAgIC8vIENv
bnRhaW4gd2l0aGluIHZhbGlkIHJhbmdlLgorICAgICAgICByZWFkSW5kZXggPSByZWFkSW5kZXgg
JiByZWFkSW5kZXhNYXNrOworICAgICAgICByZWFkSW5kZXgyID0gcmVhZEluZGV4MiAmIHJlYWRJ
bmRleE1hc2s7CisKKyAgICAgICAgaWYgKGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKSB7CisgICAg
ICAgICAgICBpbmNyID0gKnBoYXNlSW5jcmVtZW50cysrOworCisgICAgICAgICAgICBmcmVxdWVu
Y3kgPSBpbnZSYXRlU2NhbGUgKiBpbmNyOworICAgICAgICAgICAgbV93YXZlVGFibGUtPndhdmVE
YXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koZnJlcXVlbmN5LCBsb3dlcldhdmVEYXRhLCBoaWdo
ZXJXYXZlRGF0YSwgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZsb2F0IHNhbXBsZTFMb3dlciA9IGxvd2VyV2F2ZURhdGFbcmVhZEluZGV4XTsKKyAgICAg
ICAgZmxvYXQgc2FtcGxlMkxvd2VyID0gbG93ZXJXYXZlRGF0YVtyZWFkSW5kZXgyXTsKKyAgICAg
ICAgZmxvYXQgc2FtcGxlMUhpZ2hlciA9IGhpZ2hlcldhdmVEYXRhW3JlYWRJbmRleF07CisgICAg
ICAgIGZsb2F0IHNhbXBsZTJIaWdoZXIgPSBoaWdoZXJXYXZlRGF0YVtyZWFkSW5kZXgyXTsKKwor
ICAgICAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB3aXRoaW4gZWFjaCB0YWJsZSAobG93ZXIg
YW5kIGhpZ2hlcikuCisgICAgICAgIGZsb2F0IGludGVycG9sYXRpb25GYWN0b3IgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4odmlydHVhbFJlYWRJbmRleCkgLSByZWFkSW5kZXg7CisgICAgICAgIGZsb2F0
IHNhbXBsZUhpZ2hlciA9ICgxIC0gaW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGUxSGlnaGVy
ICsgaW50ZXJwb2xhdGlvbkZhY3RvciAqIHNhbXBsZTJIaWdoZXI7CisgICAgICAgIGZsb2F0IHNh
bXBsZUxvd2VyID0gKDEgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHNhbXBsZTFMb3dlciArIGlu
dGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGUyTG93ZXI7CisKKyAgICAgICAgLy8gVGhlbiBpbnRl
cnBvbGF0ZSBiZXR3ZWVuIHRoZSB0d28gdGFibGVzLgorICAgICAgICBmbG9hdCBzYW1wbGUgPSAo
MSAtIHRhYmxlSW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGVIaWdoZXIgKyB0YWJsZUludGVy
cG9sYXRpb25GYWN0b3IgKiBzYW1wbGVMb3dlcjsKKworICAgICAgICAqZGVzdFArKyA9IHNhbXBs
ZTsKKworICAgICAgICAvLyBJbmNyZW1lbnQgdmlydHVhbCByZWFkIGluZGV4IGFuZCB3cmFwIHZp
cnR1YWxSZWFkSW5kZXggaW50byB0aGUgcmFuZ2UgMCAtPiB3YXZlVGFibGVTaXplLgorICAgICAg
ICB2aXJ0dWFsUmVhZEluZGV4ICs9IGluY3I7CisgICAgICAgIHZpcnR1YWxSZWFkSW5kZXggLT0g
Zmxvb3IodmlydHVhbFJlYWRJbmRleCAqIGludldhdmVUYWJsZVNpemUpICogd2F2ZVRhYmxlU2l6
ZTsKKyAgICB9CisKKyAgICBtX3ZpcnR1YWxSZWFkSW5kZXggPSB2aXJ0dWFsUmVhZEluZGV4Owor
CisgICAgb3V0cHV0QnVzLT5jbGVhclNpbGVudEZsYWcoKTsKK30KKwordm9pZCBPc2NpbGxhdG9y
Tm9kZTo6cmVzZXQoKQoreworICAgIG1fdmlydHVhbFJlYWRJbmRleCA9IDA7Cit9CisKK3ZvaWQg
T3NjaWxsYXRvck5vZGU6OnNldFdhdmVUYWJsZShXYXZlVGFibGUqIHdhdmVUYWJsZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCisgICAgTXV0ZXhMb2NrZXIgcHJvY2Vzc0xvY2tlcihtX3Byb2Nlc3NMb2Nr
KTsKKyAgICBtX3dhdmVUYWJsZSA9IHdhdmVUYWJsZTsKKyAgICBtX3R5cGUgPSBDVVNUT007Cit9
CisKK2Jvb2wgT3NjaWxsYXRvck5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV93
YXZlVGFibGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ2YjE1MjM2MDhlMWRjMGI4YmY1MTA4Y2Q5
OTg5NTBmYjE3NzA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgT3NjaWxsYXRvck5vZGVfaAorI2RlZmluZSBPc2NpbGxhdG9yTm9kZV9oCisKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKKyNpbmNsdWRlICJB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9Db250ZXh0OworY2xhc3MgV2F2ZVRhYmxlOworCisvLyBPc2NpbGxhdG9yTm9kZSBpcyBh
biBhdWRpbyBnZW5lcmF0b3Igb2YgcGVyaW9kaWMgd2F2ZWZvcm1zLgorCitjbGFzcyBPc2NpbGxh
dG9yTm9kZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgeworcHVibGljOgorICAg
IC8vIFRoZSB3YXZlZm9ybSB0eXBlLgorICAgIC8vIFRoZXNlIG11c3QgYmUgZGVmaW5lZCBhcyBp
biB0aGUgLmlkbCBmaWxlLgorICAgIGVudW0geworICAgICAgICBTSU5FID0gMCwKKyAgICAgICAg
U1FVQVJFID0gMSwKKyAgICAgICAgU0FXVE9PVEggPSAyLAorICAgICAgICBUUklBTkdMRSA9IDMs
CisgICAgICAgIENVU1RPTSA9IDQKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8T3Nj
aWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKwor
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CisgICAgCisgICAgLy8gQXVkaW9Ob2RlCisg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmly
dHVhbCB2b2lkIHJlc2V0KCk7CisKKyAgICB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRp
b25Db2RlJik7CisKKyAgICBBdWRpb1BhcmFtKiBmcmVxdWVuY3koKSB7IHJldHVybiBtX2ZyZXF1
ZW5jeS5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGRldHVuZSgpIHsgcmV0dXJuIG1fZGV0dW5l
LmdldCgpOyB9CisKKyAgICB2b2lkIHNldFdhdmVUYWJsZShXYXZlVGFibGUqKTsKKworcHJpdmF0
ZToKKyAgICBPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgc2FtcGxlLWFjY3VyYXRlIHRpbWVs
aW5lIHBhcmFtZXRlciBjaGFuZ2VzLgorICAgIGJvb2wgY2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVQ
aGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgcHJvcGFnYXRlc1NpbGVuY2UoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIE9uZSBvZiB0
aGUgd2F2ZWZvcm0gdHlwZXMgZGVmaW5lZCBpbiB0aGUgZW51bS4KKyAgICB1bnNpZ25lZCBzaG9y
dCBtX3R5cGU7CisgICAgCisgICAgLy8gRnJlcXVlbmN5IHZhbHVlIGluIEhlcnR6LgorICAgIFJl
ZlB0cjxBdWRpb1BhcmFtPiBtX2ZyZXF1ZW5jeTsKKworICAgIC8vIERldHVuZSB2YWx1ZSAoZGV2
aWF0aW5nIGZyb20gdGhlIGZyZXF1ZW5jeSkgaW4gQ2VudHMuCisgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fZGV0dW5lOworCisgICAgYm9vbCBtX2ZpcnN0UmVuZGVyOworCisgICAgLy8gbV92aXJ0
dWFsUmVhZEluZGV4IGlzIGEgc2FtcGxlLWZyYW1lIGluZGV4IGludG8gb3VyIGJ1ZmZlciByZXBy
ZXNlbnRpbmcgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24uCisgICAgLy8gU2luY2UgaXQn
cyBmbG9hdGluZy1wb2ludCwgaXQgaGFzIHN1Yi1zYW1wbGUgYWNjdXJhY3kuCisgICAgZG91Ymxl
IG1fdmlydHVhbFJlYWRJbmRleDsKKworICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3Mo
KS4KKyAgICBtdXRhYmxlIE11dGV4IG1fcHJvY2Vzc0xvY2s7CisKKyAgICAvLyBTdG9yZXMgc2Ft
cGxlLWFjY3VyYXRlIHZhbHVlcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byBmcmVxdWVuY3kgYW5k
IGRldHVuZS4KKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9waGFzZUluY3JlbWVudHM7CisgICAgQXVk
aW9GbG9hdEFycmF5IG1fZGV0dW5lVmFsdWVzOworICAgIAorICAgIFJlZlB0cjxXYXZlVGFibGU+
IG1fd2F2ZVRhYmxlOworCisgICAgLy8gQ2FjaGUgdGhlIHdhdmUgdGFibGVzIGZvciBkaWZmZXJl
bnQgd2F2ZWZvcm0gdHlwZXMsIGV4Y2VwdCBDVVNUT00uCisgICAgc3RhdGljIFdhdmVUYWJsZSog
c193YXZlVGFibGVTaW5lOworICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxlU3F1YXJl
OworICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxlU2F3dG9vdGg7CisgICAgc3RhdGlj
IFdhdmVUYWJsZSogc193YXZlVGFibGVUcmlhbmdsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIE9zY2lsbGF0b3JOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlYzM3
NmUyZDMyOTRkODI4MDk1NWQ1N2M3NTUyNWM1NjA1YWY3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBPc2NpbGxhdG9yTm9kZSBpcyBhbiBhdWRpbyBnZW5l
cmF0b3Igb2YgcGVyaW9kaWMgd2F2ZWZvcm1zLgorWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJ
TywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBpbnRlcmZhY2UgT3NjaWxsYXRvck5vZGUg
OiBBdWRpb1NvdXJjZU5vZGUgeworCisgICAgLy8gVHlwZSBjb25zdGFudHMuCisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgU0lORSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1FVQVJF
ID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTQVdUT09USCA9IDI7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgVFJJQU5HTEUgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENV
U1RPTSA9IDQ7CisKKyAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgdHlwZQorICAgICAgICBz
ZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICAgICAgICAKKworICAgIC8vIFBsYXliYWNrIHN0
YXRlIGNvbnN0YW50cy4KKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTlNDSEVEVUxFRF9TVEFU
RSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0NIRURVTEVEX1NUQVRFID0gMTsKKyAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQTEFZSU5HX1NUQVRFID0gMjsKKyAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBGSU5JU0hFRF9TVEFURSA9IDM7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgc2hvcnQgcGxheWJhY2tTdGF0ZTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb1BhcmFtIGZyZXF1ZW5jeTsgLy8gaW4gSGVydHoKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9QYXJhbSBkZXR1bmU7IC8vIGluIENlbnRzCisKKyAgICB2b2lkIHN0YXJ0KGluIGRvdWJs
ZSB3aGVuKTsKKyAgICB2b2lkIHN0b3AoaW4gZG91YmxlIHdoZW4pOworCisjaWYgZGVmaW5lZChF
TkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJiYgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8KKyAgICB2
b2lkIG5vdGVPbihpbiBkb3VibGUgd2hlbik7CisgICAgdm9pZCBub3RlT2ZmKGluIGRvdWJsZSB3
aGVuKTsKKyNlbmRpZgorCisgICAgdm9pZCBzZXRXYXZlVGFibGUoaW4gV2F2ZVRhYmxlIHdhdmVU
YWJsZSk7CisKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRlODdkNWMyOTVhOTU3YTYzYTlmYjQzMWE1ODljYzgxMTM0
YmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
YW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJQYW5uZXJOb2Rl
LmgiCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRp
b0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlu
cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChpc25hbih4KSB8fCBpc2lu
Zih4KSkKKyAgICAgICAgeCA9IDAuMDsKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5lcjo6UGFubmluZ01v
ZGVsSFJURikKKyAgICAsIG1fbGFzdEdhaW4oLTEuMCkKKyAgICAsIG1fY29ubmVjdGlvbkNvdW50
KDApCit7CisgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7
CisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMikpKTsK
KyAgICAKKyAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvR2Fpbjo6Y3JlYXRlKGNvbnRleHQsICJk
aXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBtX2NvbmVHYWluID0gQXVkaW9HYWlu
OjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBtX3Bv
c2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9h
dFBvaW50M0QoMSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAw
KTsKKyAgICAKKyAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAgICBpbml0aWFs
aXplKCk7Cit9CisKK1Bhbm5lck5vZGU6On5QYW5uZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxp
emUoKTsKK30KKwordm9pZCBQYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0
ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4g
bmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMg
bmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxl
IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9jb25uZWN0aW9uQ291bnQg
IT0gY29udGV4dCgpLT5jb25uZWN0aW9uQ291bnQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb25D
b3VudCA9IGNvbnRleHQoKS0+Y29ubmVjdGlvbkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJz
aXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgorICAgICAgICBub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcyk7CisgICAgfQorICAgIAorICAgIEF1
ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFBhbm5lck5v
ZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBdWRpb0J1cyogZGVz
dGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygpOworCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkg
fHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Bhbm5lci5nZXQoKSkgeworICAgICAg
ICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXVk
aW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKKworICAgIGlmICghc291cmNlKSB7Cisg
ICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7CisgICAg
ZG91YmxlIGVsZXZhdGlvbjsKKyAgICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxl
dmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBk
ZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFuY2Ug
YW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2Fpbigp
OworCisgICAgLy8gU25hcCB0byBkZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAgICBp
ZiAobV9sYXN0R2FpbiA9PSAtMS4wKQorICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWluOwor
ICAgICAgICAKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlwcGVyaW5nLgor
ICAgIGRlc3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwgJm1fbGFzdEdh
aW4sIHRvdGFsR2Fpbik7Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6cmVzZXQoKQoreworICAgIG1f
bGFzdEdhaW4gPSAtMS4wOyAvLyBmb3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2FpbgorICAgIGlm
IChtX3Bhbm5lci5nZXQoKSkKKyAgICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisKK3ZvaWQg
UGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1f
cGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXpl
KCk7Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX3Bhbm5lci5j
bGVhcigpOworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9CisKK0F1ZGlvTGlzdGVu
ZXIqIFBhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4dCgpLT5saXN0
ZW5lcigpOworfQorCit2b2lkIFBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBz
aG9ydCBtb2RlbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgc3dpdGNoIChtb2RlbCkgewor
ICAgIGNhc2UgRVFVQUxQT1dFUjoKKyAgICBjYXNlIEhSVEY6CisgICAgICAgIGlmICghbV9wYW5u
ZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAgICAgICAgIE93blB0
cjxQYW5uZXI+IG5ld1Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRlKCkp
OworICAgICAgICAgICAgbV9wYW5uZXIgPSBuZXdQYW5uZXIucmVsZWFzZSgpOworICAgICAgICAg
ICAgbV9wYW5uaW5nTW9kZWwgPSBtb2RlbDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNPVU5ERklFTEQ6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc291bmQgZmll
bGQgbW9kZWwuIFNlZSAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzczNjcuCisgICAgICAgIC8vIEZvciBub3csIGZhbGwgdGhyb3VnaCB0byB0aHJvdyBhbiBleGNl
cHRpb24uCisgICAgZGVmYXVsdDoKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9k
ZWwodW5zaWduZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHN3aXRj
aCAobW9kZWwpIHsKKyAgICBjYXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbExpbmVhcjoKKyAgICBj
YXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbEludmVyc2U6CisgICAgY2FzZSBEaXN0YW5jZUVmZmVj
dDo6TW9kZWxFeHBvbmVudGlhbDoKKyAgICAgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRNb2RlbChz
dGF0aWNfY2FzdDxEaXN0YW5jZUVmZmVjdDo6TW9kZWxUeXBlPihtb2RlbCksIHRydWUpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6Z2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQorewor
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBw
b3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1h
ZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
c291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9u
ID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVu
ZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgIGlmIChzb3VyY2VMaXN0
ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFu
ZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAgICAgICAgKm91dEF6aW11dGggPSAw
LjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKKworICAgIC8vIEFsaWduIGF4ZXMK
KyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0aW9u
KCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZlY3Rvcigp
OworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhs
aXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQ
b2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKKyAgICBsaXN0ZW5lckZy
b250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmln
aHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisgICAgZmxvYXQgdXBQcm9qZWN0aW9uID0g
c291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3Vy
Y2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIHByb2plY3RlZFNv
dXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVk
U291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGF6aW11
dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgLy8gU291cmNlICBpbiBmcm9udCBv
ciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNv
dXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlmIChmcm9udEJhY2sgPCAwLjApCisg
ICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBNYWtlIGF6aW11dGgg
cmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCisgICAg
aWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQorICAgICAgICBhemlt
dXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQorICAgICAgICBhemltdXRoID0gNDUwLjAg
LSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkw
LjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKKyAg
ICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICBpZiAo
ZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247
CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IC0x
ODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRBemltdXRoKQorICAgICAgICAqb3V0QXpp
bXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlvbikKKyAgICAgICAgKm91dEVsZXZh
dGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQor
eworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7CisKKyAgICAvLyBGSVhNRTogb3B0aW1p
emUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFzIGNoYW5nZWQu
Li4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBsZXJGYWN0b3Io
KTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CisgICAgICAgIGRvdWJsZSBzcGVl
ZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKKworICAgICAgICBjb25zdCBG
bG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsK
KworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxpc3RlbmVyIGhh
dmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9ICFzb3VyY2VW
ZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9jaXR5ID0gIWxp
c3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZUhhc1ZlbG9jaXR5
IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUg
c291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAgICAgICAgICAgRmxvYXRQb2ludDNEIGxpc3Rl
bmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgICAgICAgICAgRmxvYXRQ
b2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVuZXJQb3NpdGlvbjsK
KworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0gc291cmNlVG9M
aXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVyUHJvamVjdGlv
biA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291cmNlTGlzdGVu
ZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlvbiA9IHNvdXJj
ZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRl
OworCisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQcm9qZWN0aW9u
OworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0aW9uOworCisg
ICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5kIC8gZG9w
cGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IG1pbihsaXN0ZW5l
clByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisgICAgICAgICAgICBzb3VyY2VQcm9q
ZWN0aW9uID0gbWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisKKyAg
ICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAq
IGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIHNv
dXJjZVByb2plY3Rpb24pKTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxlclNoaWZ0KTsgLy8g
YXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQgdGhlIHBpdGNoIHNo
aWZ0aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisgICAgICAgICAgICBp
ZiAoZG9wcGxlclNoaWZ0ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAx
Ni4wOworICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4xMjUpCisgICAgICAg
ICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7ICAgCisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisKK2Zsb2F0IFBh
bm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQoreworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5l
clBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKworICAgIGRvdWJsZSBsaXN0ZW5l
ckRpc3RhbmNlID0gbV9wb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRpb24pOworICAg
IGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0
YW5jZSk7CisgICAgCisgICAgbV9kaXN0YW5jZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZs
b2F0PihkaXN0YW5jZUdhaW4pKTsKKworICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBj
YWNoaW5nIGNvbmVHYWluCisgICAgZG91YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4o
bV9wb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVuZXJQb3NpdGlvbik7CisgICAgCisgICAg
bV9jb25lR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAg
ICByZXR1cm4gZmxvYXQoZGlzdGFuY2VHYWluICogY29uZUdhaW4pOworfQorCit2b2lkIFBhbm5l
ck5vZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUp
Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLiAgSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxl
ciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5u
b2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRp
b0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0
UGFubmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeyAgICAKKyAgICAgICAgLy8gR28gdGhyb3Vn
aCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAgQXVkaW9Ob2Rl
SW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNo
IGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tpbmcgZm9yIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1dC0+cmVuZGVy
aW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVjdGVkTm9kZSA9
IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291
cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlKTsgLy8gcmVjdXJzZQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGNjMWRlN2Q4NjM5MjNkNTk5NGRiZjg1YjE3
MDkxOWJlMDk5ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBhbm5lck5vZGVfaAorI2RlZmluZSBQYW5uZXJOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiQXVkaW9HYWluLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJE
aXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBQ
YW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4K
Ky8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZl
Y3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9zaXRpb24g
YW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBw
b3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgor
Ly8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIHBvc2l0
aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0IHdpbGwg
YXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhl
IGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3Bl
Y2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFBhbm5lck5vZGUgOiBwdWJsaWMgQXVk
aW9Ob2RlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYXMgaW4gdGhl
IC5pZGwgZmlsZSBhbmQgbXVzdCBtYXRjaCB0aG9zZSBpbiB0aGUgUGFubmVyIGNsYXNzLgorICAg
IGVudW0geworICAgICAgICBFUVVBTFBPV0VSID0gMCwKKyAgICAgICAgSFJURiA9IDEsCisgICAg
ICAgIFNPVU5ERklFTEQgPSAyLAorICAgIH07CisKKyAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmlu
ZWQgYXMgaW4gdGhlIC5pZGwgZmlsZSBhbmQgbXVzdCBtYXRjaCB0aG9zZQorICAgIC8vIGluIHRo
ZSBEaXN0YW5jZUVmZmVjdCBjbGFzcy4KKyAgICBlbnVtIHsKKyAgICAgICAgTElORUFSX0RJU1RB
TkNFID0gMCwKKyAgICAgICAgSU5WRVJTRV9ESVNUQU5DRSA9IDEsCisgICAgICAgIEVYUE9ORU5U
SUFMX0RJU1RBTkNFID0gMiwKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBh
bm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhbm5lck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgflBhbm5lck5vZGUoKTsKKworICAg
IC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7CisgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgLy8gTGlzdGVu
ZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFubmluZyBtb2Rl
bAorICAgIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQgc2hvcnQsIEV4
Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgs
IHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9p
bnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0QgdmVs
b2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0
eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0Qo
eCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICB1bnNpZ25lZCBz
aG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgpOyB9
CisgICAgdm9pZCBzZXREaXN0YW5jZU1vZGVsKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBmbG9hdCByZWZEaXN0YW5jZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCkpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0
YW5jZShmbG9hdCByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNl
KHJlZkRpc3RhbmNlKTsgfQorCisgICAgZmxvYXQgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4obV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpKTsgfQorICAgIHZv
aWQgc2V0TWF4RGlzdGFuY2UoZmxvYXQgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGZsb2F0IHJvbGxvZmZGYWN0b3Io
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFj
dG9yKCkpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGZsb2F0IHJvbGxvZmZGYWN0b3Ip
IHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisK
KyAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZmxvYXQgY29uZUlu
bmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9jb25lRWZmZWN0
LmlubmVyQW5nbGUoKSk7IH0KKyAgICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGZsb2F0IGFuZ2xl
KSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZmxvYXQgY29u
ZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9jb25lRWZm
ZWN0Lm91dGVyQW5nbGUoKSk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGZsb2F0IGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZmxvYXQg
Y29uZU91dGVyR2FpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX2NvbmVF
ZmZlY3Qub3V0ZXJHYWluKCkpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGZsb2F0IGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHlu
YW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb0dhaW4qIGRpc3RhbmNl
R2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VHYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgIEF1ZGlvR2FpbiogY29uZUdhaW4oKSB7IHJldHVy
biBtX2NvbmVHYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorCisgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIHZpcnR1YWwg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wYW5uZXIgPyBt
X3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAgICBQYW5uZXJOb2Rl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmV0dXJucyB0aGUg
Y29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KKyAgICBmbG9hdCBk
aXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYWJv
dXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUg
cGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQuCisgICAgdm9pZCBu
b3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKik7CisKKyAgICBPd25Q
dHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICB1bnNpZ25lZCBtX3Bhbm5pbmdNb2RlbDsKKworICAg
IEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJlZlB0
cjxBdWRpb0dhaW4+IG1fZGlzdGFuY2VHYWluOworICAgIFJlZlB0cjxBdWRpb0dhaW4+IG1fY29u
ZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAgICBDb25lRWZm
ZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAgdW5zaWduZWQg
bV9jb25uZWN0aW9uQ291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQYW5uZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZThhMzU0YWQxMzlmYjFkOTAxYzkwMjljYTczNzhj
ZjIyMjU2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CitdIGludGVy
ZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBQYW5uaW5nIG1vZGVsCisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRVFVQUxQT1dFUiA9IDA7CisgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgSFJURiA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU09VTkRGSUVMRCA9IDI7
CisKKyAgICAvLyBEaXN0YW5jZSBtb2RlbAorICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExJTkVB
Ul9ESVNUQU5DRSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5WRVJTRV9ESVNUQU5D
RSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05FTlRJQUxfRElTVEFOQ0UgPSAy
OworCisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYgCisgICAgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2RlbAorICAgICAgICBzZXR0ZXIgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lz
dGVtIAorICAgIHZvaWQgc2V0UG9zaXRpb24oaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxv
YXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBp
biBmbG9hdCB6KTsKKyAgICB2b2lkIHNldFZlbG9jaXR5KGluIGZsb2F0IHgsIGluIGZsb2F0IHks
IGluIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgc2hvcnQgZGlzdGFuY2VNb2RlbAorICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisKKyAgICBhdHRyaWJ1dGUgZmxvYXQgcmVmRGlzdGFuY2U7CisgICAgYXR0cmlidXRl
IGZsb2F0IG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSBmbG9hdCByb2xsb2ZmRmFjdG9yOwor
CisgICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQorICAgIGF0dHJpYnV0ZSBmbG9hdCBjb25l
SW5uZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgY29uZU91dGVyQW5nbGU7CisgICAgYXR0
cmlidXRlIGZsb2F0IGNvbmVPdXRlckdhaW47CisKKyAgICAvLyBEeW5hbWljYWxseSBjYWxjdWxh
dGVkIGdhaW4gdmFsdWVzICAgICAgICAgIAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dh
aW4gY29uZUdhaW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvR2FpbiBkaXN0YW5jZUdh
aW47Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3
NDk2MDQzNTJhN2RiZmQ4OWRkZTFiYzJjNmE2MjYyNzY0ZTM3YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
Ci0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotCi0jaW5jbHVkZSAiUmVhbHRpbWVBbmFseXNlck5vZGUuaCIKLQotI2luY2x1ZGUgIkF1
ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlYWx0aW1lQW5hbHlz
ZXJOb2RlOjpSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQotewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlz
KSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDIp
KSk7Ci0gICAgCi0gICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVBbmFseXNlcik7Ci0gICAgCi0gICAg
aW5pdGlhbGl6ZSgpOwotfQotCi1SZWFsdGltZUFuYWx5c2VyTm9kZTo6flJlYWx0aW1lQW5hbHlz
ZXJOb2RlKCkKLXsKLSAgICB1bmluaXRpYWxpemUoKTsKLX0KLQotdm9pZCBSZWFsdGltZUFuYWx5
c2VyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVz
KiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygpOwotCi0gICAgaWYgKCFpc0luaXRpYWxpemVk
KCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpKSB7Ci0gICAgICAgIG91dHB1dEJ1cy0+emVy
bygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXVkaW9CdXMqIGlucHV0QnVzID0g
aW5wdXQoMCktPmJ1cygpOwotICAgIAotICAgIC8vIEdpdmUgdGhlIGFuYWx5c2VyIHRoZSBhdWRp
byB3aGljaCBpcyBwYXNzaW5nIHRocm91Z2ggdGhpcyBBdWRpb05vZGUuCi0gICAgbV9hbmFseXNl
ci53cml0ZUlucHV0KGlucHV0QnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgLy8gRm9yIGlu
LXBsYWNlIHByb2Nlc3NpbmcsIG91ciBvdmVycmlkZSBvZiBwdWxsSW5wdXRzKCkgd2lsbCBqdXN0
IHBhc3MgdGhlIGF1ZGlvIGRhdGEgdGhyb3VnaCB1bmNoYW5nZWQgaWYgdGhlIGNoYW5uZWwgY291
bnQgbWF0Y2hlcyBmcm9tIGlucHV0IHRvIG91dHB1dAotICAgIC8vIChyZXN1bHRpbmcgaW4gaW5w
dXRCdXMgPT0gb3V0cHV0QnVzKS4gIE90aGVyd2lzZSwgZG8gYW4gdXAtbWl4IHRvIHN0ZXJlby4K
LSAgICBpZiAoaW5wdXRCdXMgIT0gb3V0cHV0QnVzKQotICAgICAgICBvdXRwdXRCdXMtPmNvcHlG
cm9tKCppbnB1dEJ1cyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVBbmFseXNlck5vZGU6OnJlc2V0KCkK
LXsKLSAgICBtX2FuYWx5c2VyLnJlc2V0KCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVBbmFseXNlck5v
ZGU6OnNldEZmdFNpemUodW5zaWduZWQgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmICghbV9hbmFseXNlci5zZXRGZnRTaXplKHNpemUpKQotICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwODE5YzAzODY3YzRjMjI4NmFkODM4YzE3N2M2NWFkNTJkZWY4Y2MyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlYWx0aW1lQW5hbHlzZXJOb2RlX2gKLSNkZWZp
bmUgUmVhbHRpbWVBbmFseXNlck5vZGVfaAotCi0jaW5jbHVkZSAiQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUuaCIKLSNpbmNsdWRlICJSZWFsdGltZUFuYWx5c2VyLmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZUFuYWx5c2Vy
Tm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVhbHRpbWVBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWx0aW1lQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5SZWFsdGltZUFuYWx5c2VyTm9kZSgpOwotICAgIAotICAg
IC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCi0gICAgLy8gSmF2YXNjcmlwdCBi
aW5kaW5ncwotICAgIHVuc2lnbmVkIGludCBmZnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbmFs
eXNlci5mZnRTaXplKCk7IH0KLSAgICB2b2lkIHNldEZmdFNpemUodW5zaWduZWQgaW50IHNpemUs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIHVuc2lnbmVkIGZyZXF1ZW5jeUJpbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCgpOyB9Ci0KLSAgICB2b2lk
IHNldE1pbkRlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFseXNlci5zZXRNaW5EZWNpYmVscyhrKTsg
fQotICAgIGZsb2F0IG1pbkRlY2liZWxzKCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5taW5E
ZWNpYmVscygpOyB9Ci0KLSAgICB2b2lkIHNldE1heERlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFs
eXNlci5zZXRNYXhEZWNpYmVscyhrKTsgfQotICAgIGZsb2F0IG1heERlY2liZWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9hbmFseXNlci5tYXhEZWNpYmVscygpOyB9Ci0KLSAgICB2b2lkIHNldFNtb290
aGluZ1RpbWVDb25zdGFudChmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGltZUNv
bnN0YW50KGspOyB9Ci0gICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQoKTsgfQotCi0gICAgdm9pZCBn
ZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdl
dEZsb2F0RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lE
YXRhKFVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEo
YXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSogYXJy
YXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiAwOyB9Ci0KLSAgICBSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKLQotICAgIFJlYWx0aW1lQW5hbHlzZXIgbV9hbmFseXNlcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlYWx0aW1lQW5hbHlzZXJO
b2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzQ3
ODNjMTVkOGQzNDlkNTRmN2ZkZDNmYTA4ODM4OTlkYjNjMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVy
YXRlVG9KU09iamVjdAotXSBpbnRlcmZhY2UgUmVhbHRpbWVBbmFseXNlck5vZGUgOiBBdWRpb05v
ZGUgewotICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGZmdFNpemUKLSAgICAgICAgc2V0dGVy
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGZyZXF1ZW5jeUJpbkNvdW50OwotCi0gICAgLy8gbWluRGVjaWJlbHMgLyBtYXhEZWNpYmVs
cyByZXByZXNlbnQgdGhlIHJhbmdlIHRvIHNjYWxlIHRoZSBGRlQgYW5hbHlzaXMgZGF0YSBmb3Ig
Y29udmVyc2lvbiB0byB1bnNpZ25lZCBieXRlIHZhbHVlcy4KLSAgICBhdHRyaWJ1dGUgZmxvYXQg
bWluRGVjaWJlbHM7Ci0gICAgYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOwotCi0gICAgLy8g
QSB2YWx1ZSBmcm9tIDAuMCAtPiAxLjAgd2hlcmUgMC4wIHJlcHJlc2VudHMgbm8gdGltZSBhdmVy
YWdpbmcgd2l0aCB0aGUgbGFzdCBhbmFseXNpcyBmcmFtZS4KLSAgICBhdHRyaWJ1dGUgZmxvYXQg
c21vb3RoaW5nVGltZUNvbnN0YW50OwotCi0gICAgLy8gQ29waWVzIHRoZSBjdXJyZW50IGZyZXF1
ZW5jeSBkYXRhIGludG8gdGhlIHBhc3NlZCBhcnJheS4KLSAgICAvLyBJZiB0aGUgYXJyYXkgaGFz
IGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5jeUJpbkNvdW50LCB0aGUgZXhjZXNzIGVs
ZW1lbnRzIHdpbGwgYmUgZHJvcHBlZC4KLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShp
biBGbG9hdDMyQXJyYXkgYXJyYXkpOwotICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoaW4g
VWludDhBcnJheSBhcnJheSk7Ci0KLSAgICAvLyBSZWFsLXRpbWUgd2F2ZWZvcm0gZGF0YQotICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGluIFVpbnQ4QXJyYXkgYXJyYXkpOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZTEyOTdjMjU2ODU0ZWRjZmUyOTQxYzk4ZjU3OTQyNDM0
YzgxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUg
IlNjcmlwdFByb2Nlc3Nvck5vZGUuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUg
IkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
IDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBzaXplX3QgRGVmYXVsdEJ1ZmZlclNpemUgPSA0MDk2
OworCitQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBi
dWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGJ1ZmZlciBzaXpl
LgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEy
OgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNh
c2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVs
cyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7Cit9CisKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4
Rm9yRXZlbnQoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQorICAgICwgbV9idWZm
ZXJSZWFkV3JpdGVJbmRleCgwKQorICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkK
KyAgICAsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzKG51bWJlck9mSW5wdXRDaGFubmVscykKKyAg
ICAsIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyhudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAg
ICwgbV9pbnRlcm5hbElucHV0QnVzKG51bWJlck9mSW5wdXRDaGFubmVscywgQXVkaW9Ob2RlOjpQ
cm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBmYWxzZSkKK3sKKyAgICAvLyBSZWdhcmRsZXNzIG9mIHRo
ZSBhbGxvd2VkIGJ1ZmZlciBzaXplcywgd2Ugc3RpbGwgbmVlZCB0byBwcm9jZXNzIGF0IHRoZSBn
cmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgorICAgIGlmIChtX2J1ZmZlclNpemUgPCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCisgICAgICAgIG1fYnVmZmVyU2l6ZSA9IEF1
ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsKKworICAgIEFTU0VSVChudW1iZXJPZklu
cHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOworCisg
ICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisgICAgYWRk
T3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykpKTsKKworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7CisKKyAg
ICBpbml0aWFsaXplKCk7Cit9CisKK1NjcmlwdFByb2Nlc3Nvck5vZGU6On5TY3JpcHRQcm9jZXNz
b3JOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBTY3JpcHRQcm9jZXNz
b3JOb2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4dCgpLT5zYW1wbGVSYXRl
KCk7CisKKyAgICAvLyBDcmVhdGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5k
IG91dHB1dCBzaWRlcy4KKyAgICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3Rs
eSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4g
aW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVh
dGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAw
OworICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKKworICAgICAgICBtX2lucHV0QnVm
ZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOworICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5k
KG91dHB1dEJ1ZmZlcik7CisgICAgfQorCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9
CisKK3ZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAo
IWlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnB1dEJ1ZmZlcnMu
Y2xlYXIoKTsKKyAgICBtX291dHB1dEJ1ZmZlcnMuY2xlYXIoKTsKKworICAgIEF1ZGlvTm9kZTo6
dW5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIERpc2N1c3Npb24gYWJvdXQgaW5wdXRz
IGFuZCBvdXRwdXRzOgorICAgIC8vIEFzIGluIG90aGVyIEF1ZGlvTm9kZXMsIFNjcmlwdFByb2Nl
c3Nvck5vZGUgdXNlcyBhbiBBdWRpb0J1cyBmb3IgaXRzIGlucHV0IGFuZCBvdXRwdXQgKHNlZSBp
bnB1dEJ1cyBhbmQgb3V0cHV0QnVzIGJlbG93KS4KKyAgICAvLyBBZGRpdGlvbmFsbHksIHRoZXJl
IGlzIGEgZG91YmxlLWJ1ZmZlcmluZyBmb3IgaW5wdXQgYW5kIG91dHB1dCB3aGljaCBpcyBleHBv
c2VkIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgKHNlZSBpbnB1dEJ1ZmZlciBhbmQgb3V0cHV0QnVm
ZmVyIGJlbG93KS4KKyAgICAvLyBUaGlzIG5vZGUgaXMgdGhlIHByb2R1Y2VyIGZvciBpbnB1dEJ1
ZmZlciBhbmQgdGhlIGNvbnN1bWVyIGZvciBvdXRwdXRCdWZmZXIuCisgICAgLy8gVGhlIEphdmFT
Y3JpcHQgY29kZSBpcyB0aGUgY29uc3VtZXIgb2YgaW5wdXRCdWZmZXIgYW5kIHRoZSBwcm9kdWNl
ciBmb3Igb3V0cHV0QnVmZmVyLgorICAgIAorICAgIC8vIEdldCBpbnB1dCBhbmQgb3V0cHV0IGJ1
c3Nlcy4KKyAgICBBdWRpb0J1cyogaW5wdXRCdXMgPSB0aGlzLT5pbnB1dCgwKS0+YnVzKCk7Cisg
ICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IHRoaXMtPm91dHB1dCgwKS0+YnVzKCk7CisKKyAgICAv
LyBHZXQgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLiAgV2UgZG91YmxlLWJ1ZmZlciBib3RoIHRo
ZSBpbnB1dCBhbmQgb3V0cHV0IHNpZGVzLgorICAgIHVuc2lnbmVkIGRvdWJsZUJ1ZmZlckluZGV4
ID0gdGhpcy0+ZG91YmxlQnVmZmVySW5kZXgoKTsKKyAgICBib29sIGlzRG91YmxlQnVmZmVySW5k
ZXhHb29kID0gZG91YmxlQnVmZmVySW5kZXggPCAyICYmIGRvdWJsZUJ1ZmZlckluZGV4IDwgbV9p
bnB1dEJ1ZmZlcnMuc2l6ZSgpICYmIGRvdWJsZUJ1ZmZlckluZGV4IDwgbV9vdXRwdXRCdWZmZXJz
LnNpemUoKTsKKyAgICBBU1NFUlQoaXNEb3VibGVCdWZmZXJJbmRleEdvb2QpOworICAgIGlmICgh
aXNEb3VibGVCdWZmZXJJbmRleEdvb2QpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBdWRp
b0J1ZmZlciogaW5wdXRCdWZmZXIgPSBtX2lucHV0QnVmZmVyc1tkb3VibGVCdWZmZXJJbmRleF0u
Z2V0KCk7CisgICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZlciA9IG1fb3V0cHV0QnVmZmVyc1tk
b3VibGVCdWZmZXJJbmRleF0uZ2V0KCk7CisKKyAgICAvLyBDaGVjayB0aGUgY29uc2lzdGVuY3kg
b2YgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLgorICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscyA9IG1faW50ZXJuYWxJbnB1dEJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgYm9v
bCBidWZmZXJzQXJlR29vZCA9IG91dHB1dEJ1ZmZlciAmJiBidWZmZXJTaXplKCkgPT0gb3V0cHV0
QnVmZmVyLT5sZW5ndGgoKSAmJiBtX2J1ZmZlclJlYWRXcml0ZUluZGV4ICsgZnJhbWVzVG9Qcm9j
ZXNzIDw9IGJ1ZmZlclNpemUoKTsKKworICAgIC8vIElmIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hh
bm5lbHMgaXMgemVybywgaXQncyBvayB0byBoYXZlIGlucHV0QnVmZmVyID0gMC4KKyAgICBpZiAo
bV9pbnRlcm5hbElucHV0QnVzLm51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgYnVmZmVyc0Fy
ZUdvb2QgPSBidWZmZXJzQXJlR29vZCAmJiBpbnB1dEJ1ZmZlciAmJiBidWZmZXJTaXplKCkgPT0g
aW5wdXRCdWZmZXItPmxlbmd0aCgpOworCisgICAgQVNTRVJUKGJ1ZmZlcnNBcmVHb29kKTsKKyAg
ICBpZiAoIWJ1ZmZlcnNBcmVHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBhc3N1
bWUgdGhhdCBidWZmZXJTaXplKCkgaXMgZXZlbmx5IGRpdmlzaWJsZSBieSBmcmFtZXNUb1Byb2Nl
c3MgLSBzaG91bGQgYWx3YXlzIGJlIHRydWUsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgY2hlY2suCisg
ICAgYm9vbCBpc0ZyYW1lc1RvUHJvY2Vzc0dvb2QgPSBmcmFtZXNUb1Byb2Nlc3MgJiYgYnVmZmVy
U2l6ZSgpID49IGZyYW1lc1RvUHJvY2VzcyAmJiAhKGJ1ZmZlclNpemUoKSAlIGZyYW1lc1RvUHJv
Y2Vzcyk7CisgICAgQVNTRVJUKGlzRnJhbWVzVG9Qcm9jZXNzR29vZCk7CisgICAgaWYgKCFpc0Zy
YW1lc1RvUHJvY2Vzc0dvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMgPSBvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKKworICAg
IGJvb2wgY2hhbm5lbHNBcmVHb29kID0gKG51bWJlck9mSW5wdXRDaGFubmVscyA9PSBtX251bWJl
ck9mSW5wdXRDaGFubmVscykgJiYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPT0gbV9udW1iZXJP
Zk91dHB1dENoYW5uZWxzKTsKKyAgICBBU1NFUlQoY2hhbm5lbHNBcmVHb29kKTsKKyAgICBpZiAo
IWNoYW5uZWxzQXJlR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mSW5wdXRDaGFubmVsczsgaSsrKQorICAgICAgICBtX2ludGVybmFs
SW5wdXRCdXMuc2V0Q2hhbm5lbE1lbW9yeShpLCBpbnB1dEJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEo
aSktPmRhdGEoKSArIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgsIGZyYW1lc1RvUHJvY2Vzcyk7CisK
KyAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzKQorICAgICAgICBtX2ludGVybmFsSW5wdXRC
dXMuY29weUZyb20oKmlucHV0QnVzKTsKKworICAgIC8vIENvcHkgZnJvbSB0aGUgb3V0cHV0IGJ1
ZmZlciB0byB0aGUgb3V0cHV0LiAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZPdXRwdXRDaGFubmVsczsgKytpKQorICAgICAgICBtZW1jcHkob3V0cHV0QnVzLT5jaGFubmVs
KGkpLT5tdXRhYmxlRGF0YSgpLCBvdXRwdXRCdWZmZXItPmdldENoYW5uZWxEYXRhKGkpLT5kYXRh
KCkgKyBtX2J1ZmZlclJlYWRXcml0ZUluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9j
ZXNzKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgYnVmZmVyaW5nIGluZGV4LgorICAgIG1fYnVmZmVy
UmVhZFdyaXRlSW5kZXggPSAobV9idWZmZXJSZWFkV3JpdGVJbmRleCArIGZyYW1lc1RvUHJvY2Vz
cykgJSBidWZmZXJTaXplKCk7CisKKyAgICAvLyBtX2J1ZmZlclJlYWRXcml0ZUluZGV4IHdpbGwg
d3JhcCBiYWNrIGFyb3VuZCB0byAwIHdoZW4gdGhlIGN1cnJlbnQgaW5wdXQgYW5kIG91dHB1dCBi
dWZmZXJzIGFyZSBmdWxsLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBmaXJlIGFuIGV2ZW50
IGFuZCBzd2FwIGJ1ZmZlcnMuCisgICAgaWYgKCFtX2J1ZmZlclJlYWRXcml0ZUluZGV4KSB7Cisg
ICAgICAgIC8vIEF2b2lkIGJ1aWxkaW5nIHVwIHJlcXVlc3RzIG9uIHRoZSBtYWluIHRocmVhZCB0
byBmaXJlIHByb2Nlc3MgZXZlbnRzIHdoZW4gdGhleSdyZSBub3QgYmVpbmcgaGFuZGxlZC4KKyAg
ICAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIHByb2JsZW0gaWYgdGhlIG1haW4gdGhyZWFkIGlzIHZl
cnkgYnVzeSBkb2luZyBvdGhlciB0aGluZ3MgYW5kIGlzIGJlaW5nIGhlbGQgdXAgaGFuZGxpbmcg
cHJldmlvdXMgcmVxdWVzdHMuCisgICAgICAgIGlmIChtX2lzUmVxdWVzdE91dHN0YW5kaW5nKSB7
CisgICAgICAgICAgICAvLyBXZSdyZSBsYXRlIGluIGhhbmRsaW5nIHRoZSBwcmV2aW91cyByZXF1
ZXN0LiAgVGhlIG1haW4gdGhyZWFkIG11c3QgYmUgdmVyeSBidXN5LgorICAgICAgICAgICAgLy8g
VGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGNsZWFyIG91dCB0aGUgYnVmZmVyIG91cnNlbGYgaGVyZS4K
KyAgICAgICAgICAgIG91dHB1dEJ1ZmZlci0+emVybygpOyAgICAgICAgICAgIAorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gUmVmZXJlbmNlIG91cnNlbGYgc28gd2UgZG9uJ3QgYWNj
aWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJvY2Vzc0V2ZW50KCkgZ2V0cyBjYWxs
ZWQuCisgICAgICAgICAgICByZWYoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmly
ZSB0aGUgZXZlbnQgb24gdGhlIG1haW4gdGhyZWFkLCBub3QgdGhpcyBvbmUgKHdoaWNoIGlzIHRo
ZSByZWFsdGltZSBhdWRpbyB0aHJlYWQpLgorICAgICAgICAgICAgbV9kb3VibGVCdWZmZXJJbmRl
eEZvckV2ZW50ID0gbV9kb3VibGVCdWZmZXJJbmRleDsKKyAgICAgICAgICAgIG1faXNSZXF1ZXN0
T3V0c3RhbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChmaXJlUHJv
Y2Vzc0V2ZW50RGlzcGF0Y2gsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgc3dhcEJ1ZmZl
cnMoKTsKKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6ZmlyZVByb2Nlc3NF
dmVudERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQoreworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUq
IGpzQXVkaW9Ob2RlID0gc3RhdGljX2Nhc3Q8U2NyaXB0UHJvY2Vzc29yTm9kZSo+KHVzZXJEYXRh
KTsKKyAgICBBU1NFUlQoanNBdWRpb05vZGUpOworICAgIGlmICghanNBdWRpb05vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGpzQXVkaW9Ob2RlLT5maXJlUHJvY2Vzc0V2ZW50KCk7CisKKyAg
ICAvLyBEZS1yZWZlcmVuY2UgdG8gbWF0Y2ggdGhlIHJlZigpIGNhbGwgaW4gcHJvY2VzcygpLgor
ICAgIGpzQXVkaW9Ob2RlLT5kZXJlZigpOworfQorCit2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmZpcmVQcm9jZXNzRXZlbnQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBtX2lz
UmVxdWVzdE91dHN0YW5kaW5nKTsKKyAgICAKKyAgICBib29sIGlzSW5kZXhHb29kID0gbV9kb3Vi
bGVCdWZmZXJJbmRleEZvckV2ZW50IDwgMjsKKyAgICBBU1NFUlQoaXNJbmRleEdvb2QpOworICAg
IGlmICghaXNJbmRleEdvb2QpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgQXVkaW9C
dWZmZXIqIGlucHV0QnVmZmVyID0gbV9pbnB1dEJ1ZmZlcnNbbV9kb3VibGVCdWZmZXJJbmRleEZv
ckV2ZW50XS5nZXQoKTsKKyAgICBBdWRpb0J1ZmZlciogb3V0cHV0QnVmZmVyID0gbV9vdXRwdXRC
dWZmZXJzW21fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudF0uZ2V0KCk7CisgICAgQVNTRVJUKG91
dHB1dEJ1ZmZlcik7CisgICAgaWYgKCFvdXRwdXRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5
IGdvbmUgYXdheS4KKyAgICBpZiAoY29udGV4dCgpLT5oYXNEb2N1bWVudCgpKSB7CisgICAgICAg
IC8vIExldCB0aGUgYXVkaW8gdGhyZWFkIGtub3cgd2UndmUgZ290dGVuIHRvIHRoZSBwb2ludCB3
aGVyZSBpdCdzIE9LIGZvciBpdCB0byBtYWtlIGFub3RoZXIgcmVxdWVzdC4KKyAgICAgICAgbV9p
c1JlcXVlc3RPdXRzdGFuZGluZyA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy8gQ2FsbCB0
aGUgSmF2YVNjcmlwdCBldmVudCBoYW5kbGVyIHdoaWNoIHdpbGwgZG8gdGhlIGF1ZGlvIHByb2Nl
c3NpbmcuCisgICAgICAgIGRpc3BhdGNoRXZlbnQoQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6OmNyZWF0
ZShpbnB1dEJ1ZmZlciwgb3V0cHV0QnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFNjcmlwdFBy
b2Nlc3Nvck5vZGU6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlclJlYWRXcml0ZUluZGV4ID0gMDsK
KyAgICBtX2RvdWJsZUJ1ZmZlckluZGV4ID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCAyOyArK2kpIHsKKyAgICAgICAgbV9pbnB1dEJ1ZmZlcnNbaV0tPnplcm8oKTsKKyAgICAg
ICAgbV9vdXRwdXRCdWZmZXJzW2ldLT56ZXJvKCk7CisgICAgfQorfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU2NyaXB0UHJvY2Vzc29yTm9kZTsKK30K
KworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU2NyaXB0UHJvY2Vzc29yTm9kZTo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2NyaXB0UHJv
Y2Vzc29yTm9kZSo+KHRoaXMpLT5jb250ZXh0KCktPmRvY3VtZW50KCk7Cit9CisKK2RvdWJsZSBT
Y3JpcHRQcm9jZXNzb3JOb2RlOjp0YWlsVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKK30KKworZG91YmxlIFNjcmlwdFBy
b2Nlc3Nvck5vZGU6OmxhdGVuY3lUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MmViMzI3MzcyNzdhMTNiZTYzY2ExNjc4MzdhYWIxMDQ4Mzk1NWM5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdFByb2Nlc3Nvck5v
ZGVfaAorI2RlZmluZSBTY3JpcHRQcm9jZXNzb3JOb2RlX2gKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgi
CisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdWZmZXI7CitjbGFzcyBBdWRpb0NvbnRleHQ7Citj
bGFzcyBBdWRpb1Byb2Nlc3NpbmdFdmVudDsKKworLy8gU2NyaXB0UHJvY2Vzc29yTm9kZSBpcyBh
biBBdWRpb05vZGUgd2hpY2ggYWxsb3dzIGZvciBhcmJpdHJhcnkgc3ludGhlc2lzIG9yIHByb2Nl
c3NpbmcgZGlyZWN0bHkgdXNpbmcgSmF2YVNjcmlwdC4KKy8vIFRoZSBBUEkgYWxsb3dzIGZvciBh
IHZhcmlhYmxlIG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMsIGFsdGhvdWdoIGl0IG11c3Qg
aGF2ZSBhdCBsZWFzdCBvbmUgaW5wdXQgb3Igb3V0cHV0LgorLy8gVGhpcyBiYXNpYyBpbXBsZW1l
bnRhdGlvbiBzdXBwb3J0cyBubyBtb3JlIHRoYW4gb25lIGlucHV0IGFuZCBvdXRwdXQuCisvLyBU
aGUgIm9uYXVkaW9wcm9jZXNzIiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgbGlzdGVuZXIgd2hpY2gg
d2lsbCBnZXQgY2FsbGVkIHBlcmlvZGljYWxseSB3aXRoIGFuIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50
IHdoaWNoIGhhcworLy8gQXVkaW9CdWZmZXJzIGZvciBlYWNoIGlucHV0IGFuZCBvdXRwdXQuCisK
Ky8vIEZJWE1FOiBFdmVudFRhcmdldCBzaG91bGQgYmUgaW50cm9kdWNlZCBhdCB0aGUgYmFzZSBv
ZiB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5IChpLmUuLCBhcyBhIGJhc2UgY2xhc3MgZm9yIEF1
ZGlvTm9kZSkuCitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSwg
cHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICAvLyBidWZmZXJTaXplIG11c3QgYmUg
b25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5Niwg
ODE5MiwgMTYzODQuCisgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0
aGUgb25hdWRpb3Byb2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNh
bXBsZS1mcmFtZXMgbmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgorICAgIC8vIExvd2Vy
IG51bWJlcnMgZm9yIGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBs
YXRlbmN5LiBIaWdoZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBi
cmVha3VwIGFuZCBnbGl0Y2hlcy4KKyAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1
bGx5IGJhbGFuY2UgYmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKworICAgIHZpcnR1
YWwgflNjcmlwdFByb2Nlc3Nvck5vZGUoKTsKKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9p
ZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdmlydHVhbCB2
b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkgIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgc2l6
ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclNpemU7IH0KKworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXVkaW9wcm9jZXNzKTsKKworICAgIC8vIFJl
Y29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBBdWRpb05vZGUgYW5k
IEV2ZW50VGFyZ2V0LgorICAgIHVzaW5nIEF1ZGlvTm9kZTo6cmVmOworICAgIHVzaW5nIEF1ZGlv
Tm9kZTo6ZGVyZWY7CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1l
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25z
dCBPVkVSUklERTsKKworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICBzdGF0aWMg
dm9pZCBmaXJlUHJvY2Vzc0V2ZW50RGlzcGF0Y2godm9pZCogdXNlckRhdGEpOworICAgIHZvaWQg
ZmlyZVByb2Nlc3NFdmVudCgpOworCisgICAgLy8gRG91YmxlIGJ1ZmZlcmluZworICAgIHVuc2ln
bmVkIGRvdWJsZUJ1ZmZlckluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVCdWZmZXJJbmRl
eDsgfQorICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7IG1fZG91YmxlQnVmZmVySW5kZXggPSAxIC0g
bV9kb3VibGVCdWZmZXJJbmRleDsgfQorICAgIHVuc2lnbmVkIG1fZG91YmxlQnVmZmVySW5kZXg7
CisgICAgdW5zaWduZWQgbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50OworICAgIFZlY3RvcjxS
ZWZQdHI8QXVkaW9CdWZmZXI+ID4gbV9pbnB1dEJ1ZmZlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxB
dWRpb0J1ZmZlcj4gPiBtX291dHB1dEJ1ZmZlcnM7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisK
KyAgICBzaXplX3QgbV9idWZmZXJTaXplOworICAgIHVuc2lnbmVkIG1fYnVmZmVyUmVhZFdyaXRl
SW5kZXg7CisgICAgdm9sYXRpbGUgYm9vbCBtX2lzUmVxdWVzdE91dHN0YW5kaW5nOworCisgICAg
dW5zaWduZWQgbV9udW1iZXJPZklucHV0Q2hhbm5lbHM7CisgICAgdW5zaWduZWQgbV9udW1iZXJP
Zk91dHB1dENoYW5uZWxzOworCisgICAgQXVkaW9CdXMgbV9pbnRlcm5hbElucHV0QnVzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0UHJvY2Vzc29yTm9k
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWQ0YmIyNzRmM2JhOTNiY2UxNWIwZjNkNWQz
OWY0ODNhYzQ0MGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gRm9yIHJlYWwtdGltZSBhdWRpbyBzdHJlYW0gc3ludGhlc2lzL3Byb2Nlc3Npbmcg
aW4gSmF2YVNjcmlwdCAKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5l
cmF0ZVRvSlNPYmplY3QsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgRXZlbnRUYXJn
ZXQKK10gaW50ZXJmYWNlIFNjcmlwdFByb2Nlc3Nvck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8v
IFJlbmRlcmluZyBjYWxsYmFjaworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXVkaW9w
cm9jZXNzOworICAgIAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGJ1ZmZlclNpemU7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUuY3BwCmluZGV4
IDkyZTk0NGJmNTA4YjRjNzA5NzAzMjcyN2ExNDc3OWY5MTU1NDI3NzkuLjhiZDY1MWMyNTIyZTAy
MWYxZGMwNDk1MTliYTg1Mzk5NWI5M2RlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVUYWJsZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJXYXZl
VGFibGUuaCIKIAogI2luY2x1ZGUgIkZGVEZyYW1lLmgiCi0jaW5jbHVkZSAiT3NjaWxsYXRvci5o
IgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02MiwyOCAr
NjIsMjggQEAgUGFzc1JlZlB0cjxXYXZlVGFibGU+IFdhdmVUYWJsZTo6Y3JlYXRlKGZsb2F0IHNh
bXBsZVJhdGUsIEZsb2F0MzJBcnJheSogcmVhbCwgRmwKIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBX
YXZlVGFibGU6OmNyZWF0ZVNpbmUoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBSZWZQdHI8V2F2
ZVRhYmxlPiB3YXZlVGFibGUgPSBhZG9wdFJlZihuZXcgV2F2ZVRhYmxlKHNhbXBsZVJhdGUpKTsK
LSAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9ybShPc2NpbGxhdG9yOjpTSU5FKTsK
KyAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9ybShPc2NpbGxhdG9yTm9kZTo6U0lO
RSk7CiAgICAgcmV0dXJuIHdhdmVUYWJsZTsKIH0KIAogUGFzc1JlZlB0cjxXYXZlVGFibGU+IFdh
dmVUYWJsZTo6Y3JlYXRlU3F1YXJlKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgUmVmUHRyPFdh
dmVUYWJsZT4gd2F2ZVRhYmxlID0gYWRvcHRSZWYobmV3IFdhdmVUYWJsZShzYW1wbGVSYXRlKSk7
Ci0gICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0oT3NjaWxsYXRvcjo6U1FVQVJF
KTsKKyAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9ybShPc2NpbGxhdG9yTm9kZTo6
U1FVQVJFKTsKICAgICByZXR1cm4gd2F2ZVRhYmxlOwogfQogCiBQYXNzUmVmUHRyPFdhdmVUYWJs
ZT4gV2F2ZVRhYmxlOjpjcmVhdGVTYXd0b290aChmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIFJl
ZlB0cjxXYXZlVGFibGU+IHdhdmVUYWJsZSA9IGFkb3B0UmVmKG5ldyBXYXZlVGFibGUoc2FtcGxl
UmF0ZSkpOwotICAgIHdhdmVUYWJsZS0+Z2VuZXJhdGVCYXNpY1dhdmVmb3JtKE9zY2lsbGF0b3I6
OlNBV1RPT1RIKTsKKyAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9ybShPc2NpbGxh
dG9yTm9kZTo6U0FXVE9PVEgpOwogICAgIHJldHVybiB3YXZlVGFibGU7CiB9CiAKIFBhc3NSZWZQ
dHI8V2F2ZVRhYmxlPiBXYXZlVGFibGU6OmNyZWF0ZVRyaWFuZ2xlKGZsb2F0IHNhbXBsZVJhdGUp
CiB7CiAgICAgUmVmUHRyPFdhdmVUYWJsZT4gd2F2ZVRhYmxlID0gYWRvcHRSZWYobmV3IFdhdmVU
YWJsZShzYW1wbGVSYXRlKSk7Ci0gICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0o
T3NjaWxsYXRvcjo6VFJJQU5HTEUpOworICAgIHdhdmVUYWJsZS0+Z2VuZXJhdGVCYXNpY1dhdmVm
b3JtKE9zY2lsbGF0b3JOb2RlOjpUUklBTkdMRSk7CiAgICAgcmV0dXJuIHdhdmVUYWJsZTsKIH0K
IApAQCAtMjQ0LDIyICsyNDQsMjIgQEAgdm9pZCBXYXZlVGFibGU6OmdlbmVyYXRlQmFzaWNXYXZl
Zm9ybShpbnQgc2hhcGUpCiAgICAgICAgIC8vIENhbGN1bGF0ZSBGb3VyaWVyIGNvZWZmaWNpZW50
cyBkZXBlbmRpbmcgb24gdGhlIHNoYXBlLgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG92ZXJh
bGwgc2NhbGluZyAobWFnbml0dWRlKSBvZiB0aGUgd2F2ZWZvcm1zIGlzIG5vcm1hbGl6ZWQgaW4g
Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMoKS4KICAgICAgICAgc3dpdGNoIChzaGFwZSkgewotICAg
ICAgICBjYXNlIE9zY2lsbGF0b3I6OlNJTkU6CisgICAgICAgIGNhc2UgT3NjaWxsYXRvck5vZGU6
OlNJTkU6CiAgICAgICAgICAgICAvLyBTdGFuZGFyZCBzaW5lIHdhdmUgZnVuY3Rpb24uCiAgICAg
ICAgICAgICBhID0gMDsKICAgICAgICAgICAgIGIgPSAobiA9PSAxKSA/IDEgOiAwOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT3NjaWxsYXRvcjo6U1FVQVJFOgorICAgICAgICBj
YXNlIE9zY2lsbGF0b3JOb2RlOjpTUVVBUkU6CiAgICAgICAgICAgICAvLyBTcXVhcmUtc2hhcGVk
IHdhdmVmb3JtIHdpdGggdGhlIGZpcnN0IGhhbGYgaXRzIG1heGltdW0gdmFsdWUgYW5kIHRoZSBz
ZWNvbmQgaGFsZiBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgICAgICAgIGEgPSAwOwogICAgICAg
ICAgICAgYiA9IGludk9tZWdhICogKChuICYgMSkgPyAyIDogMCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBPc2NpbGxhdG9yOjpTQVdUT09USDoKKyAgICAgICAgY2FzZSBPc2Np
bGxhdG9yTm9kZTo6U0FXVE9PVEg6CiAgICAgICAgICAgICAvLyBTYXd0b290aC1zaGFwZWQgd2F2
ZWZvcm0gd2l0aCB0aGUgZmlyc3QgaGFsZiByYW1waW5nIGZyb20gemVybyB0byBtYXhpbXVtIGFu
ZCB0aGUgc2Vjb25kIGhhbGYgZnJvbSBtaW5pbXVtIHRvIHplcm8uCiAgICAgICAgICAgICBhID0g
MDsKICAgICAgICAgICAgIGIgPSAtaW52T21lZ2EgKiBjb3MoMC41ICogb21lZ2EpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT3NjaWxsYXRvcjo6VFJJQU5HTEU6CisgICAgICAg
IGNhc2UgT3NjaWxsYXRvck5vZGU6OlRSSUFOR0xFOgogICAgICAgICAgICAgLy8gVHJpYW5nbGUt
c2hhcGVkIHdhdmVmb3JtIGdvaW5nIGZyb20gaXRzIG1heGltdW0gdmFsdWUgdG8gaXRzIG1pbmlt
dW0gdmFsdWUgdGhlbiBiYWNrIHRvIHRoZSBtYXhpbXVtIHZhbHVlLgogICAgICAgICAgICAgYSA9
ICg0IC0gNCAqIGNvcygwLjUgKiBvbWVnYSkpIC8gKG4gKiBuICogcGlGbG9hdCAqIHBpRmxvYXQp
OwogICAgICAgICAgICAgYiA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4ZmFlYjgwYzRjYTc2MTRlNDI2
NjM3MDQ2YTFiMDkwOTA2YjI0ZTZlLi4zYTA0ZmViMGNlYzdkY2NlNTA5NzMyOWNjODI2MTdiMTli
NzAyMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMyNjYsMTcgKzMyNjYsMTcgQEAgZW5hYmxlPyhXRUJf
QVVESU8pIHsKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmgg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmggXAogICAgICAgICBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIFwKLSAgICAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaCBcCi0gICAgICAgIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bE1lcmdlck5vZGUuaCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVy
Tm9kZS5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBcCiAgICAg
ICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCiAgICAgICAgIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluLmggXAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvR2Fpbk5vZGUuaCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBcCiAg
ICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oIFwKICAgICAgICAgTW9kdWxl
cy93ZWJhdWRpby9BdWRpb05vZGUuaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlSW5wdXQuaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmgg
XAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oIFwKKyAgICAgICAg
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW0uaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50Lmgg
XApAQCAtMzI5MiwxNCArMzI5MiwxNCBAQCBlbmFibGU/KFdFQl9BVURJTykgewogICAgICAgICBN
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmggXAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05v
ZGUuaCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBc
CiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBc
CiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmggXAorICAgICAgICBNb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuaCBcCi0gICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlck5vZGUuaCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCiAgICAg
ICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBcCiAgICAgICAgIE1vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIFwKQEAgLTMzNTAsMjIgKzMzNTAsMjIgQEAg
ZW5hYmxlPyhXRUJfQVVESU8pIHsKICAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dXZWJBdWRpb0N1c3Rv
bS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNw
cCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIFwKICAg
ICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgXAogICAg
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAgICAg
ICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIFwKLSAgICAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwIFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCi0g
ICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAgXAorICAgICAgICBNb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9MaXN0ZW5lci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcCBcCiAgICAgICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBcCi0gICAgICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3Bw
IFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIFwKICAg
ICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXApAQCAtMzM4
MCwxNCArMzM4MCwxNCBAQCBlbmFibGU/KFdFQl9BVURJTykgewogICAgICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5jcHAgXAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBc
CiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUu
Y3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZl
bnQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBcCisg
ICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIFwKICAgICAgICAgTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCi0gICAgICAgIE1vZHVsZXMvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUu
Y3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKaW5kZXggM2U2MGEzZTg4MWYzNjA5YmZjNDQzYWE5MmFkMDViYWRkNTA2
MjI0MC4uYmE2Y2U2OTdiZjUzNjIwY2Y1YjJjYTljMDVjZDdiZDI3NWJjNjQzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZQpAQCAtMjczLDcgKzI3Myw3IEBAIElGIChFTkFCTEVfV0VCX0FVRElPKQogICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0NvbnRl
eHRDdXN0b20uY3BwCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1
c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9t
LmNwcAogICAgICkKIEVORElGICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyMTRhYzI3ZTgzMDlm
Y2Q2YmE3MWIwMmQ2MjQzZmZlYjI4NGNkOTk2Li5lOTE3OWVlZTcxZmU2ZDBkNGY3ZGM4ZTc5NDlh
ODMzNGVhZGUzY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC05MDEsMTUgKzkwMSwxNSBAQAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwnLAotICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbCcsCi0gICAgICAgICAg
ICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbi5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIu
aWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmlkbCcsCkBAIC05MTgsMTIgKzkxOCwxMiBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9ET01XaW5kb3dXZWJBdWRpby5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwnLAorICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
LmlkbCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbCcsCi0g
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0
YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsJywKQEAgLTE2OTAsMTcgKzE2OTAsMTcgQEAK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oJywK
LSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAnLAot
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwJywKLSAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWlu
Tm9kZS5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwJywKQEAgLTE3MDksOCArMTcwOSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZU91dHB1dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlT3V0cHV0LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5u
ZXJOb2RlLmNwcCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5v
ZGUuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5jcHAnLApAQCAtMTc0Miw4ICsxNzQyLDggQEAKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oJywKLSAgICAgICAgICAgICdN
b2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwJywKLSAgICAgICAgICAgICdN
b2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaCcsCisgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCcsCisgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAn
LApAQCAtMTc1MiwxMiArMTc1MiwxMiBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCcsCi0gICAgICAgICAg
ICAnTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCcsCi0gICAgICAgICAgICAnTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFs
eXNlci5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2Rl
LmNwcCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9k
ZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCcsCkBAIC0yMDg5LDcgKzIwODks
NyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9k
ZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vzc29y
Tm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmgnLApAQCAtNzMwNywyNCArNzMwNywyNCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5oJywKICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oJywKLSAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCcs
Ci0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvQ2hhbm5lbE1lcmdlci5oJywKLSAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwJywKLSAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3Bs
aXR0ZXIuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NoYW5uZWxNZXJnZXJOb2RlLmgnLAorICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVsU3Bs
aXR0ZXJOb2RlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NoYW5uZWxTcGxpdHRlck5vZGUuaCcsCiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5jcHAnLAogICAg
ICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Nv
bnRleHQuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgnLAog
ICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0dhaW4uY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9HYWluLmgnLAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0dhaW5Ob2RlLmNwcCcsCi0gICAgICAgICAgICAnPChQ
Uk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvR2Fpbk5vZGUuaCcsCisg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dhaW5O
b2RlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dhaW5Ob2RlLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuaCcsCiAgICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTm9k
ZS5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb05vZGUuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFubmVyTm9kZS5jcHAnLAotICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Bhbm5lck5vZGUuaCcsCisg
ICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGFubmVyTm9kZS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5jcHAnLAogICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmgnLAogICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Byb2Nl
c3NpbmdFdmVudC5jcHAnLApAQCAtNzcxNiw4ICs3NzE2LDggQEAKICAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW50MzJBcnJheS5oJywKICAgICAg
ICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW50OEFycmF5
LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ludDhBcnJheS5oJywKLSAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAnLAotICAgICAgICAgICAgJzwo
UFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2Rl
LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNTY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NjcmlwdFByb2Nlc3Nvck5vZGUuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5oJywKICAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTS2V5Ym9hcmRFdmVudC5jcHAnLApAQCAt
NzgxMyw4ICs3ODEzLDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUmFuZ2UuY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmFuZ2VFeGNlcHRpb24uY3BwJywKICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmFuZ2VFeGNlcHRpb24u
aCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgnLAorICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbmFseXNlck5v
ZGUuY3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQW5hbHlzZXJOb2RlLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZWN0LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlY3QuaCcsCiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NRTEVycm9yLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODdl
YzgwZjFmZTYyODU1ZjYwOTEzZDcxMTg1YjRkYzA0YmZlODA1NC4uOGJkYzdkN2FlNzM1M2I4ZGM0
OWM5MDZkN2RkYWYzMjA1ZjAwZWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjM1MywxNyArNjM1MywxNyBAQAogCQlGRDMx
NUZGOTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkFGMTJCMDI2NzUwMEMxQTM1OSAvKiBB
dWRpb0J1ZmZlci5oICovOyB9OwogCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE1RkIxMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwICovOyB9OwogCQlGRDMxNUZGQzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNUZCMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggKi87
IH07Ci0JCUZEMzE1RkZFMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQjQx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgKi87IH07Ci0JCUZEMzE1
RkZGMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkI1MTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuaCAqLzsgfTsKLQkJRkQzMTYwMDExMkIwMjY3NjAwQzFB
MzU5IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkI3MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0No
YW5uZWxTcGxpdHRlci5jcHAgKi87IH07Ci0JCUZEMzE2MDAyMTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb0NoYW5uZWxTcGxpdHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTVGQjgxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0
dGVyLmggKi87IH07CisJCUZEMzE1RkZFMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2Vy
Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDMxNUZCNDEyQjAyNjc1MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuY3BwICovOyB9Owor
CQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkI1MTJCMDI2NzUw
MEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oICovOyB9OworCQlGRDMxNjAwMTEyQjAyNjc2
MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZCNzEyQjAyNjc1MDBDMUEzNTkgLyogQ2hh
bm5lbFNwbGl0dGVyTm9kZS5jcHAgKi87IH07CisJCUZEMzE2MDAyMTJCMDI2NzYwMEMxQTM1OSAv
KiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDMxNUZCODEyQjAyNjc1MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVy
Tm9kZS5oICovOyB9OwogCQlGRDMxNjAwNDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1
RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwICovOyB9OwogCQlGRDMxNjAw
NTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZCQjEyQjAyNjc1MDBDMUEzNTkgLyogQXVk
aW9Db250ZXh0LmggKi87IH07CiAJCUZEMzE2MDA3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNUZCRDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwICovOyB9OwogCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MzE1RkJFMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovOyB9Owog
CQlGRDMxNjAwQTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9HYWluLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZDMDEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9HYWluLmggKi87IH07Ci0JCUZEMzE2MDBDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b0dhaW5Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEMzE1RkMyMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmNwcCAqLzsgfTsK
LQkJRkQzMTYwMEQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkMzMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmggKi87IH07CisJCUZEMzE2MDBDMTJCMDI2NzYwMEMxQTM1
OSAvKiBHYWluTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNUZDMjEyQjAyNjc1MDBDMUEzNTkgLyogR2Fpbk5vZGUuY3BwICovOyB9Owor
CQlGRDMxNjAwRDEyQjAyNjc2MDBDMUEzNTkgLyogR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkMzMTJCMDI2NzUwMEMxQTM1OSAv
KiBHYWluTm9kZS5oICovOyB9OwogCQlGRDMxNjAwRjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9M
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNUZDNTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5jcHAgKi87IH07CiAJ
CUZEMzE2MDEwMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZDNjEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9MaXN0ZW5lci5oICovOyB9OwogCQlGRDMxNjAxMjEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEMzE1RkM4MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb05vZGUuY3BwICovOyB9OwpA
QCAtNjM3Miw4ICs2MzcyLDggQEAKIAkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
Tm9kZUlucHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNUZDQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCAqLzsgfTsKIAkJ
RkQzMTYwMTcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZDRDEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmNwcCAqLzsgfTsKIAkJRkQzMTYwMTgxMkIwMjY3NjAw
QzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQ0UxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91
dHB1dC5oICovOyB9OwotCQlGRDMxNjAxOTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MzE1RkNGMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1Bhbm5lck5vZGUuY3BwICovOyB9OwotCQlG
RDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZEMDEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9QYW5uZXJOb2RlLmggKi87IH07CisJCUZEMzE2MDE5MTJCMDI2NzYwMEMxQTM1
OSAvKiBQYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCAqLzsg
fTsKKwkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkQwMTJCMDI2NzUwMEMx
QTM1OSAvKiBQYW5uZXJOb2RlLmggKi87IH07CiAJCUZEMzE2MDFDMTJCMDI2NzYwMEMxQTM1OSAv
KiBBdWRpb1BhcmFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEMzE1RkQyMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmNwcCAqLzsgfTsK
IAkJRkQzMTYwMUQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkQzMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb1BhcmFtLmggKi87IH07CiAJCUZEMzE2MDFGMTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDMxNUZENTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzaW5n
RXZlbnQuY3BwICovOyB9OwpAQCAtNjM5MSwxMiArNjM5MSwxMiBAQAogCQlGRDMxNjAyRTEyQjAy
Njc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZFNDEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmgg
Ki87IH07CiAJCUZEMzE2MDMwMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZFNjEy
QjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuY3BwICovOyB9OwogCQlGRDMxNjAzMTEy
QjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkU3MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxh
eVByb2Nlc3Nvci5oICovOyB9OwotCQlGRDMxNjAzNTEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNj
cmlwdEF1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNUZFQjEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5j
cHAgKi87IH07Ci0JCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBKYXZhU2NyaXB0QXVkaW9O
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NUZFQzEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5oICovOyB9OworCQlG
RDMxNjAzNTEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZFQjEyQjAyNjc2
MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgKi87IH07CisJCUZEMzE2MDM2MTJC
MDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZFQzEyQjAyNjc2MDBDMUEzNTkgLyog
U2NyaXB0UHJvY2Vzc29yTm9kZS5oICovOyB9OwogCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkg
LyogUmVhbHRpbWVBbmFseXNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDMxNUZGMTEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5jcHAgKi87IH07CiAJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5
c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NUZGMjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oICovOyB9OwotCQlGRDMx
NjAzRDEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRjMxMkIwMjY3NjAw
QzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCAqLzsgfTsKLQkJRkQzMTYwM0UxMkIw
MjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZGNDEyQjAyNjc2MDBDMUEzNTkgLyog
UmVhbHRpbWVBbmFseXNlck5vZGUuaCAqLzsgfTsKKwkJRkQzMTYwM0QxMkIwMjY3NjAwQzFBMzU5
IC8qIEFuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRDMxNUZGMzEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmNwcCAq
LzsgfTsKKwkJRkQzMTYwM0UxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRjQxMkIwMjY3
NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5oICovOyB9OwogCQlGRDMxNjA3QTEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9BcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwNDQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQXJyYXkuaCAqLzsg
fTsKIAkJRkQzMTYwN0IxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ1MTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb0J1cy5jcHAgKi87IH07CiAJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkQzMTYwNDYxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggKi87IH07CkBAIC02NDY2
LDggKzY0NjYsOCBAQAogCQlGRDU2ODZDOTEzQUMxODAyMDBCNjlDNjggLyogQXN5bmNBdWRpb0Rl
Y29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQ1Njg2QzcxM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmNwcCAqLzsgfTsK
IAkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDU2ODZDODEzQUMxODAy
MDBCNjlDNjggLyogQXN5bmNBdWRpb0RlY29kZXIuaCAqLzsgfTsKIAkJRkQ1Njg2Q0MxM0FDMTgx
NDAwQjY5QzY4IC8qIEF1ZGlvQnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTY4NkNCMTNBQzE4MTQwMEI2OUM2OCAvKiBBdWRp
b0J1ZmZlckNhbGxiYWNrLmggKi87IH07Ci0JCUZENTgxRkFFMTUyMEY5MUYwMDNBN0E3NSAvKiBP
c2NpbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZENTgxRkFCMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yLmNwcCAqLzsgfTsKLQkJ
RkQ1ODFGQUYxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTgxRkFDMTUyMEY5MUYwMDNBN0E3NSAv
KiBPc2NpbGxhdG9yLmggKi87IH07CisJCUZENTgxRkFFMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2Np
bGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRDU4MUZBQjE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5vZGUuY3BwICovOyB9
OworCQlGRDU4MUZBRjE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTgxRkFDMTUyMEY5MUYw
MDNBN0E3NSAvKiBPc2NpbGxhdG9yTm9kZS5oICovOyB9OwogCQlGRDU4MUZCNDE1MjBGOTNCMDAz
QTdBNzUgLyogV2F2ZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZENTgxRkIxMTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuY3BwICov
OyB9OwogCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDU4MUZCMjE1MjBGOTNCMDAz
QTdBNzUgLyogV2F2ZVRhYmxlLmggKi87IH07CiAJCUZENjI5RUEzMTU0QjQ3MTYwMDA2RDAyNiAv
KiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQ2MjlFQTExNTRCNDcxNjAwMDZEMDI2IC8qIEF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlLmggKi87IH07CkBAIC02NDk5LDI0ICs2NDk5LDI0IEBACiAJCUZEQTE1RTlF
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4MjEyQjAzRUUxMDAzQTU4M0EgLyogSlNB
dWRpb0J1ZmZlci5oICovOyB9OwogCQlGREExNUU5RjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkRBMTVFODMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcCAqLzsgfTsKIAkJRkRBMTVFQTAxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGREExNUU4NDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaCAqLzsgfTsKLQkJRkRBMTVFQTExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVs
TWVyZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEQTE1RTg1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgKi87
IH07Ci0JCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1lcmdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFODYx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsTWVyZ2VyLmggKi87IH07Ci0JCUZEQTE1
RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTg3MTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCAqLzsgfTsKLQkJRkRBMTVFQTQx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTg4MTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggKi87IH07CisJCUZEQTE1RUExMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTg1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0No
YW5uZWxNZXJnZXJOb2RlLmNwcCAqLzsgfTsKKwkJRkRBMTVFQTIxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RTg2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJO
b2RlLmggKi87IH07CisJCUZEQTE1RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkRBMTVFODcxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAg
Ki87IH07CisJCUZEQTE1RUE0MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RTg4MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuaCAqLzsgfTsKIAkJ
RkRBMTVFQTUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTg5MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5jcHAgKi87IH07CiAJCUZEQTE1RUE2MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkRBMTVFOEExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250ZXh0
LmggKi87IH07CiAJCUZEQTE1RUE3MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEQTE1RThCMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAq
LzsgfTsKIAkJRkRBMTVFQTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RThDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi87IH07CiAJ
CUZEQTE1RUE5MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4RDEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0dhaW4uY3BwICovOyB9OwogCQlGREExNUVBQTEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0dhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEQTE1RThFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbi5oICovOyB9Owot
CQlGREExNUVBQjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RThGMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbk5vZGUuY3BwICovOyB9OwotCQlGREExNUVBQzEyQjAzRUUx
MDAzQTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU5MDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dh
aW5Ob2RlLmggKi87IH07CisJCUZEQTE1RUFCMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2Rl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RThGMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmNwcCAqLzsgfTsKKwkJRkRBMTVFQUMx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTkwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5O
b2RlLmggKi87IH07CiAJCUZEQTE1RUFEMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVu
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRB
MTVFOTExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9MaXN0ZW5lci5jcHAgKi87IH07CiAJCUZE
QTE1RUFFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTkyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCAqLzsgfTsKIAkJRkRBMTVFQUYxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEQTE1RTkzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5jcHAgKi87
IH07CiAJCUZEQTE1RUIwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFOTQxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQXVkaW9Ob2RlLmggKi87IH07Ci0JCUZEQTE1RUIxMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvUGFubmVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGREExNUU5NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Bhbm5l
ck5vZGUuY3BwICovOyB9OwotCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Bh
bm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEQTE1RTk2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUGFubmVyTm9kZS5oICovOyB9Owor
CQlGREExNUVCMTEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTk1MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU1Bhbm5lck5vZGUuY3BwICovOyB9OworCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4
M0EgLyogSlNQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREExNUU5NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmggKi87
IH07CiAJCUZEQTE1RUIzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUGFyYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFOTcxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5jcHAgKi87IH07CiAJCUZEQTE1RUI0MTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEQTE1RTk4MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUGFyYW0u
aCAqLzsgfTsKIAkJRkRBMTVFQjUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Qcm9jZXNzaW5n
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkRBMTVFOTkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwICov
OyB9OwpAQCAtNjUyNSwxMCArNjUyNSwxMCBAQAogCQlGREExNUVCODEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RTlDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvU291cmNlTm9k
ZS5oICovOyB9OwogCQlGREExNUVCRDEyQjAzRjBCMDAzQTU4M0EgLyogSlNDb252b2x2ZXJOb2Rl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RUJCMTJCMDNGMEIwMDNBNTgzQSAvKiBKU0NvbnZvbHZlck5vZGUuY3BwICovOyB9OwogCQlGREEx
NUVCRTEyQjAzRjBCMDAzQTU4M0EgLyogSlNDb252b2x2ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUVCQzEyQjAzRjBCMDAzQTU4M0Eg
LyogSlNDb252b2x2ZXJOb2RlLmggKi87IH07Ci0JCUZEQTE1RUM5MTJCMDNGNTAwMDNBNTgzQSAv
KiBKU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RUM3MTJCMDNGNTAwMDNBNTgzQSAvKiBKU1JlYWx0aW1l
QW5hbHlzZXJOb2RlLmNwcCAqLzsgfTsKLQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8qIEpT
UmVhbHRpbWVBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RUM4MTJCMDNGNTAwMDNBNTgzQSAvKiBKU1JlYWx0aW1lQW5hbHlz
ZXJOb2RlLmggKi87IH07Ci0JCUZEQTE1RUNEMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3Jp
cHRBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkRBMTVFQ0IxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZS5j
cHAgKi87IH07Ci0JCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRp
b05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
QTE1RUNDMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuaCAqLzsgfTsK
KwkJRkRBMTVFQzkxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RUM3MTJCMDNGNTAw
MDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgKi87IH07CisJCUZEQTE1RUNBMTJCMDNGNTAw
MDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFQzgxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlzZXJO
b2RlLmggKi87IH07CisJCUZEQTE1RUNEMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkRBMTVFQ0IxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAg
Ki87IH07CisJCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RUNDMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuaCAqLzsgfTsKIAkJ
RkRBMTVFRDExMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RUNGMTJCMDNGOTQwMDNBNTgz
QSAvKiBKU0RlbGF5Tm9kZS5jcHAgKi87IH07CiAJCUZEQTE1RUQyMTJCMDNGOTQwMDNBNTgzQSAv
KiBKU0RlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkRBMTVFRDAxMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmggKi87IH07CiAJ
CUZEQTNFOTU5MTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBM0U5
NTUxMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgKi87
IH07CkBAIC02NTQ2LDEzICs2NTQ2LDEzIEBACiAJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAv
KiBCaXF1YWRGaWx0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQzU0RjAxMTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2Rl
LmNwcCAqLzsgfTsKIAkJRkRDNTRGMDUxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQzU0
RjAyMTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2RlLmggKi87IH07CiAJCUZERTJE
NTVCMTU5RTY2RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERTJENTVBMTU5RTY2RUIwMERDQ0NGOCAv
KiBBdWRpb0lPQ2FsbGJhY2suaCAqLzsgfTsKLQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8q
IEpTT3NjaWxsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGREVBNjI0MDE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9yLmNwcCAqLzsg
fTsKLQkJRkRFQTYyNDMxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRFQTYyNDExNTIxMDJFMjAw
NDc5REYwIC8qIEpTT3NjaWxsYXRvci5oICovOyB9OworCQlGREVBNjI0MjE1MjEwMkUyMDA0NzlE
RjAgLyogSlNPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGREVBNjI0MDE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9y
Tm9kZS5jcHAgKi87IH07CisJCUZERUE2MjQzMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0
b3JOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
REVBNjI0MTE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9yTm9kZS5oICovOyB9OwogCQlG
REVBNjI0NjE1MjEwMkZDMDA0NzlERjAgLyogSlNXYXZlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRFQTYyNDQxNTIxMDJGQzAwNDc5REYw
IC8qIEpTV2F2ZVRhYmxlLmNwcCAqLzsgfTsKIAkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYwIC8q
IEpTV2F2ZVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGREVBNjI0NTE1MjEwMkZDMDA0NzlERjAgLyogSlNXYXZlVGFibGUuaCAqLzsgfTsKIAkJ
RkRFQUFBRjMxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERUFB
QUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAg
Ki87IH07CiAJCUZERUFBQUY0MTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREVB
QUFGMDEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovOyB9Owot
CQlGREVBQUFGRTEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERUFB
QUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwICov
OyB9OworCQlGREVBQUFGRTEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2Rl
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0b20u
Y3BwICovOyB9OwogCQlGREYwOURDODEzOTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
RjA5REM2MTM5OUI2MjIwMDY4OEU1QiAvKiBKU0JpcXVhZEZpbHRlck5vZGUuY3BwICovOyB9Owog
CQlGREYwOURDOTEzOTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREYwOURDNzEzOTlCNjIy
MDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJOb2RlLmggKi87IH07CiAJCUZERjZCQUY4MTM0QTRD
OTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2QkFGNjEzNEE0Qzk4MDA4
MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwICovOyB9OwpAQCAtMTM3
ODksMTIgKzEzNzg5LDEyIEBACiAJCUZEMzE1RkIxMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQzMTVGQjIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGQjMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQjQx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0NoYW5uZWxNZXJnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZCNTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9DaGFu
bmVsTWVyZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ2hhbm5l
bE1lcmdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZCNjEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsTWVyZ2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBBdWRpb0NoYW5uZWxNZXJnZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RDMxNUZCNzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZCODEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9DaGFubmVsU3BsaXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkQzMTVGQjkxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0NoYW5uZWxTcGxpdHRlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkI0MTJCMDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsTWVy
Z2VyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGFubmVs
TWVyZ2VyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkI1MTJC
MDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDaGFubmVsTWVyZ2VyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRDMxNUZCNjEyQjAyNjc1MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5uZWxNZXJnZXJOb2RlLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGQjcxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxT
cGxpdHRlck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hh
bm5lbFNwbGl0dGVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1
RkI4MTJCMDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYW5uZWxTcGxpdHRlck5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGQjkxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxTcGxp
dHRlck5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENoYW5uZWxTcGxpdHRlck5vZGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZCQTEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1
RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZEMzE1RkJDMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzgwMyw5ICsxMzgwMyw5IEBACiAJCUZEMzE1RkJGMTJCMDI2NzUwMEMxQTM1OSAv
KiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZD
MDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvR2Fpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMx
NUZDMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0dhaW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZD
MjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0dhaW5Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkQzMTVGQzMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9HYWluTm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZDNDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9H
YWluTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9HYWluTm9kZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkMyMTJCMDI2NzUwMEMxQTM1OSAvKiBH
YWluTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHYWluTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkMzMTJCMDI2NzUwMEMx
QTM1OSAvKiBHYWluTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYWlu
Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZDNDEyQjAyNjc1MDBD
MUEzNTkgLyogR2Fpbk5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhaW5Ob2RlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGQzUxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1
RkM2MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1ZGlvTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTVGQzcxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvTGlzdGVuZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM4MTYsOSArMTM4MTYsOSBAQAogCQlGRDMxNUZDQzEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9Ob2RlSW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9Ob2RlSW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGQ0Qx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb05vZGVPdXRwdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRDMxNUZDRTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTm9kZU91dHB1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZDRjEyQjAyNjc1MDBDMUEzNTkgLyog
QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE1
RkQwMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZEMzE1RkQxMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1Bhbm5lck5vZGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhbm5lck5vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZEMDEyQjAyNjc1MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYW5uZXJO
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkQxMTJCMDI2NzUwMEMx
QTM1OSAvKiBQYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYW5uZXJOb2Rl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGRDIxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvUGFyYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9QYXJhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkQz
MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvUGFyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQz
MTVGRDQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1ZGlvUGFyYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4
NDEsMTQgKzEzODQxLDE0IEBACiAJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5v
ZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERlbGF5Tm9kZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nl
c3Nvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxheVByb2Nl
c3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkU3MTJCMDI2NzYw
MEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZWxheVByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMx
NUZFQjEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGRUMxMkIwMjY3NjAwQzFBMzU5IC8qIEph
dmFTY3JpcHRBdWRpb05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2
YVNjcmlwdEF1ZGlvTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZF
RDEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZEMzE1RkVCMTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFByb2Nlc3Nv
ck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZFQzEyQjAyNjc2
MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRQcm9jZXNzb3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZEMzE1RkVEMTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTY3JpcHRQcm9jZXNzb3JOb2RlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGRjExMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0
aW1lQW5hbHlzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVh
bHRpbWVBbmFseXNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkYy
MTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lQW5hbHlzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lQW5hbHlz
ZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGRjQxMkIwMjY3
NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lQW5hbHlzZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZEMzE1RkY1MTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9k
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhbHRpbWVBbmFseXNlck5vZGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZGMzEyQjAyNjc2MDBDMUEzNTkgLyog
QW5hbHlzZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFu
YWx5c2VyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkY0MTJC
MDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQW5hbHlzZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZE
MzE1RkY1MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFuYWx5c2VyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZEMzE2MDQ0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNDUxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvQnVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkQzMTYwNDYxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQnVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzkxOSw5ICsxMzkxOSw5IEBACiAJCUZENTY4NkM4MTNBQzE4MDIw
MEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBc3luY0F1ZGlvRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRDU2ODZDQjEzQUMxODE0MDBCNjlDNjggLyogQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0J1ZmZlckNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTY4NkNEMTNBQzE4M0UwMEI2OUM2OCAvKiBBdWRp
b0J1ZmZlckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0J1ZmZlckNh
bGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQ1ODFGQUIxNTIwRjkx
RjAwM0E3QTc1IC8qIE9zY2lsbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gT3NjaWxsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZE
NTgxRkFDMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE9zY2lsbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQ1ODFGQUQxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE9zY2lsbGF0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRDU4MUZBQjE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5vZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3NjaWxsYXRvck5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRDU4MUZBQzE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxs
YXRvck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3NjaWxsYXRvck5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ1ODFGQUQxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPc2NpbGxh
dG9yTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTgxRkIxMTUyMEY5
M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2F2ZVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ1
ODFGQjIxNTIwRjkzQjAwM0E3QTc1IC8qIFdhdmVUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXZlVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQ1ODFGQjMxNTIwRjkzQjAwM0E3QTc1IC8qIFdhdmVUYWJsZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2F2ZVRhYmxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
OTU4LDI0ICsxMzk1OCwyNCBAQAogCQlGREExNUU4MjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RTgzMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZEQTE1RTg0MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGREExNUU4NTEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGREExNUU4NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0NoYW5uZWxNZXJnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRp
b0NoYW5uZWxNZXJnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFODcx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RTg4MTJCMDNFRTEwMDNBNTgzQSAvKiBK
U0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkRBMTVFODUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEQTE1RTg2MTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ2hhbm5lbE1lcmdlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkRB
MTVFODcxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREExNUU4ODEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGREExNUU4OTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUU4QTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOEIxMkIwM0VFMTAwM0E1
ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZEQTE1RThDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOEQxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9HYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkRBMTVFOEUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9HYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZEQTE1RThGMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbk5vZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0dhaW5Ob2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFOTAxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9HYWluTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvR2Fpbk5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkRBMTVFOEYx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNHYWluTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZEQTE1RTkwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Fpbk5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkRBMTVFOTExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9MaXN0ZW5lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvTGlzdGVuZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUU5MjEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXVkaW9MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUU5MzEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBdWRpb05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREExNUU5NDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb05vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkRBMTVFOTUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYW5uZXJOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9QYW5uZXJO
b2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFOTYxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZEQTE1RTk1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU1Bhbm5lck5vZGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkRBMTVFOTYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bhbm5lck5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOTcxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
QXVkaW9QYXJhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1
ZGlvUGFyYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUU5ODEyQjAz
RUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXVkaW9QYXJhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREEx
NUU5OTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTg0LDEwICsxMzk4NCwxMCBAQAog
CQlGREExNUU5QzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1NvdXJjZU5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb1NvdXJjZU5vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFQkIxMkIwM0YwQjAwM0E1ODNBIC8qIEpTQ29udm9s
dmVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbnZv
bHZlck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUVCQzEyQjAz
RjBCMDAzQTU4M0EgLyogSlNDb252b2x2ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQ29udm9sdmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGREExNUVDNzEyQjAzRjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWx0aW1lQW5hbHlzZXJO
b2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFQzgxMkIwM0Y1MDAw
M0E1ODNBIC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGREExNUVDQjEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9O
b2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlw
dEF1ZGlvTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RUNDMTJC
MDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZEQTE1RUM3MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FuYWx5c2VyTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEQTE1RUM4MTJCMDNGNTAwMDNB
NTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0FuYWx5c2VyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREExNUVD
QjEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEQTE1RUNDMTJCMDNGNjEwMDNBNTgzQSAvKiBK
U1NjcmlwdFByb2Nlc3Nvck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTY3JpcHRQcm9jZXNzb3JOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZE
QTE1RUNGMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlbGF5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEQTE1RUQwMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlbGF5Tm9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGREEzRTk1NTEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1
ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDAwNywxMyArMTQwMDcsMTMgQEAKIAkJRkRDNTRGMDIxMzk5QjBEQTAwOEQ5
MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmlxdWFkRmlsdGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREM1
NEYwMzEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQmlxdWFkRmlsdGVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZERTJENTVBMTU5RTY2RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9JT0NhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZERUE2MjQwMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2ls
bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPc2NpbGxh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRFQTYyNDExNTIxMDJFMjAw
NDc5REYwIC8qIEpTT3NjaWxsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU09zY2lsbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkRFQTYyNDAx
NTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNPc2NpbGxhdG9yTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZERUE2MjQxMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT3NjaWxsYXRvck5vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRFQTYyNDQxNTIxMDJGQzAwNDc5REYw
IC8qIEpTV2F2ZVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2F2ZVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRFQTYyNDUx
NTIxMDJGQzAwNDc5REYwIC8qIEpTV2F2ZVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2F2ZVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZE
RUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVyU291
cmNlTm9kZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERUFBQUYw
MTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU0ph
dmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkRFQUFBRkQxMkIwMkY0OTAwRENGMzNCIC8qIEpTU2NyaXB0UHJvY2Vz
c29yTm9kZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREYwOURDNjEzOTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJOb2RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmlxdWFkRmlsdGVyTm9kZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERjA5REM3MTM5OUI2MjIwMDY4OEU1
QiAvKiBKU0JpcXVhZEZpbHRlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNCaXF1YWRGaWx0ZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZE
RjZCQUY2MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQxNSw3
ICsyMDQxNSw3IEBACiAJCQkJN0EwRTc2RDQxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQlGMzE2Mzk2RDEzMjk0ODc2MDBBNjQ5Q0IgLyog
SlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICovLAogCQkJCTdBNzRFQ0JDMTAxODM5REEwMEJG
OTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8sCi0JCQkJRkRFQUFB
RkQxMkIwMkY0OTAwRENGMzNCIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgKi8s
CisJCQkJRkRFQUFBRkQxMkIwMkY0OTAwRENGMzNCIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZUN1
c3RvbS5jcHAgKi8sCiAJCQkJMUM1RkFFRTYwRENGREE2ODAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8q
IEpTTG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCTE0NjRFMDZCMTM1RUMxMDYwMEZEQjAwQSAv
KiBKU01lZGlhTGlzdEN1c3RvbS5jcHAgKi8sCkBAIC0yMjAyNCwxMiArMjIwMjQsMTIgQEAKIAkJ
CQlGRDMxNUZCMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCAq
LywKIAkJCQlGRDMxNUZCMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmggKi8sCiAJCQkJRkQzMTVGQjMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZS5pZGwgKi8sCi0JCQkJRkQzMTVGQjQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5l
bE1lcmdlci5jcHAgKi8sCi0JCQkJRkQzMTVGQjUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hh
bm5lbE1lcmdlci5oICovLAotCQkJCUZEMzE1RkI2MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0No
YW5uZWxNZXJnZXIuaWRsICovLAotCQkJCUZEMzE1RkI3MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAgKi8sCi0JCQkJRkQzMTVGQjgxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggKi8sCi0JCQkJRkQzMTVGQjkxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbCAqLywKKwkJCQlGRDMxNUZCNDEyQjAyNjc1MDBD
MUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuY3BwICovLAorCQkJCUZEMzE1RkI1MTJCMDI2NzUw
MEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oICovLAorCQkJCUZEMzE1RkI2MTJCMDI2NzUw
MEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5pZGwgKi8sCisJCQkJRkQzMTVGQjcxMkIwMjY3
NTAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuY3BwICovLAorCQkJCUZEMzE1RkI4MTJC
MDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggKi8sCisJCQkJRkQzMTVGQjkx
MkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuaWRsICovLAogCQkJCUZEMzE1
RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwICovLAogCQkJCUZEMzE1RkJC
MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGRDMxNUZCQzEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAqLywKQEAgLTIyMDM4LDkgKzIyMDM4LDkg
QEAKIAkJCQlGRDMxNUZCRjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aWRsICovLAogCQkJCUZEMzE1RkMwMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0dhaW4uaCAqLywK
IAkJCQlGRDMxNUZDMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluLmlkbCAqLywKLQkJCQlG
RDMxNUZDMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluTm9kZS5jcHAgKi8sCi0JCQkJRkQz
MTVGQzMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuaCAqLywKLQkJCQlGRDMxNUZD
NDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluTm9kZS5pZGwgKi8sCisJCQkJRkQzMTVGQzIx
MkIwMjY3NTAwQzFBMzU5IC8qIEdhaW5Ob2RlLmNwcCAqLywKKwkJCQlGRDMxNUZDMzEyQjAyNjc1
MDBDMUEzNTkgLyogR2Fpbk5vZGUuaCAqLywKKwkJCQlGRDMxNUZDNDEyQjAyNjc1MDBDMUEzNTkg
LyogR2Fpbk5vZGUuaWRsICovLAogCQkJCUZEMzE1RkM1MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRp
b0xpc3RlbmVyLmNwcCAqLywKIAkJCQlGRDMxNUZDNjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9M
aXN0ZW5lci5oICovLAogCQkJCUZEMzE1RkM3MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0xpc3Rl
bmVyLmlkbCAqLywKQEAgLTIyMDUxLDkgKzIyMDUxLDkgQEAKIAkJCQlGRDMxNUZDQzEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCAqLywKIAkJCQlGRDMxNUZDRDEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmNwcCAqLywKIAkJCQlGRDMxNUZDRTEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggKi8sCi0JCQkJRkQzMTVGQ0YxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8sCi0JCQkJRkQzMTVGRDAxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvUGFubmVyTm9kZS5oICovLAotCQkJCUZEMzE1RkQxMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb1Bhbm5lck5vZGUuaWRsICovLAorCQkJCUZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1
OSAvKiBQYW5uZXJOb2RlLmNwcCAqLywKKwkJCQlGRDMxNUZEMDEyQjAyNjc1MDBDMUEzNTkgLyog
UGFubmVyTm9kZS5oICovLAorCQkJCUZEMzE1RkQxMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJO
b2RlLmlkbCAqLywKIAkJCQlGRDMxNUZEMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5j
cHAgKi8sCiAJCQkJRkQzMTVGRDMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCAqLywK
IAkJCQlGRDMxNUZENDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5pZGwgKi8sCkBAIC0y
MjA5MCw5ICsyMjA5MCw5IEBACiAJCQkJRkQ2RUQyQzExMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwICovLAogCQkJCUZENkVEMkMyMTM2QjhFNDIwMDNDRjA3MiAv
KiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi8sCiAJCQkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NG
MDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsICovLAotCQkJCUZEMzE1RkVCMTJCMDI2
NzYwMEMxQTM1OSAvKiBKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCAqLywKLQkJCQlGRDMxNUZFQzEy
QjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5oICovLAotCQkJCUZEMzE1RkVE
MTJCMDI2NzYwMEMxQTM1OSAvKiBKYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbCAqLywKKwkJCQlGRDMx
NUZFQjEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgKi8sCisJCQkJ
RkQzMTVGRUMxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCAqLywKKwkJ
CQlGRDMxNUZFRDEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwgKi8s
CiAJCQkJRkQ2RjI1MjkxM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAgKi8sCiAJCQkJRkQ2RjI1MkExM0Y1RUYwRTAwNjUxNjVGIC8qIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oICovLAogCQkJCUZENkYyNTJCMTNGNUVGMEUwMDY1MTY1RiAvKiBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsICovLApAQCAtMjIxMDQsMTQgKzIyMTA0LDE0
IEBACiAJCQkJRkRBM0U5NUQxMzRBNDlGRjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudC5pZGwgKi8sCiAJCQkJRkRBM0U5NTcxMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJRkRBM0U5NTgxMzRBNDlFRjAwOEQ0QjVB
IC8qIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAotCQkJCUZENTgxRkFCMTUyMEY5
MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yLmNwcCAqLywKLQkJCQlGRDU4MUZBQzE1MjBGOTFGMDAz
QTdBNzUgLyogT3NjaWxsYXRvci5oICovLAotCQkJCUZENTgxRkFEMTUyMEY5MUYwMDNBN0E3NSAv
KiBPc2NpbGxhdG9yLmlkbCAqLywKKwkJCQlGRDU4MUZBQjE1MjBGOTFGMDAzQTdBNzUgLyogT3Nj
aWxsYXRvck5vZGUuY3BwICovLAorCQkJCUZENTgxRkFDMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2Np
bGxhdG9yTm9kZS5oICovLAorCQkJCUZENTgxRkFEMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxh
dG9yTm9kZS5pZGwgKi8sCiAJCQkJRkQzMTVGRjExMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1l
QW5hbHlzZXIuY3BwICovLAogCQkJCUZEMzE1RkYyMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGlt
ZUFuYWx5c2VyLmggKi8sCi0JCQkJRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1l
QW5hbHlzZXJOb2RlLmNwcCAqLywKLQkJCQlGRDMxNUZGNDEyQjAyNjc2MDBDMUEzNTkgLyogUmVh
bHRpbWVBbmFseXNlck5vZGUuaCAqLywKLQkJCQlGRDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyog
UmVhbHRpbWVBbmFseXNlck5vZGUuaWRsICovLAorCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1
OSAvKiBBbmFseXNlck5vZGUuY3BwICovLAorCQkJCUZEMzE1RkY0MTJCMDI2NzYwMEMxQTM1OSAv
KiBBbmFseXNlck5vZGUuaCAqLywKKwkJCQlGRDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5h
bHlzZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4QTEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNo
YXBlckRTUEtlcm5lbC5jcHAgKi8sCiAJCQkJRkQ3RjI5OEIxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdh
dmVTaGFwZXJEU1BLZXJuZWwuaCAqLywKIAkJCQlGRDdGMjk4QzEzRDRDMENCMDBBRDk1MzUgLyog
V2F2ZVNoYXBlck5vZGUuY3BwICovLApAQCAtMjIyMjYsMjQgKzIyMjI2LDI0IEBACiAJCQkJRkRG
N0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovLAogCQkJ
CUZEQTE1RTgzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAg
Ki8sCiAJCQkJRkRBMTVFODQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmggKi8sCi0JCQkJRkRBMTVFODUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVs
TWVyZ2VyLmNwcCAqLywKLQkJCQlGREExNUU4NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0No
YW5uZWxNZXJnZXIuaCAqLywKLQkJCQlGREExNUU4NzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAgKi8sCi0JCQkJRkRBMTVFODgxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCAqLywKKwkJCQlGREExNUU4NTEyQjAzRUUxMDAzQTU4
M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgKi8sCisJCQkJRkRBMTVFODYxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuaCAqLywKKwkJCQlGREExNUU4NzEyQjAzRUUx
MDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCAqLywKKwkJCQlGREExNUU4ODEy
QjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmggKi8sCiAJCQkJRkRBMTVF
ODkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGREExNUU4
QTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGREExNUU4QjEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJRkRB
MTVFOEMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJ
CQlGREExNUU4RDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4uY3BwICovLAogCQkJCUZE
QTE1RThFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbi5oICovLAotCQkJCUZEQTE1RThG
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbk5vZGUuY3BwICovLAotCQkJCUZEQTE1RTkw
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbk5vZGUuaCAqLywKKwkJCQlGREExNUU4RjEy
QjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5jcHAgKi8sCisJCQkJRkRBMTVFOTAxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuaCAqLywKIAkJCQlGREExNUU5MTEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0xpc3RlbmVyLmNwcCAqLywKIAkJCQlGREExNUU5MjEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0xpc3RlbmVyLmggKi8sCiAJCQkJRkRBMTVFOTMxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9Ob2RlLmNwcCAqLywKIAkJCQlGREExNUU5NDEyQjAzRUUxMDAzQTU4M0EgLyog
SlNBdWRpb05vZGUuaCAqLywKLQkJCQlGREExNUU5NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b1Bhbm5lck5vZGUuY3BwICovLAotCQkJCUZEQTE1RTk2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1
ZGlvUGFubmVyTm9kZS5oICovLAorCQkJCUZEQTE1RTk1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU1Bh
bm5lck5vZGUuY3BwICovLAorCQkJCUZEQTE1RTk2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU1Bhbm5l
ck5vZGUuaCAqLywKIAkJCQlGREExNUU5NzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFt
LmNwcCAqLywKIAkJCQlGREExNUU5ODEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmgg
Ki8sCiAJCQkJRkRBMTVFOTkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Qcm9jZXNzaW5nRXZl
bnQuY3BwICovLApAQCAtMjIyNTgsMTggKzIyMjU4LDE4IEBACiAJCQkJRkRBMTVFRDAxMkIwM0Y5
NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmggKi8sCiAJCQkJRkQ3ODY4QjcxMzZCOTk5MjAwRDQw
M0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgKi8sCiAJCQkJRkQ3ODY4QjgxMzZC
OTk5MjAwRDQwM0RGIC8qIEpTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oICovLAotCQkJCUZEQTE1
RUNCMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuY3BwICovLAotCQkJ
CUZEQTE1RUNDMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuaCAqLywK
KwkJCQlGREExNUVDQjEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmNw
cCAqLywKKwkJCQlGREExNUVDQzEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JO
b2RlLmggKi8sCiAJCQkJRkQyM0ExMjMxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmNwcCAqLywKIAkJCQlGRDIzQTEyNDEzRjVGQTU5MDBGNjcwMDEgLyog
SlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCAqLywKIAkJCQlGREJENDgwQTE1OUJDNjg3
MDA5M0VCNEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgKi8sCiAJCQkJRkRC
RDQ4MEIxNTlCQzY4NzAwOTNFQjRGIC8qIEpTTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCAq
LywKIAkJCQlGREY2QkFGNjEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQuY3BwICovLAogCQkJCUZERjZCQUY3MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICovLAotCQkJCUZERUE2MjQwMTUyMTAyRTIwMDQ3OURG
MCAvKiBKU09zY2lsbGF0b3IuY3BwICovLAotCQkJCUZERUE2MjQxMTUyMTAyRTIwMDQ3OURGMCAv
KiBKU09zY2lsbGF0b3IuaCAqLywKLQkJCQlGREExNUVDNzEyQjAzRjUwMDAzQTU4M0EgLyogSlNS
ZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgKi8sCi0JCQkJRkRBMTVFQzgxMkIwM0Y1MDAwM0E1ODNB
IC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaCAqLywKKwkJCQlGREVBNjI0MDE1MjEwMkUyMDA0
NzlERjAgLyogSlNPc2NpbGxhdG9yTm9kZS5jcHAgKi8sCisJCQkJRkRFQTYyNDExNTIxMDJFMjAw
NDc5REYwIC8qIEpTT3NjaWxsYXRvck5vZGUuaCAqLywKKwkJCQlGREExNUVDNzEyQjAzRjUwMDAz
QTU4M0EgLyogSlNBbmFseXNlck5vZGUuY3BwICovLAorCQkJCUZEQTE1RUM4MTJCMDNGNTAwMDNB
NTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5oICovLAogCQkJCUZEODJEN0Y1MTNENEM4QkQwMDRFNDM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmNwcCAqLywKIAkJCQlGRDgyRDdGNjEzRDRDOEJEMDA0RTQz
NzIgLyogSlNXYXZlU2hhcGVyTm9kZS5oICovLAogCQkJCUZERUE2MjQ0MTUyMTAyRkMwMDQ3OURG
MCAvKiBKU1dhdmVUYWJsZS5jcHAgKi8sCkBAIC0yMjM3MCw4ICsyMjM3MCw4IEBACiAJCQkJRkQz
MTVGRkMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwN0MxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9DaGFu
bmVsTWVyZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEMzE1RkZGMTJC
MDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDA1MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3Rp
bmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM4MSwxMyArMjIzODEs
MTMgQEAKIAkJCQlGRDMxNjA4MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxl
UmVhZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwQTEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9HYWluLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNjAwRDEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9HYWluTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkQzMTYwMEQxMkIwMjY3
NjAwQzFBMzU5IC8qIEdhaW5Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2
NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0
LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Q
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQxMkIwMjY3NjAwQzFB
MzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzU5MTkwMTM4REIyMjAw
MEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDIwMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMzg1Miw3ICsyMzg1Miw3IEBACiAJCQkJRTEzNEY1QUIxMkVFMzQzRjAwNEVDNThE
IC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3NTBCMDUzODE0MDAy
Q0U2NEYgLyogSW50U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzYwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFNpemVIYXNoLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNjAzNjEyQjAy
Njc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkQzMTYwMzYxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDODFCQTBBMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNB
YnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNGMDExMDUwNzBDNDAwMDk5
RkFCIC8qIEpTQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjM4NjIsMTUgKzIzODYy
LDE1IEBACiAJCQkJRkRBMTVFOUUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEwMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkRBMTVF
QTIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsTWVyZ2VyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlGREExNUVBNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NoYW5uZWxTcGxpdHRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkRBMTVFQTIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hh
bm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEQTE1RUE0MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1
RUE2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkRBMTVFQTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFBMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fp
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkRBMTVFQUMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVk
aW9HYWluTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkRBMTVFQUMxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFFMTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUIwMTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkRBMTVF
QjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGREExNUVCNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREExNUVCNjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nl
c3NpbmdFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQjgxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDkzLDcgKzI0MDkz
LDcgQEAKIAkJCQk0OUVFQ0YwNzEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUVFQ0YwNTEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQzMkFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3Qjk5NjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4
QXJyYXkuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBK
U0phdmFTY3JpcHRBdWRpb05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEQTE1RUNFMTJCMDNG
NjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDNUZBRUQyMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4NjYyOUQzMDlEQTJCNDgwMDk2MzNBNSAvKiBKU0tleWJvYXJkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUY0NTQzMEY3QzNCNUYwMEQ3QzFGQiAvKiBKU0xh
enlFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MTMxLDcgKzI0MTMxLDcgQEAK
IAkJCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFy
cmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREY2QkFGOTEzNEE0Qzk4MDA4MjI5MjAg
LyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZE
RUE2MjQzMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZERUE2MjQzMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTBENTc0MTBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEJCMTEwNDQ5RkZBMDBFQUVCNTIgLyogSlNQYWdl
VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4
QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDE0OCw3ICsyNDE0
OCw3IEBACiAJCQkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyMDIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQyM0NBNTVEMEFCMEVBQUUwMDUxMDhBNSAvKiBKU1Jhbmdl
RXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlGREExNUVDQTEyQjAzRjUwMDAzQTU4M0Eg
LyogSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkRBMTVFQ0Ex
MkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlzZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0ZFMkYxMjBDMUI1ODM4MDAyMDIzNUYgLyogSlNSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OTk4QUVDRTEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NERBNDkxMDEzRjQ2ODAwNzk4N0FEIC8qIEpTUkdC
Q29sb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ1NzAsNyArMjQ1NzAsNyBAQAogCQkJCTAwMTQ2
MjhCMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdCQzZBMzgxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBM0ExNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdl
UmVjb3JkLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDU4MUZBRjE1MjBGOTFGMDAzQTdBNzUgLyog
T3NjaWxsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkQ1ODFGQUYxNTIwRjkxRjAwM0E3QTc1
IC8qIE9zY2lsbGF0b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVERDBFODFCOERE
MDBCMjU5NjUgLyogT3V0bGluZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBENTczNzBB
NUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3
NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNDY4NCw3ICsyNDY4NCw3IEBACiAJCQkJRjU1QjNEQ0UxMjUxRjEyRDAw
M0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODREODI3QzEx
RDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRkQzMTYwM0UxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlz
ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRDMxNjAzRTEyQjAyNjc2MDBDMUEzNTkgLyog
QW5hbHlzZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZC
NUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyRUEzQkIxNTg1Q0Y1NTAwNEZBQTI2
IC8qIFJlZkNvdW50ZWRTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5ODMxQUU0QTE1
NDIyNUM5MDBGRTI2NDQgLyogUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLApAQCAtMjYw
MDksMTkgKzI2MDA5LDE5IEBACiAJCQkJRkQzMTYwN0IxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlv
QnVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEJCMTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb0J1c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdEMTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb0NoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkQzMTVGRkUxMkIwMjY3
NjAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
RDMxNjAwMTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkQzMTVGRkUxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJO
b2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEMzE2MDAxMTJCMDI2NzYwMEMxQTM1OSAvKiBD
aGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDA0MTJCMDI2
NzYwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYw
QkMxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwMDcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDgxMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBCRTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUZEMzE2MDBDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZEMzE2MDBDMTJCMDI2NzYwMEMxQTM1OSAvKiBHYWluTm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDMxNjAwRjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxMjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDE1MTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb05vZGVJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxNzEyQjAyNjc2MDBD
MUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZEMzE2MDE5
MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1Bhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkQzMTYwMTkxMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwMUMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzNTkxOEYxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1UaW1l
bGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxRjEyQjAyNjc2MDBDMUEzNTkgLyog
QXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzA1Niw3ICsyNzA1
Niw3IEBACiAJCQkJQjI3NTM1N0QwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCMjc1MzU2MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUNHLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXpl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRkQzMTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIEph
dmFTY3JpcHRBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQzMTYwMzUxMkIwMjY3
NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3Jr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNGMDAxMDUwNzBDNDAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzA2OCwxNiArMjcwNjgsMTYgQEAK
IAkJCQlGREY3RTlDMzEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RTlGMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREVBQUFGMzEyQjAyRUU0
MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRkRBMTVFQTExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsTWVyZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZEQTE1RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1
ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEQTE1RUExMTJCMDNF
RTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZEQTE1RUEzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQTUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZERUFBQUY0MTJCMDJFRTQwMERDRjMzQiAvKiBK
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBNzEyQjAz
RUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGREExNUVBOTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRkRBMTVFQUIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGREExNUVBQjEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWlu
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBRDEyQjAzRUUxMDAzQTU4M0EgLyog
SlNBdWRpb0xpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUFGMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGREExNUVCMTEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Bhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkRBMTVFQjExMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGREExNUVCMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEQTE1RUI1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUHJv
Y2Vzc2luZ0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUI3MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MzYxLDgg
KzI3MzYxLDggQEAKIAkJCQk0OUVFQ0YwNjEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQxNkFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDRjA0MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0lu
dDMyQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0I5OTUxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTSW50OEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZEQTE1RUNEMTJCMDNGNjEw
MDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RkRFQUFBRkUxMkIwMkY0OTAwRENGMzNCIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGREExNUVDRDEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZERUFBQUZFMTJCMDJGNDkw
MERDRjMzQiAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM1RkFFRDEwRENGRDkwMTAwRDU4Rjc4IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzVGQUVFNzBEQ0ZEQTY4MDBENThGNzggLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQ0MDlE
QTJCNDgwMDk2MzNBNSAvKiBKU0tleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzQxOSw3ICsyNzQxOSw3IEBACiAJCQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VT
VGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QUE2MTJGMjhCMkEwMDRF
MDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZE
RjZCQUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlGREVBNjI0MjE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2Np
bGxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZERUE2MjQyMTUyMTAyRTIwMDQ3OURGMCAv
KiBKU09zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzQwMEE1Qzc4
NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEy
ODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4QTlBNTg3NDExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDM4LDcgKzI3NDM4LDcgQEAKIAkJCQlCNjU4RkZBMTE1
MjJFRjNBMDBERDU1OTUgLyogSlNSYWRpb05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTY1REYzMjAxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1JhbmdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUQyM0NBNTVGMEFCMEVBQjYwMDUxMDhBNSAvKiBKU1JhbmdlRXhjZXB0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUZEQTE1RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBKU1JlYWx0aW1lQW5h
bHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEQTE1RUM5MTJCMDNGNTAwMDNBNTgz
QSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZFMkYxMTBDMUI1
ODM3MDAyMDIzNUYgLyogSlNSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OThBRUNEMTNG
OUQ2QzkwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5OThBRUQ0MTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc4NzAsNyAr
Mjc4NzAsNyBAQAogCQkJCTAwMTQ2MjhBMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NF
bnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEzNzE1MDVGMDgxMDAxQjc0QUMgLyog
T3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTM5MTUwNUYw
ODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
RDU4MUZBRTE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRDU4MUZBRTE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEwRDU3MzYwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3N0U3NzYwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VD
YWNoZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3OTUwLDcgKzI3OTUwLDcgQEAKIAkJCQk5NzhE
MDdCQTE0NUEwRjNDMDA5NjkwOEQgLyogUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjU1QjNEQ0QxMjUxRjEyRDAwM0VGMjY5IC8qIFJhbmdlSW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZEMzE2MDNCMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5
c2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZEMzE2MDNEMTJCMDI2NzYwMEMxQTM1OSAvKiBS
ZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDMxNjAzRDEyQjAy
Njc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQUI0
MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUw
MzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyQzNEQTJDMEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVz
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5OWYxOTg4MTg4NzdmZjBkYTAxZTc2YWRhNTkyNDY5MWIzMWNhZTNi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIkphdmFTY3JpcHRBdWRpb05v
ZGUuaCIKLQotI2luY2x1ZGUgIkpTSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSlNKYXZhU2NyaXB0QXVk
aW9Ob2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Ci17Ci0gICAgSlNKYXZhU2NyaXB0QXVkaW9Ob2RlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSmF2
YVNjcmlwdEF1ZGlvTm9kZSo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7Ci0gICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUq
Pih0aGlzT2JqZWN0LT5pbXBsKCkpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NjcmlwdFByb2Nlc3Nv
ck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTY3JpcHRQcm9j
ZXNzb3JOb2RlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWEyN2U3YzliMmZjODVjMDI1MTNjNDE3
OGI1NDUwZjRjNGFkOGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNwcApAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KworI2luY2x1ZGUgIlNjcmlwdFByb2Nlc3Nvck5vZGUuaCIKKworI2luY2x1ZGUgIkpTU2NyaXB0
UHJvY2Vzc29yTm9kZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgSlNTY3JpcHRQcm9jZXNzb3JOb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNTY3JpcHRQcm9jZXNzb3JO
b2RlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2NyaXB0UHJvY2Vzc29yTm9kZSo+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAg
Q09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHN0
YXRpY19jYXN0PFNjcmlwdFByb2Nlc3Nvck5vZGUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT52aXNp
dEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IGUyZWM4MmJkMzE3Y2E1NGVhNDE1NTIzNWY4MDVmZTI0Y2E1OWJlMDAuLjE0NmY2YTg5OWE3
ODMzNDI2YzU3YjAwNzdiNzZhZTM4MjVmZGE0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5o
CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJREJSZXF1
ZXN0OwogICAgIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogICAgIGNsYXNzIElEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0OwotICAgIGNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGU7CisgICAgY2xhc3MgU2Ny
aXB0UHJvY2Vzc29yTm9kZTsKICAgICBjbGFzcyBMb2NhbE1lZGlhU3RyZWFtOwogICAgIGNsYXNz
IE1lZGlhQ29udHJvbGxlcjsKICAgICBjbGFzcyBNZWRpYVNvdXJjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc5MWJkNGVkYTVjYTM3YWY0NTc4MzYzNDk3
Nzk1MTMwNzRjMmQyZjQuLjkzMDc4MTdjYTM4ZDljZGYxMTc3YTIwODg3MTYyYzFkN2QxOTJiYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTMsNyArMTMs
NyBAQCBJREJPcGVuREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlJl
cXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVHJhbnNhY3Rpb24gY29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQogSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgY29uZGl0aW9u
YWw9SU5ERVhFRF9EQVRBQkFTRQotSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRpb25hbD1XRUJf
QVVESU8KK1NjcmlwdFByb2Nlc3Nvck5vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1l
ZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFDb250cm9sbGVyIGNvbmRp
dGlvbmFsPVZJREVPCiBNZWRpYVNvdXJjZSBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZTFjNWY0YmY3
ZDE4ZDljM2JhOWFjMTU3ZGMyZTg3N2I3MTlhZDllLi43Yzc0ZDU0ZTdlNDgwODdiZmY5YzQwZjc4
OTkyODkxMGQ0MWE5YTJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMTUgIENocmlzIFJvZ2VycyAgPGNy
b2dlcnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW5hbWUgc29tZSBBdWRpb05vZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTM1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZToKKwogMjAxMi0xMC0xNSAgR2VvcmdlIFN0YWlr
b3MgIDxzdGFpa29zQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFkYXB0IHRv
IFBsYXRmb3JtIEFQSSBjaGFuZ2VzIGluIHN0cmluZyBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1y
ZW5hbWUKaW5kZXggYzkzZjBmNTM2ZTcyMGYxODcwZGViNTA3ZDBlNGEzNDU1MmU2NWU2ZS4uY2Qz
Y2RlZTdhOTZlMTNhYzkzOWJlYzYyYTZjYzQ1NGY4Njk2YjY5ZCAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUt
cmVuYW1lCkBAIC05MywxMCArOTMsMTYgQEAgc3ViIHdhbnRlZAogCiAjIFNldHRpbmcgaXNET01U
eXBlUmVuYW1lIHRvIDEgcmF0aGVyIHRoYW4gMCBleHBhbmRzIHRoZSByZWdleHBzIHVzZWQKICMg
YmVsb3cgdG8gaGFuZGxlIGN1c3RvbSBKYXZhU2NyaXB0IGJpbmRpbmdzLgotbXkgJGlzRE9NVHlw
ZVJlbmFtZSA9IDA7CitteSAkaXNET01UeXBlUmVuYW1lID0gMTsKIG15ICVyZW5hbWVzID0gKAog
ICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJNZWRpYUNvbnRyb2xz
IiA9PiAiTWVkaWFDb250cm9sUm9vdEVsZW1lbnQiLAorICAgICJKYXZhU2NyaXB0QXVkaW9Ob2Rl
IiA9PiAiU2NyaXB0UHJvY2Vzc29yTm9kZSIsCisgICAgIlJlYWx0aW1lQW5hbHlzZXJOb2RlIiA9
PiAiQW5hbHlzZXJOb2RlIiwKKyAgICAiQXVkaW9HYWluTm9kZSIgPT4gIkdhaW5Ob2RlIiwKKyAg
ICAiQXVkaW9QYW5uZXJOb2RlIiA9PiAiUGFubmVyTm9kZSIsCisgICAgIkF1ZGlvQ2hhbm5lbFNw
bGl0dGVyIiA9PiAiQ2hhbm5lbFNwbGl0dGVyTm9kZSIsCisgICAgIkF1ZGlvQ2hhbm5lbE1lcmdl
ciIgPT4gIkNoYW5uZWxNZXJnZXJOb2RlIiwKKyAgICAiT3NjaWxsYXRvciIgPT4gIk9zY2lsbGF0
b3JOb2RlIiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168801</attachid>
            <date>2012-10-15 16:15:00 -0700</date>
            <delta_ts>2012-10-15 21:59:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99358-20121015161350.patch</filename>
            <type>text/plain</type>
            <size>328478</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDgwNThkNDliZmFhMjI2
NmMyMDI2MzJmY2RhNjUxMWZkYmM0NTdlNS4uZjVlNzlmZWU0YmUyOGY3NjU0NjczZjFlZDE4YTdj
OWFhZjViYTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMSBAQAorMjAxMi0xMC0xNSAgQ2hy
aXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBzb21lIEF1
ZGlvTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U29tZSBBdWRpb05vZGUgbmFtZXMgYXJlIGNoYW5naW5nIGR1ZSB0byB0aWdodGVuaW5nIG9mIHRo
ZSBXZWIgQXVkaW8gQVBJIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vd3d3LnczLm9y
Zy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDcKKworICAgICAgICBIZXJlJ3MgYSBs
aXN0IG9mIHRoZSBub2RlIG5hbWVzLCBzaG93aW5nIHRoZSBjaGFuZ2luZyBvbmVzOgorICAgICAg
ICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlCisgICAgICAgICAgICBNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUKKyAgICAgICAgICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlCisgICAg
ICAgICAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIC0tLS0tLS0tLS0tLT4gU2NyaXB0UHJvY2Vzc29y
Tm9kZQorICAgICAgICAgICAgUmVhbHRpbWVBbmFseXNlck5vZGUgLS0tLS0tLS0tLS0tPiBBbmFs
eXNlck5vZGUKKyAgICAgICAgICAgIEF1ZGlvR2Fpbk5vZGUgLS0tLS0tLS0tLS0tPiBHYWluTm9k
ZQorICAgICAgICAgICAgRGVsYXlOb2RlCisgICAgICAgICAgICBCaXF1YWRGaWx0ZXJOb2RlCisg
ICAgICAgICAgICBBdWRpb1Bhbm5lck5vZGUgLS0tLS0tLS0tLS0tPiBQYW5uZXJOb2RlCisgICAg
ICAgICAgICBDb252b2x2ZXJOb2RlCisgICAgICAgICAgICBBdWRpb0NoYW5uZWxTcGxpdHRlciAt
LS0tLS0tLS0tLS0+IENoYW5uZWxTcGxpdHRlck5vZGUKKyAgICAgICAgICAgIEF1ZGlvQ2hhbm5l
bE1lcmdlciAtLS0tLS0tLS0tLS0+IENoYW5uZWxNZXJnZXJOb2RlCisgICAgICAgICAgICBEeW5h
bWljc0NvbXByZXNzb3JOb2RlCisgICAgICAgICAgICBPc2NpbGxhdG9yIC0tLS0tLS0tLS0tLT4g
T3NjaWxsYXRvck5vZGUKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6On5BbmFseXNlck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5
c2VyTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpzZXRGZnRT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9k
ZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBbmFseXNlck5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpmZnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6ZnJl
cXVlbmN5QmluQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjpzZXRNaW5E
ZWNpYmVscyk6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6Om1pbkRlY2liZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0TWF4RGVjaWJlbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6QW5hbHlzZXJOb2RlOjptYXhEZWNpYmVscyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbmFseXNlck5vZGU6OnNldFNtb290aGluZ1RpbWVDb25zdGFudCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmFseXNlck5vZGU6OnNtb290aGluZ1RpbWVDb25zdGFudCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmFseXNlck5vZGU6OmdldEZsb2F0RnJlcXVlbmN5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmFseXNlck5vZGU6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuYWx5c2VyTm9kZTo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldFBhbm5lck5vZGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg6CisgICAgICAgIChBdWRpb0J1
ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlSmF2YVNjcmlwdE5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVQYW5uZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3Bw
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVs
TWVyZ2VyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVsc0Zvcklu
cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1l
cmdlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDaGFubmVsTWVyZ2VyTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5pZGw6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdl
ci5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFu
bmVsU3BsaXR0ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFu
bmVsU3BsaXR0ZXJOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxTcGxp
dHRlck5vZGU6OnJlc2V0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9DaGFubmVsU3BsaXR0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hh
bm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3Bs
aXR0ZXJOb2RlLmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
RE9NV2luZG93V2ViQXVkaW8uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0dhaW5Ob2RlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R2Fp
bk5vZGU6OkdhaW5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpwcm9jZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpH
YWluTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChHYWluTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpnYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0dhaW5Ob2RlLmlkbDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpP
c2NpbGxhdG9yTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2Rl
OjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6fk9z
Y2lsbGF0b3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpzZXRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpjYWxjdWxhdGVTYW1wbGVBY2N1
cmF0ZVBoYXNlSW5jcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6
cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6OnNldFdhdmVUYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6cHJvcGFnYXRlc1NpbGVuY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9k
ZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6ZnJlcXVlbmN5KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpkZXR1bmUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaXhOQU5zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OlBhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6flBhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cHVsbElucHV0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYW5uZXJOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRE
aXN0YW5jZU1vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmdldEF6aW11dGhF
bGV2YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6ZG9wcGxlclJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2Fpbik6CisgICAgICAg
IChXZWJDb3JlOjpQYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoUGFubmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YW5uZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cGFubmlu
Z01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGU6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnZlbG9jaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFZlbG9jaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6cmVmRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6
c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6bWF4RGlzdGFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlzdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cm9sbG9mZkZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpQYW5uZXJOb2RlOjpzZXRSb2xsb2ZmRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
bm5lck5vZGU6OmNvbmVJbm5lckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldENvbmVJbm5lckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmNvbmVP
dXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVPdXRlckFu
Z2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmNvbmVPdXRlckdhaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0Q29uZU91dGVyR2Fpbik6CisgICAgICAgIChX
ZWJDb3JlOjpQYW5uZXJOb2RlOjpkaXN0YW5jZUdhaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6Y29uZUdhaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5pZGw6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
SmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6On5TY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UHJvY2Vzc29yTm9kZTo6ZmlyZVByb2Nlc3NFdmVudERpc3BhdGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmZpcmVQcm9jZXNzRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UHJvY2Vzc29yTm9kZTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnRhaWxUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmxhdGVuY3lUaW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFByb2Nlc3Nvck5vZGU6OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6YnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpkb3VibGVCdWZmZXJJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmlkbC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
YXZlVGFibGU6OmNyZWF0ZVNpbmUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVRhYmxlOjpjcmVh
dGVTcXVhcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVRhYmxlOjpjcmVhdGVTYXd0b290aCk6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlVGFibGU6OmNyZWF0ZVRyaWFuZ2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OldhdmVUYWJsZTo6Z2VuZXJhdGVCYXNpY1dhdmVmb3JtKToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vzc29yTm9kZUN1c3RvbS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0
b20uY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NjcmlwdFBy
b2Nlc3Nvck5vZGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bjoKKwogMjAxMi0xMC0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeSB0byBmaXggYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIHBvcnRzIHRoYXQgZG8gbm90IHN1
cHBvcnQga2VybmluZyBhbmQgbGlnYXR1cmVzIG9uIHRoZSBmYXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGFmZjRmOWQ5ZDQ2NGI4NjY1NDNiMWRmYmIwYzc0NzQ2OGQ1Yzg5NmYuLjFlZjE4MmZi
YjIwOTUxMTgxMWY0MzM2NDdiZjYzZjQ1ZjQ1NzhhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNjIsMTUgKzI2MiwxNSBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJD
YWxsYmFjay5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5p
ZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmlkbAotICAgIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0dhaW4uaWRsCi0gICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2Rl
LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0xpc3RlbmVyLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlk
bAotICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5pZGwKQEAgLTI3OSwxMiArMjc5LDEyIEBA
IFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViYXVkaW8vRE9NV2luZG93V2Vi
QXVkaW8uaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCiAgICAgTW9kdWxl
cy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAotICAgIE1vZHVsZXMvd2ViYXVk
aW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5pZGwKLSAgICBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaWRsCi0gICAgTW9kdWxlcy93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL09z
Y2lsbGF0b3JOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAog
ICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9XYXZlVGFibGUuaWRsCiAKQEAgLTkwNiwxNiArOTA2LDE2IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAog
ICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCi0gICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0No
YW5uZWxNZXJnZXIuY3BwCi0gICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRl
ci5jcHAKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAotICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9M
aXN0ZW5lci5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlT3V0cHV0LmNwcAotICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNw
cAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvUGFyYW0uY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxp
bmUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAKQEAg
LTkzMCwxNCArOTMwLDE0IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKLSAgICBN
b2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCisgICAgTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAogICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9D
b21wbGV0aW9uRXZlbnQuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCi0gICAgTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcAotICAgIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFs
eXNlck5vZGUuY3BwCisgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAogICAgIE1vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNGMxOTljNDY2
YTAyYWIwMmNjYTdkNTg3M2MxNzkzYzQxMTc2NzlkYS4uNDk4N2U1OTQ1MzlkZTg3NTY2OWVjMjZh
MjgxMWIwYjMxMGJmYmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjIs
MTUgKzEyMiwxNSBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0dhaW4uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtMTM5LDEyICsx
MzksMTIgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9ET01XaW5kb3dXZWJBdWRpby5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9K
YXZhU2NyaXB0QXVkaW9Ob2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbCBcCi0gICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9XYXZlVGFibGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaQppbmRleCA4NGM5ZDA3NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi41
YjVkNTZmNDg4ZDdkZjI0OWM4NjVhM2IzNGJhMWQxNGMzNjIxZTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMucHJpCkBAIC0xMzksMTUgKzEzOSwxNSBAQCBJRExfQklORElOR1MgKz0gXAogICAg
ICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIFwKICAgICAkJFBXRC9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxTcGxpdHRlck5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbi5pZGwgXAot
ICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5pZGwgXAorICAgICQkUFdE
L01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlk
bCBcCisgICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBcCiAgICAgJCRQ
V0QvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmlkbCBcCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBJRExfQklO
RElOR1MgKz0gXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbCBcCiAg
ICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9ET01XaW5kb3dXZWJBdWRpby5pZGwgXAogICAgICQk
UFdEL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgXAotICAgICQk
UFdEL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwgXAorICAgICQkUFdE
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwgXAogICAgICQkUFdEL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCiAgICAgJCRQ
V0QvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwgXAogICAg
ICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbCBc
Ci0gICAgJCRQV0QvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmlkbCBcCi0gICAgJCRQV0Qv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwgXAorICAgICQkUFdEL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL3dl
YmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5p
ZGwgXAogICAgICQkUFdEL01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93V2ViRGF0YWJhc2Uu
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM0NWY1YzY4YWJkZGY0ZGE5
YjZhYmI3NzFkNTQ4MjQxNGQwYzY0M2QuLjQwZjEzOTFmMTliZGU3ZmU5OWIxY2YyZWU3NzQ0ZDE0
ZTdkNzNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDMsMjQgKzQzLDI0
IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5l
bE1lcmdlci5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxNZXJn
ZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNw
cCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVsTWVyZ2VyTm9kZS5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0NvbnRleHQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250
ZXh0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9HYWluLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvR2Fpbi5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9HYWluTm9kZS5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0dhaW5Ob2Rl
LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluTm9kZS5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHYWluTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9MaXN0ZW5lci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3Rl
bmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb05vZGUuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9QYW5uZXJOb2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5lck5vZGUuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFyYW0uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQXVkaW9QYXJhbS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNz
aW5nRXZlbnQuY3BwIFwKQEAgLTQ4Nyw4ICs0ODcsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbnQzMkFycmF5LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNJbnQ4QXJyYXkuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSW50OEFycmF5LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVk
aW9Ob2RlLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05v
ZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2NyaXB0UHJvY2Vzc29yTm9kZS5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNLZXlib2FyZEV2ZW50LmNwcCBcCkBAIC01ODEsOCArNTgxLDggQEAgd2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT0VTVmVy
dGV4QXJyYXlPYmplY3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09zY2ls
bGF0b3IuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3NjaWxsYXRvci5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3NjaWxsYXRvck5vZGUuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTT3NjaWxsYXRvck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU092ZXJmbG93RXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZs
b3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVu
dC5jcHAgXApAQCAtNjE5LDggKzYxOSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JhbmdlRXhjZXB0aW9uLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JhbmdlRXhjZXB0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNSYW5nZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNl
ck5vZGUuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5v
ZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FuYWx5c2VyTm9kZS5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbmFseXNlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JlY3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVjdC5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2su
Y3BwIFwKQEAgLTEyNjUsMTUgKzEyNjUsMTUgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCi0JJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwgXAorCSQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0dhaW4uaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWlu
Tm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2lu
Z0V2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9k
ZS5pZGwgXApAQCAtMTI4MiwxMiArMTI4MiwxMiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIFwKLQkkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwgXAorCSQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRs
IFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5pZGwgXAotCSQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCBcCkBAIC0yMDA3LDE3ICsyMDA3LDE3IEBAIHdl
YmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmggXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWlu
Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIFwKQEAgLTIw
MjYsOCArMjAyNiw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmNwcCBcCkBAIC0yMDU3LDggKzIwNTcsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9O
b2RlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVk
aW9Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIFwKQEAgLTIwNjcsMTIg
KzIwNjcsMTIgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3IuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmggXAotCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIFwKQEAgLTIzNDYs
NyArMjM0Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2Vy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDQ3ZmYwMTlhMDAzOGYxYzBlOGUwYzAzZTgzN2Y3NTllYzk5NzExYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5o
IgorCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRw
dXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2Ft
cGxlUmF0ZSkKK3sKKyAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhp
cykpKTsKKyAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAy
KSkpOworICAgIAorICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQW5hbHlzZXIpOworICAgIAorICAg
IGluaXRpYWxpemUoKTsKK30KKworQW5hbHlzZXJOb2RlOjp+QW5hbHlzZXJOb2RlKCkKK3sKKyAg
ICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBBbmFseXNlck5vZGU6OnByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBdWRpb0J1cyogb3V0cHV0QnVzID0gb3V0cHV0KDAp
LT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25u
ZWN0ZWQoKSkgeworICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEF1ZGlvQnVzKiBpbnB1dEJ1cyA9IGlucHV0KDApLT5idXMoKTsKKyAgICAK
KyAgICAvLyBHaXZlIHRoZSBhbmFseXNlciB0aGUgYXVkaW8gd2hpY2ggaXMgcGFzc2luZyB0aHJv
dWdoIHRoaXMgQXVkaW9Ob2RlLgorICAgIG1fYW5hbHlzZXIud3JpdGVJbnB1dChpbnB1dEJ1cywg
ZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEZvciBpbi1wbGFjZSBwcm9jZXNzaW5nLCBvdXIg
b3ZlcnJpZGUgb2YgcHVsbElucHV0cygpIHdpbGwganVzdCBwYXNzIHRoZSBhdWRpbyBkYXRhIHRo
cm91Z2ggdW5jaGFuZ2VkIGlmIHRoZSBjaGFubmVsIGNvdW50IG1hdGNoZXMgZnJvbSBpbnB1dCB0
byBvdXRwdXQKKyAgICAvLyAocmVzdWx0aW5nIGluIGlucHV0QnVzID09IG91dHB1dEJ1cykuIE90
aGVyd2lzZSwgZG8gYW4gdXAtbWl4IHRvIHN0ZXJlby4KKyAgICBpZiAoaW5wdXRCdXMgIT0gb3V0
cHV0QnVzKQorICAgICAgICBvdXRwdXRCdXMtPmNvcHlGcm9tKCppbnB1dEJ1cyk7Cit9CisKK3Zv
aWQgQW5hbHlzZXJOb2RlOjpyZXNldCgpCit7CisgICAgbV9hbmFseXNlci5yZXNldCgpOworfQor
Cit2b2lkIEFuYWx5c2VyTm9kZTo6c2V0RmZ0U2l6ZSh1bnNpZ25lZCBzaXplLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIW1fYW5hbHlzZXIuc2V0RmZ0U2l6ZShzaXplKSkKKyAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNTU4M2E4N2NlMzk2MDAxMjU4
OTgwNTUxMWUzZjY5ODhjMjA4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEFuYWx5c2VyTm9kZV9oCisjZGVmaW5lIEFuYWx5c2VyTm9kZV9oCisKKyNp
bmNsdWRlICJBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lQW5h
bHlzZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEFuYWx5c2VyTm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAg
IAorICAgIH0KKworICAgIHZpcnR1YWwgfkFuYWx5c2VyTm9kZSgpOworICAgIAorICAgIC8vIEF1
ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
OworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworCisgICAgLy8gSmF2YXNjcmlwdCBiaW5kaW5n
cworICAgIHVuc2lnbmVkIGZmdFNpemUoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLmZmdFNp
emUoKTsgfQorICAgIHZvaWQgc2V0RmZ0U2l6ZSh1bnNpZ25lZCBzaXplLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICB1bnNpZ25lZCBmcmVxdWVuY3lCaW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQoKTsgfQorCisgICAgdm9pZCBzZXRNaW5EZWNpYmVs
cyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0TWluRGVjaWJlbHMoayk7IH0KKyAgICBmbG9hdCBt
aW5EZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlzZXIubWluRGVjaWJlbHMoKTsgfQor
CisgICAgdm9pZCBzZXRNYXhEZWNpYmVscyhmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0TWF4RGVj
aWJlbHMoayk7IH0KKyAgICBmbG9hdCBtYXhEZWNpYmVscygpIGNvbnN0IHsgcmV0dXJuIG1fYW5h
bHlzZXIubWF4RGVjaWJlbHMoKTsgfQorCisgICAgdm9pZCBzZXRTbW9vdGhpbmdUaW1lQ29uc3Rh
bnQoZmxvYXQgaykgeyBtX2FuYWx5c2VyLnNldFNtb290aGluZ1RpbWVDb25zdGFudChrKTsgfQor
ICAgIGZsb2F0IHNtb290aGluZ1RpbWVDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlz
ZXIuc21vb3RoaW5nVGltZUNvbnN0YW50KCk7IH0KKworICAgIHZvaWQgZ2V0RmxvYXRGcmVxdWVu
Y3lEYXRhKEZsb2F0MzJBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRGbG9hdEZyZXF1ZW5j
eURhdGEoYXJyYXkpOyB9CisgICAgdm9pZCBnZXRCeXRlRnJlcXVlbmN5RGF0YShVaW50OEFycmF5
KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKGFycmF5KTsgfQorICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlz
ZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGFycmF5KTsgfQorCitwcml2YXRlOgorICAgIHZpcnR1
YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQor
CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworCisg
ICAgUmVhbHRpbWVBbmFseXNlciBtX2FuYWx5c2VyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gQW5hbHlzZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTAwNmUxNzk1OTMy
ZGE4ODg4ZjQ3ODkwMmZlMzQ4NTQzODg4YTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0CitdIGludGVyZmFjZSBBbmFseXNlck5vZGUgOiBBdWRpb05vZGUgeworICAg
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGZmdFNpemUKKyAgICAgICAgc2V0dGVyIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGZyZXF1
ZW5jeUJpbkNvdW50OworCisgICAgLy8gbWluRGVjaWJlbHMgLyBtYXhEZWNpYmVscyByZXByZXNl
bnQgdGhlIHJhbmdlIHRvIHNjYWxlIHRoZSBGRlQgYW5hbHlzaXMgZGF0YSBmb3IgY29udmVyc2lv
biB0byB1bnNpZ25lZCBieXRlIHZhbHVlcy4KKyAgICBhdHRyaWJ1dGUgZmxvYXQgbWluRGVjaWJl
bHM7CisgICAgYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOworCisgICAgLy8gQSB2YWx1ZSBm
cm9tIDAuMCAtPiAxLjAgd2hlcmUgMC4wIHJlcHJlc2VudHMgbm8gdGltZSBhdmVyYWdpbmcgd2l0
aCB0aGUgbGFzdCBhbmFseXNpcyBmcmFtZS4KKyAgICBhdHRyaWJ1dGUgZmxvYXQgc21vb3RoaW5n
VGltZUNvbnN0YW50OworCisgICAgLy8gQ29waWVzIHRoZSBjdXJyZW50IGZyZXF1ZW5jeSBkYXRh
IGludG8gdGhlIHBhc3NlZCBhcnJheS4KKyAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIGZld2VyIGVs
ZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5jeUJpbkNvdW50LCB0aGUgZXhjZXNzIGVsZW1lbnRzIHdp
bGwgYmUgZHJvcHBlZC4KKyAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShpbiBGbG9hdDMy
QXJyYXkgYXJyYXkpOworICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoaW4gVWludDhBcnJh
eSBhcnJheSk7CisKKyAgICAvLyBSZWFsLXRpbWUgd2F2ZWZvcm0gZGF0YQorICAgIHZvaWQgZ2V0
Qnl0ZVRpbWVEb21haW5EYXRhKGluIFVpbnQ4QXJyYXkgYXJyYXkpOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcAppbmRleCA0Zjc0MzI1NzI2NzhjNzBiNDY3MzAyYzkwZjVmZWJmZDU5YmRjY2Y3Li5lNTJh
Y2U0NjJiNDFmYjRhOTZiZmI0NTg0YWExMWNmNjBiZTEwMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0
ZXNTaWxlbmNlKCkgY29uc3QKICAgICByZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwg
aGFzRmluaXNoZWQoKSB8fCAhbV9idWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzZXRQYW5uZXJOb2RlKEF1ZGlvUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGUqIHBhbm5lck5vZGUp
CiB7CiAgICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJOb2RlICYmICFoYXNGaW5pc2hlZCgp
KSB7CiAgICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggMjQ3MzZlMTY1
MWJjYzkxZTAwZGE5OTY1NjQ5NjU5MmY2OGQ5OWE0ZC4uZGRjMzhmZWMwNGVkNGU4OTMyOThjZjhm
Nzg5M2ZmZmE5ODg3YmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5j
bHVkZSAiQXVkaW9CdWZmZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1
ZGlvR2Fpbi5oIgotI2luY2x1ZGUgIkF1ZGlvUGFubmVyTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFy
YW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1fcGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAg
ICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwgdGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9w
cGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBwaXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFu
bmVyTm9kZShBdWRpb1Bhbm5lck5vZGUqKTsKKyAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVy
Tm9kZSopOwogICAgIHZvaWQgY2xlYXJQYW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUg
bm8gbG9uZ2VyIHBsYXlpbmcsIHByb3BvZ2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0g
bm9kZXMuCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZSBvcHRp
b25hbGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3BwbGVyIHNo
aWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0aGUgcGl0Y2ggcmF0ZS4gV2Ug
bWFudWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIFJlZlR5
cGVDb25uZWN0aW9uLgotICAgIEF1ZGlvUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBh
bm5lck5vZGUqIG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nl
c3MoKSB3aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291
bnQgY2hhbmdlcy4KICAgICBtdXRhYmxlIE11dGV4IG1fcHJvY2Vzc0xvY2s7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZGZjY2VmNGI2ZDk1Y2Y2YzVkZWI5Yzkw
YzY5ZDNhNTY0NGVjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
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
Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiQXVkaW9DaGFubmVsTWVyZ2Vy
LmgiCi0KLSNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBBdWRpb0NoYW5uZWxNZXJnZXI6OmNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRzKQotewotICAgIGlmICghbnVtYmVyT2ZJbnB1dHMgfHwgbnVtYmVyT2ZJbnB1
dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NoYW5uZWxNZXJnZXIoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZJbnB1dHMpKTsgICAgICAKLX0KLQotQXVkaW9DaGFu
bmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKLSAgICA6IEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKQotewotICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdGVkIG51bWJl
ciBvZiBpbnB1dHMuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRz
OyArK2kpCi0gICAgICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlz
KSkpOwotCi0gICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywg
MSkpKTsKLSAgICAKLSAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxNZXJnZXIpOwotICAg
IAotICAgIGluaXRpYWxpemUoKTsKLX0KLQotdm9pZCBBdWRpb0NoYW5uZWxNZXJnZXI6OnByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKLXsKLSAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1
dCA9IHRoaXMtPm91dHB1dCgwKTsKLSAgICBBU1NFUlQob3V0cHV0KTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09IG91dHB1dC0+YnVzKCktPmxl
bmd0aCgpKTsgICAgCi0gICAgCi0gICAgLy8gTWVyZ2UgYWxsIHRoZSBjaGFubmVscyBmcm9tIGFs
bCB0aGUgaW5wdXRzIGludG8gb25lIG91dHB1dC4KLSAgICB1bnNpZ25lZCBvdXRwdXRDaGFubmVs
SW5kZXggPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0cygp
OyArK2kpIHsKLSAgICAgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gdGhpcy0+aW5wdXQoaSk7
Ci0gICAgICAgIGlmIChpbnB1dC0+aXNDb25uZWN0ZWQoKSkgewotICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gaW5wdXQtPmJ1cygpLT5udW1iZXJPZkNoYW5uZWxz
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIE1lcmdlIGNoYW5uZWxzIGZyb20gdGhp
cyBwYXJ0aWN1bGFyIGlucHV0LgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IG51bWJlck9mSW5wdXRDaGFubmVsczsgKytqKSB7Ci0gICAgICAgICAgICAgICAgQXVkaW9DaGFu
bmVsKiBpbnB1dENoYW5uZWwgPSBpbnB1dC0+YnVzKCktPmNoYW5uZWwoaik7Ci0gICAgICAgICAg
ICAgICAgQXVkaW9DaGFubmVsKiBvdXRwdXRDaGFubmVsID0gb3V0cHV0LT5idXMoKS0+Y2hhbm5l
bChvdXRwdXRDaGFubmVsSW5kZXgpOwotICAgICAgICAgICAgICAgIG91dHB1dENoYW5uZWwtPmNv
cHlGcm9tKGlucHV0Q2hhbm5lbCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
KytvdXRwdXRDaGFubmVsSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgQVNTRVJUKG91dHB1dENoYW5uZWxJbmRleCA9PSBvdXRwdXQtPm51bWJlck9mQ2hh
bm5lbHMoKSk7Ci19Ci0KLXZvaWQgQXVkaW9DaGFubmVsTWVyZ2VyOjpyZXNldCgpCi17Ci19Ci0K
LS8vIEFueSB0aW1lIGEgY29ubmVjdGlvbiBvciBkaXNjb25uZWN0aW9uIGhhcHBlbnMgb24gYW55
IG9mIG91ciBpbnB1dHMsIHdlIHBvdGVudGlhbGx5IG5lZWQgdG8gY2hhbmdlIHRoZQotLy8gbnVt
YmVyIG9mIGNoYW5uZWxzIG9mIG91ciBvdXRwdXQuCi12b2lkIEF1ZGlvQ2hhbm5lbE1lcmdlcjo6
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQotewot
ICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCktPmlzR3Jh
cGhPd25lcigpKTsKLQotICAgIC8vIENvdW50IGhvdyBtYW55IGNoYW5uZWxzIHdlIGhhdmUgYWxs
IHRvZ2V0aGVyIGZyb20gYWxsIG9mIHRoZSBpbnB1dHMuCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
SW5wdXRzKCk7ICsraSkgewotICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSB0aGlzLT5p
bnB1dChpKTsKLSAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQotICAgICAgICAgICAg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyArPSBpbnB1dC0+YnVzKCktPm51bWJlck9mQ2hhbm5lbHMo
KTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGNoYW5uZWxzIG9u
IHRoZSBvdXRwdXQKLSAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9IHRoaXMtPm91dHB1dCgw
KTsKLSAgICBBU1NFUlQob3V0cHV0KTsKLSAgICBvdXRwdXQtPnNldE51bWJlck9mQ2hhbm5lbHMo
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7Ci0KLSAgICBBdWRpb05vZGU6OmNoZWNrTnVtYmVyT2ZD
aGFubmVsc0ZvcklucHV0KGlucHV0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0YTFkNTc1MjI4YmYxNGZkNWViNGNjMzk2MGNhODljMTc3OWU3ZjkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
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
R0UuCi0gKi8KLQotI2lmbmRlZiBBdWRpb0NoYW5uZWxNZXJnZXJfaAotI2RlZmluZSBBdWRpb0No
YW5uZWxNZXJnZXJfaAotCi0jaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0NvbnRleHQ7
Ci0gICAgCi1jbGFzcyBBdWRpb0NoYW5uZWxNZXJnZXIgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZShB
dWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7
Ci0KLSAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLQotICAgIC8vIENhbGxl
ZCBpbiB0aGUgYXVkaW8gdGhyZWFkIChwcmUtcmVuZGVyaW5nIHRhc2spIHdoZW4gdGhlIG51bWJl
ciBvZiBjaGFubmVscyBmb3IgYW4gaW5wdXQgbWF5IGhhdmUgY2hhbmdlZC4KLSAgICB2aXJ0dWFs
IHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIDA7IH0KLQotICAgIEF1ZGlvQ2hhbm5lbE1lcmdlcihBdWRpb0NvbnRleHQq
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBdWRpb0NoYW5uZWxNZXJnZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJn
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJn
ZXIuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDM1ZDI2YWM4NTAyMzgxYWZl
NDM2MDRjNGFkMjkxZmUwZWYwYmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVs
TWVyZ2VyLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0
aW9uYWw9V0VCX0FVRElPCi1dIGludGVyZmFjZSBBdWRpb0NoYW5uZWxNZXJnZXIgOiBBdWRpb05v
ZGUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9DaGFubmVsU3BsaXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3
ODM2MTVmYzYxNmQxZjY2ZDI2OWIwNDkzOTVjY2MzM2Y4NzkxMTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9B
VURJTykKLQotI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgiCi0KLSNpbmNsdWRlICJB
dWRpb0NvbnRleHQuaCIKLSNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgotI2luY2x1ZGUgIkF1
ZGlvTm9kZU91dHB1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1QYXNzUmVmUHRy
PEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6Y3JlYXRlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKQotewotICAgIGlmICghbnVtYmVyT2ZPdXRwdXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVsU3BsaXR0ZXIoY29udGV4dCwgc2Ft
cGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCi19Ci0KLUF1ZGlvQ2hhbm5lbFNwbGl0
dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKLSAgICA6IEF1ZGlvTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQotewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJ
bnB1dCh0aGlzKSkpOwotCi0gICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMg
KGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4g
aW5wdXQpLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsr
aSkKLSAgICAgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywg
MSkpKTsKLSAgICAKLSAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7Ci0g
ICAgCi0gICAgaW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpw
cm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0gICAgQXVkaW9CdXMqIHNvdXJjZSA9
IGlucHV0KDApLT5idXMoKTsKLSAgICBBU1NFUlQoc291cmNlKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09IHNvdXJjZS0+bGVuZ3RoKCkpOwot
ICAgIAotICAgIHVuc2lnbmVkIG51bWJlck9mU291cmNlQ2hhbm5lbHMgPSBzb3VyY2UtPm51bWJl
ck9mQ2hhbm5lbHMoKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZPdXRwdXRzKCk7ICsraSkgewotICAgICAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRw
dXQoaSktPmJ1cygpOwotICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwotICAgICAgICAKLSAg
ICAgICAgaWYgKGkgPCBudW1iZXJPZlNvdXJjZUNoYW5uZWxzKSB7Ci0gICAgICAgICAgICAvLyBT
cGxpdCB0aGUgY2hhbm5lbCBvdXQgaWYgaXQgZXhpc3RzIGluIHRoZSBzb3VyY2UuCi0gICAgICAg
ICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGF2b2lkIHRoZSBjb3B5IGFuZCBzaW1wbHkgcGFz
cyBhbG9uZyBwb2ludGVycywgYnV0IHRoaXMgYmVjb21lcyBleHRyZW1lbHkgZGlmZmljdWx0IHdp
dGggZmFub3V0IGFuZCBmYW5pbi4KLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLT5jaGFubmVsKDAp
LT5jb3B5RnJvbShzb3VyY2UtPmNoYW5uZWwoaSkpOwotICAgICAgICB9IGVsc2UgaWYgKG91dHB1
dChpKS0+cmVuZGVyaW5nRmFuT3V0Q291bnQoKSA+IDApIHsKLSAgICAgICAgICAgIC8vIE9ubHkg
Ym90aGVyIHplcm9pbmcgb3V0IHRoZSBkZXN0aW5hdGlvbiBpZiBpdCdzIGNvbm5lY3RlZCB0byBh
bnl0aGluZwotICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6cmVzZXQoKQotewotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTU3OGFjMDFjNmNlNzhlZDJmZWNi
NzA3NzhhOTVlMmVhYTZjN2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3Bs
aXR0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gKLSNkZWZpbmUgQXVkaW9DaGFubmVsU3BsaXR0ZXJf
aAotCi0jaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAgCi1jbGFz
cyBBdWRpb0NoYW5uZWxTcGxpdHRlciA6IHB1YmxpYyBBdWRpb05vZGUgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGUoQXVkaW9Db250
ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKLQotICAg
IC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIHZpcnR1
YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQot
Ci0gICAgQXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Mzc2Zjk3YTZkNGNkOWQ2MGMwMTgyMWRiNWIy
Mzc0OGU2OGU5NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTwotXSBpbnRlcmZhY2UgQXVkaW9DaGFubmVsU3BsaXR0ZXIgOiBB
dWRpb05vZGUgewotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAppbmRleCAxYzk0ZGU1MmVkOWNiYTk5NTczMTViNjkzMGJkODEwN2RhMTA0
NmFlLi4yMzNhMzI0NTQ4MmU4YjhmOWVjZjU5ZWZiNjEzMDFiNjE2N2M0ZjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0yOCwx
OCArMjgsMTcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQW5h
bHlzZXJOb2RlLmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJB
dWRpb0J1ZmZlci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlICJBdWRpb0NoYW5uZWxNZXJnZXIu
aCIKLSNpbmNsdWRlICJBdWRpb0NoYW5uZWxTcGxpdHRlci5oIgotI2luY2x1ZGUgIkF1ZGlvR2Fp
bk5vZGUuaCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2Rl
SW5wdXQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKLSNpbmNsdWRlICJBdWRpb1Bh
bm5lck5vZGUuaCIKICNpbmNsdWRlICJCaXF1YWRGaWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hh
bm5lbE1lcmdlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsU3BsaXR0ZXJOb2RlLmgiCiAjaW5j
bHVkZSAiQ29udm9sdmVyTm9kZS5oIgogI2luY2x1ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIgogI2luY2x1ZGUgIkRlbGF5Tm9kZS5oIgpAQCAtNDcsMTQgKzQ2LDE1IEBACiAjaW5j
bHVkZSAiRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCiAjaW5jbHVk
ZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFJURlBhbm5lci5oIgotI2luY2x1
ZGUgIkphdmFTY3JpcHRBdWRpb05vZGUuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKLSNp
bmNsdWRlICJPc2NpbGxhdG9yLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVBbmFseXNlck5vZGUuaCIK
KyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9jZXNzb3JOb2Rl
LmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKICNpbmNsdWRlICJXYXZlVGFibGUuaCIK
IApAQCAtNDIwLDIzICs0MjAsMjMgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWQKIH0KICNlbmRp
ZgogCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
SmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUphdmFTY3Jp
cHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBT
ZXQgbnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyB0byBzdGVyZW8gYnkgZGVmYXVsdC4K
ICAgICByZXR1cm4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoYnVmZmVyU2l6ZSwgMiwgMiwgZWMpOwog
fQogCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
SmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBz
aXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAv
LyBTZXQgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byBzdGVyZW8gYnkgZGVmYXVsdC4KICAg
ICByZXR1cm4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCAyLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gQXVk
aW9Db250ZXh0OjpjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90
IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5p
dGlhbGl6ZSgpOwotICAgIFJlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBub2RlID0gSmF2YVNj
cmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRl
KCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyk7CisgICAgUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IG5vZGUgPSBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwg
YnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKIAogICAgIGlmICghbm9kZS5nZXQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBA
IC00NjEsMTEgKzQ2MSwxMSBAQCBQYXNzUmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQogICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRl
KHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVQYW5uZXIoKQorUGFzc1JlZlB0cjxQYW5uZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZVBhbm5lcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlh
bGl6ZSgpOwotICAgIHJldHVybiBBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKKyAgICByZXR1cm4gUGFubmVyTm9kZTo6Y3JlYXRl
KHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNzUmVmUHRy
PENvbnZvbHZlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKQEAgLTQ4Miwx
OCArNDgyLDE4IEBAIFBhc3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQogICAgIHJldHVybiBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7
CiB9CiAKLVBhc3NSZWZQdHI8UmVhbHRpbWVBbmFseXNlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQW5hbHlzZXIoKQorUGFzc1JlZlB0cjxBbmFseXNlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQW5hbHlzZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUlu
aXRpYWxpemUoKTsKLSAgICByZXR1cm4gUmVhbHRpbWVBbmFseXNlck5vZGU6OmNyZWF0ZSh0aGlz
LCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKKyAgICByZXR1cm4gQW5hbHlzZXJO
b2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8QXVkaW9HYWluTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVHYWluTm9kZSgp
CitQYXNzUmVmUHRyPEdhaW5Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW5Ob2RlKCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAg
cmV0dXJuIEF1ZGlvR2Fpbk5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2Ft
cGxlUmF0ZSgpKTsKKyAgICByZXR1cm4gR2Fpbk5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0
aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxEZWxheU5vZGU+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlRGVsYXlOb2RlKCkKQEAgLTUwOSwxOCArNTA5LDE4IEBAIFBhc3NSZWZQ
dHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZShkb3VibGUgbWF4RGVs
YXlUaW1lKQogICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9u
Tm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlv
Q2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29u
c3QgdW5zaWduZWQgQ2hhbm5lbFNwbGl0dGVyRGVmYXVsdE51bWJlck9mT3V0cHV0cyA9IDY7CiAg
ICAgcmV0dXJuIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihDaGFubmVsU3BsaXR0ZXJEZWZhdWx0TnVt
YmVyT2ZPdXRwdXRzLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1
dHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRz
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IG5v
ZGUgPSBBdWRpb0NoYW5uZWxTcGxpdHRlcjo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2Rl
LT5zYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisgICAgUmVmUHRyPENoYW5uZWxTcGxp
dHRlck5vZGU+IG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0
aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKIAogICAgIGlmICgh
bm9kZS5nZXQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC01MzAsMTggKzUzMCwx
OCBAQCBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYgogICAgIHJldHVybiBub2RlOwogfQogCi1QYXNz
UmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVy
Z2VyKEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQXVk
aW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGNvbnN0IHVuc2lnbmVkIENoYW5uZWxNZXJnZXJEZWZhdWx0TnVtYmVyT2ZJbnB1dHMgPSA2Owog
ICAgIHJldHVybiBjcmVhdGVDaGFubmVsTWVyZ2VyKENoYW5uZWxNZXJnZXJEZWZhdWx0TnVtYmVy
T2ZJbnB1dHMsIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQXVkaW9Db250ZXh0
OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6
ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4gbm9kZSA9IEF1ZGlvQ2hhbm5l
bE1lcmdlcjo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG51
bWJlck9mSW5wdXRzKTsKKyAgICBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IG5vZGUgPSBDaGFu
bmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRl
KCksIG51bWJlck9mSW5wdXRzKTsKIAogICAgIGlmICghbm9kZS5nZXQoKSkgewogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CkBAIC01NTEsMTIgKzU1MSwxMiBAQCBQYXNzUmVmUHRyPEF1ZGlvQ2hh
bm5lbE1lcmdlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1i
ZXJPZgogICAgIHJldHVybiBub2RlOwogfQogCi1QYXNzUmVmUHRyPE9zY2lsbGF0b3I+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlT3NjaWxsYXRvcigpCitQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIFJlZlB0cjxPc2NpbGxhdG9yPiBu
b2RlID0gT3NjaWxsYXRvcjo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVS
YXRlKCkpOworICAgIFJlZlB0cjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JOb2Rl
OjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiAKICAgICAv
LyBCZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4
dCBrZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KICAgICAv
LyBXaGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBj
YWxscyBBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGZkNDBi
ODRhYThlZjNlM2RhZTljOWE1MTVjNDc5YWNmZTY4ZjIyYTQuLjA4MTY3ZjUzMTU4Yzc1YmEzOTI4
YmUwYjBiZTg1MjYxMGRmNDkyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaApAQCAtNTEsMTAgKzUxLDEwIEBAIGNsYXNzIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTsKIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKIGNsYXNzIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNz
IEF1ZGlvQ2hhbm5lbE1lcmdlcjsKLWNsYXNzIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyOwotY2xhc3Mg
QXVkaW9HYWluTm9kZTsKLWNsYXNzIEF1ZGlvUGFubmVyTm9kZTsKK2NsYXNzIENoYW5uZWxNZXJn
ZXJOb2RlOworY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOworY2xh
c3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1ZGlvTGlzdGVuZXI7CiBjbGFzcyBBdWRpb1N1bW1pbmdK
dW5jdGlvbjsKIGNsYXNzIEJpcXVhZEZpbHRlck5vZGU7CkBAIC02MiwxMCArNjIsMTAgQEAgY2xh
c3MgRGVsYXlOb2RlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBDb252b2x2ZXJOb2RlOwogY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKLWNsYXNzIFJlYWx0aW1lQW5hbHlzZXJOb2RlOwor
Y2xhc3MgQW5hbHlzZXJOb2RlOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7Ci1jbGFzcyBKYXZhU2Ny
aXB0QXVkaW9Ob2RlOwotY2xhc3MgT3NjaWxsYXRvcjsKK2NsYXNzIFNjcmlwdFByb2Nlc3Nvck5v
ZGU7CitjbGFzcyBPc2NpbGxhdG9yTm9kZTsKIGNsYXNzIFdhdmVUYWJsZTsKIAogLy8gQXVkaW9D
b250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1
ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KQEAgLTExOSwyMyArMTE5LDIzIEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU+IGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtKiwgRXhj
ZXB0aW9uQ29kZSYpOwogI2VuZGlmCi0gICAgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVh
dGVHYWluTm9kZSgpOworICAgIFBhc3NSZWZQdHI8R2Fpbk5vZGU+IGNyZWF0ZUdhaW5Ob2RlKCk7
CiAgICAgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsK
ICAgICBQYXNzUmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7CiAgICAg
UGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5Tm9kZSgpOwogICAgIFBhc3NSZWZQdHI8
RGVsYXlOb2RlPiBjcmVhdGVEZWxheU5vZGUoZG91YmxlIG1heERlbGF5VGltZSk7Ci0gICAgUGFz
c1JlZlB0cjxBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZVBhbm5lcigpOworICAgIFBhc3NSZWZQdHI8
UGFubmVyTm9kZT4gY3JlYXRlUGFubmVyKCk7CiAgICAgUGFzc1JlZlB0cjxDb252b2x2ZXJOb2Rl
PiBjcmVhdGVDb252b2x2ZXIoKTsKICAgICBQYXNzUmVmUHRyPER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOyAgICAKLSAgICBQYXNzUmVmUHRyPFJlYWx0
aW1lQW5hbHlzZXJOb2RlPiBjcmVhdGVBbmFseXNlcigpOwotICAgIFBhc3NSZWZQdHI8SmF2YVNj
cmlwdEF1ZGlvTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6ZV90IGJ1ZmZlclNpemUsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNyZWF0
ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9O
b2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVs
U3BsaXR0ZXI+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0
ZUNoYW5uZWxNZXJnZXIoRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXVkaW9DaGFu
bmVsTWVyZ2VyPiBjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8T3NjaWxsYXRvcj4gY3JlYXRlT3NjaWxsYXRv
cigpOworICAgIFBhc3NSZWZQdHI8QW5hbHlzZXJOb2RlPiBjcmVhdGVBbmFseXNlcigpOworICAg
IFBhc3NSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlSmF2YVNjcmlwdE5vZGUoc2l6
ZV90IGJ1ZmZlclNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+IGNyZWF0ZUphdmFTY3JpcHROb2RlKHNpemVfdCBidWZmZXJTaXplLCBzaXpl
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGVKYXZhU2NyaXB0Tm9kZShzaXplX3QgYnVmZmVy
U2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1Jl
ZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51
bWJlck9mT3V0cHV0cywgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NS
ZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJl
ck9mSW5wdXRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9k
ZT4gY3JlYXRlT3NjaWxsYXRvcigpOwogICAgIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBjcmVhdGVX
YXZlVGFibGUoRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNz
aW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRl
eHQgdG8gZGVyZWZlcmVuY2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggZTdmOTcyZTYwYzA2MmZhOWEyZDZiMGYyNjFkNTE5
ODAyYWUwYzIxNy4uOGVlMmRjMjlkMGE5NGIxZDlmNTJmNTM3OWQ3NjY0MWQ4OTg4ZDU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApA
QCAtNjksMjQgKzY5LDI0IEBACiAjZW5kaWYKIAogICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKLSAg
ICBBdWRpb0dhaW5Ob2RlIGNyZWF0ZUdhaW5Ob2RlKCk7CisgICAgR2Fpbk5vZGUgY3JlYXRlR2Fp
bk5vZGUoKTsKICAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXlOb2RlKGluIFtPcHRpb25hbF0gZG91
YmxlIG1heERlbGF5VGltZSk7CiAgICAgQmlxdWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0
ZXIoKTsKICAgICBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7Ci0gICAgQXVkaW9Q
YW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOworICAgIFBhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7
CiAgICAgQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKICAgICBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwotICAgIFJlYWx0aW1lQW5hbHlz
ZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgSmF2YVNjcmlwdEF1ZGlvTm9kZSBjcmVhdGVK
YXZhU2NyaXB0Tm9kZShpbiB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUsIGluIFtPcHRpb25hbF0g
dW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMsIGluIFtPcHRpb25hbF0gdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAgIEFuYWx5c2VyTm9kZSBjcmVhdGVB
bmFseXNlcigpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlSmF2YVNjcmlwdE5vZGUo
aW4gdW5zaWduZWQgbG9uZyBidWZmZXJTaXplLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgT3Nj
aWxsYXRvciBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgT3NjaWxsYXRvck5vZGUgY3JlYXRlT3Nj
aWxsYXRvcigpOwogICAgIFdhdmVUYWJsZSBjcmVhdGVXYXZlVGFibGUoaW4gRmxvYXQzMkFycmF5
IHJlYWwsIGluIEZsb2F0MzJBcnJheSBpbWFnKQogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCi0gICAgQXVkaW9DaGFu
bmVsU3BsaXR0ZXIgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKGluIFtPcHRpb25hbF0gdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dHMpCisgICAgQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cykK
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgQXVkaW9DaGFubmVsTWVyZ2VyIGNy
ZWF0ZUNoYW5uZWxNZXJnZXIoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5w
dXRzKQorICAgIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIoaW4gW09wdGlv
bmFsXSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzKQogICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAogICAgIC8vIE9mZmxpbmUgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGY1MTNjMDAwZGU1ZjJkN2MzMjdhYjg3MWYwNTgxMTkwZTY3MTZjOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiQXVkaW9HYWluTm9kZS5oIgotCi0jaW5jbHVkZSAi
QXVkaW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgotI2luY2x1ZGUgIkF1ZGlv
Tm9kZU91dHB1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUF1ZGlvR2Fpbk5vZGU6OkF1
ZGlvR2Fpbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQotICAg
IDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCi0gICAgLCBtX2xhc3RHYWluKDEuMCkK
LSAgICAsIG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1Np
emVJbkZyYW1lcykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBj
b250ZXh0Ci17Ci0gICAgbV9nYWluID0gQXVkaW9HYWluOjpjcmVhdGUoY29udGV4dCwgImdhaW4i
LCAxLjAsIDAuMCwgMS4wKTsKLQotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJ
bnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0
KHRoaXMsIDEpKSk7Ci0gICAgCi0gICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVHYWluKTsKLSAgICAK
LSAgICBpbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgQXVkaW9HYWluTm9kZTo6cHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIC8vIEZJWE1FOiBmb3Igc29tZSBjYXNlcyB0aGVy
ZSBpcyBhIG5pY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIHByb2Nlc3NpbmcgaGVyZSwgYW5kIGxl
dCB0aGUgZ2FpbiBjaGFuZ2UKLSAgICAvLyBoYXBwZW4gaW4gdGhlIHN1bW1pbmcganVuY3Rpb24g
aW5wdXQgb2YgdGhlIEF1ZGlvTm9kZSB3ZSdyZSBjb25uZWN0ZWQgdG8uCi0gICAgLy8gVGhlbiB3
ZSBjYW4gYXZvaWQgYWxsIG9mIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICBBdWRpb0J1cyogb3V0cHV0
QnVzID0gb3V0cHV0KDApLT5idXMoKTsKLSAgICBBU1NFUlQob3V0cHV0QnVzKTsKLQotICAgIGlm
ICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSkKLSAgICAgICAg
b3V0cHV0QnVzLT56ZXJvKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEF1ZGlvQnVzKiBpbnB1dEJ1
cyA9IGlucHV0KDApLT5idXMoKTsKLQotICAgICAgICBpZiAoZ2FpbigpLT5oYXNTYW1wbGVBY2N1
cmF0ZVZhbHVlcygpKSB7Ci0gICAgICAgICAgICAvLyBBcHBseSBzYW1wbGUtYWNjdXJhdGUgZ2Fp
biBzY2FsaW5nIGZvciBwcmVjaXNlIGVudmVsb3BlcywgZ3JhaW4gd2luZG93cywgZXRjLgotICAg
ICAgICAgICAgQVNTRVJUKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3NhbXBsZUFjY3VyYXRlR2FpblZh
bHVlcy5zaXplKCkpOwotICAgICAgICAgICAgaWYgKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3NhbXBs
ZUFjY3VyYXRlR2FpblZhbHVlcy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCogZ2Fp
blZhbHVlcyA9IG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLmRhdGEoKTsKLSAgICAgICAgICAg
ICAgICBnYWluKCktPmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKGdhaW5WYWx1ZXMsIGZy
YW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0QnVzLT5jb3B5V2l0aFNhbXBs
ZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20oKmlucHV0QnVzLCBnYWluVmFsdWVzLCBmcmFtZXNUb1By
b2Nlc3MpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
QXBwbHkgdGhlIGdhaW4gd2l0aCBkZS16aXBwZXJpbmcgaW50byB0aGUgb3V0cHV0IGJ1cy4KLSAg
ICAgICAgICAgIG91dHB1dEJ1cy0+Y29weVdpdGhHYWluRnJvbSgqaW5wdXRCdXMsICZtX2xhc3RH
YWluLCBnYWluKCktPnZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEF1ZGlv
R2Fpbk5vZGU6OnJlc2V0KCkKLXsKLSAgICAvLyBTbmFwIGRpcmVjdGx5IHRvIGRlc2lyZWQgZ2Fp
bi4KLSAgICBtX2xhc3RHYWluID0gZ2FpbigpLT52YWx1ZSgpOwotfQotCi0vLyBGSVhNRTogdGhp
cyBjYW4gZ28gYXdheSB3aGVuIHdlIGRvIG1peGluZyB3aXRoIGdhaW4gZGlyZWN0bHkgaW4gc3Vt
bWluZyBqdW5jdGlvbiBvZiBBdWRpb05vZGVJbnB1dAotLy8KLS8vIEFzIHNvb24gYXMgd2Uga25v
dyB0aGUgY2hhbm5lbCBjb3VudCBvZiBvdXIgaW5wdXQsIHdlIGNhbiBsYXppbHkgaW5pdGlhbGl6
ZS4KLS8vIFNvbWV0aW1lcyB0aGlzIG1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aCBk
aWZmZXJlbnQgY2hhbm5lbCBjb3VudHMsIGluIHdoaWNoIGNhc2Ugd2UgbXVzdCBzYWZlbHkKLS8v
IHVuaW5pdGlhbGl6ZSBhbmQgdGhlbiByZS1pbml0aWFsaXplIHdpdGggdGhlIG5ldyBjaGFubmVs
IGNvdW50Lgotdm9pZCBBdWRpb0dhaW5Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRp
b1RocmVhZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOwotCi0gICAgQVNTRVJUKGlu
cHV0ICYmIGlucHV0ID09IHRoaXMtPmlucHV0KDApKTsKLSAgICBpZiAoaW5wdXQgIT0gdGhpcy0+
aW5wdXQoMCkpCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscyA9IGlucHV0LT5udW1iZXJPZkNoYW5uZWxzKCk7ICAgIAotCi0gICAgaWYgKGlz
SW5pdGlhbGl6ZWQoKSAmJiBudW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dCgwKS0+bnVtYmVyT2ZD
aGFubmVscygpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGFscmVhZHkgaW5pdGlhbGl6ZWQgYnV0IHRo
ZSBjaGFubmVsIGNvdW50IGhhcyBjaGFuZ2VkLgotICAgICAgICB1bmluaXRpYWxpemUoKTsKLSAg
ICB9Ci0KLSAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewotICAgICAgICAvLyBUaGlzIHdpbGwg
cHJvcGFnYXRlIHRoZSBjaGFubmVsIGNvdW50IHRvIGFueSBub2RlcyBjb25uZWN0ZWQgZnVydGhl
ciBkb3duc3RyZWFtIGluIHRoZSBncmFwaC4KLSAgICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJP
ZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwotICAgICAgICBpbml0aWFsaXplKCk7Ci0gICAg
fQotCi0gICAgQXVkaW9Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChpbnB1dCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fp
bk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWE2NGI0NzFlMzY5NTgzMGZkYjUwNDdh
ZWU0OWIyMzI5NmRlZWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXVkaW9H
YWluTm9kZV9oCi0jZGVmaW5lIEF1ZGlvR2Fpbk5vZGVfaAotCi0jaW5jbHVkZSAiQXVkaW9HYWlu
LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQXVkaW9Db250ZXh0OwotICAgIAotLy8gQXVkaW9HYWluTm9kZSBpcyBhbiBBdWRpb05vZGUg
d2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQgd2hpY2ggYXBwbGllcyBhIGdhaW4gKHZvbHVt
ZSkgY2hhbmdlIHRvIHRoZSBhdWRpbyBzaWduYWwuCi0vLyBEZS16aXBwZXJpbmcgKHNtb290aGlu
ZykgaXMgYXBwbGllZCB3aGVuIHRoZSBnYWluIHZhbHVlIGlzIGNoYW5nZWQgZHluYW1pY2FsbHku
Ci0KLWNsYXNzIEF1ZGlvR2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdWRpb0dhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKLSAgICB9Ci0g
ICAgCi0gICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLyBDYWxs
ZWQgaW4gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhl
IGlucHV0IG1heSBoYXZlIGNoYW5nZWQuCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVyT2ZD
aGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0Kik7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IGlu
dGVyZmFjZQotICAgIEF1ZGlvR2FpbiogZ2FpbigpIHsgcmV0dXJuIG1fZ2Fpbi5nZXQoKTsgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgCi1wcml2YXRlOgotICAgIHZp
cnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAg
IHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsg
fQotCi0gICAgQXVkaW9HYWluTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsK
LQotICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBkZS16aXBwZXJpbmcKLSAgICBSZWZQdHI8
QXVkaW9HYWluPiBtX2dhaW47Ci0KLSAgICBBdWRpb0Zsb2F0QXJyYXkgbV9zYW1wbGVBY2N1cmF0
ZUdhaW5WYWx1ZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBB
dWRpb0dhaW5Ob2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvR2Fpbk5vZGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzU5MzZlNzlm
NTU5MzI2OTBkNWM2ZjhkYTM5Mjc1NmQ5NDA3YTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9HYWluTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVj
dAotXSBpbnRlcmZhY2UgQXVkaW9HYWluTm9kZSA6IEF1ZGlvTm9kZSB7Ci0gICAgLy8gRklYTUU6
IGV2ZW50dWFsbHkgaXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byByZW1vdmUgdGhlIHJlYWRvbmx5
IHJlc3RyaWN0aW9uLCBidXQgbmVlZCB0byBwcm9wZXJseSBkZWFsIHdpdGggdGhyZWFkIHNhZmV0
eSBoZXJlLgotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dhaW4gZ2FpbjsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NTFhMjUxMzczMmY1MTM1NGZiOGM4ZmQx
ZmNlNzM5Yjc0NTg2MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotCi0jaW5jbHVkZSAiQXVkaW9QYW5u
ZXJOb2RlLmgiCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKLSNpbmNsdWRl
ICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlv
Tm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQotewotICAgIGlmIChpc25hbih4KSB8
fCBpc2luZih4KSkKLSAgICAgICAgeCA9IDAuMDsKLX0KLQotQXVkaW9QYW5uZXJOb2RlOjpBdWRp
b1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQotICAg
IDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCi0gICAgLCBtX3Bhbm5pbmdNb2RlbChQ
YW5uZXI6OlBhbm5pbmdNb2RlbEhSVEYpCi0gICAgLCBtX2xhc3RHYWluKC0xLjApCi0gICAgLCBt
X2Nvbm5lY3Rpb25Db3VudCgwKQotewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05v
ZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0
cHV0KHRoaXMsIDIpKSk7Ci0gICAgCi0gICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb0dhaW46OmNy
ZWF0ZShjb250ZXh0LCAiZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEuMCk7Ci0gICAgbV9jb25l
R2FpbiA9IEF1ZGlvR2Fpbjo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAx
LjApOwotCi0gICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKLSAgICBtX29y
aWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOwotICAgIG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoMCwgMCwgMCk7Ci0gICAgCi0gICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIp
OwotCi0gICAgaW5pdGlhbGl6ZSgpOwotfQotCi1BdWRpb1Bhbm5lck5vZGU6On5BdWRpb1Bhbm5l
ck5vZGUoKQotewotICAgIHVuaW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIEF1ZGlvUGFubmVyTm9k
ZTo6cHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIC8vIFdlIG92ZXJy
aWRlIHB1bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRldGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3
aGljaCBoYXZlIGNvbm5lY3RlZCB0byB1cyB3aGVuIG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4K
LSAgICAvLyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVzIG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBv
dXIgZXhpc3RlbmNlIGluIG9yZGVyIHRvIGhhbmRsZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5n
ZXMuCi0gICAgaWYgKG1fY29ubmVjdGlvbkNvdW50ICE9IGNvbnRleHQoKS0+Y29ubmVjdGlvbkNv
dW50KCkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCktPmNvbm5lY3Rp
b25Db3VudCgpOwotCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVz
IGNvbm5lY3RlZCB0byB1cy4KLSAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9O
b2RlKHRoaXMpOwotICAgIH0KLSAgICAKLSAgICBBdWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVz
VG9Qcm9jZXNzKTsKLX0KLQotdm9pZCBBdWRpb1Bhbm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZy
YW1lc1RvUHJvY2VzcykKLXsKLSAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCkt
PmJ1cygpOwotCi0gICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5l
Y3RlZCgpIHx8ICFtX3Bhbm5lci5nZXQoKSkgewotICAgICAgICBkZXN0aW5hdGlvbi0+emVybygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0
KDApLT5idXMoKTsKLQotICAgIGlmICghc291cmNlKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLT56
ZXJvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBBcHBseSB0aGUgcGFubmlu
ZyBlZmZlY3QuCi0gICAgZG91YmxlIGF6aW11dGg7Ci0gICAgZG91YmxlIGVsZXZhdGlvbjsKLSAg
ICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxldmF0aW9uKTsKLSAgICBtX3Bhbm5l
ci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Q
cm9jZXNzKTsKLQotICAgIC8vIEdldCB0aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KLSAgICBk
b3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2FpbigpOwotCi0gICAgLy8gU25hcCB0byBk
ZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KLSAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4w
KQotICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWluOwotICAgICAgICAKLSAgICAvLyBBcHBs
eSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlwcGVyaW5nLgotICAgIGRlc3RpbmF0aW9uLT5jb3B5
V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwgJm1fbGFzdEdhaW4sIHRvdGFsR2Fpbik7Ci19Ci0K
LXZvaWQgQXVkaW9QYW5uZXJOb2RlOjpyZXNldCgpCi17Ci0gICAgbV9sYXN0R2FpbiA9IC0xLjA7
IC8vIGZvcmNlIHRvIHNuYXAgdG8gaW5pdGlhbCBnYWluCi0gICAgaWYgKG1fcGFubmVyLmdldCgp
KQotICAgICAgICBtX3Bhbm5lci0+cmVzZXQoKTsKLX0KLQotdm9pZCBBdWRpb1Bhbm5lck5vZGU6
OmluaXRpYWxpemUoKQotewotICAgIGlmIChpc0luaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2Rl
bCwgc2FtcGxlUmF0ZSgpKTsKLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12
b2lkIEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWlzSW5pdGlh
bGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX3Bhbm5lci5jbGVhcigp
OwotICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Ci19Ci0KLUF1ZGlvTGlzdGVuZXIqIEF1
ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQotewotICAgIHJldHVybiBjb250ZXh0KCktPmxpc3Rl
bmVyKCk7Ci19Ci0KLXZvaWQgQXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwodW5zaWdu
ZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHN3aXRjaCAobW9kZWwp
IHsKLSAgICBjYXNlIEVRVUFMUE9XRVI6Ci0gICAgY2FzZSBIUlRGOgotICAgICAgICBpZiAoIW1f
cGFubmVyLmdldCgpIHx8IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7Ci0gICAgICAgICAgICBP
d25QdHI8UGFubmVyPiBuZXdQYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0
ZSgpKTsKLSAgICAgICAgICAgIG1fcGFubmVyID0gbmV3UGFubmVyLnJlbGVhc2UoKTsKLSAgICAg
ICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTT1VOREZJRUxEOgotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHNvdW5k
IGZpZWxkIG1vZGVsLiBTZWUgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3MzY3LgotICAgICAgICAvLyBGb3Igbm93LCBmYWxsIHRocm91Z2ggdG8gdGhyb3cgYW4g
ZXhjZXB0aW9uLgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb1Bhbm5lck5vZGU6OnNldERp
c3RhbmNlTW9kZWwodW5zaWduZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIHN3aXRjaCAobW9kZWwpIHsKLSAgICBjYXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbExpbmVh
cjoKLSAgICBjYXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbEludmVyc2U6Ci0gICAgY2FzZSBEaXN0
YW5jZUVmZmVjdDo6TW9kZWxFeHBvbmVudGlhbDoKLSAgICAgICAgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRNb2RlbChzdGF0aWNfY2FzdDxEaXN0YW5jZUVmZmVjdDo6TW9kZWxUeXBlPihtb2RlbCksIHRy
dWUpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9QYW5uZXJO
b2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRF
bGV2YXRpb24pCi17Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBl
bGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFu
Z2UgaGFzIGJlZW4gbWFkZS4KLQotICAgIGRvdWJsZSBhemltdXRoID0gMC4wOwotCi0gICAgLy8g
Q2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQz
RCBzb3VyY2VMaXN0ZW5lciA9IG1fcG9zaXRpb24gLSBsaXN0ZW5lclBvc2l0aW9uOwotCi0gICAg
aWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7Ci0gICAgICAgIC8vIGRlZ2VuZXJhdGUgY2Fz
ZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAotICAgICAgICAq
b3V0QXppbXV0aCA9IDAuMDsKLSAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwotCi0gICAg
Ly8gQWxpZ24gYXhlcwotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIo
KS0+b3JpZW50YXRpb24oKTsKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVy
KCktPnVwVmVjdG9yKCk7Ci0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5l
ckZyb250LmNyb3NzKGxpc3RlbmVyVXApOwotICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7
Ci0KLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250Owot
ICAgIGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOwotCi0gICAgRmxvYXRQb2ludDNEIHVw
ID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7Ci0KLSAgICBmbG9hdCB1
cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOwotCi0gICAgRmxvYXRQb2ludDNE
IHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7Ci0g
ICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOwotCi0gICAgYXppbXV0aCA9IDE4MC4wICog
YWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOwotICAg
IGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICAvLyBTb3Vy
Y2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKLSAgICBkb3VibGUgZnJvbnRCYWNr
ID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7Ci0gICAgaWYgKGZyb250
QmFjayA8IDAuMCkKLSAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKLQotICAgIC8v
IE1ha2UgYXppbXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5l
ciB2ZWN0b3IKLSAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkp
Ci0gICAgICAgIGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKLSAgICBlbHNlCi0gICAgICAgIGF6
aW11dGggPSA0NTAuMCAtIGF6aW11dGg7Ci0KLSAgICAvLyBFbGV2YXRpb24KLSAgICBkb3VibGUg
ZWxldmF0aW9uID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAv
IHBpRG91YmxlOwotICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1
ZXMKLQotICAgIGlmIChlbGV2YXRpb24gPiA5MC4wKQotICAgICAgICBlbGV2YXRpb24gPSAxODAu
MCAtIGVsZXZhdGlvbjsKLSAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKLSAgICAgICAg
ZWxldmF0aW9uID0gLTE4MC4wIC0gZWxldmF0aW9uOwotCi0gICAgaWYgKG91dEF6aW11dGgpCi0g
ICAgICAgICpvdXRBemltdXRoID0gYXppbXV0aDsKLSAgICBpZiAob3V0RWxldmF0aW9uKQotICAg
ICAgICAqb3V0RWxldmF0aW9uID0gZWxldmF0aW9uOwotfQotCi1mbG9hdCBBdWRpb1Bhbm5lck5v
ZGU6OmRvcHBsZXJSYXRlKCkKLXsKLSAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4wOwotCi0g
ICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ugbm9yIGxp
c3RlbmVyIGhhcyBjaGFuZ2VkLi4uCi0gICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBsaXN0ZW5l
cigpLT5kb3BwbGVyRmFjdG9yKCk7Ci0KLSAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgewot
ICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7
Ci0KLSAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2Np
dHk7Ci0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3Rl
bmVyKCktPnZlbG9jaXR5KCk7Ci0KLSAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291
cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5Ci0gICAgICAgIGJvb2wgc291cmNlSGFz
VmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7Ci0gICAgICAgIGJvb2wgbGlzdGVu
ZXJIYXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOwotCi0gICAgICAgIGlm
IChzb3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7Ci0gICAgICAgICAg
ICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKLSAgICAgICAgICAg
IEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsK
LSAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gbV9wb3NpdGlvbiAt
IGxpc3RlbmVyUG9zaXRpb247Ci0KLSAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1h
Z25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIGRvdWJs
ZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9j
aXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOwotICAgICAgICAgICAgZG91YmxlIHNvdXJj
ZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3Vy
Y2VMaXN0ZW5lck1hZ25pdHVkZTsKLQotICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0g
LWxpc3RlbmVyUHJvamVjdGlvbjsKLSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291
cmNlUHJvamVjdGlvbjsKLQotICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9
IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0ZW5lclByb2pl
Y3Rpb24gPSBtaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOwotICAg
ICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IG1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRT
cGVlZE9mU291bmQpOwotCi0gICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3Vu
ZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAt
IGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7Ci0gICAgICAgICAgICBmaXhOQU5z
KGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCi0KLSAgICAgICAgICAgIC8v
IExpbWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBk
b3duLgotICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCi0gICAgICAgICAgICAg
ICAgZG9wcGxlclNoaWZ0ID0gMTYuMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlm
dCA8IDAuMTI1KQotICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OyAgIAotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hp
ZnQpOwotfQotCi1mbG9hdCBBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQotewot
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24o
KTsKLQotICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gbV9wb3NpdGlvbi5kaXN0YW5jZVRv
KGxpc3RlbmVyUG9zaXRpb24pOwotICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNl
RWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7Ci0gICAgCi0gICAgbV9kaXN0YW5jZUdhaW4t
PnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKLQotICAgIC8vIEZJ
WE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCi0gICAgZG91YmxlIGNvbmVH
YWluID0gbV9jb25lRWZmZWN0LmdhaW4obV9wb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVu
ZXJQb3NpdGlvbik7Ci0gICAgCi0gICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbmVHYWluKSk7Ci0KLSAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VHYWluICogY29u
ZUdhaW4pOwotfQotCi12b2lkIEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVkaW9Tb3VyY2VzQ29u
bmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIC8vIEZpcnN0IGNoZWNr
IGlmIHRoaXMgbm9kZSBpcyBhbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuICBJZiBzbywgbGV0IGl0
IGtub3cgYWJvdXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBp
bnRvIGFjY291bnQuCi0gICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1
ZmZlclNvdXJjZSkgewotICAgICAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJj
ZU5vZGUgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOwot
ICAgICAgICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2RlKHRoaXMpOwotICAgIH0gZWxz
ZSB7ICAgIAotICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsg
KytpKSB7Ci0gICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChp
KTsKLQotICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0
cyBjb25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdD
b25uZWN0aW9ucygpOyArK2opIHsKLSAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNv
bm5lY3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7Ci0gICAgICAgICAgICAg
ICAgQXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7Ci0g
ICAgICAgICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKGNvbm5lY3Rl
ZE5vZGUpOyAvLyByZWN1cnNlCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiODYxMzYxMTgxZTk4YjRmNjcwOWYzZTc1
MmI2ZTYyYzMyZGE1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEF1ZGlv
UGFubmVyTm9kZV9oCi0jZGVmaW5lIEF1ZGlvUGFubmVyTm9kZV9oCi0KLSNpbmNsdWRlICJBdWRp
b0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvR2Fpbi5oIgotI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIu
aCIKLSNpbmNsdWRlICJBdWRpb05vZGUuaCIKLSNpbmNsdWRlICJDb25lLmgiCi0jaW5jbHVkZSAi
RGlzdGFuY2UuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNpbmNsdWRlICJQYW5uZXIu
aCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8g
QXVkaW9QYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91
dHB1dC4KLS8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFj
dCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgotLy8gSXQgaGFzIGEgcG9z
aXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRv
IHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3Rl
bmVyLgotLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCi0vLyBBIGNvbmUgZWZmZWN0
IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZy
b20gdGhlIGxpc3RlbmVyLgotLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCi0KLWNsYXNzIEF1ZGlvUGFubmVyTm9kZSA6
IHB1YmxpYyBBdWRpb05vZGUgewotcHVibGljOgotICAgIC8vIFRoZXNlIG11c3QgYmUgZGVmaW5l
ZCBhcyBpbiB0aGUgLmlkbCBmaWxlIGFuZCBtdXN0IG1hdGNoIHRob3NlIGluIHRoZSBQYW5uZXIg
Y2xhc3MuCi0gICAgZW51bSB7Ci0gICAgICAgIEVRVUFMUE9XRVIgPSAwLAotICAgICAgICBIUlRG
ID0gMSwKLSAgICAgICAgU09VTkRGSUVMRCA9IDIsCi0gICAgfTsKLQotICAgIC8vIFRoZXNlIG11
c3QgYmUgZGVmaW5lZCBhcyBpbiB0aGUgLmlkbCBmaWxlIGFuZCBtdXN0IG1hdGNoIHRob3NlCi0g
ICAgLy8gaW4gdGhlIERpc3RhbmNlRWZmZWN0IGNsYXNzLgotICAgIGVudW0gewotICAgICAgICBM
SU5FQVJfRElTVEFOQ0UgPSAwLAotICAgICAgICBJTlZFUlNFX0RJU1RBTkNFID0gMSwKLSAgICAg
ICAgRVhQT05FTlRJQUxfRElTVEFOQ0UgPSAyLAotICAgIH07Ci0gICAgCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRp
b1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
fkF1ZGlvUGFubmVyTm9kZSgpOwotCi0gICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lk
IHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHB1bGxJ
bnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pbml0
aWFsaXplKCk7Ci0KLSAgICAvLyBMaXN0ZW5lcgotICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVy
KCk7Ci0KLSAgICAvLyBQYW5uaW5nIG1vZGVsCi0gICAgdW5zaWduZWQgc2hvcnQgcGFubmluZ01v
ZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KLSAgICB2b2lkIHNldFBhbm5p
bmdNb2RlbCh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgLy8gUG9zaXRp
b24KLSAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9u
OyB9Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1f
cG9zaXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KLQotICAgIC8vIE9yaWVudGF0aW9u
Ci0gICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlv
bjsgfQotICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikg
eyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9Ci0KLSAgICAvLyBWZWxv
Y2l0eQotICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2Np
dHk7IH0KLSAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsg
bV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQotCi0gICAgLy8gRGlzdGFuY2Ug
cGFyYW1ldGVycwotICAgIHVuc2lnbmVkIHNob3J0IGRpc3RhbmNlTW9kZWwoKSB7IHJldHVybiBt
X2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7IH0KLSAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwodW5z
aWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIGZsb2F0IHJlZkRpc3RhbmNlKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2Uo
KSk7IH0KLSAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGZsb2F0IHJlZkRpc3RhbmNlKSB7IG1fZGlz
dGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2UocmVmRGlzdGFuY2UpOyB9Ci0KLSAgICBmbG9hdCBt
YXhEaXN0YW5jZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX2Rpc3RhbmNlRWZmZWN0
Lm1heERpc3RhbmNlKCkpOyB9Ci0gICAgdm9pZCBzZXRNYXhEaXN0YW5jZShmbG9hdCBtYXhEaXN0
YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3RhbmNlKG1heERpc3RhbmNlKTsgfQot
Ci0gICAgZmxvYXQgcm9sbG9mZkZhY3RvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
X2Rpc3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKSk7IH0KLSAgICB2b2lkIHNldFJvbGxvZmZG
YWN0b3IoZmxvYXQgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZG
YWN0b3Iocm9sbG9mZkZhY3Rvcik7IH0KLQotICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVzIGlu
IGRlZ3JlZXMKLSAgICBmbG9hdCBjb25lSW5uZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihtX2NvbmVFZmZlY3QuaW5uZXJBbmdsZSgpKTsgfQotICAgIHZvaWQgc2V0
Q29uZUlubmVyQW5nbGUoZmxvYXQgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUo
YW5nbGUpOyB9Ci0KLSAgICBmbG9hdCBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PGZsb2F0PihtX2NvbmVFZmZlY3Qub3V0ZXJBbmdsZSgpKTsgfQotICAgIHZvaWQg
c2V0Q29uZU91dGVyQW5nbGUoZmxvYXQgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyQW5n
bGUoYW5nbGUpOyB9Ci0KLSAgICBmbG9hdCBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKSk7IH0KLSAgICB2b2lk
IHNldENvbmVPdXRlckdhaW4oZmxvYXQgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2Fp
bihhbmdsZSk7IH0KLQotICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6
aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKLSAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpOwot
Ci0gICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4gdmFsdWVz
LgotICAgIEF1ZGlvR2FpbiogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgQXVk
aW9HYWluKiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLSAgICB2aXJ0dWFsIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxU
aW1lKCkgOiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQot
Ci1wcml2YXRlOgotICAgIEF1ZGlvUGFubmVyTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1w
bGVSYXRlKTsKLQotICAgIC8vIFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBjb25l
IGdhaW4gYXR0ZW51YXRpb24uCi0gICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOwotCi0gICAg
Ly8gTm90aWZpZXMgYW55IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVzIGVp
dGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCi0gICAgLy8g
VGhpcyBpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3NhcnkgZm9y
IHRoZSBkb3BwbGVyIHNoaWZ0LgotICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVk
VG9Ob2RlKEF1ZGlvTm9kZSopOwotCi0gICAgT3duUHRyPFBhbm5lcj4gbV9wYW5uZXI7Ci0gICAg
dW5zaWduZWQgbV9wYW5uaW5nTW9kZWw7Ci0KLSAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsK
LSAgICBGbG9hdFBvaW50M0QgbV9vcmllbnRhdGlvbjsKLSAgICBGbG9hdFBvaW50M0QgbV92ZWxv
Y2l0eTsKLQotICAgIC8vIEdhaW4KLSAgICBSZWZQdHI8QXVkaW9HYWluPiBtX2Rpc3RhbmNlR2Fp
bjsKLSAgICBSZWZQdHI8QXVkaW9HYWluPiBtX2NvbmVHYWluOwotICAgIERpc3RhbmNlRWZmZWN0
IG1fZGlzdGFuY2VFZmZlY3Q7Ci0gICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7Ci0gICAgZmxv
YXQgbV9sYXN0R2FpbjsKLQotICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9QYW5uZXJOb2RlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2Rl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlk
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzYzZkODU2YWM5NzA3YjczYzBlODBi
NWViMjIxMTViNmVmMTQ0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5p
ZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdAotXSBpbnRlcmZh
Y2UgQXVkaW9QYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKLSAgICAvLyBQYW5uaW5nIG1vZGVsCi0g
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVFVQUxQT1dFUiA9IDA7Ci0gICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgSFJURiA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU09VTkRGSUVMRCA9
IDI7Ci0KLSAgICAvLyBEaXN0YW5jZSBtb2RlbAotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExJ
TkVBUl9ESVNUQU5DRSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5WRVJTRV9ESVNU
QU5DRSA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05FTlRJQUxfRElTVEFOQ0Ug
PSAyOwotCi0gICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYgCi0gICAgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2RlbAotICAgICAgICBzZXR0ZXIgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7Ci0KLSAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUg
c3lzdGVtIAotICAgIHZvaWQgc2V0UG9zaXRpb24oaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4g
ZmxvYXQgeik7Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5
LCBpbiBmbG9hdCB6KTsKLSAgICB2b2lkIHNldFZlbG9jaXR5KGluIGZsb2F0IHgsIGluIGZsb2F0
IHksIGluIGZsb2F0IHopOwotCi0gICAgLy8gRGlzdGFuY2UgbW9kZWwKLSAgICBhdHRyaWJ1dGUg
dW5zaWduZWQgc2hvcnQgZGlzdGFuY2VNb2RlbAotICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4
Y2VwdGlvbik7Ci0KLSAgICBhdHRyaWJ1dGUgZmxvYXQgcmVmRGlzdGFuY2U7Ci0gICAgYXR0cmli
dXRlIGZsb2F0IG1heERpc3RhbmNlOwotICAgIGF0dHJpYnV0ZSBmbG9hdCByb2xsb2ZmRmFjdG9y
OwotCi0gICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQotICAgIGF0dHJpYnV0ZSBmbG9hdCBj
b25lSW5uZXJBbmdsZTsKLSAgICBhdHRyaWJ1dGUgZmxvYXQgY29uZU91dGVyQW5nbGU7Ci0gICAg
YXR0cmlidXRlIGZsb2F0IGNvbmVPdXRlckdhaW47Ci0KLSAgICAvLyBEeW5hbWljYWxseSBjYWxj
dWxhdGVkIGdhaW4gdmFsdWVzICAgICAgICAgIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRp
b0dhaW4gY29uZUdhaW47Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvR2FpbiBkaXN0YW5j
ZUdhaW47Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxNZXJnZXJOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWZhY2U3YzE2NmRjYzQzYjQxNWZiNTBk
NDIwZmIxNTJlZTYzZmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQ2hh
bm5lbE1lcmdlck5vZGUuaCIKKworI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1l
cmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQoreworICAgIGlmICghbnVtYmVyT2ZJbnB1dHMgfHwg
bnVtYmVyT2ZJbnB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDaGFubmVsTWVy
Z2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAorfQor
CitDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKKyAgICA6IEF1
ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQoreworICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVz
dGVkIG51bWJlciBvZiBpbnB1dHMuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mSW5wdXRzOyArK2kpCisgICAgICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJ
bnB1dCh0aGlzKSkpOworCisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRw
dXQodGhpcywgMSkpKTsKKyAgICAKKyAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxNZXJn
ZXIpOworICAgIAorICAgIGluaXRpYWxpemUoKTsKK30KKwordm9pZCBDaGFubmVsTWVyZ2VyTm9k
ZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1ZGlvTm9kZU91dHB1
dCogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KDApOworICAgIEFTU0VSVChvdXRwdXQpOworICAgIEFT
U0VSVF9VTlVTRUQoZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb1Byb2Nlc3MgPT0gb3V0cHV0LT5i
dXMoKS0+bGVuZ3RoKCkpOyAgICAKKyAgICAKKyAgICAvLyBNZXJnZSBhbGwgdGhlIGNoYW5uZWxz
IGZyb20gYWxsIHRoZSBpbnB1dHMgaW50byBvbmUgb3V0cHV0LgorICAgIHVuc2lnbmVkIG91dHB1
dENoYW5uZWxJbmRleCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
SW5wdXRzKCk7ICsraSkgeworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSB0aGlzLT5p
bnB1dChpKTsKKyAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKSB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSBpbnB1dC0+YnVzKCktPm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTWVyZ2UgY2hhbm5lbHMg
ZnJvbSB0aGlzIHBhcnRpY3VsYXIgaW5wdXQuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzOyArK2opIHsKKyAgICAgICAgICAgICAgICBB
dWRpb0NoYW5uZWwqIGlucHV0Q2hhbm5lbCA9IGlucHV0LT5idXMoKS0+Y2hhbm5lbChqKTsKKyAg
ICAgICAgICAgICAgICBBdWRpb0NoYW5uZWwqIG91dHB1dENoYW5uZWwgPSBvdXRwdXQtPmJ1cygp
LT5jaGFubmVsKG91dHB1dENoYW5uZWxJbmRleCk7CisgICAgICAgICAgICAgICAgb3V0cHV0Q2hh
bm5lbC0+Y29weUZyb20oaW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICArK291dHB1dENoYW5uZWxJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBBU1NFUlQob3V0cHV0Q2hhbm5lbEluZGV4ID09IG91dHB1dC0+bnVt
YmVyT2ZDaGFubmVscygpKTsKK30KKwordm9pZCBDaGFubmVsTWVyZ2VyTm9kZTo6cmVzZXQoKQor
eworfQorCisvLyBBbnkgdGltZSBhIGNvbm5lY3Rpb24gb3IgZGlzY29ubmVjdGlvbiBoYXBwZW5z
IG9uIGFueSBvZiBvdXIgaW5wdXRzLCB3ZSBwb3RlbnRpYWxseSBuZWVkIHRvIGNoYW5nZSB0aGUK
Ky8vIG51bWJlciBvZiBjaGFubmVscyBvZiBvdXIgb3V0cHV0Lgordm9pZCBDaGFubmVsTWVyZ2Vy
Tm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0
KQoreworICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCkt
PmlzR3JhcGhPd25lcigpKTsKKworICAgIC8vIENvdW50IGhvdyBtYW55IGNoYW5uZWxzIHdlIGhh
dmUgYWxsIHRvZ2V0aGVyIGZyb20gYWxsIG9mIHRoZSBpbnB1dHMuCisgICAgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscyA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSB0
aGlzLT5pbnB1dChpKTsKKyAgICAgICAgaWYgKGlucHV0LT5pc0Nvbm5lY3RlZCgpKQorICAgICAg
ICAgICAgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyArPSBpbnB1dC0+YnVzKCktPm51bWJlck9mQ2hh
bm5lbHMoKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGNoYW5u
ZWxzIG9uIHRoZSBvdXRwdXQKKyAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9IHRoaXMtPm91
dHB1dCgwKTsKKyAgICBBU1NFUlQob3V0cHV0KTsKKyAgICBvdXRwdXQtPnNldE51bWJlck9mQ2hh
bm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICBBdWRpb05vZGU6OmNoZWNrTnVt
YmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTc2NWQ1
ODQ5OTgzZjU0YThjMjgxZTgyN2IzN2IzZjQwMTgzYmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENoYW5uZWxNZXJnZXJOb2RlX2gKKyNkZWZpbmUgQ2hhbm5lbE1l
cmdlck5vZGVfaAorCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0NvbnRleHQ7Cisg
ICAgCitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworCisg
ICAgLy8gQXVkaW9Ob2RlCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CisKKyAgICAvLyBDYWxsZWQgaW4g
dGhlIGF1ZGlvIHRocmVhZCAocHJlLXJlbmRlcmluZyB0YXNrKSB3aGVuIHRoZSBudW1iZXIgb2Yg
Y2hhbm5lbHMgZm9yIGFuIGlucHV0IG1heSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lk
IGNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0Kik7CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiAwOyB9CisKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQqLCBmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDaGFubmVsTWVyZ2VyTm9kZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU3OWNlNWEyZDU5ZTU4YjM3MjMzMGNjMDU5MzUwYzAxZWVlZDY1MTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJn
ZXJOb2RlLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJ
TworXSBpbnRlcmZhY2UgQ2hhbm5lbE1lcmdlck5vZGUgOiBBdWRpb05vZGUgeworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNjNTA1MjZkN2I3ZTdiZjEwNDA2MTEzMjg2MDU1NTBlNGQzZDZl
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQ2hh
bm5lbFNwbGl0dGVyTm9kZS5oIgorCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVk
ZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgaWYgKCFudW1iZXJP
Zk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
aGFubmVsU3BsaXR0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0cykp
OyAgICAgIAorfQorCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7CisgICAgYWRk
SW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisKKyAgICAvLyBDcmVh
dGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICBhZGRPdXRwdXQoYWRvcHRQ
dHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIAorICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKKyAgICAKKyAgICBpbml0aWFsaXplKCk7Cit9CisK
K3ZvaWQgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQoreworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAgQVNTRVJU
KHNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJv
Y2VzcyA9PSBzb3VyY2UtPmxlbmd0aCgpKTsKKyAgICAKKyAgICB1bnNpZ25lZCBudW1iZXJPZlNv
dXJjZUNoYW5uZWxzID0gc291cmNlLT5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0cygpOyArK2kpIHsKKyAgICAgICAg
QXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KGkpLT5idXMoKTsKKyAgICAgICAgQVNTRVJU
KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpIDwgbnVtYmVyT2ZTb3VyY2VD
aGFubmVscykgeworICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGNoYW5uZWwgb3V0IGlmIGl0IGV4
aXN0cyBpbiB0aGUgc291cmNlLgorICAgICAgICAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBh
dm9pZCB0aGUgY29weSBhbmQgc2ltcGx5IHBhc3MgYWxvbmcgcG9pbnRlcnMsIGJ1dCB0aGlzIGJl
Y29tZXMgZXh0cmVtZWx5IGRpZmZpY3VsdCB3aXRoIGZhbm91dCBhbmQgZmFuaW4uCisgICAgICAg
ICAgICBkZXN0aW5hdGlvbi0+Y2hhbm5lbCgwKS0+Y29weUZyb20oc291cmNlLT5jaGFubmVsKGkp
KTsKKyAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQoaSktPnJlbmRlcmluZ0Zhbk91dENvdW50KCkg
PiAwKSB7CisgICAgICAgICAgICAvLyBPbmx5IGJvdGhlciB6ZXJvaW5nIG91dCB0aGUgZGVzdGlu
YXRpb24gaWYgaXQncyBjb25uZWN0ZWQgdG8gYW55dGhpbmcKKyAgICAgICAgICAgIGRlc3RpbmF0
aW9uLT56ZXJvKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ2hhbm5lbFNwbGl0dGVy
Tm9kZTo6cmVzZXQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDcxOTA3ZDYwYWFmMDJh
OTI1ZTQ2YWFjOWUxNjk3NmJlNDE1Y2QyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hhbm5lbFNwbGl0dGVyTm9kZV9oCisjZGVmaW5lIENo
YW5uZWxTcGxpdHRlck5vZGVfaAorCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0Nv
bnRleHQ7CisgICAgCitjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cyk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIDA7IH0KKworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0Kiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENoYW5uZWxTcGxpdHRlck5vZGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJO
b2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVy
Tm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFiZmJhMWVmOTZkODEzZTlhZjU5MDVkYTU5NGUxZGE4YmU5
MGJmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8KK10gaW50ZXJmYWNlIENoYW5uZWxTcGxpdHRlck5v
ZGUgOiBBdWRpb05vZGUgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9ET01XaW5kb3dXZWJBdWRpby5pZGwKaW5kZXggMjczN2VjZmRkZTAzNzZhZjJhNTc3
NzdlN2U2NjJkYTg5ZDlhNGU0Ni4uZGY4OGZiMGY2MTcwZTNmMjgxOTcwZTFiNGNmMjAwNDhhN2Jk
NjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9ET01XaW5k
b3dXZWJBdWRpby5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9ET01X
aW5kb3dXZWJBdWRpby5pZGwKQEAgLTMwLDcgKzMwLDcgQEAKIF0gaW50ZXJmYWNlIERPTVdpbmRv
d1dlYkF1ZGlvIHsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAK
ICAgICBbSlNDdXN0b21HZXR0ZXIsIFY4RW5hYmxlZEF0UnVudGltZV0gYXR0cmlidXRlIEF1ZGlv
Q29udGV4dENvbnN0cnVjdG9yIHdlYmtpdEF1ZGlvQ29udGV4dDsKLSAgICBhdHRyaWJ1dGUgQXVk
aW9QYW5uZXJOb2RlQ29uc3RydWN0b3Igd2Via2l0QXVkaW9QYW5uZXJOb2RlOworICAgIGF0dHJp
YnV0ZSBQYW5uZXJOb2RlQ29uc3RydWN0b3Igd2Via2l0QXVkaW9QYW5uZXJOb2RlOwogICAgIGF0
dHJpYnV0ZSBBdWRpb1Byb2Nlc3NpbmdFdmVudENvbnN0cnVjdG9yIEF1ZGlvUHJvY2Vzc2luZ0V2
ZW50OwogICAgIGF0dHJpYnV0ZSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRDb25zdHJ1Y3Rv
ciBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAwODc3MjliYzdjMTU1
OWYwMWM5M2FjYzg1ODkxNmVlMGFlMmIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKwor
I2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KQorICAgICwgbV9sYXN0R2FpbigxLjApCisgICAgLCBtX3NhbXBsZUFjY3VyYXRlR2FpblZhbHVl
cyhBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpIC8vIEZJWE1FOiBjYW4gcHJvYmFi
bHkgc2hhcmUgdGVtcCBidWZmZXIgaW4gY29udGV4dAoreworICAgIG1fZ2FpbiA9IEF1ZGlvR2Fp
bjo6Y3JlYXRlKGNvbnRleHQsICJnYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBhZGRJbnB1
dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKKyAgICBhZGRPdXRwdXQoYWRv
cHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIAorICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlR2Fpbik7CisgICAgCisgICAgaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIEdh
aW5Ob2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gRklYTUU6
IGZvciBzb21lIGNhc2VzIHRoZXJlIGlzIGEgbmljZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgcHJv
Y2Vzc2luZyBoZXJlLCBhbmQgbGV0IHRoZSBnYWluIGNoYW5nZQorICAgIC8vIGhhcHBlbiBpbiB0
aGUgc3VtbWluZyBqdW5jdGlvbiBpbnB1dCBvZiB0aGUgQXVkaW9Ob2RlIHdlJ3JlIGNvbm5lY3Rl
ZCB0by4KKyAgICAvLyBUaGVuIHdlIGNhbiBhdm9pZCBhbGwgb2YgdGhlIGZvbGxvd2luZzoKKwor
ICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygpOworICAgIEFTU0VSVChv
dXRwdXRCdXMpOworCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nv
bm5lY3RlZCgpKQorICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgQXVkaW9CdXMqIGlucHV0QnVzID0gaW5wdXQoMCktPmJ1cygpOworCisgICAgICAgIGlmIChn
YWluKCktPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkpIHsKKyAgICAgICAgICAgIC8vIEFwcGx5
IHNhbXBsZS1hY2N1cmF0ZSBnYWluIHNjYWxpbmcgZm9yIHByZWNpc2UgZW52ZWxvcGVzLCBncmFp
biB3aW5kb3dzLCBldGMuCisgICAgICAgICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9jZXNzIDw9IG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLnNpemUoKSk7CisgICAgICAgICAgICBpZiAoZnJhbWVz
VG9Qcm9jZXNzIDw9IG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLnNpemUoKSkgeworICAgICAg
ICAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9zYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXMu
ZGF0YSgpOworICAgICAgICAgICAgICAgIGdhaW4oKS0+Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVW
YWx1ZXMoZ2FpblZhbHVlcywgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgICAgICAgICBvdXRw
dXRCdXMtPmNvcHlXaXRoU2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzRnJvbSgqaW5wdXRCdXMsIGdh
aW5WYWx1ZXMsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBBcHBseSB0aGUgZ2FpbiB3aXRoIGRlLXppcHBlcmluZyBpbnRv
IHRoZSBvdXRwdXQgYnVzLgorICAgICAgICAgICAgb3V0cHV0QnVzLT5jb3B5V2l0aEdhaW5Gcm9t
KCppbnB1dEJ1cywgJm1fbGFzdEdhaW4sIGdhaW4oKS0+dmFsdWUoKSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgR2Fpbk5vZGU6OnJlc2V0KCkKK3sKKyAgICAvLyBTbmFwIGRpcmVjdGx5
IHRvIGRlc2lyZWQgZ2Fpbi4KKyAgICBtX2xhc3RHYWluID0gZ2FpbigpLT52YWx1ZSgpOworfQor
CisvLyBGSVhNRTogdGhpcyBjYW4gZ28gYXdheSB3aGVuIHdlIGRvIG1peGluZyB3aXRoIGdhaW4g
ZGlyZWN0bHkgaW4gc3VtbWluZyBqdW5jdGlvbiBvZiBBdWRpb05vZGVJbnB1dAorLy8KKy8vIEFz
IHNvb24gYXMgd2Uga25vdyB0aGUgY2hhbm5lbCBjb3VudCBvZiBvdXIgaW5wdXQsIHdlIGNhbiBs
YXppbHkgaW5pdGlhbGl6ZS4KKy8vIFNvbWV0aW1lcyB0aGlzIG1heSBiZSBjYWxsZWQgbW9yZSB0
aGFuIG9uY2Ugd2l0aCBkaWZmZXJlbnQgY2hhbm5lbCBjb3VudHMsIGluIHdoaWNoIGNhc2Ugd2Ug
bXVzdCBzYWZlbHkKKy8vIHVuaW5pdGlhbGl6ZSBhbmQgdGhlbiByZS1pbml0aWFsaXplIHdpdGgg
dGhlIG5ldyBjaGFubmVsIGNvdW50Lgordm9pZCBHYWluTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5u
ZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQoreworICAgIEFTU0VSVChjb250ZXh0
KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKworICAg
IEFTU0VSVChpbnB1dCAmJiBpbnB1dCA9PSB0aGlzLT5pbnB1dCgwKSk7CisgICAgaWYgKGlucHV0
ICE9IHRoaXMtPmlucHV0KDApKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMgPSBpbnB1dC0+bnVtYmVyT2ZDaGFubmVscygpOyAgICAKKwor
ICAgIGlmIChpc0luaXRpYWxpemVkKCkgJiYgbnVtYmVyT2ZDaGFubmVscyAhPSBvdXRwdXQoMCkt
Pm51bWJlck9mQ2hhbm5lbHMoKSkgeworICAgICAgICAvLyBXZSdyZSBhbHJlYWR5IGluaXRpYWxp
emVkIGJ1dCB0aGUgY2hhbm5lbCBjb3VudCBoYXMgY2hhbmdlZC4KKyAgICAgICAgdW5pbml0aWFs
aXplKCk7CisgICAgfQorCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpIHsKKyAgICAgICAgLy8g
VGhpcyB3aWxsIHByb3BhZ2F0ZSB0aGUgY2hhbm5lbCBjb3VudCB0byBhbnkgbm9kZXMgY29ubmVj
dGVkIGZ1cnRoZXIgZG93bnN0cmVhbSBpbiB0aGUgZ3JhcGguCisgICAgICAgIG91dHB1dCgwKS0+
c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgaW5pdGlhbGl6
ZSgpOworICAgIH0KKworICAgIEF1ZGlvTm9kZTo6Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5w
dXQoaW5wdXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRiNDFhZDIxZGFmMWMzMDBkNjE4MTI5MGNjMTdiYzhiNjZiYjc1MmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2Fpbk5vZGVfaAorI2Rl
ZmluZSBHYWluTm9kZV9oCisKKyNpbmNsdWRlICJBdWRpb0dhaW4uaCIKKyNpbmNsdWRlICJBdWRp
b05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0NvbnRleHQ7Cisg
ICAgCisvLyBHYWluTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBv
dXRwdXQgd2hpY2ggYXBwbGllcyBhIGdhaW4gKHZvbHVtZSkgY2hhbmdlIHRvIHRoZSBhdWRpbyBz
aWduYWwuCisvLyBEZS16aXBwZXJpbmcgKHNtb290aGluZykgaXMgYXBwbGllZCB3aGVuIHRoZSBn
YWluIHZhbHVlIGlzIGNoYW5nZWQgZHluYW1pY2FsbHkuCisKK2NsYXNzIEdhaW5Ob2RlIDogcHVi
bGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2Fpbk5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsgICAgICAKKyAgICB9CisgICAgCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0
KCk7CisKKyAgICAvLyBDYWxsZWQgaW4gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIG51bWJlciBv
ZiBjaGFubmVscyBmb3IgdGhlIGlucHV0IG1heSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2
b2lkIGNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0Kik7CisKKyAg
ICAvLyBKYXZhU2NyaXB0IGludGVyZmFjZQorICAgIEF1ZGlvR2FpbiogZ2FpbigpIHsgcmV0dXJu
IG1fZ2Fpbi5nZXQoKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
Citwcml2YXRlOgorICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gMDsgfQorCisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CisKKyAgICBmbG9hdCBtX2xhc3RHYWluOyAvLyBmb3IgZGUtemlwcGVyaW5n
CisgICAgUmVmUHRyPEF1ZGlvR2Fpbj4gbV9nYWluOworCisgICAgQXVkaW9GbG9hdEFycmF5IG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gR2Fpbk5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0dhaW5Ob2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjNkODllMDRjY2E3NDAwMjAzMzViMGRmNjU4OWUz
ZDYxMDQ3ODExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKK10gaW50ZXJm
YWNlIEdhaW5Ob2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBGSVhNRTogZXZlbnR1YWxseSBpdCB3
aWxsIGJlIGludGVyZXN0aW5nIHRvIHJlbW92ZSB0aGUgcmVhZG9ubHkgcmVzdHJpY3Rpb24sIGJ1
dCBuZWVkIHRvIHByb3Blcmx5IGRlYWwgd2l0aCB0aHJlYWQgc2FmZXR5IGhlcmUuCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvR2FpbiBnYWluOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTYwYWY4ODdkNjFjMzJlODFmNTJiZTFjOGYyN2Y3NTQ3
ZGY5YTE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJKYXZhU2NyaXB0QXVk
aW9Ob2RlLmgiCi0KLSNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgotI2luY2x1ZGUgIkF1ZGlvQnVz
LmgiCi0jaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQu
aCIKLSNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKLSNpbmNsdWRlICJBdWRpb1Byb2Nlc3Np
bmdFdmVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0MzJB
cnJheS5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY29uc3Qgc2l6ZV90IERlZmF1bHRCdWZmZXJTaXplID0gNDA5NjsKLQotUGFzc1JlZlB0
cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpjcmVhdGUoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQotewotICAgIC8vIENoZWNrIGZvciB2YWxpZCBidWZmZXIgc2l6ZS4KLSAgICBzd2l0Y2gg
KGJ1ZmZlclNpemUpIHsKLSAgICBjYXNlIDI1NjoKLSAgICBjYXNlIDUxMjoKLSAgICBjYXNlIDEw
MjQ6Ci0gICAgY2FzZSAyMDQ4OgotICAgIGNhc2UgNDA5NjoKLSAgICBjYXNlIDgxOTI6Ci0gICAg
Y2FzZSAxNjM4NDoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCi0gICAgaWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9m
T3V0cHV0Q2hhbm5lbHMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG51bWJlck9mSW5w
dXRDaGFubmVscyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gQXVkaW9Db250
ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUs
IGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykpOwotfQotCi1KYXZhU2NyaXB0QXVkaW9Ob2RlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKLSAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQotICAgICwgbV9kb3Vi
bGVCdWZmZXJJbmRleCgwKQotICAgICwgbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50KDApCi0g
ICAgLCBtX2J1ZmZlclNpemUoYnVmZmVyU2l6ZSkKLSAgICAsIG1fYnVmZmVyUmVhZFdyaXRlSW5k
ZXgoMCkKLSAgICAsIG1faXNSZXF1ZXN0T3V0c3RhbmRpbmcoZmFsc2UpCi0gICAgLCBtX251bWJl
ck9mSW5wdXRDaGFubmVscyhudW1iZXJPZklucHV0Q2hhbm5lbHMpCi0gICAgLCBtX251bWJlck9m
T3V0cHV0Q2hhbm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscykKLSAgICAsIG1faW50ZXJuYWxJ
bnB1dEJ1cyhudW1iZXJPZklucHV0Q2hhbm5lbHMsIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJ
bkZyYW1lcywgZmFsc2UpCi17Ci0gICAgLy8gUmVnYXJkbGVzcyBvZiB0aGUgYWxsb3dlZCBidWZm
ZXIgc2l6ZXMsIHdlIHN0aWxsIG5lZWQgdG8gcHJvY2VzcyBhdCB0aGUgZ3JhbnVsYXJpdHkgb2Yg
dGhlIEF1ZGlvTm9kZS4KLSAgICBpZiAobV9idWZmZXJTaXplIDwgQXVkaW9Ob2RlOjpQcm9jZXNz
aW5nU2l6ZUluRnJhbWVzKQotICAgICAgICBtX2J1ZmZlclNpemUgPSBBdWRpb05vZGU6OlByb2Nl
c3NpbmdTaXplSW5GcmFtZXM7Ci0KLSAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dENoYW5uZWxzIDw9
IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKLQotICAgIGFkZElucHV0KGFk
b3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0
cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKSk7Ci0K
LSAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwotCi0gICAgaW5pdGlhbGl6ZSgp
OwotfQotCi1KYXZhU2NyaXB0QXVkaW9Ob2RlOjp+SmF2YVNjcmlwdEF1ZGlvTm9kZSgpCi17Ci0g
ICAgdW5pbml0aWFsaXplKCk7Ci19Ci0KLXZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW5pdGlh
bGl6ZSgpCi17Ci0gICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpOwotCi0gICAgLy8g
Q3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgc2lkZXMu
Ci0gICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4g
dGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI7ICsraSkgewotICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IGlucHV0QnVmZmVyID0g
bV9udW1iZXJPZklucHV0Q2hhbm5lbHMgPyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKLSAgICAgICAgUmVm
UHRyPEF1ZGlvQnVmZmVyPiBvdXRwdXRCdWZmZXIgPSBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PyBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgYnVmZmVyU2l6
ZSgpLCBzYW1wbGVSYXRlKSA6IDA7Ci0KLSAgICAgICAgbV9pbnB1dEJ1ZmZlcnMuYXBwZW5kKGlu
cHV0QnVmZmVyKTsKLSAgICAgICAgbV9vdXRwdXRCdWZmZXJzLmFwcGVuZChvdXRwdXRCdWZmZXIp
OwotICAgIH0KLQotICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOwotfQotCi12b2lkIEphdmFT
Y3JpcHRBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpCi17Ci0gICAgaWYgKCFpc0luaXRpYWxpemVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faW5wdXRCdWZmZXJzLmNsZWFyKCk7Ci0gICAg
bV9vdXRwdXRCdWZmZXJzLmNsZWFyKCk7Ci0KLSAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgp
OwotfQotCi12b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKLXsKLSAgICAvLyBEaXNjdXNzaW9uIGFib3V0IGlucHV0cyBhbmQgb3V0cHV0czoK
LSAgICAvLyBBcyBpbiBvdGhlciBBdWRpb05vZGVzLCBKYXZhU2NyaXB0QXVkaW9Ob2RlIHVzZXMg
YW4gQXVkaW9CdXMgZm9yIGl0cyBpbnB1dCBhbmQgb3V0cHV0IChzZWUgaW5wdXRCdXMgYW5kIG91
dHB1dEJ1cyBiZWxvdykuCi0gICAgLy8gQWRkaXRpb25hbGx5LCB0aGVyZSBpcyBhIGRvdWJsZS1i
dWZmZXJpbmcgZm9yIGlucHV0IGFuZCBvdXRwdXQgd2hpY2ggaXMgZXhwb3NlZCBkaXJlY3RseSB0
byBKYXZhU2NyaXB0IChzZWUgaW5wdXRCdWZmZXIgYW5kIG91dHB1dEJ1ZmZlciBiZWxvdykuCi0g
ICAgLy8gVGhpcyBub2RlIGlzIHRoZSBwcm9kdWNlciBmb3IgaW5wdXRCdWZmZXIgYW5kIHRoZSBj
b25zdW1lciBmb3Igb3V0cHV0QnVmZmVyLgotICAgIC8vIFRoZSBKYXZhU2NyaXB0IGNvZGUgaXMg
dGhlIGNvbnN1bWVyIG9mIGlucHV0QnVmZmVyIGFuZCB0aGUgcHJvZHVjZXIgZm9yIG91dHB1dEJ1
ZmZlci4KLSAgICAKLSAgICAvLyBHZXQgaW5wdXQgYW5kIG91dHB1dCBidXNzZXMuCi0gICAgQXVk
aW9CdXMqIGlucHV0QnVzID0gdGhpcy0+aW5wdXQoMCktPmJ1cygpOwotICAgIEF1ZGlvQnVzKiBv
dXRwdXRCdXMgPSB0aGlzLT5vdXRwdXQoMCktPmJ1cygpOwotCi0gICAgLy8gR2V0IGlucHV0IGFu
ZCBvdXRwdXQgYnVmZmVycy4gIFdlIGRvdWJsZS1idWZmZXIgYm90aCB0aGUgaW5wdXQgYW5kIG91
dHB1dCBzaWRlcy4KLSAgICB1bnNpZ25lZCBkb3VibGVCdWZmZXJJbmRleCA9IHRoaXMtPmRvdWJs
ZUJ1ZmZlckluZGV4KCk7Ci0gICAgYm9vbCBpc0RvdWJsZUJ1ZmZlckluZGV4R29vZCA9IGRvdWJs
ZUJ1ZmZlckluZGV4IDwgMiAmJiBkb3VibGVCdWZmZXJJbmRleCA8IG1faW5wdXRCdWZmZXJzLnNp
emUoKSAmJiBkb3VibGVCdWZmZXJJbmRleCA8IG1fb3V0cHV0QnVmZmVycy5zaXplKCk7Ci0gICAg
QVNTRVJUKGlzRG91YmxlQnVmZmVySW5kZXhHb29kKTsKLSAgICBpZiAoIWlzRG91YmxlQnVmZmVy
SW5kZXhHb29kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQXVkaW9CdWZmZXIqIGlucHV0
QnVmZmVyID0gbV9pbnB1dEJ1ZmZlcnNbZG91YmxlQnVmZmVySW5kZXhdLmdldCgpOwotICAgIEF1
ZGlvQnVmZmVyKiBvdXRwdXRCdWZmZXIgPSBtX291dHB1dEJ1ZmZlcnNbZG91YmxlQnVmZmVySW5k
ZXhdLmdldCgpOwotCi0gICAgLy8gQ2hlY2sgdGhlIGNvbnNpc3RlbmN5IG9mIGlucHV0IGFuZCBv
dXRwdXQgYnVmZmVycy4KLSAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSBtX2lu
dGVybmFsSW5wdXRCdXMubnVtYmVyT2ZDaGFubmVscygpOwotICAgIGJvb2wgYnVmZmVyc0FyZUdv
b2QgPSBvdXRwdXRCdWZmZXIgJiYgYnVmZmVyU2l6ZSgpID09IG91dHB1dEJ1ZmZlci0+bGVuZ3Ro
KCkgJiYgbV9idWZmZXJSZWFkV3JpdGVJbmRleCArIGZyYW1lc1RvUHJvY2VzcyA8PSBidWZmZXJT
aXplKCk7Ci0KLSAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIGlucHV0IGNoYW5uZWxzIGlzIHplcm8s
IGl0J3Mgb2sgdG8gaGF2ZSBpbnB1dEJ1ZmZlciA9IDAuCi0gICAgaWYgKG1faW50ZXJuYWxJbnB1
dEJ1cy5udW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgIGJ1ZmZlcnNBcmVHb29kID0gYnVmZmVy
c0FyZUdvb2QgJiYgaW5wdXRCdWZmZXIgJiYgYnVmZmVyU2l6ZSgpID09IGlucHV0QnVmZmVyLT5s
ZW5ndGgoKTsKLQotICAgIEFTU0VSVChidWZmZXJzQXJlR29vZCk7Ci0gICAgaWYgKCFidWZmZXJz
QXJlR29vZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgYXNzdW1lIHRoYXQgYnVmZmVy
U2l6ZSgpIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgZnJhbWVzVG9Qcm9jZXNzIC0gc2hvdWxkIGFs
d2F5cyBiZSB0cnVlLCBidXQgd2Ugc2hvdWxkIHN0aWxsIGNoZWNrLgotICAgIGJvb2wgaXNGcmFt
ZXNUb1Byb2Nlc3NHb29kID0gZnJhbWVzVG9Qcm9jZXNzICYmIGJ1ZmZlclNpemUoKSA+PSBmcmFt
ZXNUb1Byb2Nlc3MgJiYgIShidWZmZXJTaXplKCkgJSBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIEFT
U0VSVChpc0ZyYW1lc1RvUHJvY2Vzc0dvb2QpOwotICAgIGlmICghaXNGcmFtZXNUb1Byb2Nlc3NH
b29kKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzID0gb3V0cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICBib29sIGNoYW5uZWxz
QXJlR29vZCA9IChudW1iZXJPZklucHV0Q2hhbm5lbHMgPT0gbV9udW1iZXJPZklucHV0Q2hhbm5l
bHMpICYmIChudW1iZXJPZk91dHB1dENoYW5uZWxzID09IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyk7Ci0gICAgQVNTRVJUKGNoYW5uZWxzQXJlR29vZCk7Ci0gICAgaWYgKCFjaGFubmVsc0FyZUdv
b2QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZklucHV0Q2hhbm5lbHM7IGkrKykKLSAgICAgICAgbV9pbnRlcm5hbElucHV0QnVzLnNldENo
YW5uZWxNZW1vcnkoaSwgaW5wdXRCdWZmZXItPmdldENoYW5uZWxEYXRhKGkpLT5kYXRhKCkgKyBt
X2J1ZmZlclJlYWRXcml0ZUluZGV4LCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgaWYgKG51bWJl
ck9mSW5wdXRDaGFubmVscykKLSAgICAgICAgbV9pbnRlcm5hbElucHV0QnVzLmNvcHlGcm9tKCpp
bnB1dEJ1cyk7Ci0KLSAgICAvLyBDb3B5IGZyb20gdGhlIG91dHB1dCBidWZmZXIgdG8gdGhlIG91
dHB1dC4gCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHM7ICsraSkKLSAgICAgICAgbWVtY3B5KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURh
dGEoKSwgb3V0cHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YShpKS0+ZGF0YSgpICsgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICAv
LyBVcGRhdGUgdGhlIGJ1ZmZlcmluZyBpbmRleC4KLSAgICBtX2J1ZmZlclJlYWRXcml0ZUluZGV4
ID0gKG1fYnVmZmVyUmVhZFdyaXRlSW5kZXggKyBmcmFtZXNUb1Byb2Nlc3MpICUgYnVmZmVyU2l6
ZSgpOwotCi0gICAgLy8gbV9idWZmZXJSZWFkV3JpdGVJbmRleCB3aWxsIHdyYXAgYmFjayBhcm91
bmQgdG8gMCB3aGVuIHRoZSBjdXJyZW50IGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBhcmUgZnVs
bC4KLSAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgZmlyZSBhbiBldmVudCBhbmQgc3dhcCBidWZm
ZXJzLgotICAgIGlmICghbV9idWZmZXJSZWFkV3JpdGVJbmRleCkgewotICAgICAgICAvLyBBdm9p
ZCBidWlsZGluZyB1cCByZXF1ZXN0cyBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gZmlyZSBwcm9jZXNz
IGV2ZW50cyB3aGVuIHRoZXkncmUgbm90IGJlaW5nIGhhbmRsZWQuCi0gICAgICAgIC8vIFRoaXMg
Y291bGQgYmUgYSBwcm9ibGVtIGlmIHRoZSBtYWluIHRocmVhZCBpcyB2ZXJ5IGJ1c3kgZG9pbmcg
b3RoZXIgdGhpbmdzIGFuZCBpcyBiZWluZyBoZWxkIHVwIGhhbmRsaW5nIHByZXZpb3VzIHJlcXVl
c3RzLgotICAgICAgICBpZiAobV9pc1JlcXVlc3RPdXRzdGFuZGluZykgewotICAgICAgICAgICAg
Ly8gV2UncmUgbGF0ZSBpbiBoYW5kbGluZyB0aGUgcHJldmlvdXMgcmVxdWVzdC4gIFRoZSBtYWlu
IHRocmVhZCBtdXN0IGJlIHZlcnkgYnVzeS4KLSAgICAgICAgICAgIC8vIFRoZSBiZXN0IHdlIGNh
biBkbyBpcyBjbGVhciBvdXQgdGhlIGJ1ZmZlciBvdXJzZWxmIGhlcmUuCi0gICAgICAgICAgICBv
dXRwdXRCdWZmZXItPnplcm8oKTsgICAgICAgICAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFJlZmVyZW5jZSBvdXJzZWxmIHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBnZXQg
ZGVsZXRlZCBiZWZvcmUgZmlyZVByb2Nlc3NFdmVudCgpIGdldHMgY2FsbGVkLgotICAgICAgICAg
ICAgcmVmKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEZpcmUgdGhlIGV2ZW50IG9u
IHRoZSBtYWluIHRocmVhZCwgbm90IHRoaXMgb25lICh3aGljaCBpcyB0aGUgcmVhbHRpbWUgYXVk
aW8gdGhyZWFkKS4KLSAgICAgICAgICAgIG1fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudCA9IG1f
ZG91YmxlQnVmZmVySW5kZXg7Ci0gICAgICAgICAgICBtX2lzUmVxdWVzdE91dHN0YW5kaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoZmlyZVByb2Nlc3NFdmVudERpc3Bh
dGNoLCB0aGlzKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgfQot
fQotCi12b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OmZpcmVQcm9jZXNzRXZlbnREaXNwYXRjaCh2
b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9kZSA9
IHN0YXRpY19jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih1c2VyRGF0YSk7Ci0gICAgQVNTRVJU
KGpzQXVkaW9Ob2RlKTsKLSAgICBpZiAoIWpzQXVkaW9Ob2RlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBqc0F1ZGlvTm9kZS0+ZmlyZVByb2Nlc3NFdmVudCgpOwotCi0gICAgLy8gRGUtcmVmZXJl
bmNlIHRvIG1hdGNoIHRoZSByZWYoKSBjYWxsIGluIHByb2Nlc3MoKS4KLSAgICBqc0F1ZGlvTm9k
ZS0+ZGVyZWYoKTsKLX0KLQotdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpmaXJlUHJvY2Vzc0V2
ZW50KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgbV9pc1JlcXVlc3RPdXRzdGFu
ZGluZyk7Ci0gICAgCi0gICAgYm9vbCBpc0luZGV4R29vZCA9IG1fZG91YmxlQnVmZmVySW5kZXhG
b3JFdmVudCA8IDI7Ci0gICAgQVNTRVJUKGlzSW5kZXhHb29kKTsKLSAgICBpZiAoIWlzSW5kZXhH
b29kKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIEF1ZGlvQnVmZmVyKiBpbnB1dEJ1
ZmZlciA9IG1faW5wdXRCdWZmZXJzW21fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudF0uZ2V0KCk7
Ci0gICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZlciA9IG1fb3V0cHV0QnVmZmVyc1ttX2RvdWJs
ZUJ1ZmZlckluZGV4Rm9yRXZlbnRdLmdldCgpOwotICAgIEFTU0VSVChvdXRwdXRCdWZmZXIpOwot
ICAgIGlmICghb3V0cHV0QnVmZmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBdm9pZCBm
aXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCi0g
ICAgaWYgKGNvbnRleHQoKS0+aGFzRG9jdW1lbnQoKSkgewotICAgICAgICAvLyBMZXQgdGhlIGF1
ZGlvIHRocmVhZCBrbm93IHdlJ3ZlIGdvdHRlbiB0byB0aGUgcG9pbnQgd2hlcmUgaXQncyBPSyBm
b3IgaXQgdG8gbWFrZSBhbm90aGVyIHJlcXVlc3QuCi0gICAgICAgIG1faXNSZXF1ZXN0T3V0c3Rh
bmRpbmcgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIC8vIENhbGwgdGhlIEphdmFTY3JpcHQg
ZXZlbnQgaGFuZGxlciB3aGljaCB3aWxsIGRvIHRoZSBhdWRpbyBwcm9jZXNzaW5nLgotICAgICAg
ICBkaXNwYXRjaEV2ZW50KEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjpjcmVhdGUoaW5wdXRCdWZmZXIs
IG91dHB1dEJ1ZmZlcikpOwotICAgIH0KLX0KLQotdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpy
ZXNldCgpCi17Ci0gICAgbV9idWZmZXJSZWFkV3JpdGVJbmRleCA9IDA7Ci0gICAgbV9kb3VibGVC
dWZmZXJJbmRleCA9IDA7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7
Ci0gICAgICAgIG1faW5wdXRCdWZmZXJzW2ldLT56ZXJvKCk7Ci0gICAgICAgIG1fb3V0cHV0QnVm
ZmVyc1tpXS0+emVybygpOwotICAgIH0KLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBKYXZhU2Ny
aXB0QXVkaW9Ob2RlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnRO
YW1lcygpLmludGVyZmFjZUZvckphdmFTY3JpcHRBdWRpb05vZGU7Ci19Ci0KLVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIEphdmFTY3JpcHRBdWRpb05vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdAotewotICAgIHJldHVybiBjb25zdF9jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih0
aGlzKS0+Y29udGV4dCgpLT5kb2N1bWVudCgpOwotfQotCi1kb3VibGUgSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dGFpbFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCk7Ci19Ci0KLWRvdWJsZSBKYXZhU2NyaXB0QXVkaW9Ob2RlOjps
YXRlbmN5VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQwOThjZmM4OTIzYzcyODA5NmZkNWQ1OTI3ZjVkMzdjZGZhNGZkZWQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSmF2YVNjcmlwdEF1ZGlvTm9kZV9oCi0jZGVm
aW5lIEphdmFTY3JpcHRBdWRpb05vZGVfaAotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb05vZGUuaCIKLSNpbmNsdWRl
ICJFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIEF1ZGlvQ29udGV4dDsKLWNsYXNzIEF1ZGlv
UHJvY2Vzc2luZ0V2ZW50OwotCi0vLyBKYXZhU2NyaXB0QXVkaW9Ob2RlIGlzIGFuIEF1ZGlvTm9k
ZSB3aGljaCBhbGxvd3MgZm9yIGFyYml0cmFyeSBzeW50aGVzaXMgb3IgcHJvY2Vzc2luZyBkaXJl
Y3RseSB1c2luZyBKYXZhU2NyaXB0LgotLy8gVGhlIEFQSSBhbGxvd3MgZm9yIGEgdmFyaWFibGUg
bnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cywgYWx0aG91Z2ggaXQgbXVzdCBoYXZlIGF0IGxl
YXN0IG9uZSBpbnB1dCBvciBvdXRwdXQuCi0vLyBUaGlzIGJhc2ljIGltcGxlbWVudGF0aW9uIHN1
cHBvcnRzIG5vIG1vcmUgdGhhbiBvbmUgaW5wdXQgYW5kIG91dHB1dC4KLS8vIFRoZSAib25hdWRp
b3Byb2Nlc3MiIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBsaXN0ZW5lciB3aGljaCB3aWxsIGdldCBj
YWxsZWQgcGVyaW9kaWNhbGx5IHdpdGggYW4gQXVkaW9Qcm9jZXNzaW5nRXZlbnQgd2hpY2ggaGFz
Ci0vLyBBdWRpb0J1ZmZlcnMgZm9yIGVhY2ggaW5wdXQgYW5kIG91dHB1dC4KLQotLy8gRklYTUU6
IEV2ZW50VGFyZ2V0IHNob3VsZCBiZSBpbnRyb2R1Y2VkIGF0IHRoZSBiYXNlIG9mIHRoZSBpbmhl
cml0YW5jZSBoaWVyYXJjaHkgKGkuZS4sIGFzIGEgYmFzZSBjbGFzcyBmb3IgQXVkaW9Ob2RlKS4K
LWNsYXNzIEphdmFTY3JpcHRBdWRpb05vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgRXZl
bnRUYXJnZXQgewotcHVibGljOgotICAgIC8vIGJ1ZmZlclNpemUgbXVzdCBiZSBvbmUgb2YgdGhl
IGZvbGxvd2luZyB2YWx1ZXM6IDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4
NC4KLSAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlv
cHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1l
cyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCi0gICAgLy8gTG93ZXIgbnVtYmVycyBm
b3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhp
Z2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5k
IGdsaXRjaGVzLgotICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5j
ZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBs
ZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwotCi0gICAgdmlydHVhbCB+SmF2YVNj
cmlwdEF1ZGlvTm9kZSgpOwotCi0gICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pbml0
aWFsaXplKCk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKSAgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICBzaXplX3QgYnVmZmVy
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQotCi0gICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihhdWRpb3Byb2Nlc3MpOwotCi0gICAgLy8gUmVjb25jaWxlIHJl
Zi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIEF1ZGlvTm9kZSBhbmQgRXZlbnRUYXJn
ZXQuCi0gICAgdXNpbmcgQXVkaW9Ob2RlOjpyZWY7Ci0gICAgdXNpbmcgQXVkaW9Ob2RlOjpkZXJl
ZjsKLSAgICAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURF
OwotCi0gICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVS
YXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKLQotICAgIHN0YXRpYyB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7Ci0gICAgdm9pZCBmaXJlUHJvY2Vz
c0V2ZW50KCk7Ci0KLSAgICAvLyBEb3VibGUgYnVmZmVyaW5nCi0gICAgdW5zaWduZWQgZG91Ymxl
QnVmZmVySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZUJ1ZmZlckluZGV4OyB9Ci0gICAg
dm9pZCBzd2FwQnVmZmVycygpIHsgbV9kb3VibGVCdWZmZXJJbmRleCA9IDEgLSBtX2RvdWJsZUJ1
ZmZlckluZGV4OyB9Ci0gICAgdW5zaWduZWQgbV9kb3VibGVCdWZmZXJJbmRleDsKLSAgICB1bnNp
Z25lZCBtX2RvdWJsZUJ1ZmZlckluZGV4Rm9yRXZlbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxBdWRp
b0J1ZmZlcj4gPiBtX2lucHV0QnVmZmVyczsKLSAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVmZmVy
PiA+IG1fb3V0cHV0QnVmZmVyczsKLQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQotICAgIHNpemVf
dCBtX2J1ZmZlclNpemU7Ci0gICAgdW5zaWduZWQgbV9idWZmZXJSZWFkV3JpdGVJbmRleDsKLSAg
ICB2b2xhdGlsZSBib29sIG1faXNSZXF1ZXN0T3V0c3RhbmRpbmc7Ci0KLSAgICB1bnNpZ25lZCBt
X251bWJlck9mSW5wdXRDaGFubmVsczsKLSAgICB1bnNpZ25lZCBtX251bWJlck9mT3V0cHV0Q2hh
bm5lbHM7Ci0KLSAgICBBdWRpb0J1cyBtX2ludGVybmFsSW5wdXRCdXM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBKYXZhU2NyaXB0QXVkaW9Ob2RlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05v
ZGUuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzI2NjQyMjIzZTQ4MTU0OTdi
YWVlOGFiZjBhZWI2YzE5MDU5MTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
Ly8gRm9yIHJlYWwtdGltZSBhdWRpbyBzdHJlYW0gc3ludGhlc2lzL3Byb2Nlc3NpbmcgaW4gSmF2
YVNjcmlwdCAKLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCi0gICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgRXZlbnRUYXJnZXQKLV0g
aW50ZXJmYWNlIEphdmFTY3JpcHRBdWRpb05vZGUgOiBBdWRpb05vZGUgewotICAgIC8vIFJlbmRl
cmluZyBjYWxsYmFjawotICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXVkaW9wcm9jZXNz
OwotICAgIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGJ1ZmZlclNpemU7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZDFiZDcxNDZiNjM5ZjQxOWEwZjljODViNDc4YzZiODI4
YzAzNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDMyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKFdFQl9BVURJTykKLQotI2luY2x1ZGUgIk9zY2lsbGF0b3IuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgotI2luY2x1
ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1
ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlICJXYXZlVGFibGUuaCIKLSNpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsK
LQotV2F2ZVRhYmxlKiBPc2NpbGxhdG9yOjpzX3dhdmVUYWJsZVNpbmUgPSAwOwotV2F2ZVRhYmxl
KiBPc2NpbGxhdG9yOjpzX3dhdmVUYWJsZVNxdWFyZSA9IDA7Ci1XYXZlVGFibGUqIE9zY2lsbGF0
b3I6OnNfd2F2ZVRhYmxlU2F3dG9vdGggPSAwOwotV2F2ZVRhYmxlKiBPc2NpbGxhdG9yOjpzX3dh
dmVUYWJsZVRyaWFuZ2xlID0gMDsKLQotUGFzc1JlZlB0cjxPc2NpbGxhdG9yPiBPc2NpbGxhdG9y
OjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3NjaWxsYXRvcihjb250ZXh0LCBzYW1wbGVSYXRlKSk7Ci19
Ci0KLU9zY2lsbGF0b3I6Ok9zY2lsbGF0b3IoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQotICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCi0gICAgLCBtX3R5cGUoU0lORSkKLSAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKLSAg
ICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQotICAgICwgbV9waGFzZUluY3JlbWVudHMoQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKQotICAgICwgbV9kZXR1bmVWYWx1ZXMoQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKQotewotICAgIHNldE5vZGVUeXBlKE5vZGVUeXBl
T3NjaWxsYXRvcik7Ci0KLSAgICAvLyBVc2UgbXVzaWNhbCBwaXRjaCBzdGFuZGFyZCBBNDQwIGFz
IGEgZGVmYXVsdC4KLSAgICBtX2ZyZXF1ZW5jeSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0
LCAiZnJlcXVlbmN5IiwgNDQwLCAwLCAxMDAwMDApOwotICAgIC8vIERlZmF1bHQgdG8gbm8gZGV0
dW5pbmcuCi0gICAgbV9kZXR1bmUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImRldHVu
ZSIsIDAsIC00ODAwLCA0ODAwKTsKLQotICAgIC8vIFNldHMgdXAgZGVmYXVsdCB3YXZldGFibGUu
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBzZXRUeXBlKG1fdHlwZSwgZWMpOwotCi0gICAg
Ly8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KLSAgICBhZGRPdXRwdXQoYWRvcHRQdHIo
bmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOwotCi0gICAgaW5pdGlhbGl6ZSgpOwotfQot
Ci1Pc2NpbGxhdG9yOjp+T3NjaWxsYXRvcigpCi17Ci0gICAgdW5pbml0aWFsaXplKCk7Ci19Ci0K
LXZvaWQgT3NjaWxsYXRvcjo6c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBXYXZlVGFibGUqIHdhdmVUYWJsZSA9IDA7Ci0gICAgZmxvYXQgc2Ft
cGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKLQotICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgU0lORToKLSAgICAgICAgaWYgKCFzX3dhdmVUYWJsZVNpbmUpCi0gICAgICAgICAgICBz
X3dhdmVUYWJsZVNpbmUgPSBXYXZlVGFibGU6OmNyZWF0ZVNpbmUoc2FtcGxlUmF0ZSkubGVha1Jl
ZigpOwotICAgICAgICB3YXZlVGFibGUgPSBzX3dhdmVUYWJsZVNpbmU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU1FVQVJFOgotICAgICAgICBpZiAoIXNfd2F2ZVRhYmxlU3F1YXJlKQotICAg
ICAgICAgICAgc193YXZlVGFibGVTcXVhcmUgPSBXYXZlVGFibGU6OmNyZWF0ZVNxdWFyZShzYW1w
bGVSYXRlKS5sZWFrUmVmKCk7Ci0gICAgICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRhYmxlU3F1YXJl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNBV1RPT1RIOgotICAgICAgICBpZiAoIXNfd2F2
ZVRhYmxlU2F3dG9vdGgpCi0gICAgICAgICAgICBzX3dhdmVUYWJsZVNhd3Rvb3RoID0gV2F2ZVRh
YmxlOjpjcmVhdGVTYXd0b290aChzYW1wbGVSYXRlKS5sZWFrUmVmKCk7Ci0gICAgICAgIHdhdmVU
YWJsZSA9IHNfd2F2ZVRhYmxlU2F3dG9vdGg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVFJJ
QU5HTEU6Ci0gICAgICAgIGlmICghc193YXZlVGFibGVUcmlhbmdsZSkKLSAgICAgICAgICAgIHNf
d2F2ZVRhYmxlVHJpYW5nbGUgPSBXYXZlVGFibGU6OmNyZWF0ZVRyaWFuZ2xlKHNhbXBsZVJhdGUp
LmxlYWtSZWYoKTsKLSAgICAgICAgd2F2ZVRhYmxlID0gc193YXZlVGFibGVUcmlhbmdsZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVNUT006Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8g
VGhyb3cgZXhjZXB0aW9uIGZvciBpbnZhbGlkIHR5cGVzLCBpbmNsdWRpbmcgQ1VTVE9NIHNpbmNl
IHNldFdhdmVUYWJsZSgpIG1ldGhvZCBtdXN0IGJlCi0gICAgICAgIC8vIGNhbGxlZCBleHBsaWNp
dGx5LgotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgc2V0V2F2ZVRhYmxlKHdhdmVUYWJsZSk7Ci0gICAgbV90eXBlID0gdHlwZTsK
LX0KLQotYm9vbCBPc2NpbGxhdG9yOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVt
ZW50cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIGJvb2wgaXNHb29kID0gZnJhbWVz
VG9Qcm9jZXNzIDw9IG1fcGhhc2VJbmNyZW1lbnRzLnNpemUoKSAmJiBmcmFtZXNUb1Byb2Nlc3Mg
PD0gbV9kZXR1bmVWYWx1ZXMuc2l6ZSgpOwotICAgIEFTU0VSVChpc0dvb2QpOwotICAgIGlmICgh
aXNHb29kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9maXJzdFJlbmRlcikg
ewotICAgICAgICBtX2ZpcnN0UmVuZGVyID0gZmFsc2U7Ci0gICAgICAgIG1fZnJlcXVlbmN5LT5y
ZXNldFNtb290aGVkVmFsdWUoKTsKLSAgICAgICAgbV9kZXR1bmUtPnJlc2V0U21vb3RoZWRWYWx1
ZSgpOwotICAgIH0KLQotICAgIGJvb2wgaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMgPSBmYWxzZTsK
LSAgICBib29sIGhhc0ZyZXF1ZW5jeUNoYW5nZXMgPSBmYWxzZTsKLSAgICBmbG9hdCogcGhhc2VJ
bmNyZW1lbnRzID0gbV9waGFzZUluY3JlbWVudHMuZGF0YSgpOwotCi0gICAgZmxvYXQgZmluYWxT
Y2FsZSA9IG1fd2F2ZVRhYmxlLT5yYXRlU2NhbGUoKTsKLQotICAgIGlmIChtX2ZyZXF1ZW5jeS0+
aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMoKSkgewotICAgICAgICBoYXNTYW1wbGVBY2N1cmF0ZVZh
bHVlcyA9IHRydWU7Ci0gICAgICAgIGhhc0ZyZXF1ZW5jeUNoYW5nZXMgPSB0cnVlOwotCi0gICAg
ICAgIC8vIEdldCB0aGUgc2FtcGxlLWFjY3VyYXRlIGZyZXF1ZW5jeSB2YWx1ZXMgYW5kIGNvbnZl
cnQgdG8gcGhhc2UgaW5jcmVtZW50cy4KLSAgICAgICAgLy8gVGhleSB3aWxsIGJlIGNvbnZlcnRl
ZCB0byBwaGFzZSBpbmNyZW1lbnRzIGJlbG93LgotICAgICAgICBtX2ZyZXF1ZW5jeS0+Y2FsY3Vs
YXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMocGhhc2VJbmNyZW1lbnRzLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEhhbmRsZSBvcmRpbmFyeSBwYXJhbWV0ZXIgc21v
b3RoaW5nL2RlLXppcHBlcmluZyBpZiB0aGVyZSBhcmUgbm8gc2NoZWR1bGVkIGNoYW5nZXMuCi0g
ICAgICAgIG1fZnJlcXVlbmN5LT5zbW9vdGgoKTsKLSAgICAgICAgZmxvYXQgZnJlcXVlbmN5ID0g
bV9mcmVxdWVuY3ktPnNtb290aGVkVmFsdWUoKTsKLSAgICAgICAgZmluYWxTY2FsZSAqPSBmcmVx
dWVuY3k7Ci0gICAgfQotCi0gICAgaWYgKG1fZGV0dW5lLT5oYXNTYW1wbGVBY2N1cmF0ZVZhbHVl
cygpKSB7Ci0gICAgICAgIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzID0gdHJ1ZTsKLQotICAgICAg
ICAvLyBHZXQgdGhlIHNhbXBsZS1hY2N1cmF0ZSBkZXR1bmUgdmFsdWVzLgotICAgICAgICBmbG9h
dCogZGV0dW5lVmFsdWVzID0gaGFzRnJlcXVlbmN5Q2hhbmdlcyA/IG1fZGV0dW5lVmFsdWVzLmRh
dGEoKSA6IHBoYXNlSW5jcmVtZW50czsKLSAgICAgICAgbV9kZXR1bmUtPmNhbGN1bGF0ZVNhbXBs
ZUFjY3VyYXRlVmFsdWVzKGRldHVuZVZhbHVlcywgZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgICAg
ICAvLyBDb252ZXJ0IGZyb20gY2VudHMgdG8gcmF0ZSBzY2FsYXIuCi0gICAgICAgIGZsb2F0IGsg
PSAxLjAgLyAxMjAwOwotICAgICAgICB2c211bChkZXR1bmVWYWx1ZXMsIDEsICZrLCBkZXR1bmVW
YWx1ZXMsIDEsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmcmFtZXNUb1Byb2Nlc3M7ICsraSkKLSAgICAgICAgICAgIGRldHVuZVZhbHVlc1tpXSA9
IHBvd2YoMiwgZGV0dW5lVmFsdWVzW2ldKTsgLy8gRklYTUU6IGNvbnZlcnRpbmcgdG8gZXhwZigp
IHdpbGwgYmUgZmFzdGVyLgotCi0gICAgICAgIGlmIChoYXNGcmVxdWVuY3lDaGFuZ2VzKSB7Ci0g
ICAgICAgICAgICAvLyBNdWx0aXBseSBmcmVxdWVuY2llcyBieSBkZXR1bmUgc2NhbGluZ3MuCi0g
ICAgICAgICAgICB2bXVsKGRldHVuZVZhbHVlcywgMSwgcGhhc2VJbmNyZW1lbnRzLCAxLCBwaGFz
ZUluY3JlbWVudHMsIDEsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICAvLyBIYW5kbGUgb3JkaW5hcnkgcGFyYW1ldGVyIHNtb290aGluZy9kZS16aXBw
ZXJpbmcgaWYgdGhlcmUgYXJlIG5vIHNjaGVkdWxlZCBjaGFuZ2VzLgotICAgICAgICBtX2RldHVu
ZS0+c21vb3RoKCk7Ci0gICAgICAgIGZsb2F0IGRldHVuZSA9IG1fZGV0dW5lLT5zbW9vdGhlZFZh
bHVlKCk7Ci0gICAgICAgIGZsb2F0IGRldHVuZVNjYWxlID0gcG93ZigyLCBkZXR1bmUgLyAxMjAw
KTsKLSAgICAgICAgZmluYWxTY2FsZSAqPSBkZXR1bmVTY2FsZTsKLSAgICB9Ci0KLSAgICBpZiAo
aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMpIHsKLSAgICAgICAgLy8gQ29udmVydCBmcm9tIGZyZXF1
ZW5jeSB0byB3YXZldGFibGUgaW5jcmVtZW50LgotICAgICAgICB2c211bChwaGFzZUluY3JlbWVu
dHMsIDEsICZmaW5hbFNjYWxlLCBwaGFzZUluY3JlbWVudHMsIDEsIGZyYW1lc1RvUHJvY2Vzcyk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzOwotfQotCi12b2lk
IE9zY2lsbGF0b3I6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKLXsKLSAgICBBdWRp
b0J1cyogb3V0cHV0QnVzID0gb3V0cHV0KDApLT5idXMoKTsKLQotICAgIGlmICghaXNJbml0aWFs
aXplZCgpIHx8ICFvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgewotICAgICAgICBvdXRw
dXRCdXMtPnplcm8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChmcmFt
ZXNUb1Byb2Nlc3MgPD0gbV9waGFzZUluY3JlbWVudHMuc2l6ZSgpKTsKLSAgICBpZiAoZnJhbWVz
VG9Qcm9jZXNzID4gbV9waGFzZUluY3JlbWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2Ug
Y2FsbCB0cnlMb2NrKCkgaW5zdGVhZC4KLSAgICBNdXRleFRyeUxvY2tlciB0cnlMb2NrZXIobV9w
cm9jZXNzTG9jayk7Ci0gICAgaWYgKCF0cnlMb2NrZXIubG9ja2VkKCkpIHsKLSAgICAgICAgLy8g
VG9vIGJhZCAtIHRoZSB0cnlMb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUg
b2YgY2hhbmdpbmcgd2F2ZS10YWJsZXMuCi0gICAgICAgIG91dHB1dEJ1cy0+emVybygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgbXVzdCBhY2Nlc3MgbV93YXZlVGFibGUg
b25seSBpbnNpZGUgdGhlIGxvY2suCi0gICAgaWYgKCFtX3dhdmVUYWJsZS5nZXQoKSkgewotICAg
ICAgICBvdXRwdXRCdXMtPnplcm8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNp
emVfdCBxdWFudHVtRnJhbWVPZmZzZXQ7Ci0gICAgc2l6ZV90IG5vblNpbGVudEZyYW1lc1RvUHJv
Y2VzczsKLQotICAgIHVwZGF0ZVNjaGVkdWxpbmdJbmZvKGZyYW1lc1RvUHJvY2VzcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRCdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cXVhbnR1bUZyYW1lT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIG5vblNpbGVudEZy
YW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICBpZiAoIW5vblNpbGVudEZyYW1lc1RvUHJvY2Vzcykgewot
ICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHdhdmVUYWJsZVNpemUgPSBtX3dhdmVUYWJsZS0+d2F2ZVRhYmxlU2l6ZSgpOwot
ICAgIGRvdWJsZSBpbnZXYXZlVGFibGVTaXplID0gMS4wIC8gd2F2ZVRhYmxlU2l6ZTsKLQotICAg
IGZsb2F0KiBkZXN0UCA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKLQot
ICAgIEFTU0VSVChxdWFudHVtRnJhbWVPZmZzZXQgPD0gZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAg
IC8vIFdlIGtlZXAgdmlydHVhbFJlYWRJbmRleCBkb3VibGUtcHJlY2lzaW9uIHNpbmNlIHdlJ3Jl
IGFjY3VtdWxhdGluZyB2YWx1ZXMuCi0gICAgZG91YmxlIHZpcnR1YWxSZWFkSW5kZXggPSBtX3Zp
cnR1YWxSZWFkSW5kZXg7Ci0KLSAgICBmbG9hdCByYXRlU2NhbGUgPSBtX3dhdmVUYWJsZS0+cmF0
ZVNjYWxlKCk7Ci0gICAgZmxvYXQgaW52UmF0ZVNjYWxlID0gMSAvIHJhdGVTY2FsZTsKLSAgICBi
b29sIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzID0gY2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVQaGFz
ZUluY3JlbWVudHMoZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7
Ci0gICAgZmxvYXQqIGhpZ2hlcldhdmVEYXRhID0gMDsKLSAgICBmbG9hdCogbG93ZXJXYXZlRGF0
YSA9IDA7Ci0gICAgZmxvYXQgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yOwotCi0gICAgaWYgKCFo
YXNTYW1wbGVBY2N1cmF0ZVZhbHVlcykgewotICAgICAgICBmcmVxdWVuY3kgPSBtX2ZyZXF1ZW5j
eS0+c21vb3RoZWRWYWx1ZSgpOwotICAgICAgICBmbG9hdCBkZXR1bmUgPSBtX2RldHVuZS0+c21v
b3RoZWRWYWx1ZSgpOwotICAgICAgICBmbG9hdCBkZXR1bmVTY2FsZSA9IHBvd2YoMiwgZGV0dW5l
IC8gMTIwMCk7Ci0gICAgICAgIGZyZXF1ZW5jeSAqPSBkZXR1bmVTY2FsZTsKLSAgICAgICAgbV93
YXZlVGFibGUtPndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koZnJlcXVlbmN5LCBsb3dl
cldhdmVEYXRhLCBoaWdoZXJXYXZlRGF0YSwgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yKTsKLSAg
ICB9Ci0KLSAgICBmbG9hdCBpbmNyID0gZnJlcXVlbmN5ICogcmF0ZVNjYWxlOwotICAgIGZsb2F0
KiBwaGFzZUluY3JlbWVudHMgPSBtX3BoYXNlSW5jcmVtZW50cy5kYXRhKCk7Ci0KLSAgICB1bnNp
Z25lZCByZWFkSW5kZXhNYXNrID0gd2F2ZVRhYmxlU2l6ZSAtIDE7Ci0KLSAgICAvLyBTdGFydCBy
ZW5kZXJpbmcgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LgotICAgIGRlc3RQICs9IHF1YW50dW1GcmFt
ZU9mZnNldDsKLSAgICBpbnQgbiA9IG5vblNpbGVudEZyYW1lc1RvUHJvY2VzczsKLQotICAgIHdo
aWxlIChuLS0pIHsKLSAgICAgICAgdW5zaWduZWQgcmVhZEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHZpcnR1YWxSZWFkSW5kZXgpOwotICAgICAgICB1bnNpZ25lZCByZWFkSW5kZXgyID0g
cmVhZEluZGV4ICsgMTsKLQotICAgICAgICAvLyBDb250YWluIHdpdGhpbiB2YWxpZCByYW5nZS4K
LSAgICAgICAgcmVhZEluZGV4ID0gcmVhZEluZGV4ICYgcmVhZEluZGV4TWFzazsKLSAgICAgICAg
cmVhZEluZGV4MiA9IHJlYWRJbmRleDIgJiByZWFkSW5kZXhNYXNrOwotCi0gICAgICAgIGlmICho
YXNTYW1wbGVBY2N1cmF0ZVZhbHVlcykgewotICAgICAgICAgICAgaW5jciA9ICpwaGFzZUluY3Jl
bWVudHMrKzsKLQotICAgICAgICAgICAgZnJlcXVlbmN5ID0gaW52UmF0ZVNjYWxlICogaW5jcjsK
LSAgICAgICAgICAgIG1fd2F2ZVRhYmxlLT53YXZlRGF0YUZvckZ1bmRhbWVudGFsRnJlcXVlbmN5
KGZyZXF1ZW5jeSwgbG93ZXJXYXZlRGF0YSwgaGlnaGVyV2F2ZURhdGEsIHRhYmxlSW50ZXJwb2xh
dGlvbkZhY3Rvcik7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBzYW1wbGUxTG93ZXIgPSBs
b3dlcldhdmVEYXRhW3JlYWRJbmRleF07Ci0gICAgICAgIGZsb2F0IHNhbXBsZTJMb3dlciA9IGxv
d2VyV2F2ZURhdGFbcmVhZEluZGV4Ml07Ci0gICAgICAgIGZsb2F0IHNhbXBsZTFIaWdoZXIgPSBo
aWdoZXJXYXZlRGF0YVtyZWFkSW5kZXhdOwotICAgICAgICBmbG9hdCBzYW1wbGUySGlnaGVyID0g
aGlnaGVyV2F2ZURhdGFbcmVhZEluZGV4Ml07Ci0KLSAgICAgICAgLy8gTGluZWFybHkgaW50ZXJw
b2xhdGUgd2l0aGluIGVhY2ggdGFibGUgKGxvd2VyIGFuZCBoaWdoZXIpLgotICAgICAgICBmbG9h
dCBpbnRlcnBvbGF0aW9uRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpcnR1YWxSZWFkSW5k
ZXgpIC0gcmVhZEluZGV4OwotICAgICAgICBmbG9hdCBzYW1wbGVIaWdoZXIgPSAoMSAtIGludGVy
cG9sYXRpb25GYWN0b3IpICogc2FtcGxlMUhpZ2hlciArIGludGVycG9sYXRpb25GYWN0b3IgKiBz
YW1wbGUySGlnaGVyOwotICAgICAgICBmbG9hdCBzYW1wbGVMb3dlciA9ICgxIC0gaW50ZXJwb2xh
dGlvbkZhY3RvcikgKiBzYW1wbGUxTG93ZXIgKyBpbnRlcnBvbGF0aW9uRmFjdG9yICogc2FtcGxl
Mkxvd2VyOwotCi0gICAgICAgIC8vIFRoZW4gaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGUgdHdvIHRh
Ymxlcy4KLSAgICAgICAgZmxvYXQgc2FtcGxlID0gKDEgLSB0YWJsZUludGVycG9sYXRpb25GYWN0
b3IpICogc2FtcGxlSGlnaGVyICsgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yICogc2FtcGxlTG93
ZXI7Ci0KLSAgICAgICAgKmRlc3RQKysgPSBzYW1wbGU7Ci0KLSAgICAgICAgLy8gSW5jcmVtZW50
IHZpcnR1YWwgcmVhZCBpbmRleCBhbmQgd3JhcCB2aXJ0dWFsUmVhZEluZGV4IGludG8gdGhlIHJh
bmdlIDAgLT4gd2F2ZVRhYmxlU2l6ZS4KLSAgICAgICAgdmlydHVhbFJlYWRJbmRleCArPSBpbmNy
OwotICAgICAgICB2aXJ0dWFsUmVhZEluZGV4IC09IGZsb29yKHZpcnR1YWxSZWFkSW5kZXggKiBp
bnZXYXZlVGFibGVTaXplKSAqIHdhdmVUYWJsZVNpemU7Ci0gICAgfQotCi0gICAgbV92aXJ0dWFs
UmVhZEluZGV4ID0gdmlydHVhbFJlYWRJbmRleDsKLQotICAgIG91dHB1dEJ1cy0+Y2xlYXJTaWxl
bnRGbGFnKCk7Ci19Ci0KLXZvaWQgT3NjaWxsYXRvcjo6cmVzZXQoKQotewotICAgIG1fdmlydHVh
bFJlYWRJbmRleCA9IDA7Ci19Ci0KLXZvaWQgT3NjaWxsYXRvcjo6c2V0V2F2ZVRhYmxlKFdhdmVU
YWJsZSogd2F2ZVRhYmxlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICAv
LyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBNdXRleExvY2tlciBwcm9j
ZXNzTG9ja2VyKG1fcHJvY2Vzc0xvY2spOwotICAgIG1fd2F2ZVRhYmxlID0gd2F2ZVRhYmxlOwot
ICAgIG1fdHlwZSA9IENVU1RPTTsKLX0KLQotYm9vbCBPc2NpbGxhdG9yOjpwcm9wYWdhdGVzU2ls
ZW5jZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc1BsYXlpbmdPclNjaGVkdWxlZCgpIHx8IGhh
c0ZpbmlzaGVkKCkgfHwgIW1fd2F2ZVRhYmxlLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2RhY2FiOTUxNWMxMTY2YmMyY2FmNGQyNjNhOGFiZjA3YWRhOTViOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBPc2NpbGxhdG9yX2gKLSNkZWZpbmUgT3NjaWxsYXRvcl9oCi0K
LSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKLSNpbmNsdWRl
ICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQXVkaW9Db250ZXh0OwotY2xhc3MgV2F2ZVRhYmxlOwotCi0vLyBPc2NpbGxhdG9yIGlzIGFu
IGF1ZGlvIGdlbmVyYXRvciBvZiBwZXJpb2RpYyB3YXZlZm9ybXMuCi0KLWNsYXNzIE9zY2lsbGF0
b3IgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKLXB1YmxpYzoKLSAgICAvLyBU
aGUgd2F2ZWZvcm0gdHlwZS4KLSAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYXMgaW4gdGhl
IC5pZGwgZmlsZS4KLSAgICBlbnVtIHsKLSAgICAgICAgU0lORSA9IDAsCi0gICAgICAgIFNRVUFS
RSA9IDEsCi0gICAgICAgIFNBV1RPT1RIID0gMiwKLSAgICAgICAgVFJJQU5HTEUgPSAzLAotICAg
ICAgICBDVVNUT00gPSA0Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9zY2lsbGF0
b3I+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKLQotICAgIHZpcnR1
YWwgfk9zY2lsbGF0b3IoKTsKLSAgICAKLSAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXQoKTsKLQotICAgIHVuc2lnbmVkIHNob3J0IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLSAgICB2b2lkIHNldFR5cGUodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKLQot
ICAgIEF1ZGlvUGFyYW0qIGZyZXF1ZW5jeSgpIHsgcmV0dXJuIG1fZnJlcXVlbmN5LmdldCgpOyB9
Ci0gICAgQXVkaW9QYXJhbSogZGV0dW5lKCkgeyByZXR1cm4gbV9kZXR1bmUuZ2V0KCk7IH0KLQot
ICAgIHZvaWQgc2V0V2F2ZVRhYmxlKFdhdmVUYWJsZSopOwotCi1wcml2YXRlOgotICAgIE9zY2ls
bGF0b3IoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0KLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlcmUgYXJlIHNhbXBsZS1hY2N1cmF0ZSB0aW1lbGluZSBwYXJhbWV0ZXIgY2hh
bmdlcy4KLSAgICBib29sIGNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlUGhhc2VJbmNyZW1lbnRzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgdmlydHVhbCBib29sIHByb3BhZ2F0ZXNTaWxl
bmNlKCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICAvLyBPbmUgb2YgdGhlIHdhdmVmb3JtIHR5cGVz
IGRlZmluZWQgaW4gdGhlIGVudW0uCi0gICAgdW5zaWduZWQgc2hvcnQgbV90eXBlOwotICAgIAot
ICAgIC8vIEZyZXF1ZW5jeSB2YWx1ZSBpbiBIZXJ0ei4KLSAgICBSZWZQdHI8QXVkaW9QYXJhbT4g
bV9mcmVxdWVuY3k7Ci0KLSAgICAvLyBEZXR1bmUgdmFsdWUgKGRldmlhdGluZyBmcm9tIHRoZSBm
cmVxdWVuY3kpIGluIENlbnRzLgotICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2RldHVuZTsKLQot
ICAgIGJvb2wgbV9maXJzdFJlbmRlcjsKLQotICAgIC8vIG1fdmlydHVhbFJlYWRJbmRleCBpcyBh
IHNhbXBsZS1mcmFtZSBpbmRleCBpbnRvIG91ciBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBjdXJy
ZW50IHBsYXliYWNrIHBvc2l0aW9uLgotICAgIC8vIFNpbmNlIGl0J3MgZmxvYXRpbmctcG9pbnQs
IGl0IGhhcyBzdWItc2FtcGxlIGFjY3VyYWN5LgotICAgIGRvdWJsZSBtX3ZpcnR1YWxSZWFkSW5k
ZXg7Ci0KLSAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkuCi0gICAgbXV0YWJsZSBN
dXRleCBtX3Byb2Nlc3NMb2NrOwotCi0gICAgLy8gU3RvcmVzIHNhbXBsZS1hY2N1cmF0ZSB2YWx1
ZXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gZnJlcXVlbmN5IGFuZCBkZXR1bmUuCi0gICAgQXVk
aW9GbG9hdEFycmF5IG1fcGhhc2VJbmNyZW1lbnRzOwotICAgIEF1ZGlvRmxvYXRBcnJheSBtX2Rl
dHVuZVZhbHVlczsKLSAgICAKLSAgICBSZWZQdHI8V2F2ZVRhYmxlPiBtX3dhdmVUYWJsZTsKLQot
ICAgIC8vIENhY2hlIHRoZSB3YXZlIHRhYmxlcyBmb3IgZGlmZmVyZW50IHdhdmVmb3JtIHR5cGVz
LCBleGNlcHQgQ1VTVE9NLgotICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxlU2luZTsK
LSAgICBzdGF0aWMgV2F2ZVRhYmxlKiBzX3dhdmVUYWJsZVNxdWFyZTsKLSAgICBzdGF0aWMgV2F2
ZVRhYmxlKiBzX3dhdmVUYWJsZVNhd3Rvb3RoOwotICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2
ZVRhYmxlVHJpYW5nbGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBPc2NpbGxhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDkwNTg1ZjI3NDNiNDAy
MmYyY2IwODNmYTI4NDViZDE0MmJmMzk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gT3Nj
aWxsYXRvciBpcyBhbiBhdWRpbyBnZW5lcmF0b3Igb2YgcGVyaW9kaWMgd2F2ZWZvcm1zLgotWwot
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdAotXSBp
bnRlcmZhY2UgT3NjaWxsYXRvciA6IEF1ZGlvU291cmNlTm9kZSB7Ci0KLSAgICAvLyBUeXBlIGNv
bnN0YW50cy4KLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTSU5FID0gMDsKLSAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBTUVVBUkUgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNBV1RP
T1RIID0gMjsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBUUklBTkdMRSA9IDM7Ci0gICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgQ1VTVE9NID0gNDsKLQotICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBz
aG9ydCB0eXBlCi0gICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsgICAgICAgIAot
Ci0gICAgLy8gUGxheWJhY2sgc3RhdGUgY29uc3RhbnRzLgotICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFVOU0NIRURVTEVEX1NUQVRFID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTQ0hF
RFVMRURfU1RBVEUgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBMQVlJTkdfU1RBVEUg
PSAyOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEZJTklTSEVEX1NUQVRFID0gMzsKLQotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwbGF5YmFja1N0YXRlOwotCi0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZnJlcXVlbmN5OyAvLyBpbiBIZXJ0egotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFtIGRldHVuZTsgLy8gaW4gQ2VudHMKLQotICAg
IHZvaWQgc3RhcnQoaW4gZG91YmxlIHdoZW4pOwotICAgIHZvaWQgc3RvcChpbiBkb3VibGUgd2hl
bik7Ci0KLSNpZiBkZWZpbmVkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAmJiBFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTwotICAgIHZvaWQgbm90ZU9uKGluIGRvdWJsZSB3aGVuKTsKLSAgICB2b2lk
IG5vdGVPZmYoaW4gZG91YmxlIHdoZW4pOwotI2VuZGlmCi0KLSAgICB2b2lkIHNldFdhdmVUYWJs
ZShpbiBXYXZlVGFibGUgd2F2ZVRhYmxlKTsKLQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhkZjlhM2Jm
YjIzNDk5M2FiYTBkYTVmODc0NjM3NDBjNzhhNDhkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC0wLDAgKzEs
MzI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKworI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisKKyNpbmNsdWRlICJBdWRp
b0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRp
b1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJWZWN0
b3JNYXRoLmgiCisjaW5jbHVkZSAiV2F2ZVRhYmxlLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CisKK1dhdmVU
YWJsZSogT3NjaWxsYXRvck5vZGU6OnNfd2F2ZVRhYmxlU2luZSA9IDA7CitXYXZlVGFibGUqIE9z
Y2lsbGF0b3JOb2RlOjpzX3dhdmVUYWJsZVNxdWFyZSA9IDA7CitXYXZlVGFibGUqIE9zY2lsbGF0
b3JOb2RlOjpzX3dhdmVUYWJsZVNhd3Rvb3RoID0gMDsKK1dhdmVUYWJsZSogT3NjaWxsYXRvck5v
ZGU6OnNfd2F2ZVRhYmxlVHJpYW5nbGUgPSAwOworCitQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2Rl
PiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpKTsKK30KKworT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IEF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwgbV90eXBlKFNJTkUpCisg
ICAgLCBtX2ZpcnN0UmVuZGVyKHRydWUpCisgICAgLCBtX3ZpcnR1YWxSZWFkSW5kZXgoMCkKKyAg
ICAsIG1fcGhhc2VJbmNyZW1lbnRzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykK
KyAgICAsIG1fZGV0dW5lVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykK
K3sKKyAgICBzZXROb2RlVHlwZShOb2RlVHlwZU9zY2lsbGF0b3IpOworCisgICAgLy8gVXNlIG11
c2ljYWwgcGl0Y2ggc3RhbmRhcmQgQTQ0MCBhcyBhIGRlZmF1bHQuCisgICAgbV9mcmVxdWVuY3kg
PSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImZyZXF1ZW5jeSIsIDQ0MCwgMCwgMTAwMDAw
KTsKKyAgICAvLyBEZWZhdWx0IHRvIG5vIGRldHVuaW5nLgorICAgIG1fZGV0dW5lID0gQXVkaW9Q
YXJhbTo6Y3JlYXRlKGNvbnRleHQsICJkZXR1bmUiLCAwLCAtNDgwMCwgNDgwMCk7CisKKyAgICAv
LyBTZXRzIHVwIGRlZmF1bHQgd2F2ZXRhYmxlLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
c2V0VHlwZShtX3R5cGUsIGVjKTsKKworICAgIC8vIEFuIG9zY2lsbGF0b3IgaXMgYWx3YXlzIG1v
bm8uCisgICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMSkp
KTsKKworICAgIGluaXRpYWxpemUoKTsKK30KKworT3NjaWxsYXRvck5vZGU6On5Pc2NpbGxhdG9y
Tm9kZSgpCit7CisgICAgdW5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgT3NjaWxsYXRvck5vZGU6
OnNldFR5cGUodW5zaWduZWQgc2hvcnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
V2F2ZVRhYmxlKiB3YXZlVGFibGUgPSAwOworICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0aGlzLT5z
YW1wbGVSYXRlKCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFNJTkU6CisgICAg
ICAgIGlmICghc193YXZlVGFibGVTaW5lKQorICAgICAgICAgICAgc193YXZlVGFibGVTaW5lID0g
V2F2ZVRhYmxlOjpjcmVhdGVTaW5lKHNhbXBsZVJhdGUpLmxlYWtSZWYoKTsKKyAgICAgICAgd2F2
ZVRhYmxlID0gc193YXZlVGFibGVTaW5lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNRVUFS
RToKKyAgICAgICAgaWYgKCFzX3dhdmVUYWJsZVNxdWFyZSkKKyAgICAgICAgICAgIHNfd2F2ZVRh
YmxlU3F1YXJlID0gV2F2ZVRhYmxlOjpjcmVhdGVTcXVhcmUoc2FtcGxlUmF0ZSkubGVha1JlZigp
OworICAgICAgICB3YXZlVGFibGUgPSBzX3dhdmVUYWJsZVNxdWFyZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTQVdUT09USDoKKyAgICAgICAgaWYgKCFzX3dhdmVUYWJsZVNhd3Rvb3RoKQor
ICAgICAgICAgICAgc193YXZlVGFibGVTYXd0b290aCA9IFdhdmVUYWJsZTo6Y3JlYXRlU2F3dG9v
dGgoc2FtcGxlUmF0ZSkubGVha1JlZigpOworICAgICAgICB3YXZlVGFibGUgPSBzX3dhdmVUYWJs
ZVNhd3Rvb3RoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRSSUFOR0xFOgorICAgICAgICBp
ZiAoIXNfd2F2ZVRhYmxlVHJpYW5nbGUpCisgICAgICAgICAgICBzX3dhdmVUYWJsZVRyaWFuZ2xl
ID0gV2F2ZVRhYmxlOjpjcmVhdGVUcmlhbmdsZShzYW1wbGVSYXRlKS5sZWFrUmVmKCk7CisgICAg
ICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRhYmxlVHJpYW5nbGU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1VTVE9NOgorICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbiBm
b3IgaW52YWxpZCB0eXBlcywgaW5jbHVkaW5nIENVU1RPTSBzaW5jZSBzZXRXYXZlVGFibGUoKSBt
ZXRob2QgbXVzdCBiZQorICAgICAgICAvLyBjYWxsZWQgZXhwbGljaXRseS4KKyAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldFdh
dmVUYWJsZSh3YXZlVGFibGUpOworICAgIG1fdHlwZSA9IHR5cGU7Cit9CisKK2Jvb2wgT3NjaWxs
YXRvck5vZGU6OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlUGhhc2VJbmNyZW1lbnRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgYm9vbCBpc0dvb2QgPSBmcmFtZXNUb1Byb2Nlc3MgPD0g
bV9waGFzZUluY3JlbWVudHMuc2l6ZSgpICYmIGZyYW1lc1RvUHJvY2VzcyA8PSBtX2RldHVuZVZh
bHVlcy5zaXplKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2ZpcnN0UmVuZGVyKSB7CisgICAgICAgIG1f
Zmlyc3RSZW5kZXIgPSBmYWxzZTsKKyAgICAgICAgbV9mcmVxdWVuY3ktPnJlc2V0U21vb3RoZWRW
YWx1ZSgpOworICAgICAgICBtX2RldHVuZS0+cmVzZXRTbW9vdGhlZFZhbHVlKCk7CisgICAgfQor
CisgICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcyA9IGZhbHNlOworICAgIGJvb2wgaGFz
RnJlcXVlbmN5Q2hhbmdlcyA9IGZhbHNlOworICAgIGZsb2F0KiBwaGFzZUluY3JlbWVudHMgPSBt
X3BoYXNlSW5jcmVtZW50cy5kYXRhKCk7CisKKyAgICBmbG9hdCBmaW5hbFNjYWxlID0gbV93YXZl
VGFibGUtPnJhdGVTY2FsZSgpOworCisgICAgaWYgKG1fZnJlcXVlbmN5LT5oYXNTYW1wbGVBY2N1
cmF0ZVZhbHVlcygpKSB7CisgICAgICAgIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzID0gdHJ1ZTsK
KyAgICAgICAgaGFzRnJlcXVlbmN5Q2hhbmdlcyA9IHRydWU7CisKKyAgICAgICAgLy8gR2V0IHRo
ZSBzYW1wbGUtYWNjdXJhdGUgZnJlcXVlbmN5IHZhbHVlcyBhbmQgY29udmVydCB0byBwaGFzZSBp
bmNyZW1lbnRzLgorICAgICAgICAvLyBUaGV5IHdpbGwgYmUgY29udmVydGVkIHRvIHBoYXNlIGlu
Y3JlbWVudHMgYmVsb3cuCisgICAgICAgIG1fZnJlcXVlbmN5LT5jYWxjdWxhdGVTYW1wbGVBY2N1
cmF0ZVZhbHVlcyhwaGFzZUluY3JlbWVudHMsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gSGFuZGxlIG9yZGluYXJ5IHBhcmFtZXRlciBzbW9vdGhpbmcvZGUtemlw
cGVyaW5nIGlmIHRoZXJlIGFyZSBubyBzY2hlZHVsZWQgY2hhbmdlcy4KKyAgICAgICAgbV9mcmVx
dWVuY3ktPnNtb290aCgpOworICAgICAgICBmbG9hdCBmcmVxdWVuY3kgPSBtX2ZyZXF1ZW5jeS0+
c21vb3RoZWRWYWx1ZSgpOworICAgICAgICBmaW5hbFNjYWxlICo9IGZyZXF1ZW5jeTsKKyAgICB9
CisKKyAgICBpZiAobV9kZXR1bmUtPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkpIHsKKyAgICAg
ICAgaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMgPSB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUg
c2FtcGxlLWFjY3VyYXRlIGRldHVuZSB2YWx1ZXMuCisgICAgICAgIGZsb2F0KiBkZXR1bmVWYWx1
ZXMgPSBoYXNGcmVxdWVuY3lDaGFuZ2VzID8gbV9kZXR1bmVWYWx1ZXMuZGF0YSgpIDogcGhhc2VJ
bmNyZW1lbnRzOworICAgICAgICBtX2RldHVuZS0+Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1
ZXMoZGV0dW5lVmFsdWVzLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgICAgIC8vIENvbnZlcnQg
ZnJvbSBjZW50cyB0byByYXRlIHNjYWxhci4KKyAgICAgICAgZmxvYXQgayA9IDEuMCAvIDEyMDA7
CisgICAgICAgIHZzbXVsKGRldHVuZVZhbHVlcywgMSwgJmssIGRldHVuZVZhbHVlcywgMSwgZnJh
bWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1Rv
UHJvY2VzczsgKytpKQorICAgICAgICAgICAgZGV0dW5lVmFsdWVzW2ldID0gcG93ZigyLCBkZXR1
bmVWYWx1ZXNbaV0pOyAvLyBGSVhNRTogY29udmVydGluZyB0byBleHBmKCkgd2lsbCBiZSBmYXN0
ZXIuCisKKyAgICAgICAgaWYgKGhhc0ZyZXF1ZW5jeUNoYW5nZXMpIHsKKyAgICAgICAgICAgIC8v
IE11bHRpcGx5IGZyZXF1ZW5jaWVzIGJ5IGRldHVuZSBzY2FsaW5ncy4KKyAgICAgICAgICAgIHZt
dWwoZGV0dW5lVmFsdWVzLCAxLCBwaGFzZUluY3JlbWVudHMsIDEsIHBoYXNlSW5jcmVtZW50cywg
MSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IEhhbmRsZSBvcmRpbmFyeSBwYXJhbWV0ZXIgc21vb3RoaW5nL2RlLXppcHBlcmluZyBpZiB0aGVy
ZSBhcmUgbm8gc2NoZWR1bGVkIGNoYW5nZXMuCisgICAgICAgIG1fZGV0dW5lLT5zbW9vdGgoKTsK
KyAgICAgICAgZmxvYXQgZGV0dW5lID0gbV9kZXR1bmUtPnNtb290aGVkVmFsdWUoKTsKKyAgICAg
ICAgZmxvYXQgZGV0dW5lU2NhbGUgPSBwb3dmKDIsIGRldHVuZSAvIDEyMDApOworICAgICAgICBm
aW5hbFNjYWxlICo9IGRldHVuZVNjYWxlOworICAgIH0KKworICAgIGlmIChoYXNTYW1wbGVBY2N1
cmF0ZVZhbHVlcykgeworICAgICAgICAvLyBDb252ZXJ0IGZyb20gZnJlcXVlbmN5IHRvIHdhdmV0
YWJsZSBpbmNyZW1lbnQuCisgICAgICAgIHZzbXVsKHBoYXNlSW5jcmVtZW50cywgMSwgJmZpbmFs
U2NhbGUsIHBoYXNlSW5jcmVtZW50cywgMSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXM7Cit9CisKK3ZvaWQgT3NjaWxsYXRvck5v
ZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBdWRpb0J1cyogb3V0
cHV0QnVzID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8
ICFvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgeworICAgICAgICBvdXRwdXRCdXMtPnpl
cm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nl
c3MgPD0gbV9waGFzZUluY3JlbWVudHMuc2l6ZSgpKTsKKyAgICBpZiAoZnJhbWVzVG9Qcm9jZXNz
ID4gbV9waGFzZUluY3JlbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBU
aGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgY2FsbCB0cnlM
b2NrKCkgaW5zdGVhZC4KKyAgICBNdXRleFRyeUxvY2tlciB0cnlMb2NrZXIobV9wcm9jZXNzTG9j
ayk7CisgICAgaWYgKCF0cnlMb2NrZXIubG9ja2VkKCkpIHsKKyAgICAgICAgLy8gVG9vIGJhZCAt
IHRoZSB0cnlMb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdp
bmcgd2F2ZS10YWJsZXMuCisgICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gV2UgbXVzdCBhY2Nlc3MgbV93YXZlVGFibGUgb25seSBpbnNp
ZGUgdGhlIGxvY2suCisgICAgaWYgKCFtX3dhdmVUYWJsZS5nZXQoKSkgeworICAgICAgICBvdXRw
dXRCdXMtPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpemVfdCBxdWFu
dHVtRnJhbWVPZmZzZXQ7CisgICAgc2l6ZV90IG5vblNpbGVudEZyYW1lc1RvUHJvY2VzczsKKwor
ICAgIHVwZGF0ZVNjaGVkdWxpbmdJbmZvKGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0QnVzLCBxdWFu
dHVtRnJhbWVPZmZzZXQsIG5vblNpbGVudEZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICBpZiAoIW5v
blNpbGVudEZyYW1lc1RvUHJvY2VzcykgeworICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuc2lnbmVkIHdhdmVUYWJsZVNpemUgPSBtX3dh
dmVUYWJsZS0+d2F2ZVRhYmxlU2l6ZSgpOworICAgIGRvdWJsZSBpbnZXYXZlVGFibGVTaXplID0g
MS4wIC8gd2F2ZVRhYmxlU2l6ZTsKKworICAgIGZsb2F0KiBkZXN0UCA9IG91dHB1dEJ1cy0+Y2hh
bm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKKworICAgIEFTU0VSVChxdWFudHVtRnJhbWVPZmZzZXQg
PD0gZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIFdlIGtlZXAgdmlydHVhbFJlYWRJbmRleCBk
b3VibGUtcHJlY2lzaW9uIHNpbmNlIHdlJ3JlIGFjY3VtdWxhdGluZyB2YWx1ZXMuCisgICAgZG91
YmxlIHZpcnR1YWxSZWFkSW5kZXggPSBtX3ZpcnR1YWxSZWFkSW5kZXg7CisKKyAgICBmbG9hdCBy
YXRlU2NhbGUgPSBtX3dhdmVUYWJsZS0+cmF0ZVNjYWxlKCk7CisgICAgZmxvYXQgaW52UmF0ZVNj
YWxlID0gMSAvIHJhdGVTY2FsZTsKKyAgICBib29sIGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzID0g
Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVQaGFzZUluY3JlbWVudHMoZnJhbWVzVG9Qcm9jZXNzKTsK
KworICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CisgICAgZmxvYXQqIGhpZ2hlcldhdmVEYXRhID0g
MDsKKyAgICBmbG9hdCogbG93ZXJXYXZlRGF0YSA9IDA7CisgICAgZmxvYXQgdGFibGVJbnRlcnBv
bGF0aW9uRmFjdG9yOworCisgICAgaWYgKCFoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcykgeworICAg
ICAgICBmcmVxdWVuY3kgPSBtX2ZyZXF1ZW5jeS0+c21vb3RoZWRWYWx1ZSgpOworICAgICAgICBm
bG9hdCBkZXR1bmUgPSBtX2RldHVuZS0+c21vb3RoZWRWYWx1ZSgpOworICAgICAgICBmbG9hdCBk
ZXR1bmVTY2FsZSA9IHBvd2YoMiwgZGV0dW5lIC8gMTIwMCk7CisgICAgICAgIGZyZXF1ZW5jeSAq
PSBkZXR1bmVTY2FsZTsKKyAgICAgICAgbV93YXZlVGFibGUtPndhdmVEYXRhRm9yRnVuZGFtZW50
YWxGcmVxdWVuY3koZnJlcXVlbmN5LCBsb3dlcldhdmVEYXRhLCBoaWdoZXJXYXZlRGF0YSwgdGFi
bGVJbnRlcnBvbGF0aW9uRmFjdG9yKTsKKyAgICB9CisKKyAgICBmbG9hdCBpbmNyID0gZnJlcXVl
bmN5ICogcmF0ZVNjYWxlOworICAgIGZsb2F0KiBwaGFzZUluY3JlbWVudHMgPSBtX3BoYXNlSW5j
cmVtZW50cy5kYXRhKCk7CisKKyAgICB1bnNpZ25lZCByZWFkSW5kZXhNYXNrID0gd2F2ZVRhYmxl
U2l6ZSAtIDE7CisKKyAgICAvLyBTdGFydCByZW5kZXJpbmcgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0
LgorICAgIGRlc3RQICs9IHF1YW50dW1GcmFtZU9mZnNldDsKKyAgICBpbnQgbiA9IG5vblNpbGVu
dEZyYW1lc1RvUHJvY2VzczsKKworICAgIHdoaWxlIChuLS0pIHsKKyAgICAgICAgdW5zaWduZWQg
cmVhZEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1YWxSZWFkSW5kZXgpOworICAg
ICAgICB1bnNpZ25lZCByZWFkSW5kZXgyID0gcmVhZEluZGV4ICsgMTsKKworICAgICAgICAvLyBD
b250YWluIHdpdGhpbiB2YWxpZCByYW5nZS4KKyAgICAgICAgcmVhZEluZGV4ID0gcmVhZEluZGV4
ICYgcmVhZEluZGV4TWFzazsKKyAgICAgICAgcmVhZEluZGV4MiA9IHJlYWRJbmRleDIgJiByZWFk
SW5kZXhNYXNrOworCisgICAgICAgIGlmIChoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcykgeworICAg
ICAgICAgICAgaW5jciA9ICpwaGFzZUluY3JlbWVudHMrKzsKKworICAgICAgICAgICAgZnJlcXVl
bmN5ID0gaW52UmF0ZVNjYWxlICogaW5jcjsKKyAgICAgICAgICAgIG1fd2F2ZVRhYmxlLT53YXZl
RGF0YUZvckZ1bmRhbWVudGFsRnJlcXVlbmN5KGZyZXF1ZW5jeSwgbG93ZXJXYXZlRGF0YSwgaGln
aGVyV2F2ZURhdGEsIHRhYmxlSW50ZXJwb2xhdGlvbkZhY3Rvcik7CisgICAgICAgIH0KKworICAg
ICAgICBmbG9hdCBzYW1wbGUxTG93ZXIgPSBsb3dlcldhdmVEYXRhW3JlYWRJbmRleF07CisgICAg
ICAgIGZsb2F0IHNhbXBsZTJMb3dlciA9IGxvd2VyV2F2ZURhdGFbcmVhZEluZGV4Ml07CisgICAg
ICAgIGZsb2F0IHNhbXBsZTFIaWdoZXIgPSBoaWdoZXJXYXZlRGF0YVtyZWFkSW5kZXhdOworICAg
ICAgICBmbG9hdCBzYW1wbGUySGlnaGVyID0gaGlnaGVyV2F2ZURhdGFbcmVhZEluZGV4Ml07CisK
KyAgICAgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgd2l0aGluIGVhY2ggdGFibGUgKGxvd2Vy
IGFuZCBoaWdoZXIpLgorICAgICAgICBmbG9hdCBpbnRlcnBvbGF0aW9uRmFjdG9yID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZpcnR1YWxSZWFkSW5kZXgpIC0gcmVhZEluZGV4OworICAgICAgICBmbG9h
dCBzYW1wbGVIaWdoZXIgPSAoMSAtIGludGVycG9sYXRpb25GYWN0b3IpICogc2FtcGxlMUhpZ2hl
ciArIGludGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGUySGlnaGVyOworICAgICAgICBmbG9hdCBz
YW1wbGVMb3dlciA9ICgxIC0gaW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGUxTG93ZXIgKyBp
bnRlcnBvbGF0aW9uRmFjdG9yICogc2FtcGxlMkxvd2VyOworCisgICAgICAgIC8vIFRoZW4gaW50
ZXJwb2xhdGUgYmV0d2VlbiB0aGUgdHdvIHRhYmxlcy4KKyAgICAgICAgZmxvYXQgc2FtcGxlID0g
KDEgLSB0YWJsZUludGVycG9sYXRpb25GYWN0b3IpICogc2FtcGxlSGlnaGVyICsgdGFibGVJbnRl
cnBvbGF0aW9uRmFjdG9yICogc2FtcGxlTG93ZXI7CisKKyAgICAgICAgKmRlc3RQKysgPSBzYW1w
bGU7CisKKyAgICAgICAgLy8gSW5jcmVtZW50IHZpcnR1YWwgcmVhZCBpbmRleCBhbmQgd3JhcCB2
aXJ0dWFsUmVhZEluZGV4IGludG8gdGhlIHJhbmdlIDAgLT4gd2F2ZVRhYmxlU2l6ZS4KKyAgICAg
ICAgdmlydHVhbFJlYWRJbmRleCArPSBpbmNyOworICAgICAgICB2aXJ0dWFsUmVhZEluZGV4IC09
IGZsb29yKHZpcnR1YWxSZWFkSW5kZXggKiBpbnZXYXZlVGFibGVTaXplKSAqIHdhdmVUYWJsZVNp
emU7CisgICAgfQorCisgICAgbV92aXJ0dWFsUmVhZEluZGV4ID0gdmlydHVhbFJlYWRJbmRleDsK
KworICAgIG91dHB1dEJ1cy0+Y2xlYXJTaWxlbnRGbGFnKCk7Cit9CisKK3ZvaWQgT3NjaWxsYXRv
ck5vZGU6OnJlc2V0KCkKK3sKKyAgICBtX3ZpcnR1YWxSZWFkSW5kZXggPSAwOworfQorCit2b2lk
IE9zY2lsbGF0b3JOb2RlOjpzZXRXYXZlVGFibGUoV2F2ZVRhYmxlKiB3YXZlVGFibGUpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdp
dGggcHJvY2VzcygpLgorICAgIE11dGV4TG9ja2VyIHByb2Nlc3NMb2NrZXIobV9wcm9jZXNzTG9j
ayk7CisgICAgbV93YXZlVGFibGUgPSB3YXZlVGFibGU7CisgICAgbV90eXBlID0gQ1VTVE9NOwor
fQorCitib29sIE9zY2lsbGF0b3JOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFpc1BsYXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkgfHwgIW1f
d2F2ZVRhYmxlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNmIxNTIzNjA4ZTFkYzBiOGJmNTEwOGNk
OTk4OTUwZmIxNzcwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE9zY2lsbGF0b3JOb2RlX2gKKyNkZWZpbmUgT3NjaWxsYXRvck5vZGVfaAorCisj
aW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCisjaW5jbHVkZSAi
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEF1ZGlvQ29udGV4dDsKK2NsYXNzIFdhdmVUYWJsZTsKKworLy8gT3NjaWxsYXRvck5vZGUgaXMg
YW4gYXVkaW8gZ2VuZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4KKworY2xhc3MgT3NjaWxs
YXRvck5vZGUgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKK3B1YmxpYzoKKyAg
ICAvLyBUaGUgd2F2ZWZvcm0gdHlwZS4KKyAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYXMg
aW4gdGhlIC5pZGwgZmlsZS4KKyAgICBlbnVtIHsKKyAgICAgICAgU0lORSA9IDAsCisgICAgICAg
IFNRVUFSRSA9IDEsCisgICAgICAgIFNBV1RPT1RIID0gMiwKKyAgICAgICAgVFJJQU5HTEUgPSAz
LAorICAgICAgICBDVVNUT00gPSA0CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9z
Y2lsbGF0b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisK
KyAgICB2aXJ0dWFsIH5Pc2NpbGxhdG9yTm9kZSgpOworICAgIAorICAgIC8vIEF1ZGlvTm9kZQor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZp
cnR1YWwgdm9pZCByZXNldCgpOworCisgICAgdW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgc2V0VHlwZSh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0
aW9uQ29kZSYpOworCisgICAgQXVkaW9QYXJhbSogZnJlcXVlbmN5KCkgeyByZXR1cm4gbV9mcmVx
dWVuY3kuZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFtKiBkZXR1bmUoKSB7IHJldHVybiBtX2RldHVu
ZS5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRXYXZlVGFibGUoV2F2ZVRhYmxlKik7CisKK3ByaXZh
dGU6CisgICAgT3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHNhbXBsZS1hY2N1cmF0ZSB0aW1l
bGluZSBwYXJhbWV0ZXIgY2hhbmdlcy4KKyAgICBib29sIGNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRl
UGhhc2VJbmNyZW1lbnRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgdmlydHVhbCBi
b29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBPbmUgb2Yg
dGhlIHdhdmVmb3JtIHR5cGVzIGRlZmluZWQgaW4gdGhlIGVudW0uCisgICAgdW5zaWduZWQgc2hv
cnQgbV90eXBlOworICAgIAorICAgIC8vIEZyZXF1ZW5jeSB2YWx1ZSBpbiBIZXJ0ei4KKyAgICBS
ZWZQdHI8QXVkaW9QYXJhbT4gbV9mcmVxdWVuY3k7CisKKyAgICAvLyBEZXR1bmUgdmFsdWUgKGRl
dmlhdGluZyBmcm9tIHRoZSBmcmVxdWVuY3kpIGluIENlbnRzLgorICAgIFJlZlB0cjxBdWRpb1Bh
cmFtPiBtX2RldHVuZTsKKworICAgIGJvb2wgbV9maXJzdFJlbmRlcjsKKworICAgIC8vIG1fdmly
dHVhbFJlYWRJbmRleCBpcyBhIHNhbXBsZS1mcmFtZSBpbmRleCBpbnRvIG91ciBidWZmZXIgcmVw
cmVzZW50aW5nIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uLgorICAgIC8vIFNpbmNlIGl0
J3MgZmxvYXRpbmctcG9pbnQsIGl0IGhhcyBzdWItc2FtcGxlIGFjY3VyYWN5LgorICAgIGRvdWJs
ZSBtX3ZpcnR1YWxSZWFkSW5kZXg7CisKKyAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNz
KCkuCisgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOworCisgICAgLy8gU3RvcmVzIHNh
bXBsZS1hY2N1cmF0ZSB2YWx1ZXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gZnJlcXVlbmN5IGFu
ZCBkZXR1bmUuCisgICAgQXVkaW9GbG9hdEFycmF5IG1fcGhhc2VJbmNyZW1lbnRzOworICAgIEF1
ZGlvRmxvYXRBcnJheSBtX2RldHVuZVZhbHVlczsKKyAgICAKKyAgICBSZWZQdHI8V2F2ZVRhYmxl
PiBtX3dhdmVUYWJsZTsKKworICAgIC8vIENhY2hlIHRoZSB3YXZlIHRhYmxlcyBmb3IgZGlmZmVy
ZW50IHdhdmVmb3JtIHR5cGVzLCBleGNlcHQgQ1VTVE9NLgorICAgIHN0YXRpYyBXYXZlVGFibGUq
IHNfd2F2ZVRhYmxlU2luZTsKKyAgICBzdGF0aWMgV2F2ZVRhYmxlKiBzX3dhdmVUYWJsZVNxdWFy
ZTsKKyAgICBzdGF0aWMgV2F2ZVRhYmxlKiBzX3dhdmVUYWJsZVNhd3Rvb3RoOworICAgIHN0YXRp
YyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxlVHJpYW5nbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBPc2NpbGxhdG9yTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZWMz
NzZlMmQzMjk0ZDgyODA5NTVkNTdjNzU1MjVjNTYwNWFmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gT3NjaWxsYXRvck5vZGUgaXMgYW4gYXVkaW8gZ2Vu
ZXJhdG9yIG9mIHBlcmlvZGljIHdhdmVmb3Jtcy4KK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKK10gaW50ZXJmYWNlIE9zY2lsbGF0b3JOb2Rl
IDogQXVkaW9Tb3VyY2VOb2RlIHsKKworICAgIC8vIFR5cGUgY29uc3RhbnRzLgorICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IFNJTkUgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNRVUFS
RSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0FXVE9PVEggPSAyOworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IFRSSUFOR0xFID0gMzsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBD
VVNUT00gPSA0OworCisgICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHR5cGUKKyAgICAgICAg
c2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOyAgICAgICAgCisKKyAgICAvLyBQbGF5YmFjayBz
dGF0ZSBjb25zdGFudHMuCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVU5TQ0hFRFVMRURfU1RB
VEUgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNDSEVEVUxFRF9TVEFURSA9IDE7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUExBWUlOR19TVEFURSA9IDI7CisgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgRklOSVNIRURfU1RBVEUgPSAzOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIHNob3J0IHBsYXliYWNrU3RhdGU7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9QYXJhbSBmcmVxdWVuY3k7IC8vIGluIEhlcnR6CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEF1ZGlvUGFyYW0gZGV0dW5lOyAvLyBpbiBDZW50cworCisgICAgdm9pZCBzdGFydChpbiBkb3Vi
bGUgd2hlbik7CisgICAgdm9pZCBzdG9wKGluIGRvdWJsZSB3aGVuKTsKKworI2lmIGRlZmluZWQo
RU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICYmIEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPCisgICAg
dm9pZCBub3RlT24oaW4gZG91YmxlIHdoZW4pOworICAgIHZvaWQgbm90ZU9mZihpbiBkb3VibGUg
d2hlbik7CisjZW5kaWYKKworICAgIHZvaWQgc2V0V2F2ZVRhYmxlKGluIFdhdmVUYWJsZSB3YXZl
VGFibGUpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZkNGQ4MTgxN2JhOWVkNTNmYzE0ZTNlMmMyYjEwY2IyZmZk
NzExOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAKQEAgLTAsMCArMSwzNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiUGFubmVyTm9k
ZS5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiQXVk
aW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJ
bnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKK3sKKyAgICBpZiAoaXNuYW4oeCkgfHwgaXNp
bmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogQXVkaW9Ob2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5uZXI6OlBhbm5pbmdN
b2RlbEhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5lY3Rpb25Db3Vu
dCgwKQoreworICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkp
OworICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDIpKSk7
CisgICAgCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb0dhaW46OmNyZWF0ZShjb250ZXh0LCAi
ZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisgICAgbV9jb25lR2FpbiA9IEF1ZGlvR2Fp
bjo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAxLjApOworCisgICAgbV9w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29yaWVudGF0aW9uID0gRmxv
YXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwg
MCk7CisgICAgCisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIpOworCisgICAgaW5pdGlh
bGl6ZSgpOworfQorCitQYW5uZXJOb2RlOjp+UGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0aWFs
aXplKCk7Cit9CisKK3ZvaWQgUGFubmVyTm9kZTo6cHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRl
dGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBoYXZlIGNvbm5lY3RlZCB0byB1cyB3aGVu
IG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAvLyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVz
IG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhpc3RlbmNlIGluIG9yZGVyIHRvIGhhbmRs
ZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisgICAgaWYgKG1fY29ubmVjdGlvbkNvdW50
ICE9IGNvbnRleHQoKS0+Y29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9u
Q291bnQgPSBjb250ZXh0KCktPmNvbm5lY3Rpb25Db3VudCgpOworCisgICAgICAgIC8vIFJlY3Vy
c2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KKyAgICAgICAgbm90
aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMpOworICAgIH0KKyAgICAKKyAgICBB
dWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBQYW5uZXJO
b2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9CdXMqIGRl
c3RpbmF0aW9uID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgp
IHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsKKyAgICAg
ICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1
ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisKKyAgICBpZiAoIXNvdXJjZSkgewor
ICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJsZSBhemltdXRoOworICAg
IGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlvbigmYXppbXV0aCwgJmVs
ZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2YXRpb24sIHNvdXJjZSwg
ZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBHZXQgdGhlIGRpc3RhbmNl
IGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRpc3RhbmNlQ29uZUdhaW4o
KTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBiZWdpbm5pbmcuCisgICAg
aWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2FpbiA9IHRvdGFsR2FpbjsK
KyAgICAgICAgCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZSB3aXRoIGRlLXppcHBlcmluZy4K
KyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sICZtX2xhc3RH
YWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFBhbm5lck5vZGU6OnJlc2V0KCkKK3sKKyAgICBt
X2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBpbml0aWFsIGdhaW4KKyAgICBp
ZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5yZXNldCgpOworfQorCit2b2lk
IFBhbm5lck5vZGU6OmluaXRpYWxpemUoKQoreworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZSht
X3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpKTsKKworICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6
ZSgpOworfQorCit2b2lkIFBhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFp
c0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9wYW5uZXIu
Y2xlYXIoKTsKKyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3Rl
bmVyKiBQYW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0dXJuIGNvbnRleHQoKS0+bGlz
dGVuZXIoKTsKK30KKwordm9pZCBQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQg
c2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHN3aXRjaCAobW9kZWwpIHsK
KyAgICBjYXNlIEVRVUFMUE9XRVI6CisgICAgY2FzZSBIUlRGOgorICAgICAgICBpZiAoIW1fcGFu
bmVyLmdldCgpIHx8IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgICAgICBPd25Q
dHI8UGFubmVyPiBuZXdQYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgp
KTsKKyAgICAgICAgICAgIG1fcGFubmVyID0gbmV3UGFubmVyLnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTT1VOREZJRUxEOgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHNvdW5kIGZp
ZWxkIG1vZGVsLiBTZWUgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc3MzY3LgorICAgICAgICAvLyBGb3Igbm93LCBmYWxsIHRocm91Z2ggdG8gdGhyb3cgYW4gZXhj
ZXB0aW9uLgorICAgIGRlZmF1bHQ6CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1v
ZGVsKHVuc2lnbmVkIHNob3J0IG1vZGVsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBzd2l0
Y2ggKG1vZGVsKSB7CisgICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxMaW5lYXI6CisgICAg
Y2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxJbnZlcnNlOgorICAgIGNhc2UgRGlzdGFuY2VFZmZl
Y3Q6Ok1vZGVsRXhwb25lbnRpYWw6CisgICAgICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwo
c3RhdGljX2Nhc3Q8RGlzdGFuY2VFZmZlY3Q6Ok1vZGVsVHlwZT4obW9kZWwpLCB0cnVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFBhbm5lck5vZGU6OmdldEF6aW11
dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKK3sK
KyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYg
cG9zc2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBt
YWRlLgorCisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhl
IHNvdXJjZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlv
biA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3Rl
bmVyID0gbV9wb3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICBpZiAoc291cmNlTGlz
dGVuZXIuaXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBh
bmQgbGlzdGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAgICpvdXRBemltdXRoID0g
MC4wOworICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAgICAvLyBBbGlnbiBheGVz
CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlv
bigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3Io
KTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3Mo
bGlzdGVuZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0
UG9pbnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgbGlzdGVuZXJG
cm9udE5vcm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJp
Z2h0LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9
IHNvdXJjZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291
cmNlID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKKyAgICBwcm9qZWN0ZWRT
b3VyY2Uubm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3Rl
ZFNvdXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhhemlt
dXRoKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQg
b3IgYmVoaW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRT
b3VyY2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQor
ICAgICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAgLy8gTWFrZSBhemltdXRo
IHJlbGF0aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgorICAg
IGlmICgoYXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKKyAgICAgICAgYXpp
bXV0aCA9IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAgYXppbXV0aCA9IDQ1MC4w
IC0gYXppbXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5
MC4wIC0gMTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7Cisg
ICAgZml4TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgaWYg
KGVsZXZhdGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9u
OworICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAt
MTgwLjAgLSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkKKyAgICAgICAgKm91dEF6
aW11dGggPSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisgICAgICAgICpvdXRFbGV2
YXRpb24gPSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFBhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkK
K3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4wOworCisgICAgLy8gRklYTUU6IG9wdGlt
aXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ugbm9yIGxpc3RlbmVyIGhhcyBjaGFuZ2Vk
Li4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBsaXN0ZW5lcigpLT5kb3BwbGVyRmFjdG9y
KCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgeworICAgICAgICBkb3VibGUgc3Bl
ZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7CisKKyAgICAgICAgY29uc3Qg
RmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7CisgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7
CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNlIGFuZCBsaXN0ZW5lciBo
YXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291cmNlSGFzVmVsb2NpdHkgPSAhc291cmNl
VmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wgbGlzdGVuZXJIYXNWZWxvY2l0eSA9ICFs
aXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAgICAgIGlmIChzb3VyY2VIYXNWZWxvY2l0
eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhl
IHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0
ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICAgICAgICAgIEZsb2F0
UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gbV9wb3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247
CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRv
TGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rp
b24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3Rl
bmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3Vy
Y2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVk
ZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlv
bjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsKKwor
ICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRv
cHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBtaW4obGlzdGVu
ZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAgICAgICAgc291cmNlUHJv
amVjdGlvbiA9IG1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworCisg
ICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3Ig
KiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBz
b3VyY2VQcm9qZWN0aW9uKSk7CisgICAgICAgICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8v
IGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAgICAgICAgIC8vIExpbWl0IHRoZSBwaXRjaCBz
aGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBkb3duLgorICAgICAgICAgICAg
aWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0g
MTYuMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlmdCA8IDAuMTI1KQorICAgICAg
ICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OyAgIAorICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hpZnQpOworfQorCitmbG9hdCBQ
YW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVu
ZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisKKyAgICBkb3VibGUgbGlzdGVu
ZXJEaXN0YW5jZSA9IG1fcG9zaXRpb24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAg
ICBkb3VibGUgZGlzdGFuY2VHYWluID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlz
dGFuY2UpOworICAgIAorICAgIG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxm
bG9hdD4oZGlzdGFuY2VHYWluKSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkg
Y2FjaGluZyBjb25lR2FpbgorICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWlu
KG1fcG9zaXRpb24sIG1fb3JpZW50YXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOworICAgIAorICAg
IG1fY29uZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2FpbikpOworCisg
ICAgcmV0dXJuIGZsb2F0KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwordm9pZCBQYW5u
ZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2Rl
KQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxl
ciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5u
b2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRp
b0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0
UGFubmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeyAgICAKKyAgICAgICAgLy8gR28gdGhyb3Vn
aCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAgQXVkaW9Ob2Rl
SW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNo
IGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tpbmcgZm9yIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1dC0+cmVuZGVy
aW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVjdGVkTm9kZSA9
IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291
cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlKTsgLy8gcmVjdXJzZQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGNjMWRlN2Q4NjM5MjNkNTk5NGRiZjg1YjE3
MDkxOWJlMDk5ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBhbm5lck5vZGVfaAorI2RlZmluZSBQYW5uZXJOb2RlX2gKKworI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiQXVkaW9HYWluLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJE
aXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBQ
YW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4K
Ky8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZl
Y3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9zaXRpb24g
YW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBw
b3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgor
Ly8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIHBvc2l0
aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0IHdpbGwg
YXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhl
IGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3Bl
Y2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFBhbm5lck5vZGUgOiBwdWJsaWMgQXVk
aW9Ob2RlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmluZWQgYXMgaW4gdGhl
IC5pZGwgZmlsZSBhbmQgbXVzdCBtYXRjaCB0aG9zZSBpbiB0aGUgUGFubmVyIGNsYXNzLgorICAg
IGVudW0geworICAgICAgICBFUVVBTFBPV0VSID0gMCwKKyAgICAgICAgSFJURiA9IDEsCisgICAg
ICAgIFNPVU5ERklFTEQgPSAyLAorICAgIH07CisKKyAgICAvLyBUaGVzZSBtdXN0IGJlIGRlZmlu
ZWQgYXMgaW4gdGhlIC5pZGwgZmlsZSBhbmQgbXVzdCBtYXRjaCB0aG9zZQorICAgIC8vIGluIHRo
ZSBEaXN0YW5jZUVmZmVjdCBjbGFzcy4KKyAgICBlbnVtIHsKKyAgICAgICAgTElORUFSX0RJU1RB
TkNFID0gMCwKKyAgICAgICAgSU5WRVJTRV9ESVNUQU5DRSA9IDEsCisgICAgICAgIEVYUE9ORU5U
SUFMX0RJU1RBTkNFID0gMiwKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBh
bm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBhbm5lck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgflBhbm5lck5vZGUoKTsKKworICAg
IC8vIEF1ZGlvTm9kZQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7CisgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgLy8gTGlzdGVu
ZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFubmluZyBtb2Rl
bAorICAgIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQgc2hvcnQsIEV4
Y2VwdGlvbkNvZGUmKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgs
IHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9p
bnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0QgdmVs
b2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0
eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0Qo
eCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICB1bnNpZ25lZCBz
aG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgpOyB9
CisgICAgdm9pZCBzZXREaXN0YW5jZU1vZGVsKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBmbG9hdCByZWZEaXN0YW5jZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCkpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0
YW5jZShmbG9hdCByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNl
KHJlZkRpc3RhbmNlKTsgfQorCisgICAgZmxvYXQgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4obV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpKTsgfQorICAgIHZv
aWQgc2V0TWF4RGlzdGFuY2UoZmxvYXQgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGZsb2F0IHJvbGxvZmZGYWN0b3Io
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFj
dG9yKCkpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGZsb2F0IHJvbGxvZmZGYWN0b3Ip
IHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisK
KyAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZmxvYXQgY29uZUlu
bmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9jb25lRWZmZWN0
LmlubmVyQW5nbGUoKSk7IH0KKyAgICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGZsb2F0IGFuZ2xl
KSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZmxvYXQgY29u
ZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9jb25lRWZm
ZWN0Lm91dGVyQW5nbGUoKSk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGZsb2F0IGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZmxvYXQg
Y29uZU91dGVyR2FpbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX2NvbmVF
ZmZlY3Qub3V0ZXJHYWluKCkpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGZsb2F0IGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHlu
YW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb0dhaW4qIGRpc3RhbmNl
R2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VHYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgIEF1ZGlvR2FpbiogY29uZUdhaW4oKSB7IHJldHVy
biBtX2NvbmVHYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorCisgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIHZpcnR1YWwg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wYW5uZXIgPyBt
X3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAgICBQYW5uZXJOb2Rl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmV0dXJucyB0aGUg
Y29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KKyAgICBmbG9hdCBk
aXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYWJv
dXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUg
cGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQuCisgICAgdm9pZCBu
b3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKik7CisKKyAgICBPd25Q
dHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICB1bnNpZ25lZCBtX3Bhbm5pbmdNb2RlbDsKKworICAg
IEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJlZlB0
cjxBdWRpb0dhaW4+IG1fZGlzdGFuY2VHYWluOworICAgIFJlZlB0cjxBdWRpb0dhaW4+IG1fY29u
ZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAgICBDb25lRWZm
ZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAgdW5zaWduZWQg
bV9jb25uZWN0aW9uQ291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQYW5uZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZThhMzU0YWQxMzlmYjFkOTAxYzkwMjljYTczNzhj
ZjIyMjU2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CitdIGludGVy
ZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBQYW5uaW5nIG1vZGVsCisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRVFVQUxQT1dFUiA9IDA7CisgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgSFJURiA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU09VTkRGSUVMRCA9IDI7
CisKKyAgICAvLyBEaXN0YW5jZSBtb2RlbAorICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExJTkVB
Ul9ESVNUQU5DRSA9IDA7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5WRVJTRV9ESVNUQU5D
RSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05FTlRJQUxfRElTVEFOQ0UgPSAy
OworCisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYgCisgICAgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0IHBhbm5pbmdNb2RlbAorICAgICAgICBzZXR0ZXIgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lz
dGVtIAorICAgIHZvaWQgc2V0UG9zaXRpb24oaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxv
YXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBp
biBmbG9hdCB6KTsKKyAgICB2b2lkIHNldFZlbG9jaXR5KGluIGZsb2F0IHgsIGluIGZsb2F0IHks
IGluIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAgICBhdHRyaWJ1dGUgdW5z
aWduZWQgc2hvcnQgZGlzdGFuY2VNb2RlbAorICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisKKyAgICBhdHRyaWJ1dGUgZmxvYXQgcmVmRGlzdGFuY2U7CisgICAgYXR0cmlidXRl
IGZsb2F0IG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSBmbG9hdCByb2xsb2ZmRmFjdG9yOwor
CisgICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQorICAgIGF0dHJpYnV0ZSBmbG9hdCBjb25l
SW5uZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgZmxvYXQgY29uZU91dGVyQW5nbGU7CisgICAgYXR0
cmlidXRlIGZsb2F0IGNvbmVPdXRlckdhaW47CisKKyAgICAvLyBEeW5hbWljYWxseSBjYWxjdWxh
dGVkIGdhaW4gdmFsdWVzICAgICAgICAgIAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0dh
aW4gY29uZUdhaW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvR2FpbiBkaXN0YW5jZUdh
aW47Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXJOb2RlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3
NDk2MDQzNTJhN2RiZmQ4OWRkZTFiYzJjNmE2MjYyNzY0ZTM3YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
Ci0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotCi0jaW5jbHVkZSAiUmVhbHRpbWVBbmFseXNlck5vZGUuaCIKLQotI2luY2x1ZGUgIkF1
ZGlvTm9kZUlucHV0LmgiCi0jaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlYWx0aW1lQW5hbHlz
ZXJOb2RlOjpSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQotewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlz
KSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDIp
KSk7Ci0gICAgCi0gICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVBbmFseXNlcik7Ci0gICAgCi0gICAg
aW5pdGlhbGl6ZSgpOwotfQotCi1SZWFsdGltZUFuYWx5c2VyTm9kZTo6flJlYWx0aW1lQW5hbHlz
ZXJOb2RlKCkKLXsKLSAgICB1bmluaXRpYWxpemUoKTsKLX0KLQotdm9pZCBSZWFsdGltZUFuYWx5
c2VyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQotewotICAgIEF1ZGlvQnVz
KiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygpOwotCi0gICAgaWYgKCFpc0luaXRpYWxpemVk
KCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpKSB7Ci0gICAgICAgIG91dHB1dEJ1cy0+emVy
bygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXVkaW9CdXMqIGlucHV0QnVzID0g
aW5wdXQoMCktPmJ1cygpOwotICAgIAotICAgIC8vIEdpdmUgdGhlIGFuYWx5c2VyIHRoZSBhdWRp
byB3aGljaCBpcyBwYXNzaW5nIHRocm91Z2ggdGhpcyBBdWRpb05vZGUuCi0gICAgbV9hbmFseXNl
ci53cml0ZUlucHV0KGlucHV0QnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgLy8gRm9yIGlu
LXBsYWNlIHByb2Nlc3NpbmcsIG91ciBvdmVycmlkZSBvZiBwdWxsSW5wdXRzKCkgd2lsbCBqdXN0
IHBhc3MgdGhlIGF1ZGlvIGRhdGEgdGhyb3VnaCB1bmNoYW5nZWQgaWYgdGhlIGNoYW5uZWwgY291
bnQgbWF0Y2hlcyBmcm9tIGlucHV0IHRvIG91dHB1dAotICAgIC8vIChyZXN1bHRpbmcgaW4gaW5w
dXRCdXMgPT0gb3V0cHV0QnVzKS4gIE90aGVyd2lzZSwgZG8gYW4gdXAtbWl4IHRvIHN0ZXJlby4K
LSAgICBpZiAoaW5wdXRCdXMgIT0gb3V0cHV0QnVzKQotICAgICAgICBvdXRwdXRCdXMtPmNvcHlG
cm9tKCppbnB1dEJ1cyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVBbmFseXNlck5vZGU6OnJlc2V0KCkK
LXsKLSAgICBtX2FuYWx5c2VyLnJlc2V0KCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVBbmFseXNlck5v
ZGU6OnNldEZmdFNpemUodW5zaWduZWQgaW50IHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmICghbV9hbmFseXNlci5zZXRGZnRTaXplKHNpemUpKQotICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwODE5YzAzODY3YzRjMjI4NmFkODM4YzE3N2M2NWFkNTJkZWY4Y2MyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlYWx0aW1lQW5hbHlzZXJOb2RlX2gKLSNkZWZp
bmUgUmVhbHRpbWVBbmFseXNlck5vZGVfaAotCi0jaW5jbHVkZSAiQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUuaCIKLSNpbmNsdWRlICJSZWFsdGltZUFuYWx5c2VyLmgiCi0jaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZUFuYWx5c2Vy
Tm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVhbHRpbWVBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWx0aW1lQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5SZWFsdGltZUFuYWx5c2VyTm9kZSgpOwotICAgIAotICAg
IC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCi0gICAgLy8gSmF2YXNjcmlwdCBi
aW5kaW5ncwotICAgIHVuc2lnbmVkIGludCBmZnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbmFs
eXNlci5mZnRTaXplKCk7IH0KLSAgICB2b2lkIHNldEZmdFNpemUodW5zaWduZWQgaW50IHNpemUs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIHVuc2lnbmVkIGZyZXF1ZW5jeUJpbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCgpOyB9Ci0KLSAgICB2b2lk
IHNldE1pbkRlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFseXNlci5zZXRNaW5EZWNpYmVscyhrKTsg
fQotICAgIGZsb2F0IG1pbkRlY2liZWxzKCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5taW5E
ZWNpYmVscygpOyB9Ci0KLSAgICB2b2lkIHNldE1heERlY2liZWxzKGZsb2F0IGspIHsgbV9hbmFs
eXNlci5zZXRNYXhEZWNpYmVscyhrKTsgfQotICAgIGZsb2F0IG1heERlY2liZWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9hbmFseXNlci5tYXhEZWNpYmVscygpOyB9Ci0KLSAgICB2b2lkIHNldFNtb290
aGluZ1RpbWVDb25zdGFudChmbG9hdCBrKSB7IG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGltZUNv
bnN0YW50KGspOyB9Ci0gICAgZmxvYXQgc21vb3RoaW5nVGltZUNvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQoKTsgfQotCi0gICAgdm9pZCBn
ZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFycmF5KiBhcnJheSkgeyBtX2FuYWx5c2VyLmdl
dEZsb2F0RnJlcXVlbmN5RGF0YShhcnJheSk7IH0KLSAgICB2b2lkIGdldEJ5dGVGcmVxdWVuY3lE
YXRhKFVpbnQ4QXJyYXkqIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEo
YXJyYXkpOyB9Ci0gICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSogYXJy
YXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiAwOyB9Ci0KLSAgICBSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKLQotICAgIFJlYWx0aW1lQW5hbHlzZXIgbV9hbmFseXNlcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlYWx0aW1lQW5hbHlzZXJO
b2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzQ3
ODNjMTVkOGQzNDlkNTRmN2ZkZDNmYTA4ODM4OTlkYjNjMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBKU0dlbmVy
YXRlVG9KU09iamVjdAotXSBpbnRlcmZhY2UgUmVhbHRpbWVBbmFseXNlck5vZGUgOiBBdWRpb05v
ZGUgewotICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGZmdFNpemUKLSAgICAgICAgc2V0dGVy
IHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGZyZXF1ZW5jeUJpbkNvdW50OwotCi0gICAgLy8gbWluRGVjaWJlbHMgLyBtYXhEZWNpYmVs
cyByZXByZXNlbnQgdGhlIHJhbmdlIHRvIHNjYWxlIHRoZSBGRlQgYW5hbHlzaXMgZGF0YSBmb3Ig
Y29udmVyc2lvbiB0byB1bnNpZ25lZCBieXRlIHZhbHVlcy4KLSAgICBhdHRyaWJ1dGUgZmxvYXQg
bWluRGVjaWJlbHM7Ci0gICAgYXR0cmlidXRlIGZsb2F0IG1heERlY2liZWxzOwotCi0gICAgLy8g
QSB2YWx1ZSBmcm9tIDAuMCAtPiAxLjAgd2hlcmUgMC4wIHJlcHJlc2VudHMgbm8gdGltZSBhdmVy
YWdpbmcgd2l0aCB0aGUgbGFzdCBhbmFseXNpcyBmcmFtZS4KLSAgICBhdHRyaWJ1dGUgZmxvYXQg
c21vb3RoaW5nVGltZUNvbnN0YW50OwotCi0gICAgLy8gQ29waWVzIHRoZSBjdXJyZW50IGZyZXF1
ZW5jeSBkYXRhIGludG8gdGhlIHBhc3NlZCBhcnJheS4KLSAgICAvLyBJZiB0aGUgYXJyYXkgaGFz
IGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5jeUJpbkNvdW50LCB0aGUgZXhjZXNzIGVs
ZW1lbnRzIHdpbGwgYmUgZHJvcHBlZC4KLSAgICB2b2lkIGdldEZsb2F0RnJlcXVlbmN5RGF0YShp
biBGbG9hdDMyQXJyYXkgYXJyYXkpOwotICAgIHZvaWQgZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoaW4g
VWludDhBcnJheSBhcnJheSk7Ci0KLSAgICAvLyBSZWFsLXRpbWUgd2F2ZWZvcm0gZGF0YQotICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGluIFVpbnQ4QXJyYXkgYXJyYXkpOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNjFhM2FkMDFkZDBmNzk3ZTlmOWM5MWY2YzEzMDllY2Fl
NWJlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUg
IlNjcmlwdFByb2Nlc3Nvck5vZGUuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUg
IkF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
IDx3dGYvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBzaXplX3QgRGVmYXVsdEJ1ZmZlclNpemUgPSA0MDk2
OworCitQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBi
dWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGJ1ZmZlciBzaXpl
LgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEy
OgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNh
c2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVs
cyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7Cit9CisKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKQorICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCisgICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4
Rm9yRXZlbnQoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZShidWZmZXJTaXplKQorICAgICwgbV9idWZm
ZXJSZWFkV3JpdGVJbmRleCgwKQorICAgICwgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyhmYWxzZSkK
KyAgICAsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzKG51bWJlck9mSW5wdXRDaGFubmVscykKKyAg
ICAsIG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVscyhudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAg
ICwgbV9pbnRlcm5hbElucHV0QnVzKG51bWJlck9mSW5wdXRDaGFubmVscywgQXVkaW9Ob2RlOjpQ
cm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBmYWxzZSkKK3sKKyAgICAvLyBSZWdhcmRsZXNzIG9mIHRo
ZSBhbGxvd2VkIGJ1ZmZlciBzaXplcywgd2Ugc3RpbGwgbmVlZCB0byBwcm9jZXNzIGF0IHRoZSBn
cmFudWxhcml0eSBvZiB0aGUgQXVkaW9Ob2RlLgorICAgIGlmIChtX2J1ZmZlclNpemUgPCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCisgICAgICAgIG1fYnVmZmVyU2l6ZSA9IEF1
ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsKKworICAgIEFTU0VSVChudW1iZXJPZklu
cHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOworCisg
ICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisgICAgYWRk
T3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykpKTsKKworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7CisKKyAg
ICBpbml0aWFsaXplKCk7Cit9CisKK1NjcmlwdFByb2Nlc3Nvck5vZGU6On5TY3JpcHRQcm9jZXNz
b3JOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBTY3JpcHRQcm9jZXNz
b3JOb2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4dCgpLT5zYW1wbGVSYXRl
KCk7CisKKyAgICAvLyBDcmVhdGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5k
IG91dHB1dCBzaWRlcy4KKyAgICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3Rs
eSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4g
aW5wdXRCdWZmZXIgPSBtX251bWJlck9mSW5wdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVh
dGUobV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGJ1ZmZlclNpemUoKSwgc2FtcGxlUmF0ZSkgOiAw
OworICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG91dHB1dEJ1ZmZlciA9IG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyA/IEF1ZGlvQnVmZmVyOjpjcmVhdGUobV9udW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBidWZmZXJTaXplKCksIHNhbXBsZVJhdGUpIDogMDsKKworICAgICAgICBtX2lucHV0QnVm
ZmVycy5hcHBlbmQoaW5wdXRCdWZmZXIpOworICAgICAgICBtX291dHB1dEJ1ZmZlcnMuYXBwZW5k
KG91dHB1dEJ1ZmZlcik7CisgICAgfQorCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9
CisKK3ZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAo
IWlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnB1dEJ1ZmZlcnMu
Y2xlYXIoKTsKKyAgICBtX291dHB1dEJ1ZmZlcnMuY2xlYXIoKTsKKworICAgIEF1ZGlvTm9kZTo6
dW5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIERpc2N1c3Npb24gYWJvdXQgaW5wdXRz
IGFuZCBvdXRwdXRzOgorICAgIC8vIEFzIGluIG90aGVyIEF1ZGlvTm9kZXMsIFNjcmlwdFByb2Nl
c3Nvck5vZGUgdXNlcyBhbiBBdWRpb0J1cyBmb3IgaXRzIGlucHV0IGFuZCBvdXRwdXQgKHNlZSBp
bnB1dEJ1cyBhbmQgb3V0cHV0QnVzIGJlbG93KS4KKyAgICAvLyBBZGRpdGlvbmFsbHksIHRoZXJl
IGlzIGEgZG91YmxlLWJ1ZmZlcmluZyBmb3IgaW5wdXQgYW5kIG91dHB1dCB3aGljaCBpcyBleHBv
c2VkIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgKHNlZSBpbnB1dEJ1ZmZlciBhbmQgb3V0cHV0QnVm
ZmVyIGJlbG93KS4KKyAgICAvLyBUaGlzIG5vZGUgaXMgdGhlIHByb2R1Y2VyIGZvciBpbnB1dEJ1
ZmZlciBhbmQgdGhlIGNvbnN1bWVyIGZvciBvdXRwdXRCdWZmZXIuCisgICAgLy8gVGhlIEphdmFT
Y3JpcHQgY29kZSBpcyB0aGUgY29uc3VtZXIgb2YgaW5wdXRCdWZmZXIgYW5kIHRoZSBwcm9kdWNl
ciBmb3Igb3V0cHV0QnVmZmVyLgorICAgIAorICAgIC8vIEdldCBpbnB1dCBhbmQgb3V0cHV0IGJ1
c3Nlcy4KKyAgICBBdWRpb0J1cyogaW5wdXRCdXMgPSB0aGlzLT5pbnB1dCgwKS0+YnVzKCk7Cisg
ICAgQXVkaW9CdXMqIG91dHB1dEJ1cyA9IHRoaXMtPm91dHB1dCgwKS0+YnVzKCk7CisKKyAgICAv
LyBHZXQgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLiBXZSBkb3VibGUtYnVmZmVyIGJvdGggdGhl
IGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCisgICAgdW5zaWduZWQgZG91YmxlQnVmZmVySW5kZXgg
PSB0aGlzLT5kb3VibGVCdWZmZXJJbmRleCgpOworICAgIGJvb2wgaXNEb3VibGVCdWZmZXJJbmRl
eEdvb2QgPSBkb3VibGVCdWZmZXJJbmRleCA8IDIgJiYgZG91YmxlQnVmZmVySW5kZXggPCBtX2lu
cHV0QnVmZmVycy5zaXplKCkgJiYgZG91YmxlQnVmZmVySW5kZXggPCBtX291dHB1dEJ1ZmZlcnMu
c2l6ZSgpOworICAgIEFTU0VSVChpc0RvdWJsZUJ1ZmZlckluZGV4R29vZCk7CisgICAgaWYgKCFp
c0RvdWJsZUJ1ZmZlckluZGV4R29vZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEF1ZGlv
QnVmZmVyKiBpbnB1dEJ1ZmZlciA9IG1faW5wdXRCdWZmZXJzW2RvdWJsZUJ1ZmZlckluZGV4XS5n
ZXQoKTsKKyAgICBBdWRpb0J1ZmZlciogb3V0cHV0QnVmZmVyID0gbV9vdXRwdXRCdWZmZXJzW2Rv
dWJsZUJ1ZmZlckluZGV4XS5nZXQoKTsKKworICAgIC8vIENoZWNrIHRoZSBjb25zaXN0ZW5jeSBv
ZiBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMuCisgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzID0gbV9pbnRlcm5hbElucHV0QnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBib29s
IGJ1ZmZlcnNBcmVHb29kID0gb3V0cHV0QnVmZmVyICYmIGJ1ZmZlclNpemUoKSA9PSBvdXRwdXRC
dWZmZXItPmxlbmd0aCgpICYmIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXggKyBmcmFtZXNUb1Byb2Nl
c3MgPD0gYnVmZmVyU2l6ZSgpOworCisgICAgLy8gSWYgdGhlIG51bWJlciBvZiBpbnB1dCBjaGFu
bmVscyBpcyB6ZXJvLCBpdCdzIG9rIHRvIGhhdmUgaW5wdXRCdWZmZXIgPSAwLgorICAgIGlmICht
X2ludGVybmFsSW5wdXRCdXMubnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICBidWZmZXJzQXJl
R29vZCA9IGJ1ZmZlcnNBcmVHb29kICYmIGlucHV0QnVmZmVyICYmIGJ1ZmZlclNpemUoKSA9PSBp
bnB1dEJ1ZmZlci0+bGVuZ3RoKCk7CisKKyAgICBBU1NFUlQoYnVmZmVyc0FyZUdvb2QpOworICAg
IGlmICghYnVmZmVyc0FyZUdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIGFzc3Vt
ZSB0aGF0IGJ1ZmZlclNpemUoKSBpcyBldmVubHkgZGl2aXNpYmxlIGJ5IGZyYW1lc1RvUHJvY2Vz
cyAtIHNob3VsZCBhbHdheXMgYmUgdHJ1ZSwgYnV0IHdlIHNob3VsZCBzdGlsbCBjaGVjay4KKyAg
ICBib29sIGlzRnJhbWVzVG9Qcm9jZXNzR29vZCA9IGZyYW1lc1RvUHJvY2VzcyAmJiBidWZmZXJT
aXplKCkgPj0gZnJhbWVzVG9Qcm9jZXNzICYmICEoYnVmZmVyU2l6ZSgpICUgZnJhbWVzVG9Qcm9j
ZXNzKTsKKyAgICBBU1NFUlQoaXNGcmFtZXNUb1Byb2Nlc3NHb29kKTsKKyAgICBpZiAoIWlzRnJh
bWVzVG9Qcm9jZXNzR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyA9IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOworCisgICAg
Ym9vbCBjaGFubmVsc0FyZUdvb2QgPSAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID09IG1fbnVtYmVy
T2ZJbnB1dENoYW5uZWxzKSAmJiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9PSBtX251bWJlck9m
T3V0cHV0Q2hhbm5lbHMpOworICAgIEFTU0VSVChjaGFubmVsc0FyZUdvb2QpOworICAgIGlmICgh
Y2hhbm5lbHNBcmVHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzOyBpKyspCisgICAgICAgIG1faW50ZXJuYWxJ
bnB1dEJ1cy5zZXRDaGFubmVsTWVtb3J5KGksIGlucHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YShp
KS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgZnJhbWVzVG9Qcm9jZXNzKTsKKwor
ICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMpCisgICAgICAgIG1faW50ZXJuYWxJbnB1dEJ1
cy5jb3B5RnJvbSgqaW5wdXRCdXMpOworCisgICAgLy8gQ29weSBmcm9tIHRoZSBvdXRwdXQgYnVm
ZmVyIHRvIHRoZSBvdXRwdXQuIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzOyArK2kpCisgICAgICAgIG1lbWNweShvdXRwdXRCdXMtPmNoYW5uZWwo
aSktPm11dGFibGVEYXRhKCksIG91dHB1dEJ1ZmZlci0+Z2V0Q2hhbm5lbERhdGEoaSktPmRhdGEo
KSArIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXgsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nl
c3MpOworCisgICAgLy8gVXBkYXRlIHRoZSBidWZmZXJpbmcgaW5kZXguCisgICAgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCA9IChtX2J1ZmZlclJlYWRXcml0ZUluZGV4ICsgZnJhbWVzVG9Qcm9jZXNz
KSAlIGJ1ZmZlclNpemUoKTsKKworICAgIC8vIG1fYnVmZmVyUmVhZFdyaXRlSW5kZXggd2lsbCB3
cmFwIGJhY2sgYXJvdW5kIHRvIDAgd2hlbiB0aGUgY3VycmVudCBpbnB1dCBhbmQgb3V0cHV0IGJ1
ZmZlcnMgYXJlIGZ1bGwuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIGZpcmUgYW4gZXZlbnQg
YW5kIHN3YXAgYnVmZmVycy4KKyAgICBpZiAoIW1fYnVmZmVyUmVhZFdyaXRlSW5kZXgpIHsKKyAg
ICAgICAgLy8gQXZvaWQgYnVpbGRpbmcgdXAgcmVxdWVzdHMgb24gdGhlIG1haW4gdGhyZWFkIHRv
IGZpcmUgcHJvY2VzcyBldmVudHMgd2hlbiB0aGV5J3JlIG5vdCBiZWluZyBoYW5kbGVkLgorICAg
ICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgcHJvYmxlbSBpZiB0aGUgbWFpbiB0aHJlYWQgaXMgdmVy
eSBidXN5IGRvaW5nIG90aGVyIHRoaW5ncyBhbmQgaXMgYmVpbmcgaGVsZCB1cCBoYW5kbGluZyBw
cmV2aW91cyByZXF1ZXN0cy4KKyAgICAgICAgaWYgKG1faXNSZXF1ZXN0T3V0c3RhbmRpbmcpIHsK
KyAgICAgICAgICAgIC8vIFdlJ3JlIGxhdGUgaW4gaGFuZGxpbmcgdGhlIHByZXZpb3VzIHJlcXVl
c3QuIFRoZSBtYWluIHRocmVhZCBtdXN0IGJlIHZlcnkgYnVzeS4KKyAgICAgICAgICAgIC8vIFRo
ZSBiZXN0IHdlIGNhbiBkbyBpcyBjbGVhciBvdXQgdGhlIGJ1ZmZlciBvdXJzZWxmIGhlcmUuCisg
ICAgICAgICAgICBvdXRwdXRCdWZmZXItPnplcm8oKTsgICAgICAgICAgICAKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBvdXJzZWxmIHNvIHdlIGRvbid0IGFjY2lk
ZW50YWxseSBnZXQgZGVsZXRlZCBiZWZvcmUgZmlyZVByb2Nlc3NFdmVudCgpIGdldHMgY2FsbGVk
LgorICAgICAgICAgICAgcmVmKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZpcmUg
dGhlIGV2ZW50IG9uIHRoZSBtYWluIHRocmVhZCwgbm90IHRoaXMgb25lICh3aGljaCBpcyB0aGUg
cmVhbHRpbWUgYXVkaW8gdGhyZWFkKS4KKyAgICAgICAgICAgIG1fZG91YmxlQnVmZmVySW5kZXhG
b3JFdmVudCA9IG1fZG91YmxlQnVmZmVySW5kZXg7CisgICAgICAgICAgICBtX2lzUmVxdWVzdE91
dHN0YW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoZmlyZVByb2Nl
c3NFdmVudERpc3BhdGNoLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3YXBCdWZmZXJz
KCk7CisgICAgfQorfQorCit2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmZpcmVQcm9jZXNzRXZl
bnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKiBq
c0F1ZGlvTm9kZSA9IHN0YXRpY19jYXN0PFNjcmlwdFByb2Nlc3Nvck5vZGUqPih1c2VyRGF0YSk7
CisgICAgQVNTRVJUKGpzQXVkaW9Ob2RlKTsKKyAgICBpZiAoIWpzQXVkaW9Ob2RlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBqc0F1ZGlvTm9kZS0+ZmlyZVByb2Nlc3NFdmVudCgpOworCisgICAg
Ly8gRGUtcmVmZXJlbmNlIHRvIG1hdGNoIHRoZSByZWYoKSBjYWxsIGluIHByb2Nlc3MoKS4KKyAg
ICBqc0F1ZGlvTm9kZS0+ZGVyZWYoKTsKK30KKwordm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpm
aXJlUHJvY2Vzc0V2ZW50KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgbV9pc1Jl
cXVlc3RPdXRzdGFuZGluZyk7CisgICAgCisgICAgYm9vbCBpc0luZGV4R29vZCA9IG1fZG91Ymxl
QnVmZmVySW5kZXhGb3JFdmVudCA8IDI7CisgICAgQVNTRVJUKGlzSW5kZXhHb29kKTsKKyAgICBp
ZiAoIWlzSW5kZXhHb29kKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIEF1ZGlvQnVm
ZmVyKiBpbnB1dEJ1ZmZlciA9IG1faW5wdXRCdWZmZXJzW21fZG91YmxlQnVmZmVySW5kZXhGb3JF
dmVudF0uZ2V0KCk7CisgICAgQXVkaW9CdWZmZXIqIG91dHB1dEJ1ZmZlciA9IG1fb3V0cHV0QnVm
ZmVyc1ttX2RvdWJsZUJ1ZmZlckluZGV4Rm9yRXZlbnRdLmdldCgpOworICAgIEFTU0VSVChvdXRw
dXRCdWZmZXIpOworICAgIGlmICghb3V0cHV0QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBn
b25lIGF3YXkuCisgICAgaWYgKGNvbnRleHQoKS0+aGFzRG9jdW1lbnQoKSkgeworICAgICAgICAv
LyBMZXQgdGhlIGF1ZGlvIHRocmVhZCBrbm93IHdlJ3ZlIGdvdHRlbiB0byB0aGUgcG9pbnQgd2hl
cmUgaXQncyBPSyBmb3IgaXQgdG8gbWFrZSBhbm90aGVyIHJlcXVlc3QuCisgICAgICAgIG1faXNS
ZXF1ZXN0T3V0c3RhbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIENhbGwgdGhl
IEphdmFTY3JpcHQgZXZlbnQgaGFuZGxlciB3aGljaCB3aWxsIGRvIHRoZSBhdWRpbyBwcm9jZXNz
aW5nLgorICAgICAgICBkaXNwYXRjaEV2ZW50KEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OjpjcmVhdGUo
aW5wdXRCdWZmZXIsIG91dHB1dEJ1ZmZlcikpOworICAgIH0KK30KKwordm9pZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpyZXNldCgpCit7CisgICAgbV9idWZmZXJSZWFkV3JpdGVJbmRleCA9IDA7Cisg
ICAgbV9kb3VibGVCdWZmZXJJbmRleCA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgMjsgKytpKSB7CisgICAgICAgIG1faW5wdXRCdWZmZXJzW2ldLT56ZXJvKCk7CisgICAgICAg
IG1fb3V0cHV0QnVmZmVyc1tpXS0+emVybygpOworICAgIH0KK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBTY3JpcHRQcm9jZXNzb3JOb2RlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNjcmlwdFByb2Nlc3Nvck5vZGU7Cit9CisK
K1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PFNjcmlwdFByb2Nl
c3Nvck5vZGUqPih0aGlzKS0+Y29udGV4dCgpLT5kb2N1bWVudCgpOworfQorCitkb3VibGUgU2Ny
aXB0UHJvY2Vzc29yTm9kZTo6dGFpbFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7Cit9CisKK2RvdWJsZSBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpsYXRlbmN5VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJl
YjMyNzM3Mjc3YTEzYmU2M2NhMTY3ODM3YWFiMTA0ODM5NTVjOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBA
IC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9jZXNzb3JOb2Rl
X2gKKyNkZWZpbmUgU2NyaXB0UHJvY2Vzc29yTm9kZV9oCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgor
I2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9Db250ZXh0OworY2xh
c3MgQXVkaW9Qcm9jZXNzaW5nRXZlbnQ7CisKKy8vIFNjcmlwdFByb2Nlc3Nvck5vZGUgaXMgYW4g
QXVkaW9Ob2RlIHdoaWNoIGFsbG93cyBmb3IgYXJiaXRyYXJ5IHN5bnRoZXNpcyBvciBwcm9jZXNz
aW5nIGRpcmVjdGx5IHVzaW5nIEphdmFTY3JpcHQuCisvLyBUaGUgQVBJIGFsbG93cyBmb3IgYSB2
YXJpYWJsZSBudW1iZXIgb2YgaW5wdXRzIGFuZCBvdXRwdXRzLCBhbHRob3VnaCBpdCBtdXN0IGhh
dmUgYXQgbGVhc3Qgb25lIGlucHV0IG9yIG91dHB1dC4KKy8vIFRoaXMgYmFzaWMgaW1wbGVtZW50
YXRpb24gc3VwcG9ydHMgbm8gbW9yZSB0aGFuIG9uZSBpbnB1dCBhbmQgb3V0cHV0LgorLy8gVGhl
ICJvbmF1ZGlvcHJvY2VzcyIgYXR0cmlidXRlIGlzIGFuIGV2ZW50IGxpc3RlbmVyIHdoaWNoIHdp
bGwgZ2V0IGNhbGxlZCBwZXJpb2RpY2FsbHkgd2l0aCBhbiBBdWRpb1Byb2Nlc3NpbmdFdmVudCB3
aGljaCBoYXMKKy8vIEF1ZGlvQnVmZmVycyBmb3IgZWFjaCBpbnB1dCBhbmQgb3V0cHV0LgorCisv
LyBGSVhNRTogRXZlbnRUYXJnZXQgc2hvdWxkIGJlIGludHJvZHVjZWQgYXQgdGhlIGJhc2Ugb2Yg
dGhlIGluaGVyaXRhbmNlIGhpZXJhcmNoeSAoaS5lLiwgYXMgYSBiYXNlIGNsYXNzIGZvciBBdWRp
b05vZGUpLgorY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1
YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgLy8gYnVmZmVyU2l6ZSBtdXN0IGJlIG9u
ZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgx
OTIsIDE2Mzg0LgorICAgIC8vIFRoaXMgdmFsdWUgY29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhl
IG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIgaXMgY2FsbGVkIGFuZCBob3cgbWFueSBzYW1w
bGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGVhY2ggY2FsbC4KKyAgICAvLyBMb3dlciBu
dW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVzdWx0IGluIGEgbG93ZXIgKGJldHRlcikgbGF0
ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBuZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJl
YWt1cCBhbmQgZ2xpdGNoZXMuCisgICAgLy8gVGhlIHZhbHVlIGNob3NlbiBtdXN0IGNhcmVmdWxs
eSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQgYXVkaW8gcXVhbGl0eS4KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICB2aXJ0dWFs
IH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB1bmluaXRpYWxpemUoKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpICB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAgIHNpemVf
dCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplOyB9CisKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF1ZGlvcHJvY2Vzcyk7CisKKyAgICAvLyBSZWNv
bmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gQXVkaW9Ob2RlIGFuZCBF
dmVudFRhcmdldC4KKyAgICB1c2luZyBBdWRpb05vZGU6OnJlZjsKKyAgICB1c2luZyBBdWRpb05v
ZGU6OmRlcmVmOworICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qg
T1ZFUlJJREU7CisKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0
IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworCisgICAgc3RhdGljIHZv
aWQgZmlyZVByb2Nlc3NFdmVudERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKKyAgICB2b2lkIGZp
cmVQcm9jZXNzRXZlbnQoKTsKKworICAgIC8vIERvdWJsZSBidWZmZXJpbmcKKyAgICB1bnNpZ25l
ZCBkb3VibGVCdWZmZXJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZG91YmxlQnVmZmVySW5kZXg7
IH0KKyAgICB2b2lkIHN3YXBCdWZmZXJzKCkgeyBtX2RvdWJsZUJ1ZmZlckluZGV4ID0gMSAtIG1f
ZG91YmxlQnVmZmVySW5kZXg7IH0KKyAgICB1bnNpZ25lZCBtX2RvdWJsZUJ1ZmZlckluZGV4Owor
ICAgIHVuc2lnbmVkIG1fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudDsKKyAgICBWZWN0b3I8UmVm
UHRyPEF1ZGlvQnVmZmVyPiA+IG1faW5wdXRCdWZmZXJzOworICAgIFZlY3RvcjxSZWZQdHI8QXVk
aW9CdWZmZXI+ID4gbV9vdXRwdXRCdWZmZXJzOworCisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
eyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisg
ICAgc2l6ZV90IG1fYnVmZmVyU2l6ZTsKKyAgICB1bnNpZ25lZCBtX2J1ZmZlclJlYWRXcml0ZUlu
ZGV4OworICAgIHZvbGF0aWxlIGJvb2wgbV9pc1JlcXVlc3RPdXRzdGFuZGluZzsKKworICAgIHVu
c2lnbmVkIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzOworICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZP
dXRwdXRDaGFubmVsczsKKworICAgIEF1ZGlvQnVzIG1faW50ZXJuYWxJbnB1dEJ1czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2Nlc3Nvck5vZGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkNGJiMjc0ZjNiYTkzYmNlMTViMGYzZDVkMzlm
NDgzYWM0NDBiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8vIEZvciByZWFsLXRpbWUgYXVkaW8gc3RyZWFtIHN5bnRoZXNpcy9wcm9jZXNzaW5nIGlu
IEphdmFTY3JpcHQgCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJh
dGVUb0pTT2JqZWN0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAgIEV2ZW50VGFyZ2V0
CitdIGludGVyZmFjZSBTY3JpcHRQcm9jZXNzb3JOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBS
ZW5kZXJpbmcgY2FsbGJhY2sKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmF1ZGlvcHJv
Y2VzczsKKyAgICAKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBidWZmZXJTaXplOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVRhYmxlLmNwcAppbmRleCA5
MmU5NDRiZjUwOGI0YzcwOTcwMzI3MjdhMTQ3NzlmOTE1NTQyNzc5Li44YmQ2NTFjMjUyMmUwMjFm
MWRjMDQ5NTE5YmE4NTM5OTViOTNkZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlVGFibGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV2F2ZVRh
YmxlLmgiCiAKICNpbmNsdWRlICJGRlRGcmFtZS5oIgotI2luY2x1ZGUgIk9zY2lsbGF0b3IuaCIK
KyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjIsMjggKzYy
LDI4IEBAIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBXYXZlVGFibGU6OmNyZWF0ZShmbG9hdCBzYW1w
bGVSYXRlLCBGbG9hdDMyQXJyYXkqIHJlYWwsIEZsCiBQYXNzUmVmUHRyPFdhdmVUYWJsZT4gV2F2
ZVRhYmxlOjpjcmVhdGVTaW5lKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgUmVmUHRyPFdhdmVU
YWJsZT4gd2F2ZVRhYmxlID0gYWRvcHRSZWYobmV3IFdhdmVUYWJsZShzYW1wbGVSYXRlKSk7Ci0g
ICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0oT3NjaWxsYXRvcjo6U0lORSk7Cisg
ICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0oT3NjaWxsYXRvck5vZGU6OlNJTkUp
OwogICAgIHJldHVybiB3YXZlVGFibGU7CiB9CiAKIFBhc3NSZWZQdHI8V2F2ZVRhYmxlPiBXYXZl
VGFibGU6OmNyZWF0ZVNxdWFyZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIFJlZlB0cjxXYXZl
VGFibGU+IHdhdmVUYWJsZSA9IGFkb3B0UmVmKG5ldyBXYXZlVGFibGUoc2FtcGxlUmF0ZSkpOwot
ICAgIHdhdmVUYWJsZS0+Z2VuZXJhdGVCYXNpY1dhdmVmb3JtKE9zY2lsbGF0b3I6OlNRVUFSRSk7
CisgICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0oT3NjaWxsYXRvck5vZGU6OlNR
VUFSRSk7CiAgICAgcmV0dXJuIHdhdmVUYWJsZTsKIH0KIAogUGFzc1JlZlB0cjxXYXZlVGFibGU+
IFdhdmVUYWJsZTo6Y3JlYXRlU2F3dG9vdGgoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBSZWZQ
dHI8V2F2ZVRhYmxlPiB3YXZlVGFibGUgPSBhZG9wdFJlZihuZXcgV2F2ZVRhYmxlKHNhbXBsZVJh
dGUpKTsKLSAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9ybShPc2NpbGxhdG9yOjpT
QVdUT09USCk7CisgICAgd2F2ZVRhYmxlLT5nZW5lcmF0ZUJhc2ljV2F2ZWZvcm0oT3NjaWxsYXRv
ck5vZGU6OlNBV1RPT1RIKTsKICAgICByZXR1cm4gd2F2ZVRhYmxlOwogfQogCiBQYXNzUmVmUHRy
PFdhdmVUYWJsZT4gV2F2ZVRhYmxlOjpjcmVhdGVUcmlhbmdsZShmbG9hdCBzYW1wbGVSYXRlKQog
ewogICAgIFJlZlB0cjxXYXZlVGFibGU+IHdhdmVUYWJsZSA9IGFkb3B0UmVmKG5ldyBXYXZlVGFi
bGUoc2FtcGxlUmF0ZSkpOwotICAgIHdhdmVUYWJsZS0+Z2VuZXJhdGVCYXNpY1dhdmVmb3JtKE9z
Y2lsbGF0b3I6OlRSSUFOR0xFKTsKKyAgICB3YXZlVGFibGUtPmdlbmVyYXRlQmFzaWNXYXZlZm9y
bShPc2NpbGxhdG9yTm9kZTo6VFJJQU5HTEUpOwogICAgIHJldHVybiB3YXZlVGFibGU7CiB9CiAK
QEAgLTI0NCwyMiArMjQ0LDIyIEBAIHZvaWQgV2F2ZVRhYmxlOjpnZW5lcmF0ZUJhc2ljV2F2ZWZv
cm0oaW50IHNoYXBlKQogICAgICAgICAvLyBDYWxjdWxhdGUgRm91cmllciBjb2VmZmljaWVudHMg
ZGVwZW5kaW5nIG9uIHRoZSBzaGFwZS4KICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBvdmVyYWxs
IHNjYWxpbmcgKG1hZ25pdHVkZSkgb2YgdGhlIHdhdmVmb3JtcyBpcyBub3JtYWxpemVkIGluIGNy
ZWF0ZUJhbmRMaW1pdGVkVGFibGVzKCkuCiAgICAgICAgIHN3aXRjaCAoc2hhcGUpIHsKLSAgICAg
ICAgY2FzZSBPc2NpbGxhdG9yOjpTSU5FOgorICAgICAgICBjYXNlIE9zY2lsbGF0b3JOb2RlOjpT
SU5FOgogICAgICAgICAgICAgLy8gU3RhbmRhcmQgc2luZSB3YXZlIGZ1bmN0aW9uLgogICAgICAg
ICAgICAgYSA9IDA7CiAgICAgICAgICAgICBiID0gKG4gPT0gMSkgPyAxIDogMDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9zY2lsbGF0b3I6OlNRVUFSRToKKyAgICAgICAgY2Fz
ZSBPc2NpbGxhdG9yTm9kZTo6U1FVQVJFOgogICAgICAgICAgICAgLy8gU3F1YXJlLXNoYXBlZCB3
YXZlZm9ybSB3aXRoIHRoZSBmaXJzdCBoYWxmIGl0cyBtYXhpbXVtIHZhbHVlIGFuZCB0aGUgc2Vj
b25kIGhhbGYgaXRzIG1pbmltdW0gdmFsdWUuCiAgICAgICAgICAgICBhID0gMDsKICAgICAgICAg
ICAgIGIgPSBpbnZPbWVnYSAqICgobiAmIDEpID8gMiA6IDApOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgT3NjaWxsYXRvcjo6U0FXVE9PVEg6CisgICAgICAgIGNhc2UgT3NjaWxs
YXRvck5vZGU6OlNBV1RPT1RIOgogICAgICAgICAgICAgLy8gU2F3dG9vdGgtc2hhcGVkIHdhdmVm
b3JtIHdpdGggdGhlIGZpcnN0IGhhbGYgcmFtcGluZyBmcm9tIHplcm8gdG8gbWF4aW11bSBhbmQg
dGhlIHNlY29uZCBoYWxmIGZyb20gbWluaW11bSB0byB6ZXJvLgogICAgICAgICAgICAgYSA9IDA7
CiAgICAgICAgICAgICBiID0gLWludk9tZWdhICogY29zKDAuNSAqIG9tZWdhKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9zY2lsbGF0b3I6OlRSSUFOR0xFOgorICAgICAgICBj
YXNlIE9zY2lsbGF0b3JOb2RlOjpUUklBTkdMRToKICAgICAgICAgICAgIC8vIFRyaWFuZ2xlLXNo
YXBlZCB3YXZlZm9ybSBnb2luZyBmcm9tIGl0cyBtYXhpbXVtIHZhbHVlIHRvIGl0cyBtaW5pbXVt
IHZhbHVlIHRoZW4gYmFjayB0byB0aGUgbWF4aW11bSB2YWx1ZS4KICAgICAgICAgICAgIGEgPSAo
NCAtIDQgKiBjb3MoMC41ICogb21lZ2EpKSAvIChuICogbiAqIHBpRmxvYXQgKiBwaUZsb2F0KTsK
ICAgICAgICAgICAgIGIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggOGZhZWI4MGM0Y2E3NjE0ZTQyNjYz
NzA0NmExYjA5MDkwNmIyNGU2ZS4uM2EwNGZlYjBjZWM3ZGNjZTUwOTczMjljYzgyNjE3YjE5Yjcw
MjBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMjY2LDE3ICszMjY2LDE3IEBAIGVuYWJsZT8oV0VCX0FV
RElPKSB7CiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oIFwKICAgICAgICAgTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBcCi0gICAgICAgIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggXAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbFNwbGl0dGVyLmggXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmggXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggXAogICAgICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAogICAgICAgICBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbi5oIFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0dhaW5Ob2RlLmggXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggXAogICAg
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaCBcCiAgICAgICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZUlucHV0LmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oIFwK
LSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaCBcCisgICAgICAgIE1v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmggXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwK
QEAgLTMyOTIsMTQgKzMyOTIsMTQgQEAgZW5hYmxlPyhXRUJfQVVESU8pIHsKICAgICAgICAgTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuaCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oIFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmggXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBcCiAg
ICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggXAog
ICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggXAog
ICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBc
Ci0gICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oIFwKKyAgICAgICAgTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmggXAotICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXJOb2RlLmggXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmggXAogICAgICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggXAogICAgICAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCkBAIC0zMzUwLDIyICszMzUwLDIyIEBAIGVu
YWJsZT8oV0VCX0FVRElPKSB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93V2ViQXVkaW9DdXN0b20u
Y3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNw
cCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vzc29yTm9kZUN1c3RvbS5jcHAg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBcCiAgICAg
ICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIFwKICAgICAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgXAogICAgICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBcCi0gICAgICAgIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCBcCi0gICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9DaGFubmVsU3BsaXR0ZXIuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
TWVyZ2VyTm9kZS5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRl
ck5vZGUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAotICAg
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwIFwKKyAgICAgICAgTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAgXAogICAgICAgICBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAgXAotICAgICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBc
CiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBcCiAgICAg
ICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwIFwKQEAgLTMzODAs
MTQgKzMzODAsMTQgQEAgZW5hYmxlPyhXRUJfQVVESU8pIHsKICAgICAgICAgTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIFwKLSAgICAgICAgTW9kdWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNw
cCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgXAog
ICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAg
XAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNw
cCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
LmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBcCi0gICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHAgXAorICAg
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBcCiAgICAgICAgIE1vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgXAotICAgICAgICBNb2R1bGVzL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8v
QW5hbHlzZXJOb2RlLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRT
UEtlcm5lbC5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNw
cCBcCiAgICAgICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCmluZGV4IDNlNjBhM2U4ODFmMzYwOWJmYzQ0M2FhOTJhZDA1YmFkZDUwNjIy
NDAuLmJhNmNlNjk3YmY1MzYyMGNmNWIyY2E5YzA1Y2Q3YmQyNzViYzY0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UKQEAgLTI3Myw3ICsyNzMsNyBAQCBJRiAoRU5BQkxFX1dFQl9BVURJTykKICAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZl
clNvdXJjZU5vZGVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0
Q3VzdG9tLmNwcAotICAgICAgICBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0
b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vzc29yTm9kZUN1c3RvbS5j
cHAKICAgICApCiBFTkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWVjN2RkOGNkZmExNDY0
Njk1NWQ2MjQ0MGE2YmM3NjY3NjdjZjQ4OS4uOWY4YmY5MjhlN2I2MjM3N2E0M2ExNmJhNmJlMGE5
NjgxOThjNThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTA1LDE1ICs5MDUsMTUgQEAKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5pZGwnLAotICAgICAgICAgICAg
J01vZHVsZXMvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbCcsCisgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0dhaW4uaWRsJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0dhaW5O
b2RlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvU291cmNlTm9kZS5pZGwnLApAQCAtOTIyLDEyICs5MjIsMTIgQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vRE9NV2luZG93V2ViQXVkaW8uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsJywKLSAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsJywKKyAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5p
ZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5pZGwnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaWRsJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsJywKICAgICAgICAgICAgICdN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy93ZWJhdWRpby9XYXZlVGFibGUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFi
YXNlL0RPTVdpbmRvd1dlYkRhdGFiYXNlLmlkbCcsCkBAIC0xNjk4LDE3ICsxNjk4LDE3IEBACiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCcsCi0g
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwJywKLSAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCcsCi0gICAg
ICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvR2Fpbi5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5v
ZGUuY3BwJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0xpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmNwcCcsCkBAIC0xNzE3LDggKzE3MTcsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlSW5wdXQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVPdXRwdXQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZU91dHB1dC5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2Rl
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW0uaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtVGltZWxpbmUuY3BwJywKQEAgLTE3NTAsOCArMTc1MCw4IEBACiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCcsCi0gICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCcsCi0gICAgICAgICAgICAnTW9k
dWxlcy93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwJywK
QEAgLTE3NjAsMTIgKzE3NjAsMTIgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgnLAotICAgICAgICAgICAg
J01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL09z
Y2lsbGF0b3JOb2RlLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
aCcsCi0gICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5j
cHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUu
aCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAnLApAQCAtMjA5Nyw3ICsyMDk3LDcg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVD
dXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2Nlc3Nvck5v
ZGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxs
RnJhbWVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0xhenlFdmVudExp
c3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5oJywKQEAgLTczMTUsMjQgKzczMTUsMjQgQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuaCcsCiAgICAgICAgICAgICAn
PChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAnLAot
ICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NoYW5uZWxNZXJnZXIuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCcsCi0gICAgICAgICAgICAn
PChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbFNwbGl0
dGVyLmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFubmVsTWVyZ2VyTm9kZS5oJywKKyAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVD
VF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwJywKICAgICAg
ICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250
ZXh0LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9H
YWluLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvR2Fpbi5oJywKLSAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9HYWluTm9kZS5jcHAnLAotICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0dhaW5Ob2RlLmgnLAorICAg
ICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHYWluTm9k
ZS5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHYWluTm9kZS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVD
VF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb05vZGUu
Y3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQXVkaW9Ob2RlLmgnLAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb1Bhbm5lck5vZGUuY3BwJywKLSAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYW5uZXJOb2RlLmgnLAorICAg
ICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJO
b2RlLmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1Bhbm5lck5vZGUuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFyYW0uY3BwJywKICAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5oJywKICAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Qcm9jZXNz
aW5nRXZlbnQuY3BwJywKQEAgLTc3MjQsOCArNzcyNCw4IEBACiAgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ludDMyQXJyYXkuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ludDhBcnJheS5j
cHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNJbnQ4QXJyYXkuaCcsCi0gICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuY3BwJywKLSAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZS5o
JywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmgnLAogICAgICAgICAg
ICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0phdmFTY3JpcHRDYWxsRnJhbWUuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0tleWJvYXJkRXZlbnQuY3BwJywKQEAgLTc4
MjEsOCArNzgyMSw4IEBACiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JhbmdlLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JhbmdlRXhjZXB0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
PChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JhbmdlRXhjZXB0aW9uLmgn
LAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNS
ZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAnLAotICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZWFsdGltZUFuYWx5c2VyTm9kZS5oJywKKyAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQW5hbHlzZXJOb2Rl
LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0FuYWx5c2VyTm9kZS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUmVjdC5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZWN0LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVD
VF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTUUxFcnJvci5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3ZWM4
MGYxZmU2Mjg1NWY2MDkxM2Q3MTE4NWI0ZGMwNGJmZTgwNTQuLjhiZGM3ZDdhZTczNTNiOGRjNDlj
OTA2ZDdkZGFmMzIwNWYwMGVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzNTMsMTcgKzYzNTMsMTcgQEAKIAkJRkQzMTVG
RjkxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZBRjEyQjAyNjc1MDBDMUEzNTkgLyogQXVk
aW9CdWZmZXIuaCAqLzsgfTsKIAkJRkQzMTVGRkIxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNUZCMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcCAqLzsgfTsKIAkJRkQzMTVGRkMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTVGQjIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5oICovOyB9
OwotCQlGRDMxNUZGRTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkI0MTJC
MDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuY3BwICovOyB9OwotCQlGRDMxNUZG
RjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsTWVyZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZCNTEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsTWVyZ2VyLmggKi87IH07Ci0JCUZEMzE2MDAxMTJCMDI2NzYwMEMxQTM1
OSAvKiBBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZCNzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9DaGFu
bmVsU3BsaXR0ZXIuY3BwICovOyB9OwotCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9DaGFubmVsU3BsaXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE1RkI4MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxTcGxpdHRl
ci5oICovOyB9OworCQlGRDMxNUZGRTEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQz
MTVGQjQxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmNwcCAqLzsgfTsKKwkJ
RkQzMTVGRkYxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZCNTEyQjAyNjc1MDBD
MUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCAqLzsgfTsKKwkJRkQzMTYwMDExMkIwMjY3NjAw
QzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQjcxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5u
ZWxTcGxpdHRlck5vZGUuY3BwICovOyB9OworCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyog
Q2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTVGQjgxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5v
ZGUuaCAqLzsgfTsKIAkJRkQzMTYwMDQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZC
QTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLzsgfTsKIAkJRkQzMTYwMDUx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQkIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlv
Q29udGV4dC5oICovOyB9OwogCQlGRDMxNjAwNzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkQzMTVGQkQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCAqLzsgfTsKIAkJRkQzMTYwMDgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25O
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NUZCRTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLzsgfTsKIAkJ
RkQzMTYwMEExMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvR2Fpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQzAxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvR2Fpbi5oICovOyB9OwotCQlGRDMxNjAwQzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9H
YWluTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNUZDMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluTm9kZS5jcHAgKi87IH07Ci0J
CUZEMzE2MDBEMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZDMzEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9HYWluTm9kZS5oICovOyB9OworCQlGRDMxNjAwQzEyQjAyNjc2MDBDMUEzNTkg
LyogR2Fpbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkQzMTVGQzIxMkIwMjY3NTAwQzFBMzU5IC8qIEdhaW5Ob2RlLmNwcCAqLzsgfTsKKwkJ
RkQzMTYwMEQxMkIwMjY3NjAwQzFBMzU5IC8qIEdhaW5Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZDMzEyQjAyNjc1MDBDMUEzNTkgLyog
R2Fpbk5vZGUuaCAqLzsgfTsKIAkJRkQzMTYwMEYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlz
dGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTVGQzUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuY3BwICovOyB9OwogCQlG
RDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQzYxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvTGlzdGVuZXIuaCAqLzsgfTsKIAkJRkQzMTYwMTIxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRDMxNUZDODEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmNwcCAqLzsgfTsKQEAg
LTYzNzIsOCArNjM3Miw4IEBACiAJCUZEMzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05v
ZGVJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTVGQ0MxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggKi87IH07CiAJCUZE
MzE2MDE3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGQ0QxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5jcHAgKi87IH07CiAJCUZEMzE2MDE4MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEMzE1RkNFMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRw
dXQuaCAqLzsgfTsKLQkJRkQzMTYwMTkxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFubmVyTm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NUZDRjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJOb2RlLmNwcCAqLzsgfTsKLQkJRkQz
MTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRDAxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OworCQlGRDMxNjAxOTEyQjAyNjc2MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNUZDRjEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5jcHAgKi87IH07
CisJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZEMDEyQjAyNjc1MDBDMUEz
NTkgLyogUGFubmVyTm9kZS5oICovOyB9OwogCQlGRDMxNjAxQzEyQjAyNjc2MDBDMUEzNTkgLyog
QXVkaW9QYXJhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRDMxNUZEMjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5jcHAgKi87IH07CiAJ
CUZEMzE2MDFEMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZEMzEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9QYXJhbS5oICovOyB9OwogCQlGRDMxNjAxRjEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9Qcm9jZXNzaW5nRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTVGRDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUHJvY2Vzc2luZ0V2
ZW50LmNwcCAqLzsgfTsKQEAgLTYzOTEsMTIgKzYzOTEsMTIgQEAKIAkJRkQzMTYwMkUxMkIwMjY3
NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQzMTVGRTQxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oICov
OyB9OwogCQlGRDMxNjAzMDEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRTYxMkIw
MjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCAqLzsgfTsKIAkJRkQzMTYwMzExMkIw
MjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZFNzEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQ
cm9jZXNzb3IuaCAqLzsgfTsKLQkJRkQzMTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIEphdmFTY3Jp
cHRBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkQzMTVGRUIxMkIwMjY3NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuY3Bw
ICovOyB9OwotCQlGRDMxNjAzNjEyQjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVG
RUMxMkIwMjY3NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuaCAqLzsgfTsKKwkJRkQz
MTYwMzUxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRUIxMkIwMjY3NjAw
QzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3BwICovOyB9OworCQlGRDMxNjAzNjEyQjAy
Njc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRUMxMkIwMjY3NjAwQzFBMzU5IC8qIFNj
cmlwdFByb2Nlc3Nvck5vZGUuaCAqLzsgfTsKIAkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTVGRjExMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIu
Y3BwICovOyB9OwogCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVG
RjIxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCAqLzsgfTsKLQkJRkQzMTYw
M0QxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkYzMTJCMDI2NzYwMEMx
QTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgKi87IH07Ci0JCUZEMzE2MDNFMTJCMDI2
NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTVGRjQxMkIwMjY3NjAwQzFBMzU5IC8qIFJl
YWx0aW1lQW5hbHlzZXJOb2RlLmggKi87IH07CisJCUZEMzE2MDNEMTJCMDI2NzYwMEMxQTM1OSAv
KiBBbmFseXNlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5jcHAgKi87
IH07CisJCUZEMzE2MDNFMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkY0MTJCMDI2NzYw
MEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCAqLzsgfTsKIAkJRkQzMTYwN0ExMkIwMjZGNzAwQzFB
MzU5IC8qIEF1ZGlvQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE2MDQ0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggKi87IH07
CiAJCUZEMzE2MDdCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0NTEyQjAyNkY3MDBDMUEz
NTkgLyogQXVkaW9CdXMuY3BwICovOyB9OwogCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyog
QXVkaW9CdXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEMzE2MDQ2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oICovOyB9OwpAQCAtNjQ2Niw4
ICs2NDY2LDggQEAKIAkJRkQ1Njg2QzkxM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
NTY4NkM3MTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5jcHAgKi87IH07CiAJ
CUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1Njg2QzgxM0FDMTgwMjAw
QjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggKi87IH07CiAJCUZENTY4NkNDMTNBQzE4MTQw
MEI2OUM2OCAvKiBBdWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDU2ODZDQjEzQUMxODE0MDBCNjlDNjggLyogQXVkaW9C
dWZmZXJDYWxsYmFjay5oICovOyB9OwotCQlGRDU4MUZBRTE1MjBGOTFGMDAzQTdBNzUgLyogT3Nj
aWxsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDU4MUZBQjE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvci5jcHAgKi87IH07Ci0JCUZE
NTgxRkFGMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDU4MUZBQzE1MjBGOTFGMDAzQTdBNzUgLyog
T3NjaWxsYXRvci5oICovOyB9OworCQlGRDU4MUZBRTE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxs
YXRvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkQ1ODFGQUIxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCAqLzsgfTsK
KwkJRkQ1ODFGQUYxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDU4MUZBQzE1MjBGOTFGMDAz
QTdBNzUgLyogT3NjaWxsYXRvck5vZGUuaCAqLzsgfTsKIAkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFdhdmVUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRDU4MUZCMTE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRhYmxlLmNwcCAqLzsg
fTsKIAkJRkQ1ODFGQjUxNTIwRjkzQjAwM0E3QTc1IC8qIFdhdmVUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1ODFGQjIxNTIwRjkzQjAwM0E3
QTc1IC8qIFdhdmVUYWJsZS5oICovOyB9OwogCQlGRDYyOUVBMzE1NEI0NzE2MDAwNkQwMjYgLyog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZENjI5RUExMTU0QjQ3MTYwMDA2RDAyNiAvKiBBdWRpb0Jhc2ljSW5z
cGVjdG9yTm9kZS5oICovOyB9OwpAQCAtNjQ5OSwyNCArNjQ5OSwyNCBAQAogCQlGREExNUU5RTEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFODIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVk
aW9CdWZmZXIuaCAqLzsgfTsKIAkJRkRBMTVFOUYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEQTE1RTgzMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgKi87IH07CiAJCUZEQTE1RUEwMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkRBMTVFODQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmggKi87IH07Ci0JCUZEQTE1RUExMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1l
cmdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
REExNUU4NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwICovOyB9
OwotCQlGREExNUVBMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NoYW5uZWxNZXJnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTg2MTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1lcmdlci5oICovOyB9OwotCQlGREExNUVB
MzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4NzEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgKi87IH07Ci0JCUZEQTE1RUE0MTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4ODEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5oICovOyB9OworCQlGREExNUVBMTEyQjAzRUUxMDAz
QTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFu
bmVsTWVyZ2VyTm9kZS5jcHAgKi87IH07CisJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgzQSAvKiBK
U0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREExNUU4NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9k
ZS5oICovOyB9OworCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0
ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEQTE1RTg3MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwICov
OyB9OworCQlGREExNUVBNDEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4
ODEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmggKi87IH07CiAJCUZE
QTE1RUE1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4OTEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0NvbnRleHQuY3BwICovOyB9OwogCQlGREExNUVBNjEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEQTE1RThBMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5o
ICovOyB9OwogCQlGREExNUVBNzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
REExNUU4QjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi87
IH07CiAJCUZEQTE1RUE4MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4
QzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovOyB9OwogCQlG
REExNUVBOTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFOEQxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9HYWluLmNwcCAqLzsgfTsKIAkJRkRBMTVFQUExMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9HYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGREExNUU4RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4uaCAqLzsgfTsKLQkJ
RkRBMTVFQUIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluTm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4RjEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmNwcCAqLzsgfTsKLQkJRkRBMTVFQUMxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQXVkaW9HYWluTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFOTAxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWlu
Tm9kZS5oICovOyB9OworCQlGREExNUVBQjEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU4
RjEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5jcHAgKi87IH07CisJCUZEQTE1RUFDMTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU5MDEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9k
ZS5oICovOyB9OwogCQlGREExNUVBRDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0xpc3RlbmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1
RTkxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuY3BwICovOyB9OwogCQlGREEx
NUVBRTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU5MjEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0xpc3RlbmVyLmggKi87IH07CiAJCUZEQTE1RUFGMTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0F1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGREExNUU5MzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb05vZGUuY3BwICovOyB9
OwogCQlGREExNUVCMDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb05vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTk0MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvTm9kZS5oICovOyB9OwotCQlGREExNUVCMTEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb1Bhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkRBMTVFOTUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYW5uZXJO
b2RlLmNwcCAqLzsgfTsKLQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYW5u
ZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
REExNUU5NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Bhbm5lck5vZGUuaCAqLzsgfTsKKwkJ
RkRBMTVFQjExMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9kZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUU5NTEyQjAzRUUxMDAzQTU4
M0EgLyogSlNQYW5uZXJOb2RlLmNwcCAqLzsgfTsKKwkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkRBMTVFOTYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9kZS5oICovOyB9
OwogCQlGREExNUVCMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTE1RTk3MTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvUGFyYW0uY3BwICovOyB9OwogCQlGREExNUVCNDEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb1BhcmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGREExNUU5ODEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1BhcmFtLmgg
Ki87IH07CiAJCUZEQTE1RUI1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUHJvY2Vzc2luZ0V2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
QTE1RTk5MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCAqLzsg
fTsKQEAgLTY1MjUsMTAgKzY1MjUsMTAgQEAKIAkJRkRBMTVFQjgxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREExNUU5QzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1NvdXJjZU5vZGUu
aCAqLzsgfTsKIAkJRkRBMTVFQkQxMkIwM0YwQjAwM0E1ODNBIC8qIEpTQ29udm9sdmVyTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUVC
QjEyQjAzRjBCMDAzQTU4M0EgLyogSlNDb252b2x2ZXJOb2RlLmNwcCAqLzsgfTsKIAkJRkRBMTVF
QkUxMkIwM0YwQjAwM0E1ODNBIC8qIEpTQ29udm9sdmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRBMTVFQkMxMkIwM0YwQjAwM0E1ODNBIC8q
IEpTQ29udm9sdmVyTm9kZS5oICovOyB9OwotCQlGREExNUVDOTEyQjAzRjUwMDAzQTU4M0EgLyog
SlNSZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGREExNUVDNzEyQjAzRjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFu
YWx5c2VyTm9kZS5jcHAgKi87IH07Ci0JCUZEQTE1RUNBMTJCMDNGNTAwMDNBNTgzQSAvKiBKU1Jl
YWx0aW1lQW5hbHlzZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREExNUVDODEyQjAzRjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFuYWx5c2Vy
Tm9kZS5oICovOyB9OwotCQlGREExNUVDRDEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0
QXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEQTE1RUNCMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
ICovOyB9OwotCQlGREExNUVDRTEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9O
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREEx
NUVDQzEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmggKi87IH07CisJ
CUZEQTE1RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUVDNzEyQjAzRjUwMDAz
QTU4M0EgLyogSlNBbmFseXNlck5vZGUuY3BwICovOyB9OworCQlGREExNUVDQTEyQjAzRjUwMDAz
QTU4M0EgLyogSlNBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZEQTE1RUM4MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9k
ZS5oICovOyB9OworCQlGREExNUVDRDEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZEQTE1RUNCMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwICov
OyB9OworCQlGREExNUVDRTEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUVD
QzEyQjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmggKi87IH07CiAJCUZE
QTE1RUQxMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREExNUVDRjEyQjAzRjk0MDAzQTU4M0Eg
LyogSlNEZWxheU5vZGUuY3BwICovOyB9OwogCQlGREExNUVEMjEyQjAzRjk0MDAzQTU4M0EgLyog
SlNEZWxheU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEQTE1RUQwMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5oICovOyB9OwogCQlG
REEzRTk1OTEzNEE0OUVGMDA4RDRCNUEgLyogT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEQTNFOTU1
MTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwICovOyB9
OwpAQCAtNjU0NiwxMyArNjU0NiwxMyBAQAogCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyog
QmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGREM1NEYwMTEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5j
cHAgKi87IH07CiAJCUZEQzU0RjA1MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREM1NEYw
MjEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5oICovOyB9OwogCQlGREUyRDU1
QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREUyRDU1QTE1OUU2NkVCMDBEQ0NDRjggLyog
QXVkaW9JT0NhbGxiYWNrLmggKi87IH07Ci0JCUZERUE2MjQyMTUyMTAyRTIwMDQ3OURGMCAvKiBK
U09zY2lsbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkRFQTYyNDAxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvci5jcHAgKi87IH07
Ci0JCUZERUE2MjQzMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERUE2MjQxMTUyMTAyRTIwMDQ3
OURGMCAvKiBKU09zY2lsbGF0b3IuaCAqLzsgfTsKKwkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYw
IC8qIEpTT3NjaWxsYXRvck5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkRFQTYyNDAxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5v
ZGUuY3BwICovOyB9OworCQlGREVBNjI0MzE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9y
Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRF
QTYyNDExNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxsYXRvck5vZGUuaCAqLzsgfTsKIAkJRkRF
QTYyNDYxNTIxMDJGQzAwNDc5REYwIC8qIEpTV2F2ZVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERUE2MjQ0MTUyMTAyRkMwMDQ3OURGMCAv
KiBKU1dhdmVUYWJsZS5jcHAgKi87IH07CiAJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURGMCAvKiBK
U1dhdmVUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkRFQTYyNDUxNTIxMDJGQzAwNDc5REYwIC8qIEpTV2F2ZVRhYmxlLmggKi87IH07CiAJCUZE
RUFBQUYzMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREVBQUFF
RjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwICov
OyB9OwogCQlGREVBQUFGNDEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRFQUFB
RjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKLQkJ
RkRFQUFBRkUxMkIwMkY0OTAwRENGMzNCIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREVBQUFG
RDEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCAqLzsg
fTsKKwkJRkRFQUFBRkUxMkIwMkY0OTAwRENGMzNCIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
REVBQUFGRDEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJRkRGMDlEQzgxMzk5QjYyMjAwNjg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREYw
OURDNjEzOTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJOb2RlLmNwcCAqLzsgfTsKIAkJ
RkRGMDlEQzkxMzk5QjYyMjAwNjg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGMDlEQzcxMzk5QjYyMjAw
Njg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5oICovOyB9OwogCQlGREY2QkFGODEzNEE0Qzk4
MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGNkJBRjYxMzRBNEM5ODAwODIy
OTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCAqLzsgfTsKQEAgLTEzNzg5
LDEyICsxMzc4OSwxMiBAQAogCQlGRDMxNUZCMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZE
MzE1RkIyMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkIzMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQnVmZmVy
U291cmNlTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE1RkI0MTJC
MDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9DaGFubmVsTWVyZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQjUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5l
bE1lcmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NoYW5uZWxN
ZXJnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQjYxMkIwMjY3NTAw
QzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbE1lcmdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QXVkaW9DaGFubmVsTWVyZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQz
MTVGQjcxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQjgxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZE
MzE1RkI5MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9DaGFubmVsU3BsaXR0ZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRDMxNUZCNDEyQjAyNjc1MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdl
ck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hhbm5lbE1l
cmdlck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZCNTEyQjAy
Njc1MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2hhbm5lbE1lcmdlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkQzMTVGQjYxMkIwMjY3NTAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDaGFubmVsTWVyZ2VyTm9kZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZEMzE1RkI3MTJCMDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsU3Bs
aXR0ZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoYW5u
ZWxTcGxpdHRlck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZC
ODEyQjAyNjc1MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDaGFubmVsU3BsaXR0ZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZEMzE1RkI5MTJCMDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0
ZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDaGFubmVsU3BsaXR0ZXJOb2RlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGQkExMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZC
QjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM4MDMsOSArMTM4MDMsOSBAQAogCQlGRDMxNUZCRjEyQjAyNjc1MDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVGQzAx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0dhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTVG
QzExMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQXVkaW9HYWluLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQzIx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9HYWluTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZEMzE1RkMzMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvR2Fpbk5vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQzQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fp
bk5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvR2Fpbk5vZGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZDMjEyQjAyNjc1MDBDMUEzNTkgLyogR2Fp
bk5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Fpbk5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZDMzEyQjAyNjc1MDBDMUEz
NTkgLyogR2Fpbk5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Fpbk5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGQzQxMkIwMjY3NTAwQzFB
MzU5IC8qIEdhaW5Ob2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHYWluTm9kZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkM1MTJCMDI2NzUwMEMxQTM1OSAv
KiBBdWRpb0xpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZD
NjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdWRpb0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZEMzE1RkM3MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBBdWRpb0xpc3RlbmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzODE2LDkgKzEzODE2LDkgQEAKIAkJRkQzMTVGQ0MxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvTm9kZUlucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvTm9kZUlucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkNEMTJC
MDI2NzUwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9Ob2RlT3V0cHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQzMTVGQ0UxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb05vZGVPdXRwdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGQ0YxMkIwMjY3NTAwQzFBMzU5IC8qIEF1
ZGlvUGFubmVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNUZE
MDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1ZGlvUGFubmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJOb2RlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRDMxNUZDRjEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYW5uZXJOb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGRDAxMkIwMjY3NTAwQzFBMzU5IC8q
IFBhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFubmVyTm9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEz
NTkgLyogUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFubmVyTm9kZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkQyMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb1BhcmFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvUGFyYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZEMzEy
QjAyNjc1MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1BhcmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1
RkQ0MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb1BhcmFtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODQx
LDE0ICsxMzg0MSwxNCBAQAogCQlGRDMxNUZFNTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2Rl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEZWxheU5vZGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRDMxNUZFNjEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNz
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsYXlQcm9jZXNz
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZFNzEyQjAyNjc2MDBD
MUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVsYXlQcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVG
RUIxMkIwMjY3NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE1RkVDMTJCMDI2NzYwMEMxQTM1OSAvKiBKYXZh
U2NyaXB0QXVkaW9Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFT
Y3JpcHRBdWRpb05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTVGRUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEphdmFTY3JpcHRBdWRpb05vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRDMxNUZFQjEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGRUMxMkIwMjY3NjAw
QzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NyaXB0UHJvY2Vzc29yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRDMxNUZFRDEyQjAyNjc2MDBDMUEzNTkgLyogU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE1RkYxMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGlt
ZUFuYWx5c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0
aW1lQW5hbHlzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNUZGMjEy
QjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWFsdGltZUFuYWx5c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUFuYWx5c2Vy
Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE1RkY0MTJCMDI2NzYw
MEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWFsdGltZUFuYWx5c2VyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlGRDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlck5vZGUu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIEFu
YWx5c2VyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbmFs
eXNlck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNUZGNDEyQjAy
Njc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFuYWx5c2VyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMx
NUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBbmFseXNlck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RDMxNjA0NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9BcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdWRpb0FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZEMzE2MDQ1MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0J1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMzE2MDQ2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0J1cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM5MTksOSArMTM5MTksOSBAQAogCQlGRDU2ODZDODEzQUMxODAyMDBC
NjlDNjggLyogQXN5bmNBdWRpb0RlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXN5bmNBdWRpb0RlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQ1Njg2Q0IxM0FDMTgxNDAwQjY5QzY4IC8qIEF1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRDU2ODZDRDEzQUMxODNFMDBCNjlDNjggLyogQXVkaW9C
dWZmZXJDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9CdWZmZXJDYWxs
YmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZENTgxRkFCMTUyMEY5MUYw
MDNBN0E3NSAvKiBPc2NpbGxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9zY2lsbGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDU4
MUZBQzE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPc2NpbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZENTgxRkFEMTUyMEY5MUYwMDNBN0E3NSAvKiBPc2NpbGxhdG9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBPc2NpbGxhdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQ1ODFGQUIxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9zY2lsbGF0b3JOb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ1ODFGQUMxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0
b3JOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9zY2lsbGF0b3JOb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZENTgxRkFEMTUyMEY5MUYwMDNBN0E3
NSAvKiBPc2NpbGxhdG9yTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3NjaWxsYXRv
ck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDU4MUZCMTE1MjBGOTNC
MDAzQTdBNzUgLyogV2F2ZVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdhdmVUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTgx
RkIyMTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2F2ZVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZE
NTgxRkIzMTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdhdmVUYWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk1
OCwyNCArMTM5NTgsMjQgQEAKIAkJRkRBMTVFODIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9C
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREExNUU4MzEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGREExNUU4NDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFODUxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9DaGFubmVsTWVyZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkRBMTVFODYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9D
aGFubmVsTWVyZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9D
aGFubmVsTWVyZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RTg3MTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGREExNUU4ODEyQjAzRUUxMDAzQTU4M0EgLyogSlNB
dWRpb0NoYW5uZWxTcGxpdHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZE
QTE1RTg1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2hhbm5lbE1lcmdlck5vZGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREExNUU4NjEyQjAzRUUxMDAzQTU4M0EgLyog
SlNDaGFubmVsTWVyZ2VyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NoYW5uZWxNZXJnZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEQTE1
RTg3MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkRBMTVFODgxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NoYW5uZWxTcGxpdHRlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkRBMTVFODkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOEExMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9D
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Db250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RThCMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGREExNUU4QzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RThEMTJCMDNF
RTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F1ZGlvR2Fpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZEQTE1RThFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvR2Fpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlGREExNUU4RjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9HYWluTm9kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RTkwMTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0F1ZGlvR2Fpbk5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNB
dWRpb0dhaW5Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEQTE1RThGMTJC
MDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTR2Fpbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGREExNUU5MDEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0dhaW5Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEQTE1RTkxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTGlzdGVuZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0xpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOTIxMkIwM0VFMTAwM0E1ODNBIC8q
IEpTQXVkaW9MaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1
ZGlvTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOTMxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQXVkaW9Ob2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkRBMTVFOTQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Ob2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZEQTE1RTk1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUGFubmVyTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvUGFubmVyTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RTk2MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0F1ZGlvUGFubmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0F1ZGlvUGFubmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
REExNUU5NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZEQTE1RTk2MTJCMDNFRTEwMDNBNTgzQSAvKiBKU1Bhbm5lck5vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQYW5uZXJOb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RTk3MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1
ZGlvUGFyYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRp
b1BhcmFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFOTgxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0F1ZGlvUGFyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVF
OTkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk4NCwxMCArMTM5ODQsMTAgQEAKIAkJ
RkRBMTVFOUMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Tb3VyY2VOb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Tb3VyY2VOb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZEQTE1RUJCMTJCMDNGMEIwMDNBNTgzQSAvKiBKU0NvbnZvbHZl
ck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb252b2x2
ZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRBMTVFQkMxMkIwM0Yw
QjAwM0E1ODNBIC8qIEpTQ29udm9sdmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0NvbnZvbHZlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkRBMTVFQzcxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFsdGltZUFuYWx5c2VyTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEQTE1RUM4MTJCMDNGNTAwMDNB
NTgzQSAvKiBKU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkRBMTVFQ0IxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRB
dWRpb05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGREExNUVDQzEyQjAz
RjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSmF2YVNjcmlwdEF1ZGlvTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGREExNUVDNzEyQjAzRjUwMDAzQTU4M0EgLyogSlNBbmFseXNlck5vZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbmFseXNlck5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREExNUVDODEyQjAzRjUwMDAzQTU4
M0EgLyogSlNBbmFseXNlck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBbmFseXNlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkRBMTVFQ0Ix
MkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGREExNUVDQzEyQjAzRjYxMDAzQTU4M0EgLyogSlNT
Y3JpcHRQcm9jZXNzb3JOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U2NyaXB0UHJvY2Vzc29yTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREEx
NUVDRjEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZWxheU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGREExNUVEMDEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWxheU5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkRBM0U5NTUxMzRBNDlFRjAwOEQ0QjVBIC8qIE9mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQwMDcsMTMgKzE0MDA3LDEzIEBACiAJCUZEQzU0RjAyMTM5OUIwREEwMDhEOTEx
NyAvKiBCaXF1YWRGaWx0ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJpcXVhZEZpbHRlck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRDNTRG
MDMxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEJpcXVhZEZpbHRlck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGREUyRDU1QTE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvSU9DYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGREVBNjI0MDE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT3NjaWxsYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZERUE2MjQxMTUyMTAyRTIwMDQ3
OURGMCAvKiBKU09zY2lsbGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNPc2NpbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZERUE2MjQwMTUy
MTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTT3NjaWxsYXRvck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGREVBNjI0MTE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9yTm9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09zY2lsbGF0b3JOb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERUE2MjQ0MTUyMTAyRkMwMDQ3OURGMCAv
KiBKU1dhdmVUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dhdmVUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZERUE2MjQ1MTUy
MTAyRkMwMDQ3OURGMCAvKiBKU1dhdmVUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1dhdmVUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREVB
QUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREVBQUFGMDEy
QjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGREVBQUFGRDEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNKYXZh
U2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU1NjcmlwdFByb2Nlc3Nv
ck5vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
Y3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkRGMDlEQzYxMzk5QjYyMjAwNjg4RTVCIC8qIEpTQmlxdWFkRmlsdGVyTm9kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JpcXVhZEZpbHRlck5vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREYwOURDNzEzOTlCNjIyMDA2ODhFNUIg
LyogSlNCaXF1YWRGaWx0ZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQmlxdWFkRmlsdGVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY2
QkFGNjEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPZmZsaW5lQXVkaW9Db21w
bGV0aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0MTUsNyAr
MjA0MTUsNyBAQAogCQkJCTdBMEU3NkQ0MTBCRjA1MDcwMEEwMjc2RSAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAgKi8sCiAJCQkJRjMxNjM5NkQxMzI5NDg3NjAwQTY0OUNCIC8qIEpT
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLywKIAkJCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkz
OUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovLAotCQkJCUZERUFBQUZE
MTJCMDJGNDkwMERDRjMzQiAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwICovLAor
CQkJCUZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU1NjcmlwdFByb2Nlc3Nvck5vZGVDdXN0
b20uY3BwICovLAogCQkJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBK
U0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkxNDY0RTA2QjEzNUVDMTA2MDBGREIwMEEgLyog
SlNNZWRpYUxpc3RDdXN0b20uY3BwICovLApAQCAtMjIwMjQsMTIgKzIyMDI0LDEyIEBACiAJCQkJ
RkQzMTVGQjExMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgKi8s
CiAJCQkJRkQzMTVGQjIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQnVmZmVyU291cmNlTm9kZS5o
ICovLAogCQkJCUZEMzE1RkIzMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsICovLAotCQkJCUZEMzE1RkI0MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxN
ZXJnZXIuY3BwICovLAotCQkJCUZEMzE1RkI1MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NoYW5u
ZWxNZXJnZXIuaCAqLywKLQkJCQlGRDMxNUZCNjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9DaGFu
bmVsTWVyZ2VyLmlkbCAqLywKLQkJCQlGRDMxNUZCNzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9D
aGFubmVsU3BsaXR0ZXIuY3BwICovLAotCQkJCUZEMzE1RkI4MTJCMDI2NzUwMEMxQTM1OSAvKiBB
dWRpb0NoYW5uZWxTcGxpdHRlci5oICovLAotCQkJCUZEMzE1RkI5MTJCMDI2NzUwMEMxQTM1OSAv
KiBBdWRpb0NoYW5uZWxTcGxpdHRlci5pZGwgKi8sCisJCQkJRkQzMTVGQjQxMkIwMjY3NTAwQzFB
MzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmNwcCAqLywKKwkJCQlGRDMxNUZCNTEyQjAyNjc1MDBD
MUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCAqLywKKwkJCQlGRDMxNUZCNjEyQjAyNjc1MDBD
MUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaWRsICovLAorCQkJCUZEMzE1RkI3MTJCMDI2NzUw
MEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCAqLywKKwkJCQlGRDMxNUZCODEyQjAy
Njc1MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oICovLAorCQkJCUZEMzE1RkI5MTJC
MDI2NzUwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCAqLywKIAkJCQlGRDMxNUZC
QTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGRDMxNUZCQjEy
QjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVGQkMxMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5pZGwgKi8sCkBAIC0yMjAzOCw5ICsyMjAzOCw5IEBA
CiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmlk
bCAqLywKIAkJCQlGRDMxNUZDMDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9HYWluLmggKi8sCiAJ
CQkJRkQzMTVGQzExMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbi5pZGwgKi8sCi0JCQkJRkQz
MTVGQzIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuY3BwICovLAotCQkJCUZEMzE1
RkMzMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0dhaW5Ob2RlLmggKi8sCi0JCQkJRkQzMTVGQzQx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvR2Fpbk5vZGUuaWRsICovLAorCQkJCUZEMzE1RkMyMTJC
MDI2NzUwMEMxQTM1OSAvKiBHYWluTm9kZS5jcHAgKi8sCisJCQkJRkQzMTVGQzMxMkIwMjY3NTAw
QzFBMzU5IC8qIEdhaW5Ob2RlLmggKi8sCisJCQkJRkQzMTVGQzQxMkIwMjY3NTAwQzFBMzU5IC8q
IEdhaW5Ob2RlLmlkbCAqLywKIAkJCQlGRDMxNUZDNTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9M
aXN0ZW5lci5jcHAgKi8sCiAJCQkJRkQzMTVGQzYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvTGlz
dGVuZXIuaCAqLywKIAkJCQlGRDMxNUZDNzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5l
ci5pZGwgKi8sCkBAIC0yMjA1MSw5ICsyMjA1MSw5IEBACiAJCQkJRkQzMTVGQ0MxMkIwMjY3NTAw
QzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggKi8sCiAJCQkJRkQzMTVGQ0QxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5jcHAgKi8sCiAJCQkJRkQzMTVGQ0UxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5oICovLAotCQkJCUZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb1Bhbm5lck5vZGUuY3BwICovLAotCQkJCUZEMzE1RkQwMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb1Bhbm5lck5vZGUuaCAqLywKLQkJCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9QYW5uZXJOb2RlLmlkbCAqLywKKwkJCQlGRDMxNUZDRjEyQjAyNjc1MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5jcHAgKi8sCisJCQkJRkQzMTVGRDAxMkIwMjY3NTAwQzFBMzU5IC8qIFBh
bm5lck5vZGUuaCAqLywKKwkJCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9k
ZS5pZGwgKi8sCiAJCQkJRkQzMTVGRDIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uY3Bw
ICovLAogCQkJCUZEMzE1RkQzMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmggKi8sCiAJ
CQkJRkQzMTVGRDQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaWRsICovLApAQCAtMjIw
OTAsOSArMjIwOTAsOSBAQAogCQkJCUZENkVEMkMxMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcCAqLywKIAkJCQlGRDZFRDJDMjEzNkI4RTQyMDAzQ0YwNzIgLyog
RHluYW1pY3NDb21wcmVzc29yTm9kZS5oICovLAogCQkJCUZENkVEMkM5MTM2QjhFOUQwMDNDRjA3
MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCAqLywKLQkJCQlGRDMxNUZFQjEyQjAyNjc2
MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgKi8sCi0JCQkJRkQzMTVGRUMxMkIw
MjY3NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuaCAqLywKLQkJCQlGRDMxNUZFRDEy
QjAyNjc2MDBDMUEzNTkgLyogSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwgKi8sCisJCQkJRkQzMTVG
RUIxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuY3BwICovLAorCQkJCUZE
MzE1RkVDMTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggKi8sCisJCQkJ
RkQzMTVGRUQxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaWRsICovLAog
CQkJCUZENkYyNTI5MTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwICovLAogCQkJCUZENkYyNTJBMTNGNUVGMEUwMDY1MTY1RiAvKiBNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCAqLywKIAkJCQlGRDZGMjUyQjEzRjVFRjBFMDA2NTE2NUYgLyogTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCAqLywKQEAgLTIyMTA0LDE0ICsyMjEwNCwxNCBA
QAogCQkJCUZEQTNFOTVEMTM0QTQ5RkYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9Db21wbGV0aW9u
RXZlbnQuaWRsICovLAogCQkJCUZEQTNFOTU3MTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEQTNFOTU4MTM0QTQ5RUYwMDhENEI1QSAv
KiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKLQkJCQlGRDU4MUZBQjE1MjBGOTFG
MDAzQTdBNzUgLyogT3NjaWxsYXRvci5jcHAgKi8sCi0JCQkJRkQ1ODFGQUMxNTIwRjkxRjAwM0E3
QTc1IC8qIE9zY2lsbGF0b3IuaCAqLywKLQkJCQlGRDU4MUZBRDE1MjBGOTFGMDAzQTdBNzUgLyog
T3NjaWxsYXRvci5pZGwgKi8sCisJCQkJRkQ1ODFGQUIxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2ls
bGF0b3JOb2RlLmNwcCAqLywKKwkJCQlGRDU4MUZBQzE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxs
YXRvck5vZGUuaCAqLywKKwkJCQlGRDU4MUZBRDE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRv
ck5vZGUuaWRsICovLAogCQkJCUZEMzE1RkYxMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFu
YWx5c2VyLmNwcCAqLywKIAkJCQlGRDMxNUZGMjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVB
bmFseXNlci5oICovLAotCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFu
YWx5c2VyTm9kZS5jcHAgKi8sCi0JCQkJRkQzMTVGRjQxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0
aW1lQW5hbHlzZXJOb2RlLmggKi8sCi0JCQkJRkQzMTVGRjUxMkIwMjY3NjAwQzFBMzU5IC8qIFJl
YWx0aW1lQW5hbHlzZXJOb2RlLmlkbCAqLywKKwkJCQlGRDMxNUZGMzEyQjAyNjc2MDBDMUEzNTkg
LyogQW5hbHlzZXJOb2RlLmNwcCAqLywKKwkJCQlGRDMxNUZGNDEyQjAyNjc2MDBDMUEzNTkgLyog
QW5hbHlzZXJOb2RlLmggKi8sCisJCQkJRkQzMTVGRjUxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5
c2VyTm9kZS5pZGwgKi8sCiAJCQkJRkQ3RjI5OEExM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFw
ZXJEU1BLZXJuZWwuY3BwICovLAogCQkJCUZEN0YyOThCMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZl
U2hhcGVyRFNQS2VybmVsLmggKi8sCiAJCQkJRkQ3RjI5OEMxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdh
dmVTaGFwZXJOb2RlLmNwcCAqLywKQEAgLTIyMjI2LDI0ICsyMjIyNiwyNCBAQAogCQkJCUZERjdF
OUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLywKIAkJCQlG
REExNUU4MzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwICov
LAogCQkJCUZEQTE1RTg0MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oICovLAotCQkJCUZEQTE1RTg1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1l
cmdlci5jcHAgKi8sCi0JCQkJRkRBMTVFODYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFu
bmVsTWVyZ2VyLmggKi8sCi0JCQkJRkRBMTVFODcxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9D
aGFubmVsU3BsaXR0ZXIuY3BwICovLAotCQkJCUZEQTE1RTg4MTJCMDNFRTEwMDNBNTgzQSAvKiBK
U0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggKi8sCisJCQkJRkRBMTVFODUxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuY3BwICovLAorCQkJCUZEQTE1RTg2MTJCMDNFRTEwMDNB
NTgzQSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggKi8sCisJCQkJRkRBMTVFODcxMkIwM0VFMTAw
M0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgKi8sCisJCQkJRkRBMTVFODgxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNwbGl0dGVyTm9kZS5oICovLAogCQkJCUZEQTE1RTg5
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkRBMTVFOEEx
MkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkRBMTVFOEIxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEQTE1
RThDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi8sCiAJCQkJ
RkRBMTVFOEQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluLmNwcCAqLywKIAkJCQlGREEx
NUU4RTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4uaCAqLywKLQkJCQlGREExNUU4RjEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmNwcCAqLywKLQkJCQlGREExNUU5MDEy
QjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW5Ob2RlLmggKi8sCisJCQkJRkRBMTVFOEYxMkIw
M0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuY3BwICovLAorCQkJCUZEQTE1RTkwMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmggKi8sCiAJCQkJRkRBMTVFOTExMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9MaXN0ZW5lci5jcHAgKi8sCiAJCQkJRkRBMTVFOTIxMkIwM0VFMTAwM0E1ODNB
IC8qIEpTQXVkaW9MaXN0ZW5lci5oICovLAogCQkJCUZEQTE1RTkzMTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0F1ZGlvTm9kZS5jcHAgKi8sCiAJCQkJRkRBMTVFOTQxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
QXVkaW9Ob2RlLmggKi8sCi0JCQkJRkRBMTVFOTUxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Q
YW5uZXJOb2RlLmNwcCAqLywKLQkJCQlGREExNUU5NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b1Bhbm5lck5vZGUuaCAqLywKKwkJCQlGREExNUU5NTEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5u
ZXJOb2RlLmNwcCAqLywKKwkJCQlGREExNUU5NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJO
b2RlLmggKi8sCiAJCQkJRkRBMTVFOTcxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5j
cHAgKi8sCiAJCQkJRkRBMTVFOTgxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5oICov
LAogCQkJCUZEQTE1RTk5MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmNwcCAqLywKQEAgLTIyMjU4LDE4ICsyMjI1OCwxOCBAQAogCQkJCUZEQTE1RUQwMTJCMDNGOTQw
MDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5oICovLAogCQkJCUZENzg2OEI3MTM2Qjk5OTIwMEQ0MDNE
RiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwICovLAogCQkJCUZENzg2OEI4MTM2Qjk5
OTIwMEQ0MDNERiAvKiBKU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLywKLQkJCQlGREExNUVD
QjEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCAqLywKLQkJCQlG
REExNUVDQzEyQjAzRjYxMDAzQTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmggKi8sCisJ
CQkJRkRBMTVFQ0IxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAg
Ki8sCisJCQkJRkRBMTVFQ0MxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9k
ZS5oICovLAogCQkJCUZEMjNBMTIzMTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAgKi8sCiAJCQkJRkQyM0ExMjQxM0Y1RkE1OTAwRjY3MDAxIC8qIEpT
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggKi8sCiAJCQkJRkRCRDQ4MEExNTlCQzY4NzAw
OTNFQjRGIC8qIEpTTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwICovLAogCQkJCUZEQkQ0
ODBCMTU5QkM2ODcwMDkzRUI0RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggKi8s
CiAJCQkJRkRGNkJBRjYxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50LmNwcCAqLywKIAkJCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLywKLQkJCQlGREVBNjI0MDE1MjEwMkUyMDA0NzlERjAg
LyogSlNPc2NpbGxhdG9yLmNwcCAqLywKLQkJCQlGREVBNjI0MTE1MjEwMkUyMDA0NzlERjAgLyog
SlNPc2NpbGxhdG9yLmggKi8sCi0JCQkJRkRBMTVFQzcxMkIwM0Y1MDAwM0E1ODNBIC8qIEpTUmVh
bHRpbWVBbmFseXNlck5vZGUuY3BwICovLAotCQkJCUZEQTE1RUM4MTJCMDNGNTAwMDNBNTgzQSAv
KiBKU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggKi8sCisJCQkJRkRFQTYyNDAxNTIxMDJFMjAwNDc5
REYwIC8qIEpTT3NjaWxsYXRvck5vZGUuY3BwICovLAorCQkJCUZERUE2MjQxMTUyMTAyRTIwMDQ3
OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmggKi8sCisJCQkJRkRBMTVFQzcxMkIwM0Y1MDAwM0E1
ODNBIC8qIEpTQW5hbHlzZXJOb2RlLmNwcCAqLywKKwkJCQlGREExNUVDODEyQjAzRjUwMDAzQTU4
M0EgLyogSlNBbmFseXNlck5vZGUuaCAqLywKIAkJCQlGRDgyRDdGNTEzRDRDOEJEMDA0RTQzNzIg
LyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgKi8sCiAJCQkJRkQ4MkQ3RjYxM0Q0QzhCRDAwNEU0Mzcy
IC8qIEpTV2F2ZVNoYXBlck5vZGUuaCAqLywKIAkJCQlGREVBNjI0NDE1MjEwMkZDMDA0NzlERjAg
LyogSlNXYXZlVGFibGUuY3BwICovLApAQCAtMjIzNzAsOCArMjIzNzAsOCBAQAogCQkJCUZEMzE1
RkZDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRkQzMTVGRkYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5l
bE1lcmdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRDMxNUZGRjEyQjAy
Njc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZE
MzE2MDAyMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5h
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjIzODEsMTMgKzIyMzgxLDEz
IEBACiAJCQkJRkQzMTYwODMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJl
YWRlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMEExMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvR2Fpbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwMEQxMkIwMjY3NjAwQzFBMzU5
IC8qIEF1ZGlvR2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEMzE2MDBEMTJCMDI2NzYw
MEMxQTM1OSAvKiBHYWluTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFMkQ1NUIxNTlFNjZF
QjAwRENDQ0Y4IC8qIEF1ZGlvSU9DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
MTAxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDEzMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEMzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVJbnB1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwMTgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFu
bmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8q
IFBhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDFEMTJCMDI2NzYwMEMxQTM1
OSAvKiBBdWRpb1BhcmFtLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAy
MDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjM4NTIsNyArMjM4NTIsNyBAQAogCQkJCUUxMzRGNUFCMTJFRTM0M0YwMDRFQzU4RCAv
KiBJbnRSZWN0SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzUwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTc2MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwMzYxMkIwMjY3
NjAwQzFBMzU5IC8qIEphdmFTY3JpcHRBdWRpb05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZE
MzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJz
dHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDRjAxMTA1MDcwQzQwMDA5OUZB
QiAvKiBKU0FycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIzODYyLDE1ICsyMzg2Miwx
NSBAQAogCQkJCUZEQTE1RTlFMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZl
ckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBMDEyQjAzRUUxMDAzQTU4M0Eg
LyogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEQTE1RUEy
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1lcmdlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRkRBMTVFQTQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9DaGFubmVsU3BsaXR0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0NoYW5u
ZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGREExNUVBNDEyQjAzRUUxMDAzQTU4
M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVB
NjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEQTE1RUE4MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREExNUVBQTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0dhaW4u
aCBpbiBIZWFkZXJzICovLAotCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlv
R2Fpbk5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0dhaW5Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVBRTEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVCMDEyQjAz
RUUxMDAzQTU4M0EgLyogSlNBdWRpb05vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEQTE1RUIy
MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkRBMTVFQjQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkRBMTVFQjYxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9Qcm9jZXNz
aW5nRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUI4MTJCMDNFRTEwMDNBNTgzQSAv
KiBKU0F1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA5Myw3ICsyNDA5Myw3
IEBACiAJCQkJNDlFRUNGMDcxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFRUNGMDUxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5OTYxMDQyRDJEMzAwMDlENDQ3IC8qIEpTSW50OEFy
cmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQlGREExNUVDRTEyQjAzRjYxMDAzQTU4M0EgLyogSlNK
YXZhU2NyaXB0QXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGREExNUVDRTEyQjAzRjYx
MDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzVGQUVEMjBEQ0ZEOTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODY2MjlEMzA5REEyQjQ4MDA5NjMzQTUgLyogSlNLZXlib2FyZEV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVGNDU0MzBGN0MzQjVGMDBEN0MxRkIgLyogSlNMYXp5
RXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDEzMSw3ICsyNDEzMSw3IEBACiAJ
CQkJNkVCRjBFNzcxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3N0ExN0FBNzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRGNkJBRjkxMzRBNEM5ODAwODIyOTIwIC8q
IEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGREVB
NjI0MzE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGREVBNjI0MzE1MjEwMkUyMDA0NzlERjAgLyogSlNPc2NpbGxhdG9yTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEwRDU3NDEwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyODRCQjExMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRy
YW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFD
RkQxIC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxNDgsNyArMjQxNDgs
NyBAQAogCQkJCUI2NThGRkEyMTUyMkVGM0EwMERENTU5NSAvKiBKU1JhZGlvTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1REYzMjAyMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1JhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEMjNDQTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4
Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8q
IEpTUmVhbHRpbWVBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEQTE1RUNBMTJC
MDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
RTJGMTIwQzFCNTgzODAwMjAyMzVGIC8qIEpTUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5
OEFFQ0UxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzREQTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNv
bG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTcwLDcgKzI0NTcwLDcgQEAKIAkJCQkwMDE0NjI4
QjEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QkM2QTM4MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QkM2QTNBMTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2FnZVJl
Y29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQ1ODFGQUYxNTIwRjkxRjAwM0E3QTc1IC8qIE9z
Y2lsbGF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZENTgxRkFGMTUyMEY5MUYwMDNBN0E3NSAv
KiBPc2NpbGxhdG9yTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REQwRTgxQjhERDAw
QjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRDU3MzcwQTVD
NzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzRB
QkE1MEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ2ODQsNyArMjQ2ODQsNyBAQAogCQkJCUY1NUIzRENFMTI1MUYxMkQwMDNF
RjI2OSAvKiBSYW5nZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyN0MxMUQz
MzNFRDAwOTcyOTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwM0MxMkIwMjY3NjAwQzFBMzU5IC8qIFJlYWx0aW1lQW5hbHlzZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZEMzE2MDNFMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2Vy
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkQzMTYwM0UxMkIwMjY3NjAwQzFBMzU5IC8qIEFu
YWx5c2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVG
IC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MkVBM0JCMTU4NUNGNTUwMDRGQUEyNiAv
KiBSZWZDb3VudGVkU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTgzMUFFNEExNTQy
MjVDOTAwRkUyNjQ0IC8qIFJlZmVycmVyUG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDA5
LDE5ICsyNjAwOSwxOSBAQAogCQkJCUZEMzE2MDdCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBCQjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9CdXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA3RDEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZEMzE1RkZFMTJCMDI2NzYw
MEMxQTM1OSAvKiBBdWRpb0NoYW5uZWxNZXJnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkQz
MTYwMDExMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZEMzE1RkZFMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDMxNjAwMTEyQjAyNjc2MDBDMUEzNTkgLyogQ2hh
bm5lbFNwbGl0dGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAwNDEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEJD
MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDA3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA4MTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQkUxMkIwMjcy
QTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
RDMxNjAwQzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9HYWluTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRDMxNjAwQzEyQjAyNjc2MDBDMUEzNTkgLyogR2Fpbk5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkQzMTYwMEYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMTIxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAxNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9Ob2RlSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMTcxMkIwMjY3NjAwQzFB
MzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRDMxNjAxOTEy
QjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZEMzE2MDE5MTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDFDMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMzU5MThGMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxp
bmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMUYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1
ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcwNTYsNyArMjcwNTYs
NyBAQAogCQkJCUIyNzUzNTdEMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0TWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI3NTM1NjIwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU3RTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUZEMzE2MDM1MTJCMDI2NzYwMEMxQTM1OSAvKiBKYXZh
U2NyaXB0QXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEMzE2MDM1MTJCMDI2NzYw
MEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
ODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDRjAwMTA1MDcwQzQwMDA5OUZBQiAvKiBKU0Fy
cmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcwNjgsMTYgKzI3MDY4LDE2IEBACiAJ
CQkJRkRGN0U5QzMxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGREExNUU5RjEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRFQUFBRjMxMkIwMkVFNDAw
RENGMzNCIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUZEQTE1RUExMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ2hhbm5lbE1lcmdlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGREExNUVBMTEyQjAzRUUx
MDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
REExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZEQTE1RUE1MTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREVBQUFGNDEyQjAyRUU0MDBEQ0YzM0IgLyogSlNB
dWRpb0NvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQTcxMkIwM0VF
MTAwM0E1ODNBIC8qIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkRBMTVFQTkxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9HYWluLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUZEQTE1RUFCMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvR2Fpbk5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRkRBMTVFQUIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQUQxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
QXVkaW9MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBRjEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkRBMTVFQjExMkIw
M0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZEQTE1RUIxMTJCMDNFRTEwMDNBNTgzQSAvKiBKU1Bhbm5lck5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkRBMTVFQjMxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQXVkaW9QYXJhbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGREExNUVCNTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb1Byb2Nl
c3NpbmdFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVCNzEyQjAzRUUxMDAzQTU4
M0EgLyogSlNBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzM2MSw4ICsy
NzM2MSw4IEBACiAJCQkJNDlFRUNGMDYxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwNDEwNTA3MEM0MDAwOTlGQUIgLyogSlNJbnQz
MkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU0ludDhBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGREExNUVDRDEyQjAzRjYxMDAz
QTU4M0EgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZE
RUFBQUZFMTJCMDJGNDkwMERDRjMzQiAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRkRBMTVFQ0QxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGREVBQUFGRTEyQjAyRjQ5MDBE
Q0YzM0IgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDNUZBRUQxMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1RkFFRTcwRENGREE2ODAwRDU4Rjc4IC8qIEpTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODY2MjlENDA5REEy
QjQ4MDA5NjMzQTUgLyogSlNLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc0
MTksNyArMjc0MTksNyBAQAogCQkJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1Rl
eHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAy
RjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2
QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkRFQTYyNDIxNTIxMDJFMjAwNDc5REYwIC8qIEpTT3NjaWxs
YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGREVBNjI0MjE1MjEwMkUyMDA0NzlERjAgLyog
SlNPc2NpbGxhdG9yTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBENTc0MDBBNUM3ODY3
MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0
QkIyMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOEE5QTU4NzQxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yNzQzOCw3ICsyNzQzOCw3IEBACiAJCQkJQjY1OEZGQTExNTIy
RUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NURGMzIwMTA5RDFDQzYwMDAwQkUzMjUgLyogSlNSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlEMjNDQTU1RjBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlGREExNUVDOTEyQjAzRjUwMDAzQTU4M0EgLyogSlNSZWFsdGltZUFuYWx5
c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGREExNUVDOTEyQjAzRjUwMDAzQTU4M0Eg
LyogSlNBbmFseXNlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRTJGMTEwQzFCNTgz
NzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk4QUVDRDEzRjlE
NkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OTk4QUVENDEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3ODcwLDcgKzI3
ODcwLDcgQEAKIAkJCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBMzcxNTA1RjA4MTAwMUI3NEFDIC8qIE9y
aWdpblF1b3RhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEzOTE1MDVGMDgx
MDAxQjc0QUMgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkQ1
ODFGQUUxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkQ1ODFGQUUxNTIwRjkxRjAwM0E3QTc1IC8qIE9zY2lsbGF0b3JOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMEQ1NzM2MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzk1MCw3ICsyNzk1MCw3IEBACiAJCQkJOTc4RDA3
QkExNDVBMEYzQzAwOTY5MDhEIC8qIFJhbmdlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1NUIzRENEMTI1MUYxMkQwMDNFRjI2OSAvKiBSYW5nZUlucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRDMxNjAzRDEyQjAyNjc2MDBDMUEzNTkgLyogUmVh
bHRpbWVBbmFseXNlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQzMTYwM0QxMkIwMjY3
NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FCNDE4
MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMx
QjRCMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMkMzREEyQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTlmMTk4ODE4ODc3ZmYwZGEwMWU3NmFkYTU5MjQ2OTFiMzFjYWUzYi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0KLSNpbmNsdWRlICJKYXZhU2NyaXB0QXVkaW9Ob2Rl
LmgiCi0KLSNpbmNsdWRlICJKU0phdmFTY3JpcHRBdWRpb05vZGUuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEpTSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQot
ewotICAgIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0phdmFT
Y3JpcHRBdWRpb05vZGUqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pOwotICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0
aW5nRmxhZyk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKLSAgICBzdGF0aWNfY2FzdDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4o
dGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTY3JpcHRQcm9jZXNzb3JO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2NyaXB0UHJvY2Vz
c29yTm9kZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VhMjdlN2M5YjJmYzg1YzAyNTEzYzQxNzhi
NTQ1MGY0YzRhZDhhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2NyaXB0UHJvY2Vzc29yTm9kZUN1c3RvbS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisK
KyNpbmNsdWRlICJTY3JpcHRQcm9jZXNzb3JOb2RlLmgiCisKKyNpbmNsdWRlICJKU1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIEpTU2NyaXB0UHJvY2Vzc29yTm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTU2NyaXB0UHJvY2Vzc29yTm9k
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NjcmlwdFByb2Nlc3Nvck5vZGUqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIENP
TVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICBzdGF0
aWNfY2FzdDxTY3JpcHRQcm9jZXNzb3JOb2RlKj4odGhpc09iamVjdC0+aW1wbCgpKS0+dmlzaXRK
U0V2ZW50TGlzdGVuZXJzKHZpc2l0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRl
eCBlMmVjODJiZDMxN2NhNTRlYTQxNTUyMzVmODA1ZmUyNGNhNTliZTAwLi4xNDZmNmE4OTlhNzgz
MzQyNmM1N2IwMDc3Yjc2YWUzODI1ZmRhNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApA
QCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSURCUmVxdWVz
dDsKICAgICBjbGFzcyBJREJUcmFuc2FjdGlvbjsKICAgICBjbGFzcyBJREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdDsKLSAgICBjbGFzcyBKYXZhU2NyaXB0QXVkaW9Ob2RlOworICAgIGNsYXNzIFNjcmlw
dFByb2Nlc3Nvck5vZGU7CiAgICAgY2xhc3MgTG9jYWxNZWRpYVN0cmVhbTsKICAgICBjbGFzcyBN
ZWRpYUNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTWVkaWFTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA3YzM5YmQzZjQzNmU0MWZmMDg2Y2NmMGQ1MTA4
ZTdlNWI0ZWRiMjgxLi43ZTg4ZWE0MDliMjEzNmRiMDhlNDhlMGM0NDY0Y2IxNjA4MmM1OWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTEzLDcgKzEzLDcg
QEAgSURCT3BlbkRCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBJREJSZXF1
ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKIElEQlRyYW5zYWN0aW9uIGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFs
PUlOREVYRURfREFUQUJBU0UKLUphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FV
RElPCitTY3JpcHRQcm9jZXNzb3JOb2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwogTG9jYWxNZWRp
YVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhQ29udHJvbGxlciBjb25kaXRp
b25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGI3OWY5OTJlY2Rm
MjYyNjNmODI5MzQxYTE2OGMyOGZhZDc4M2U1NS4uYzU1M2RmYjQ5OTc0NDZlNzJjZTUwNTU3NThi
ZjI5MWVmZTI0YzdkNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTE1ICBDaHJpcyBSb2dlcnMgIDxjcm9n
ZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHNvbWUgQXVkaW9Ob2RlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9y
bWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2Ug
YWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvZG8td2ViY29yZS1yZW5hbWU6CisKIDIwMTItMTAtMTUgIFlhZWwgQWhhcm9uICA8
eWFlbC5haGFyb25AaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ2Fubm90IHNldCBl
dmFzIGVuZ2luZSBmcm9tIGNvbW1hbmQgbGluZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9k
by13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKaW5kZXgg
YzkzZjBmNTM2ZTcyMGYxODcwZGViNTA3ZDBlNGEzNDU1MmU2NWU2ZS4uY2QzY2RlZTdhOTZlMTNh
YzkzOWJlYzYyYTZjYzQ1NGY4Njk2YjY5ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kby13
ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC05
MywxMCArOTMsMTYgQEAgc3ViIHdhbnRlZAogCiAjIFNldHRpbmcgaXNET01UeXBlUmVuYW1lIHRv
IDEgcmF0aGVyIHRoYW4gMCBleHBhbmRzIHRoZSByZWdleHBzIHVzZWQKICMgYmVsb3cgdG8gaGFu
ZGxlIGN1c3RvbSBKYXZhU2NyaXB0IGJpbmRpbmdzLgotbXkgJGlzRE9NVHlwZVJlbmFtZSA9IDA7
CitteSAkaXNET01UeXBlUmVuYW1lID0gMTsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1l
cyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJNZWRpYUNvbnRyb2xzIiA9PiAiTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQiLAorICAgICJKYXZhU2NyaXB0QXVkaW9Ob2RlIiA9PiAiU2NyaXB0
UHJvY2Vzc29yTm9kZSIsCisgICAgIlJlYWx0aW1lQW5hbHlzZXJOb2RlIiA9PiAiQW5hbHlzZXJO
b2RlIiwKKyAgICAiQXVkaW9HYWluTm9kZSIgPT4gIkdhaW5Ob2RlIiwKKyAgICAiQXVkaW9QYW5u
ZXJOb2RlIiA9PiAiUGFubmVyTm9kZSIsCisgICAgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVyIiA9PiAi
Q2hhbm5lbFNwbGl0dGVyTm9kZSIsCisgICAgIkF1ZGlvQ2hhbm5lbE1lcmdlciIgPT4gIkNoYW5u
ZWxNZXJnZXJOb2RlIiwKKyAgICAiT3NjaWxsYXRvciIgPT4gIk9zY2lsbGF0b3JOb2RlIiwKICk7
CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0gKAo=
</data>
<flag name="review"
          id="181887"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>