<?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>188851</bug_id>
          
          <creation_ts>2018-08-22 09:30:33 -0700</creation_ts>
          <short_desc>Move files in WebCore project to match Xcode folder structure</short_desc>
          <delta_ts>2018-08-22 12:34:18 -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>WebCore Misc.</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188754</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>pvollan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1452663</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 09:30:33 -0700</bug_when>
    <thetext>Before running the tool I wrote for Bug 188754 (Tool to fix folders that should map to directories in Xcode project files), we need to move 6 files in the WebCore project so that they appear where the Xcode project shows them in its folders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452671</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 09:44:03 -0700</bug_when>
    <thetext>This patch mostly consists of 6 file moves (and fixing 3 style warnings for WAKViewInternal.h):

[master 4e8c3d6446f] Move files in WebCore project to match Xcode folder structure &lt;https://webkit.org/b/188851&gt;
 11 files changed, 40 insertions(+), 11 deletions(-)
 rename Source/WebCore/{ =&gt; Scripts}/LocalizableStrings.pm (100%)
 rename Source/WebCore/{ =&gt; Scripts}/extract-localizable-strings.pl (100%)
 rename Source/WebCore/platform/audio/{ =&gt; cocoa}/WebAudioBufferList.cpp (100%)
 rename Source/WebCore/platform/audio/{ =&gt; cocoa}/WebAudioBufferList.h (100%)
 rename Source/WebCore/platform/graphics/avfoundation/{ =&gt; objc}/MediaSampleAVFObjC.h (100%)
 rename Source/WebCore/platform/{ =&gt; ios/wak}/WAKViewInternal.h (90%)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452672</commentid>
    <comment_count>2</comment_count>
      <attachid>347810</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 09:44:11 -0700</bug_when>
    <thetext>Created attachment 347810
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452675</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-08-22 09:45:51 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #1)
&gt; This patch mostly consists of 6 file moves (and fixing 3 style warnings for
&gt; WAKViewInternal.h):
&gt; 
&gt; [master 4e8c3d6446f] Move files in WebCore project to match Xcode folder
&gt; structure &lt;https://webkit.org/b/188851&gt;
&gt;  11 files changed, 40 insertions(+), 11 deletions(-)
&gt;  rename Source/WebCore/{ =&gt; Scripts}/LocalizableStrings.pm (100%)
&gt;  rename Source/WebCore/{ =&gt; Scripts}/extract-localizable-strings.pl (100%)
&gt;  rename Source/WebCore/platform/audio/{ =&gt; cocoa}/WebAudioBufferList.cpp
&gt; (100%)
&gt;  rename Source/WebCore/platform/audio/{ =&gt; cocoa}/WebAudioBufferList.h (100%)
&gt;  rename Source/WebCore/platform/graphics/avfoundation/{ =&gt;
&gt; objc}/MediaSampleAVFObjC.h (100%)
&gt;  rename Source/WebCore/platform/{ =&gt; ios/wak}/WAKViewInternal.h (90%)

This is the WAKViewInternal.h change:

diff --git a/Source/WebCore/platform/WAKViewInternal.h b/Source/WebCore/platform/ios/wak/WAKViewInternal.h
similarity index 90%
rename from Source/WebCore/platform/WAKViewInternal.h
rename to Source/WebCore/platform/ios/wak/WAKViewInternal.h
index 94f98dd299c..cad06283719 100644
--- a/Source/WebCore/platform/WAKViewInternal.h
+++ b/Source/WebCore/platform/ios/wak/WAKViewInternal.h
@@ -28,13 +28,15 @@
 #import &quot;WAKView.h&quot;
 #import &quot;WKView.h&quot;
 
-@interface WAKView () {
+@interface WAKView ()
+{
 @package
     WKViewContext viewContext;
     WKViewRef viewRef;
 
-    NSMutableSet *subviewReferences;    // This array is only used to keep WAKViews alive.
-                                        // The actual subviews are maintained by the WKView.
+    // This array is only used to keep WAKViews alive.
+    // The actual subviews are maintained by the WKView.
+    NSMutableSet *subviewReferences;
 
     BOOL _isHidden;
     BOOL _drawsOwnDescendants;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452746</commentid>
    <comment_count>4</comment_count>
      <attachid>347810</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-22 12:33:53 -0700</bug_when>
    <thetext>Comment on attachment 347810
Patch v1

Clearing flags on attachment: 347810

Committed r235190: &lt;https://trac.webkit.org/changeset/235190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452747</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-22 12:33:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452748</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-22 12:34:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/43616125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347810</attachid>
            <date>2018-08-22 09:44:11 -0700</date>
            <delta_ts>2018-08-22 12:33:53 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-188851-20180822094411.patch</filename>
            <type>text/plain</type>
            <size>85607</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y3OTUxODRmMjkzYjc0
M2U1NmZhOTQzOGU5ZjIwNThmNDYzMjNkNy4uYWRhZmFmYzNkZmE2NmFmYzdkZmRjYzQyMmY2ODM0
ZmFjMDJmZjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA4LTIyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBmaWxlcyBpbiBX
ZWJDb3JlIHByb2plY3QgdG8gbWF0Y2ggWGNvZGUgZm9sZGVyIHN0cnVjdHVyZQorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg4ODUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9Mb2NhbGl6YWJsZVN0cmluZ3MucG06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Mb2NhbGl6YWJsZVN0cmluZ3MucG0uCisgICAgICAg
ICogU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGw6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwuCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGUgdG8gbWF0Y2ggbmV3IGxv
Y2F0aW9uIG9mIGZpbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlv
QnVmZmVyTGlzdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVB
VkZPYmpDLmguCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3SW50ZXJuYWwuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dBS1ZpZXdJbnRlcm5hbC5oLgor
ICAgICAgICAgIEFsc28gZml4IDMgd2Via2l0LXN0eWxlIHdhcm5pbmdzLgorCiAyMDE4LTA4LTIy
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN0
YWxlIGZpbGUgcmVmZXJlbmNlcyBpbiBXZWJDb3JlIFhjb2RlIHByb2plY3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0xvY2FsaXphYmxlU3RyaW5ncy5wbSBiL1NvdXJjZS9XZWJDb3JlL0xv
Y2FsaXphYmxlU3RyaW5ncy5wbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjM4OWM1
NjZmNGI4YjAyMjJmYzE2ZjZiMGM5ZDllMWQ5OTBkYTBlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Mb2NhbGl6YWJsZVN0cmlu
Z3MucG0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDksIDIwMTAsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0j
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotdXNlIHN0
cmljdDsKLQotbXkgJHRyZWF0V2FybmluZ3NBc0Vycm9ycyA9IDA7Ci0KLXN1YiBzZXRUcmVhdFdh
cm5pbmdzQXNFcnJvcnMoJCkKLXsKLSAgICAoJHRyZWF0V2FybmluZ3NBc0Vycm9ycykgPSBAXzsK
LX0KLQotbXkgJHNhd0Vycm9yID0gMDsKLQotc3ViIHNhd0Vycm9yKCkKLXsKLSAgICByZXR1cm4g
JHNhd0Vycm9yOwotfQotCi1zdWIgZW1pdEVycm9yKCQkJCkKLXsKLSAgICBteSAoJGZpbGUsICRs
aW5lLCAkbWVzc2FnZSkgPSBAXzsKLSAgICBwcmludCAiJGZpbGU6JGxpbmU6ICRtZXNzYWdlXG4i
OwotICAgICRzYXdFcnJvciA9IDE7Ci19Ci0KLXN1YiBlbWl0V2FybmluZygkJCQpCi17Ci0gICAg
bXkgKCRmaWxlLCAkbGluZSwgJG1lc3NhZ2UpID0gQF87Ci0gICAgbXkgJHByZWZpeCA9ICR0cmVh
dFdhcm5pbmdzQXNFcnJvcnMgPyAiIiA6ICJ3YXJuaW5nOiAiOwotICAgIHByaW50ICIkZmlsZTok
bGluZTogJHByZWZpeCRtZXNzYWdlXG4iOwotICAgICRzYXdFcnJvciA9IDEgaWYgJHRyZWF0V2Fy
bmluZ3NBc0Vycm9yczsKLX0KLQotIyBVbmVzY2FwZXMgQyBsYW5ndWFnZSBoZXhhZGVjaW1hbCBl
c2NhcGUgc2VxdWVuY2VzLgotc3ViIHVuZXNjYXBlSGV4U2VxdWVuY2UoJCkKLXsKLSAgICBteSAo
JG9yaWdpbmFsU3RyKSA9IEBfOwotCi0gICAgbXkgJGVzY2FwZWRTdHIgPSAkb3JpZ2luYWxTdHI7
Ci0gICAgbXkgJHVuZXNjYXBlZFN0ciA9ICIiOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBp
ZiAoJGVzY2FwZWRTdHIgPX4gcy1eXFx4KFtbOnhkaWdpdDpdXSspLS0pIHsKLSAgICAgICAgICAg
IGlmICgyNTYgPD0gaGV4KCQxKSkgewotICAgICAgICAgICAgICAgIHByaW50ICJIZXhhZGVjaW1h
bCBlc2NhcGUgc2VxdWVuY2Ugb3V0IG9mIHJhbmdlOiBcXHgkMVxuIjsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdW5kZWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkdW5lc2NhcGVkU3Ry
IC49IHBhY2soIkgqIiwgJDEpOwotICAgICAgICB9IGVsc2lmICgkZXNjYXBlZFN0ciA9fiBzLV4o
LiktLSkgewotICAgICAgICAgICAgJHVuZXNjYXBlZFN0ciAuPSAkMTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHJldHVybiAkdW5lc2NhcGVkU3RyOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1teSAka2V5Q29sbGlzaW9uQ291bnQgPSAwOwotCi1zdWIga2V5Q29sbGlzaW9uQ291bnQo
KQotewotICAgIHJldHVybiAka2V5Q29sbGlzaW9uQ291bnQ7Ci19Ci0KLW15ICRsb2NhbGl6ZWRD
b3VudCA9IDA7Ci0KLXN1YiBsb2NhbGl6ZWRDb3VudCgpCi17Ci0gICAgcmV0dXJuICRsb2NhbGl6
ZWRDb3VudDsKLX0KLQotbXkgJXN0cmluZ0J5S2V5OwotbXkgJWNvbW1lbnRCeUtleTsKLW15ICVm
aWxlQnlLZXk7Ci1teSAlbGluZUJ5S2V5OwotCi1zdWIgSGFuZGxlVUlTdHJpbmcKLXsKLSAgICBt
eSAoJHN0cmluZywgJGtleSwgJGNvbW1lbnQsICRmaWxlLCAkbGluZSkgPSBAXzsKLQotICAgICRs
b2NhbGl6ZWRDb3VudCsrOwotCi0gICAgbXkgJGJhZCA9IDA7Ci0gICAgJHN0cmluZyA9IHVuZXNj
YXBlSGV4U2VxdWVuY2UoJHN0cmluZyk7Ci0gICAgaWYgKCFkZWZpbmVkKCRzdHJpbmcpKSB7Ci0g
ICAgICAgIHByaW50ICIkZmlsZTokbGluZTogc3RyaW5nIGhhcyBhbiBpbGxlZ2FsIGhleGFkZWNp
bWFsIGVzY2FwZSBzZXF1ZW5jZVxuIjsKLSAgICAgICAgJGJhZCA9IDE7Ci0gICAgfQotICAgICRr
ZXkgPSB1bmVzY2FwZUhleFNlcXVlbmNlKCRrZXkpOwotICAgIGlmICghZGVmaW5lZCgka2V5KSkg
ewotICAgICAgICBwcmludCAiJGZpbGU6JGxpbmU6IGtleSBoYXMgYW4gaWxsZWdhbCBoZXhhZGVj
aW1hbCBlc2NhcGUgc2VxdWVuY2VcbiI7Ci0gICAgICAgICRiYWQgPSAxOwotICAgIH0KLSAgICAk
Y29tbWVudCA9IHVuZXNjYXBlSGV4U2VxdWVuY2UoJGNvbW1lbnQpOwotICAgIGlmICghZGVmaW5l
ZCgkY29tbWVudCkpIHsKLSAgICAgICAgcHJpbnQgIiRmaWxlOiRsaW5lOiBjb21tZW50IGhhcyBh
biBpbGxlZ2FsIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVxuIjsKLSAgICAgICAgJGJhZCA9
IDE7Ci0gICAgfQotICAgIGlmIChncmVwIHsgJF8gPT0gMHhGRkZEIH0gdW5wYWNrICJVKiIsICRz
dHJpbmcpIHsKLSAgICAgICAgcHJpbnQgIiRmaWxlOiRsaW5lOiBzdHJpbmcgZm9yIHRyYW5zbGF0
aW9uIGhhcyBpbGxlZ2FsIFVURi04IC0tIG1vc3QgbGlrZWx5IGEgcHJvYmxlbSB3aXRoIHRoZSBU
ZXh0IEVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZVxuIjsKLSAgICAgICAgJGJhZCA9IDE7Ci0g
ICAgfQotICAgIGlmICgkc3RyaW5nIG5lICRrZXkgJiYgZ3JlcCB7ICRfID09IDB4RkZGRCB9IHVu
cGFjayAiVSoiLCAka2V5KSB7Ci0gICAgICAgIHByaW50ICIkZmlsZTokbGluZToga2V5IGhhcyBp
bGxlZ2FsIFVURi04IC0tIG1vc3QgbGlrZWx5IGEgcHJvYmxlbSB3aXRoIHRoZSBUZXh0IEVuY29k
aW5nIG9mIHRoZSBzb3VyY2UgZmlsZVxuIjsKLSAgICAgICAgJGJhZCA9IDE7Ci0gICAgfQotICAg
IGlmIChncmVwIHsgJF8gPT0gMHhGRkZEIH0gdW5wYWNrICJVKiIsICRjb21tZW50KSB7Ci0gICAg
ICAgIHByaW50ICIkZmlsZTokbGluZTogY29tbWVudCBmb3IgdHJhbnNsYXRpb24gaGFzIGlsbGVn
YWwgVVRGLTggLS0gbW9zdCBsaWtlbHkgYSBwcm9ibGVtIHdpdGggdGhlIFRleHQgRW5jb2Rpbmcg
b2YgdGhlIHNvdXJjZSBmaWxlXG4iOwotICAgICAgICAkYmFkID0gMTsKLSAgICB9Ci0gICAgaWYg
KCRiYWQpIHsKLSAgICAgICAgJHNhd0Vycm9yID0gMTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAoJHN0cmluZ0J5S2V5eyRrZXl9ICYmICRzdHJpbmdCeUtleXska2V5fSBu
ZSAkc3RyaW5nKSB7Ci0gICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlLCAkbGluZSwgImVuY291bnRl
cmVkIHRoZSBzYW1lIGtleSwgXCIka2V5XCIsIHR3aWNlLCB3aXRoIGRpZmZlcmVudCBzdHJpbmdz
Iik7Ci0gICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlQnlLZXl7JGtleX0sICRsaW5lQnlLZXl7JGtl
eX0sICJwcmV2aW91cyBvY2N1cnJlbmNlIik7Ci0gICAgICAgICRrZXlDb2xsaXNpb25Db3VudCsr
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICgkY29tbWVudEJ5S2V5eyRrZXl9ICYm
ICRjb21tZW50QnlLZXl7JGtleX0gbmUgJGNvbW1lbnQpIHsKLSAgICAgICAgZW1pdFdhcm5pbmco
JGZpbGUsICRsaW5lLCAiZW5jb3VudGVyZWQgdGhlIHNhbWUga2V5LCBcIiRrZXlcIiwgdHdpY2Us
IHdpdGggZGlmZmVyZW50IGNvbW1lbnRzIik7Ci0gICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlQnlL
ZXl7JGtleX0sICRsaW5lQnlLZXl7JGtleX0sICJwcmV2aW91cyBvY2N1cnJlbmNlIik7Ci0gICAg
ICAgICRrZXlDb2xsaXNpb25Db3VudCsrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
JGZpbGVCeUtleXska2V5fSA9ICRmaWxlOwotICAgICRsaW5lQnlLZXl7JGtleX0gPSAkbGluZTsK
LSAgICAkc3RyaW5nQnlLZXl7JGtleX0gPSAkc3RyaW5nOwotICAgICRjb21tZW50QnlLZXl7JGtl
eX0gPSAkY29tbWVudDsKLX0KLQotc3ViIHdyaXRlU3RyaW5nc0ZpbGUoJCkKLXsKLSAgICBteSAo
JGZpbGUpID0gQF87Ci0KLSAgICBteSAkbG9jYWxpemVkU3RyaW5ncyA9ICIiOwotCi0gICAgZm9y
IG15ICRrZXkgKHNvcnQga2V5cyAlY29tbWVudEJ5S2V5KSB7Ci0gICAgICAgICRsb2NhbGl6ZWRT
dHJpbmdzIC49ICIvKiAkY29tbWVudEJ5S2V5eyRrZXl9ICovXG5cIiRrZXlcIiA9IFwiJHN0cmlu
Z0J5S2V5eyRrZXl9XCI7XG5cbiI7Ci0gICAgfQotCi0gICAgIyBXcml0ZSBvdXQgdGhlIHN0cmlu
Z3MgZmlsZSBhcyBVVEYtOAotICAgIG9wZW4gU1RSSU5HUywgIj4iLCAkZmlsZSBvciBkaWU7Ci0g
ICAgcHJpbnQgU1RSSU5HUyAkbG9jYWxpemVkU3RyaW5nczsKLSAgICBjbG9zZSBTVFJJTkdTOwot
fQotCi1zdWIgdmVyaWZ5U3RyaW5nc0ZpbGUoJCkKLXsKLSAgICBteSAoJGZpbGUpID0gQF87Ci0K
LSAgICBvcGVuIFNUUklOR1MsICRmaWxlIG9yIGRpZTsKLQotICAgIG15ICRsYXN0Q29tbWVudDsK
LSAgICBteSAkbGluZTsKLSAgICBteSAkc2F3RXJyb3I7Ci0KLSAgICB3aGlsZSAoPFNUUklOR1M+
KSB7Ci0gICAgICAgIGNob21wOwotCi0gICAgICAgIG5leHQgaWYgKC9eXHMqJC8pOwotCi0gICAg
ICAgIGlmICgvXlwvXCogKC4qKSBcKlwvJC8pIHsKLSAgICAgICAgICAgICRsYXN0Q29tbWVudCA9
ICQxOwotICAgICAgICB9IGVsc2lmICgvXiIoKD86W15cXF18XFxbXiJdKSopIlxzKj1ccyoiKCg/
OlteXFxdfFxcW14iXSkqKSI7JC8pICMKLSAgICAgICAgewotICAgICAgICAgICAgbXkgJHN0cmlu
ZyA9IGRlbGV0ZSAkc3RyaW5nQnlLZXl7JDF9OwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkICRz
dHJpbmcpIHsKLSAgICAgICAgICAgICAgICBwcmludCAiJGZpbGU6JC46IHVudXNlZCBrZXkgXCIk
MVwiXG4iOwotICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICghKCRzdHJpbmcgZXEgJDIpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHByaW50ICIkZmlsZTokLjogdW5leHBlY3RlZCB2YWx1ZSBcIiQyXCIgZm9yIGtl
eSBcIiQxXCJcbiI7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZUJ5S2V5eyQxfTok
bGluZUJ5S2V5eyQxfTogZXhwZWN0ZWQgdmFsdWUgXCIkc3RyaW5nXCIgZGVmaW5lZCBoZXJlXG4i
OwotICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoISgkbGFzdENvbW1lbnQgZXEgJGNvbW1lbnRCeUtleXskMX0p
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZTokLjogdW5leHBlY3RlZCBjb21t
ZW50IC8qICRsYXN0Q29tbWVudCAqLyBmb3Iga2V5IFwiJDFcIlxuIjsKLSAgICAgICAgICAgICAg
ICAgICAgcHJpbnQgIiRmaWxlQnlLZXl7JDF9OiRsaW5lQnlLZXl7JDF9OiBleHBlY3RlZCBjb21t
ZW50IC8qICRjb21tZW50QnlLZXl7JDF9ICovIGRlZmluZWQgaGVyZVxuIjsKLSAgICAgICAgICAg
ICAgICAgICAgJHNhd0Vycm9yID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwcmludCAiJGZpbGU6JC46IGxpbmUgd2l0
aCB1bmV4cGVjdGVkIGZvcm1hdDogJF9cbiI7Ci0gICAgICAgICAgICAkc2F3RXJyb3IgPSAxOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yIG15ICRtaXNzaW5nIChrZXlzICVzdHJpbmdCeUtl
eSkgewotICAgICAgICBwcmludCAiJGZpbGVCeUtleXskbWlzc2luZ306JGxpbmVCeUtleXskbWlz
c2luZ306IG1pc3Npbmcga2V5IFwiJG1pc3NpbmdcIlxuIjsKLSAgICAgICAgJHNhd0Vycm9yID0g
MTsKLSAgICB9Ci0KLSAgICBpZiAoJHNhd0Vycm9yKSB7Ci0gICAgICAgIHByaW50ICJcbiRmaWxl
OjA6IGZpbGUgaXMgbm90IHVwIHRvIGRhdGUuXG4iOwotICAgICAgICBleGl0IDE7Ci0gICAgfQot
fQotCi0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9Mb2NhbGl6YWJsZVN0
cmluZ3MucG0gYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0xvY2FsaXphYmxlU3RyaW5ncy5wbQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMzg5YzU2NmY0YjhiMDIyMmZjMTZmNmIwYzlkOWUxZDk5MGRhMGU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9Mb2NhbGl6YWJsZVN0cmluZ3Mu
cG0KQEAgLTAsMCArMSwyMjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAy
MDEwLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7CisKK215ICR0cmVh
dFdhcm5pbmdzQXNFcnJvcnMgPSAwOworCitzdWIgc2V0VHJlYXRXYXJuaW5nc0FzRXJyb3JzKCQp
Cit7CisgICAgKCR0cmVhdFdhcm5pbmdzQXNFcnJvcnMpID0gQF87Cit9CisKK215ICRzYXdFcnJv
ciA9IDA7CisKK3N1YiBzYXdFcnJvcigpCit7CisgICAgcmV0dXJuICRzYXdFcnJvcjsKK30KKwor
c3ViIGVtaXRFcnJvcigkJCQpCit7CisgICAgbXkgKCRmaWxlLCAkbGluZSwgJG1lc3NhZ2UpID0g
QF87CisgICAgcHJpbnQgIiRmaWxlOiRsaW5lOiAkbWVzc2FnZVxuIjsKKyAgICAkc2F3RXJyb3Ig
PSAxOworfQorCitzdWIgZW1pdFdhcm5pbmcoJCQkKQoreworICAgIG15ICgkZmlsZSwgJGxpbmUs
ICRtZXNzYWdlKSA9IEBfOworICAgIG15ICRwcmVmaXggPSAkdHJlYXRXYXJuaW5nc0FzRXJyb3Jz
ID8gIiIgOiAid2FybmluZzogIjsKKyAgICBwcmludCAiJGZpbGU6JGxpbmU6ICRwcmVmaXgkbWVz
c2FnZVxuIjsKKyAgICAkc2F3RXJyb3IgPSAxIGlmICR0cmVhdFdhcm5pbmdzQXNFcnJvcnM7Cit9
CisKKyMgVW5lc2NhcGVzIEMgbGFuZ3VhZ2UgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlcy4K
K3N1YiB1bmVzY2FwZUhleFNlcXVlbmNlKCQpCit7CisgICAgbXkgKCRvcmlnaW5hbFN0cikgPSBA
XzsKKworICAgIG15ICRlc2NhcGVkU3RyID0gJG9yaWdpbmFsU3RyOworICAgIG15ICR1bmVzY2Fw
ZWRTdHIgPSAiIjsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKCRlc2NhcGVkU3RyID1+
IHMtXlxceChbWzp4ZGlnaXQ6XV0rKS0tKSB7CisgICAgICAgICAgICBpZiAoMjU2IDw9IGhleCgk
MSkpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiSGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNl
IG91dCBvZiByYW5nZTogXFx4JDFcbiI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgJHVuZXNjYXBlZFN0ciAuPSBwYWNrKCJIKiIsICQx
KTsKKyAgICAgICAgfSBlbHNpZiAoJGVzY2FwZWRTdHIgPX4gcy1eKC4pLS0pIHsKKyAgICAgICAg
ICAgICR1bmVzY2FwZWRTdHIgLj0gJDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBy
ZXR1cm4gJHVuZXNjYXBlZFN0cjsKKyAgICAgICAgfQorICAgIH0KK30KKworbXkgJGtleUNvbGxp
c2lvbkNvdW50ID0gMDsKKworc3ViIGtleUNvbGxpc2lvbkNvdW50KCkKK3sKKyAgICByZXR1cm4g
JGtleUNvbGxpc2lvbkNvdW50OworfQorCitteSAkbG9jYWxpemVkQ291bnQgPSAwOworCitzdWIg
bG9jYWxpemVkQ291bnQoKQoreworICAgIHJldHVybiAkbG9jYWxpemVkQ291bnQ7Cit9CisKK215
ICVzdHJpbmdCeUtleTsKK215ICVjb21tZW50QnlLZXk7CitteSAlZmlsZUJ5S2V5OworbXkgJWxp
bmVCeUtleTsKKworc3ViIEhhbmRsZVVJU3RyaW5nCit7CisgICAgbXkgKCRzdHJpbmcsICRrZXks
ICRjb21tZW50LCAkZmlsZSwgJGxpbmUpID0gQF87CisKKyAgICAkbG9jYWxpemVkQ291bnQrKzsK
KworICAgIG15ICRiYWQgPSAwOworICAgICRzdHJpbmcgPSB1bmVzY2FwZUhleFNlcXVlbmNlKCRz
dHJpbmcpOworICAgIGlmICghZGVmaW5lZCgkc3RyaW5nKSkgeworICAgICAgICBwcmludCAiJGZp
bGU6JGxpbmU6IHN0cmluZyBoYXMgYW4gaWxsZWdhbCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVu
Y2VcbiI7CisgICAgICAgICRiYWQgPSAxOworICAgIH0KKyAgICAka2V5ID0gdW5lc2NhcGVIZXhT
ZXF1ZW5jZSgka2V5KTsKKyAgICBpZiAoIWRlZmluZWQoJGtleSkpIHsKKyAgICAgICAgcHJpbnQg
IiRmaWxlOiRsaW5lOiBrZXkgaGFzIGFuIGlsbGVnYWwgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVl
bmNlXG4iOworICAgICAgICAkYmFkID0gMTsKKyAgICB9CisgICAgJGNvbW1lbnQgPSB1bmVzY2Fw
ZUhleFNlcXVlbmNlKCRjb21tZW50KTsKKyAgICBpZiAoIWRlZmluZWQoJGNvbW1lbnQpKSB7Cisg
ICAgICAgIHByaW50ICIkZmlsZTokbGluZTogY29tbWVudCBoYXMgYW4gaWxsZWdhbCBoZXhhZGVj
aW1hbCBlc2NhcGUgc2VxdWVuY2VcbiI7CisgICAgICAgICRiYWQgPSAxOworICAgIH0KKyAgICBp
ZiAoZ3JlcCB7ICRfID09IDB4RkZGRCB9IHVucGFjayAiVSoiLCAkc3RyaW5nKSB7CisgICAgICAg
IHByaW50ICIkZmlsZTokbGluZTogc3RyaW5nIGZvciB0cmFuc2xhdGlvbiBoYXMgaWxsZWdhbCBV
VEYtOCAtLSBtb3N0IGxpa2VseSBhIHByb2JsZW0gd2l0aCB0aGUgVGV4dCBFbmNvZGluZyBvZiB0
aGUgc291cmNlIGZpbGVcbiI7CisgICAgICAgICRiYWQgPSAxOworICAgIH0KKyAgICBpZiAoJHN0
cmluZyBuZSAka2V5ICYmIGdyZXAgeyAkXyA9PSAweEZGRkQgfSB1bnBhY2sgIlUqIiwgJGtleSkg
eworICAgICAgICBwcmludCAiJGZpbGU6JGxpbmU6IGtleSBoYXMgaWxsZWdhbCBVVEYtOCAtLSBt
b3N0IGxpa2VseSBhIHByb2JsZW0gd2l0aCB0aGUgVGV4dCBFbmNvZGluZyBvZiB0aGUgc291cmNl
IGZpbGVcbiI7CisgICAgICAgICRiYWQgPSAxOworICAgIH0KKyAgICBpZiAoZ3JlcCB7ICRfID09
IDB4RkZGRCB9IHVucGFjayAiVSoiLCAkY29tbWVudCkgeworICAgICAgICBwcmludCAiJGZpbGU6
JGxpbmU6IGNvbW1lbnQgZm9yIHRyYW5zbGF0aW9uIGhhcyBpbGxlZ2FsIFVURi04IC0tIG1vc3Qg
bGlrZWx5IGEgcHJvYmxlbSB3aXRoIHRoZSBUZXh0IEVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmls
ZVxuIjsKKyAgICAgICAgJGJhZCA9IDE7CisgICAgfQorICAgIGlmICgkYmFkKSB7CisgICAgICAg
ICRzYXdFcnJvciA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCRz
dHJpbmdCeUtleXska2V5fSAmJiAkc3RyaW5nQnlLZXl7JGtleX0gbmUgJHN0cmluZykgeworICAg
ICAgICBlbWl0V2FybmluZygkZmlsZSwgJGxpbmUsICJlbmNvdW50ZXJlZCB0aGUgc2FtZSBrZXks
IFwiJGtleVwiLCB0d2ljZSwgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyIpOworICAgICAgICBlbWl0
V2FybmluZygkZmlsZUJ5S2V5eyRrZXl9LCAkbGluZUJ5S2V5eyRrZXl9LCAicHJldmlvdXMgb2Nj
dXJyZW5jZSIpOworICAgICAgICAka2V5Q29sbGlzaW9uQ291bnQrKzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoJGNvbW1lbnRCeUtleXska2V5fSAmJiAkY29tbWVudEJ5S2V5eyRr
ZXl9IG5lICRjb21tZW50KSB7CisgICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlLCAkbGluZSwgImVu
Y291bnRlcmVkIHRoZSBzYW1lIGtleSwgXCIka2V5XCIsIHR3aWNlLCB3aXRoIGRpZmZlcmVudCBj
b21tZW50cyIpOworICAgICAgICBlbWl0V2FybmluZygkZmlsZUJ5S2V5eyRrZXl9LCAkbGluZUJ5
S2V5eyRrZXl9LCAicHJldmlvdXMgb2NjdXJyZW5jZSIpOworICAgICAgICAka2V5Q29sbGlzaW9u
Q291bnQrKzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICRmaWxlQnlLZXl7JGtleX0g
PSAkZmlsZTsKKyAgICAkbGluZUJ5S2V5eyRrZXl9ID0gJGxpbmU7CisgICAgJHN0cmluZ0J5S2V5
eyRrZXl9ID0gJHN0cmluZzsKKyAgICAkY29tbWVudEJ5S2V5eyRrZXl9ID0gJGNvbW1lbnQ7Cit9
CisKK3N1YiB3cml0ZVN0cmluZ3NGaWxlKCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworCisg
ICAgbXkgJGxvY2FsaXplZFN0cmluZ3MgPSAiIjsKKworICAgIGZvciBteSAka2V5IChzb3J0IGtl
eXMgJWNvbW1lbnRCeUtleSkgeworICAgICAgICAkbG9jYWxpemVkU3RyaW5ncyAuPSAiLyogJGNv
bW1lbnRCeUtleXska2V5fSAqL1xuXCIka2V5XCIgPSBcIiRzdHJpbmdCeUtleXska2V5fVwiO1xu
XG4iOworICAgIH0KKworICAgICMgV3JpdGUgb3V0IHRoZSBzdHJpbmdzIGZpbGUgYXMgVVRGLTgK
KyAgICBvcGVuIFNUUklOR1MsICI+IiwgJGZpbGUgb3IgZGllOworICAgIHByaW50IFNUUklOR1Mg
JGxvY2FsaXplZFN0cmluZ3M7CisgICAgY2xvc2UgU1RSSU5HUzsKK30KKworc3ViIHZlcmlmeVN0
cmluZ3NGaWxlKCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworCisgICAgb3BlbiBTVFJJTkdT
LCAkZmlsZSBvciBkaWU7CisKKyAgICBteSAkbGFzdENvbW1lbnQ7CisgICAgbXkgJGxpbmU7Cisg
ICAgbXkgJHNhd0Vycm9yOworCisgICAgd2hpbGUgKDxTVFJJTkdTPikgeworICAgICAgICBjaG9t
cDsKKworICAgICAgICBuZXh0IGlmICgvXlxzKiQvKTsKKworICAgICAgICBpZiAoL15cL1wqICgu
KikgXCpcLyQvKSB7CisgICAgICAgICAgICAkbGFzdENvbW1lbnQgPSAkMTsKKyAgICAgICAgfSBl
bHNpZiAoL14iKCg/OlteXFxdfFxcW14iXSkqKSJccyo9XHMqIigoPzpbXlxcXXxcXFteIl0pKiki
OyQvKSAjCisgICAgICAgIHsKKyAgICAgICAgICAgIG15ICRzdHJpbmcgPSBkZWxldGUgJHN0cmlu
Z0J5S2V5eyQxfTsKKyAgICAgICAgICAgIGlmICghZGVmaW5lZCAkc3RyaW5nKSB7CisgICAgICAg
ICAgICAgICAgcHJpbnQgIiRmaWxlOiQuOiB1bnVzZWQga2V5IFwiJDFcIlxuIjsKKyAgICAgICAg
ICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoISgkc3RyaW5nIGVxICQyKSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCAi
JGZpbGU6JC46IHVuZXhwZWN0ZWQgdmFsdWUgXCIkMlwiIGZvciBrZXkgXCIkMVwiXG4iOworICAg
ICAgICAgICAgICAgICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtleXskMX06IGV4
cGVjdGVkIHZhbHVlIFwiJHN0cmluZ1wiIGRlZmluZWQgaGVyZVxuIjsKKyAgICAgICAgICAgICAg
ICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKCEoJGxhc3RDb21tZW50IGVxICRjb21tZW50QnlLZXl7JDF9KSkgeworICAgICAgICAgICAg
ICAgICAgICBwcmludCAiJGZpbGU6JC46IHVuZXhwZWN0ZWQgY29tbWVudCAvKiAkbGFzdENvbW1l
bnQgKi8gZm9yIGtleSBcIiQxXCJcbiI7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmls
ZUJ5S2V5eyQxfTokbGluZUJ5S2V5eyQxfTogZXhwZWN0ZWQgY29tbWVudCAvKiAkY29tbWVudEJ5
S2V5eyQxfSAqLyBkZWZpbmVkIGhlcmVcbiI7CisgICAgICAgICAgICAgICAgICAgICRzYXdFcnJv
ciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQuOiBsaW5lIHdpdGggdW5leHBlY3RlZCBmb3Jt
YXQ6ICRfXG4iOworICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZvciBteSAkbWlzc2luZyAoa2V5cyAlc3RyaW5nQnlLZXkpIHsKKyAgICAgICAgcHJp
bnQgIiRmaWxlQnlLZXl7JG1pc3Npbmd9OiRsaW5lQnlLZXl7JG1pc3Npbmd9OiBtaXNzaW5nIGtl
eSBcIiRtaXNzaW5nXCJcbiI7CisgICAgICAgICRzYXdFcnJvciA9IDE7CisgICAgfQorCisgICAg
aWYgKCRzYXdFcnJvcikgeworICAgICAgICBwcmludCAiXG4kZmlsZTowOiBmaWxlIGlzIG5vdCB1
cCB0byBkYXRlLlxuIjsKKyAgICAgICAgZXhpdCAxOworICAgIH0KK30KKworMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBs
IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjI1ZjIwMjBlMDI1ZTA4MmI4ZDhiYWJiZGQ1NDdhOTZjODBjNWUwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsCkBAIC0wLDAgKzEsMzI0IEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMg
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMgc2NyaXB0IGlzIGxp
a2UgdGhlIGdlbnN0cmluZ3MgdG9vbCAobWludXMgbW9zdCBvZiB0aGUgb3B0aW9ucykgd2l0aCB0
aGVzZSBkaWZmZXJlbmNlcy4KKyMKKyMgICAgMSkgSXQgdXNlcyB0aGUgbmFtZXMgVUlfU1RSSU5H
IGFuZCBVSV9TVFJJTkdfV0lUSF9LRVkgZm9yIHRoZSBtYWNyb3MsIHJhdGhlciB0aGFuIHRoZSBt
YWNyb3MKKyMgICAgICAgZnJvbSBOU0J1bmRsZS5oLCBhbmQgZG9lc24ndCBzdXBwb3J0IHRhYmxl
cyAoYWx0aG91Z2ggdGhleSB3b3VsZCBiZSBlYXN5IHRvIGFkZCkuCisjICAgIDIpIEl0IHN1cHBv
cnRzIFVURi04IGluIGtleSBzdHJpbmdzIChhbmQgaGVuY2UgdXNlcyAiIiBzdHJpbmdzIHJhdGhl
ciB0aGFuIEAiIiBzdHJpbmdzOworIyAgICAgICBAIiIgc3RyaW5ncyBvbmx5IHJlbGlhYmx5IHN1
cHBvcnQgQVNDSUkgc2luY2UgdGhleSBhcmUgZGVjb2RlZCBiYXNlZCBvbiB0aGUgc3lzdGVtIGVu
Y29kaW5nCisjICAgICAgIGF0IHJ1bnRpbWUsIHNvIGdpdmUgZGlmZmVyZW50IHJlc3VsdHMgb24g
VVMgYW5kIEphcGFuZXNlIHN5c3RlbXMgZm9yIGV4YW1wbGUpLgorIyAgICAzKSBJdCBsb29rcyBm
b3Igc3RyaW5ncyB0aGF0IGFyZSBub3QgbWFya2VkIGZvciBsb2NhbGl6YXRpb24sIHVzaW5nIGJv
dGggbWFjcm8gbmFtZXMgdGhhdCBhcmUKKyMgICAgICAga25vd24gdG8gYmUgdXNlZCBmb3IgZGVi
dWdnaW5nIGluIEludHJpZ3VlIHNvdXJjZSBjb2RlIGFuZCBhbiBleGNlcHRpb25zIGZpbGUuCisj
ICAgIDQpIEl0IGZpbmRzIHRoZSBmaWxlcyB0byB3b3JrIG9uIHJhdGhlciB0aGFuIHRha2luZyB0
aGVtIGFzIHBhcmFtZXRlcnMsIGFuZCBhbHNvIHVzZXMgYQorIyAgICAgICBoYXJkY29kZWQgbG9j
YXRpb24gZm9yIGJvdGggdGhlIG91dHB1dCBmaWxlIGFuZCB0aGUgZXhjZXB0aW9ucyBmaWxlLgor
IyAgICAgICBJdCB3b3VsZCBoYXZlIGJlZW4gbmljZSB0byB1c2UgdGhlIHByb2plY3QgdG8gZmlu
ZCB0aGUgc291cmNlIGZpbGVzLCBidXQgaXQncyB0b28gaGFyZCB0bworIyAgICAgICBsb2NhdGUg
c291cmNlIGZpbGVzIGFmdGVyIHBhcnNpbmcgYSAucGJ4cHJvaiBmaWxlLgorCisjIFRoZSBleGNl
cHRpb25zIGZpbGUgaGFzIGEgbGlzdCBvZiBzdHJpbmdzIGluIHF1b3RlcywgZmlsZW5hbWVzLCBh
bmQgZmlsZW5hbWUvc3RyaW5nIHBhaXJzIHNlcGFyYXRlZCBieSA6LgorCit1c2Ugc3RyaWN0Owor
dXNlIHdhcm5pbmdzOwordXNlIEZpbGU6OkNvbXBhcmU7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBG
aW5kQmluOwordXNlIEdldG9wdDo6TG9uZzsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSBM
b2NhbGl6YWJsZVN0cmluZ3M7CitubyB3YXJuaW5ncyAnZGVwcmVjYXRlZCc7CisKK215ICVpc0Rl
YnVnTWFjcm8gPSAoIEFTU0VSVF9XSVRIX01FU1NBR0UgPT4gMSwgTE9HX0VSUk9SID0+IDEsIEVS
Uk9SID0+IDEsIE5TVVJMX0VSUk9SID0+IDEsIEZBVEFMID0+IDEsIExPRyA9PiAxLCBMT0dfV0FS
TklORyA9PiAxLCBVSV9TVFJJTkdfTE9DQUxJWkVfTEFURVIgPT4gMSwgVUlfU1RSSU5HX0xPQ0FM
SVpFX0xBVEVSX0tFWSA9PiAxLCBMUENUU1RSX1VJX1NUUklOR19MT0NBTElaRV9MQVRFUiA9PiAx
LCBVTkxPQ0FMSVpFRF9TVFJJTkcgPT4gMSwgVU5MT0NBTElaRURfTFBDVFNUUiA9PiAxLCBkcHJp
bnRmID0+IDEsIE5TRXhjZXB0aW9uID0+IDEsIE5TTG9nID0+IDEsIHByaW50ZiA9PiAxICk7CisK
K215ICR2ZXJpZnk7CitteSAkZXhjZXB0aW9uc0ZpbGU7CitteSBAZGlyZWN0b3JpZXNUb1NraXAg
PSAoKTsKK215ICR0cmVhdFdhcm5pbmdzQXNFcnJvcnM7CisKK215ICVvcHRpb25zID0gKAorICAg
ICd2ZXJpZnknID0+IFwkdmVyaWZ5LAorICAgICdleGNlcHRpb25zPXMnID0+IFwkZXhjZXB0aW9u
c0ZpbGUsCisgICAgJ3NraXA9cycgPT4gXEBkaXJlY3Rvcmllc1RvU2tpcCwKKyAgICAndHJlYXQt
d2FybmluZ3MtYXMtZXJyb3JzJyA9PiBcJHRyZWF0V2FybmluZ3NBc0Vycm9ycywKKyk7CisKK0dl
dE9wdGlvbnMoJW9wdGlvbnMpOworCitzZXRUcmVhdFdhcm5pbmdzQXNFcnJvcnMoJHRyZWF0V2Fy
bmluZ3NBc0Vycm9ycyk7CisKK0BBUkdWID49IDIgb3IgZGllICJVc2FnZTogZXh0cmFjdC1sb2Nh
bGl6YWJsZS1zdHJpbmdzIFstLXZlcmlmeV0gWy0tdHJlYXQtd2FybmluZ3MtYXMtZXJyb3JzXSBb
LS1leGNlcHRpb25zIDxleGNlcHRpb25zIGZpbGU+XSA8ZmlsZSB0byB1cGRhdGU+IFstLXNraXAg
ZGlyZWN0b3J5IHwgZGlyZWN0b3J5XS4uLlxuRGlkIHlvdSBtZWFuIHRvIHJ1biB1cGRhdGUtd2Vi
a2l0LWxvY2FsaXphYmxlLXN0cmluZ3MgaW5zdGVhZD9cbiI7CisKKy1mICRleGNlcHRpb25zRmls
ZSBvciBkaWUgIkNvdWxkbid0IGZpbmQgZXhjZXB0aW9ucyBmaWxlICRleGNlcHRpb25zRmlsZVxu
IiB1bmxlc3MgIWRlZmluZWQgJGV4Y2VwdGlvbnNGaWxlOworCitteSAkZmlsZVRvVXBkYXRlID0g
c2hpZnQgQEFSR1Y7CistZiAkZmlsZVRvVXBkYXRlIG9yIGRpZSAiQ291bGRuJ3QgZmluZCBmaWxl
IHRvIHVwZGF0ZSAkZmlsZVRvVXBkYXRlXG4iOworCitteSAkd2FybkFib3V0VW5sb2NhbGl6ZWRT
dHJpbmdzID0gZGVmaW5lZCAkZXhjZXB0aW9uc0ZpbGU7CisKK215IEBkaXJlY3RvcmllcyA9ICgp
OworaWYgKEBBUkdWIDwgMSkgeworICAgIHB1c2goQGRpcmVjdG9yaWVzLCAiLiIpOworfSBlbHNl
IHsKKyAgICBmb3IgbXkgJGRpciAoQEFSR1YpIHsKKyAgICAgICAgcHVzaCBAZGlyZWN0b3JpZXMs
ICRkaXI7CisgICAgfQorfQorCitteSAkbm90TG9jYWxpemVkQ291bnQgPSAwOworbXkgJE5TTG9j
YWxpemVDb3VudCA9IDA7CisKK215ICVleGNlcHRpb247CitteSAldXNlZEV4Y2VwdGlvbjsKKwor
aWYgKGRlZmluZWQgJGV4Y2VwdGlvbnNGaWxlICYmIG9wZW4gRVhDRVBUSU9OUywgJGV4Y2VwdGlv
bnNGaWxlKSB7CisgICAgd2hpbGUgKDxFWENFUFRJT05TPikgeworICAgICAgICBjaG9tcDsKKyAg
ICAgICAgaWYgKC9eIihbXlxcIl18XFwuKSoiJC8gb3IgL15bLV9cL1x3XHMuXSsuKGh8bXxtbXxj
fGNwcCkkLyBvciAvXlstX1wvXHdccy5dKy4oaHxtfG1tfGN8Y3BwKToiKFteXFwiXXxcXC4pKiIk
LykgeworICAgICAgICAgICAgaWYgKCRleGNlcHRpb257JF99KSB7CisgICAgICAgICAgICAgICAg
ZW1pdFdhcm5pbmcoJGV4Y2VwdGlvbnNGaWxlLCAkLiwgImV4Y2VwdGlvbiBmb3IgJF8gYXBwZWFy
cyB0d2ljZSIpOworICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRleGNlcHRpb25zRmlsZSwg
JGV4Y2VwdGlvbnskX30sICJmaXJzdCBhcHBlYXJhbmNlIik7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICRleGNlcHRpb257JF99ID0gJC47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0V2FybmluZygkZXhjZXB0aW9uc0ZpbGUs
ICQuLCAic3ludGF4IGVycm9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgY2xvc2UgRVhDRVBU
SU9OUzsKK30KKworbXkgJHF1b3RlZERpcmVjdG9yaWVzU3RyaW5nID0gJyInIC4gam9pbignIiAi
JywgQGRpcmVjdG9yaWVzKSAuICciJzsKK2ZvciBteSAkZGlyIChAZGlyZWN0b3JpZXNUb1NraXAp
IHsKKyAgICAkcXVvdGVkRGlyZWN0b3JpZXNTdHJpbmcgLj0gJyAtcGF0aCAiJyAuICRkaXIgLiAn
IiAtcHJ1bmUgLW8nOworfQorCitteSBAZmlsZXMgPSAoIHNwbGl0ICJcbiIsIGBmaW5kICRxdW90
ZWREaXJlY3Rvcmllc1N0cmluZyBcXCggLW5hbWUgIiouaCIgLW8gLW5hbWUgIioubSIgLW8gLW5h
bWUgIioubW0iIC1vIC1uYW1lICIqLmMiIC1vIC1uYW1lICIqLmNwcCIgXFwpYCApOworCitmb3Ig
bXkgJGZpbGUgKHNvcnQgQGZpbGVzKSB7CisgICAgbmV4dCBpZiAkZmlsZSA9fiAvXC9cdytMb2Nh
bGl6YWJsZVN0cmluZ3NcdypcLmgkLyB8fCAkZmlsZSA9fiAvXC9Mb2NhbGl6ZWRTdHJpbmdzXC5o
JC87CisKKyAgICAkZmlsZSA9fiBzLV4uLy0tOworCisgICAgb3BlbiBTT1VSQ0UsICRmaWxlIG9y
IGRpZSAiY2FuJ3Qgb3BlbiAkZmlsZVxuIjsKKyAgICAKKyAgICBteSAkaW5Db21tZW50ID0gMDsK
KyAgICAKKyAgICBteSAkZXhwZWN0ZWQgPSAiIjsKKyAgICBteSAkbWFjcm9MaW5lOworICAgIG15
ICRtYWNybzsKKyAgICBteSAkVUlTdHJpbmc7CisgICAgbXkgJGtleTsKKyAgICBteSAkY29tbWVu
dDsKKyAgICBteSAkbW5lbW9uaWM7CisgICAgCisgICAgbXkgJHN0cmluZzsKKyAgICBteSAkc3Ry
aW5nTGluZTsKKyAgICBteSAkbmVzdGluZ0xldmVsOworICAgIAorICAgIG15ICRwcmV2aW91c1Rv
a2VuID0gIiI7CisKKyAgICB3aGlsZSAoPFNPVVJDRT4pIHsKKyAgICAgICAgY2hvbXA7CisgICAg
ICAgIAorICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVsdGktbGluZSBjb21tZW50LgorICAg
ICAgICBpZiAoJGluQ29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0t
OworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBuZXh0
IHVubGVzcyBkZWZpbmVkICRuZXN0aW5nTGV2ZWwgb3IgLyhcInxcL1wqKS87CisgICAgCisgICAg
ICAgICMgSGFuZGxlIGFsbCB0aGUgdG9rZW5zIGluIHRoZSBsaW5lLgorICAgICAgICB3aGlsZSAo
cy1eXHMqKFsjXHddK3wvXCp8Ly98W14jXHcvJyIoKVxbXF0sXSt8LiktLSkgeworICAgICAgICAg
ICAgbXkgJHRva2VuID0gJDE7CisKKyAgICAgICAgICAgIGlmICgkdG9rZW4gZXEgIkAiIGFuZCAk
ZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBlcSAiYSBxdW90ZWQgc3RyaW5nIikgeworICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgkdG9rZW4gZXEg
IlwiIikgeworICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBuZSAi
YSBxdW90ZWQgc3RyaW5nIikgeworICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUs
ICQuLCAiZm91bmQgYSBxdW90ZWQgc3RyaW5nIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChzLV4oKFteXFwkdG9rZW5dfFxcLikqPykkdG9rZW4tLSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQgJHN0cmluZykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgJHN0cmluZ0xpbmUgPSAkLjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdHJp
bmcgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRzdHJpbmcgLj0gJDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUsICQuLCAi
bWlzbWF0Y2hlZCBxdW90ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgJF8gPSAiIjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGRlZmluZWQgJHN0cmluZykgeworaGFuZGxlU3RyaW5n
OgorICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkZWZpbmVkICRVSVN0cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhN
RTogVmFsaWRhdGUgVVRGLTggaGVyZT8KKyAgICAgICAgICAgICAgICAgICAgICAgICRVSVN0cmlu
ZyA9ICRzdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSV9TVFJJTkdf
S0VZKF9JTlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPworICAgICAgICAgICAgICAgICAg
ICAgICAgJGtleSA9ICRzdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQg
PSAiLCI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gL1dFQl9VSV9T
VFJJTkdfV0lUSF9NTkVNT05JQyQvKSBhbmQgIWRlZmluZWQgJG1uZW1vbmljKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkbW5lbW9uaWMgPSAkc3RyaW5nOworICAgICAgICAgICAgICAgICAg
ICAgICAgJGV4cGVjdGVkID0gIiwiOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICghZGVm
aW5lZCAkY29tbWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRh
dGUgVVRGLTggaGVyZT8KKyAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gJHN0cmlu
ZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIpIjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChkZWZpbmVkICRuZXN0aW5nTGV2ZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
SW4gYSBkZWJ1ZyBtYWNybywgbm8gbmVlZCB0byBsb2NhbGl6ZS4KKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHByZXZpb3VzVG9rZW4gZXEgIiNpbmNsdWRlIiBvciAkcHJldmlvdXNUb2tl
biBlcSAiI2ltcG9ydCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRmlsZSBuYW1lLCBu
byBuZWVkIHRvIGxvY2FsaXplLgorICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcHJldmlv
dXNUb2tlbiBlcSAiZXh0ZXJuIiBhbmQgJHN0cmluZyBlcSAiQyIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICMgZXh0ZXJuICJDIiwgbm8gbmVlZCB0byBsb2NhbGl6ZS4KKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJHN0cmluZyBlcSAiIikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgIyBFbXB0eSBzdHJpbmcgY2FuIHNvbWV0aW1lcyBiZSBsb2NhbGl6ZWQsIGJ1dCB3ZSBuZWVk
IG5vdCBjb21wbGFpbiBpZiBub3QuCisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNl
cHRpb257JGZpbGV9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnsk
ZmlsZX0gPSAxOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZXhjZXB0aW9ueyJcIiRz
dHJpbmdcIiJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnsiXCIk
c3RyaW5nXCIifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNlcHRpb257
IiRmaWxlOlwiJHN0cmluZ1wiIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR1c2VkRXhj
ZXB0aW9ueyIkZmlsZTpcIiRzdHJpbmdcIiJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlLCAkc3RyaW5n
TGluZSwgIlwiJHN0cmluZ1wiIGlzIG5vdCBtYXJrZWQgZm9yIGxvY2FsaXphdGlvbiIpIGlmICR3
YXJuQWJvdXRVbmxvY2FsaXplZFN0cmluZ3M7CisgICAgICAgICAgICAgICAgICAgICAgICAkbm90
TG9jYWxpemVkQ291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAkc3RyaW5nID0gdW5kZWY7CisgICAgICAgICAgICAgICAgbGFz
dCBpZiAhZGVmaW5lZCAkdG9rZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICRwcmV2aW91c1Rva2VuID0gJHRva2VuOworCisgICAgICAgICAgICBpZiAoJHRva2Vu
ID1+IC9eTlNMb2NhbGl6ZWQvICYmICR0b2tlbiAhfiAvTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eS8gJiYgJHRva2VuICF+IC9OU0xvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxlLyAmJiAk
dG9rZW4gIX4gL05TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbi8gJiYgJHRva2VuICF+IC9O
U0xvY2FsaXplZERlc2NyaXB0aW9uS2V5LyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkUmVjb3Zl
cnlTdWdnZXN0aW9uRXJyb3JLZXkvKSB7CisgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxl
LCAkLiwgImZvdW5kIGEgdXNlIG9mIGFuIE5TTG9jYWxpemVkIG1hY3JvICgkdG9rZW4pOyBub3Qg
c3VwcG9ydGVkIik7CisgICAgICAgICAgICAgICAgJG5lc3RpbmdMZXZlbCA9IDAgaWYgIWRlZmlu
ZWQgJG5lc3RpbmdMZXZlbDsKKyAgICAgICAgICAgICAgICAkTlNMb2NhbGl6ZUNvdW50Kys7Cisg
ICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIi8qIikgeworICAgICAgICAgICAgICAgIGlm
ICghcy1eLio/XCovLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgJF8gPSAiIjsgIyBJZiB0aGUg
Y29tbWVudCBkb2Vzbid0IGVuZCwgZGlzY2FyZCB0aGUgcmVzdWx0IG9mIHRoZSBsaW5lIGFuZCBz
ZXQgZmxhZworICAgICAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0gMTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIi8vIikgeworICAgICAgICAg
ICAgICAgICRfID0gIiI7ICMgRGlzY2FyZCB0aGUgcmVzdCBvZiB0aGUgbGluZQorICAgICAgICAg
ICAgfSBlbHNpZiAoJHRva2VuIGVxICInIikgeworICAgICAgICAgICAgICAgIGlmICghcy0oW15c
XF18XFwuKSctLSkgeyAjJyA8LS0gdGhhdCBzaW5nbGUgcXVvdGUgbWFrZXMgdGhlIFByb2plY3Qg
QnVpbGRlciBlZGl0b3IgbGVzcyBjb25mdXNlZAorICAgICAgICAgICAgICAgICAgICBlbWl0RXJy
b3IoJGZpbGUsICQuLCAibWlzbWF0Y2hlZCBzaW5nbGUgcXVvdGUiKTsKKyAgICAgICAgICAgICAg
ICAgICAgJF8gPSAiIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBuZSAkdG9rZW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZvdW5kICR0b2tlbiBi
dXQgZXhwZWN0ZWQgJGV4cGVjdGVkIik7CisgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9
ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAv
KFdFQl8pP1VJX1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VC
X1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05J
QyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfQ0ZTVFJJTkckLykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgJGV4cGVjdGVkID0gIigiOworICAgICAgICAgICAgICAgICAgICAkbWFjcm8gPSAkdG9r
ZW47CisgICAgICAgICAgICAgICAgICAgICRVSVN0cmluZyA9IHVuZGVmOworICAgICAgICAgICAg
ICAgICAgICAka2V5ID0gdW5kZWY7CisgICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gdW5k
ZWY7CisgICAgICAgICAgICAgICAgICAgICRtbmVtb25pYyA9IHVuZGVmOworICAgICAgICAgICAg
ICAgICAgICAkbWFjcm9MaW5lID0gJC47CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHRva2Vu
IGVxICIoIiBvciAkdG9rZW4gZXEgIlsiKSB7CisgICAgICAgICAgICAgICAgICAgICsrJG5lc3Rp
bmdMZXZlbCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7CisgICAgICAgICAgICAgICAgICAgICRl
eHBlY3RlZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKKyAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkdG9rZW4gZXEgIiwiKSB7CisgICAgICAgICAgICAgICAgICAgICRleHBlY3Rl
ZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKKyAgICAgICAgICAgICAgICB9IGVs
c2lmICgkdG9rZW4gZXEgIikiIG9yICR0b2tlbiBlcSAiXSIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgJG5lc3RpbmdMZXZlbCA9IHVuZGVmIGlmIGRlZmluZWQgJG5lc3RpbmdMZXZlbCAmJiAhLS0k
bmVzdGluZ0xldmVsOworICAgICAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAka2V5ID0gJFVJU3RyaW5nIGlmICFkZWZpbmVkICRrZXk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVVSVN0cmluZygkVUlTdHJpbmcsICRrZXksICRj
b21tZW50LCAkZmlsZSwgJG1hY3JvTGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkbWFj
cm8gPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGlzRGVidWdNYWNyb3sk
dG9rZW59KSB7CisgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nTGV2ZWwgPSAwIGlmICFkZWZp
bmVkICRuZXN0aW5nTGV2ZWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgZ290byBoYW5kbGVTdHJpbmcg
aWYgZGVmaW5lZCAkc3RyaW5nOworICAgIAorICAgIGlmICgkZXhwZWN0ZWQpIHsKKyAgICAgICAg
ZW1pdEVycm9yKCRmaWxlLCAwLCAicmVhY2hlZCBlbmQgb2YgZmlsZSBidXQgZXhwZWN0ZWQgJGV4
cGVjdGVkIik7CisgICAgfQorICAgIAorICAgIGNsb3NlIFNPVVJDRTsKK30KKworcHJpbnQgIlxu
IiBpZiBzYXdFcnJvcigpIHx8ICRub3RMb2NhbGl6ZWRDb3VudCB8fCAkTlNMb2NhbGl6ZUNvdW50
OworCitteSBAdW51c2VkRXhjZXB0aW9ucyA9IHNvcnQgZ3JlcCB7ICEkdXNlZEV4Y2VwdGlvbnsk
X30gfSBrZXlzICVleGNlcHRpb247CitpZiAoQHVudXNlZEV4Y2VwdGlvbnMpIHsKKyAgICBmb3Ig
bXkgJHVudXNlZCAoQHVudXNlZEV4Y2VwdGlvbnMpIHsKKyAgICAgICAgZW1pdFdhcm5pbmcoJGV4
Y2VwdGlvbnNGaWxlLCAkZXhjZXB0aW9ueyR1bnVzZWR9LCAiZXhjZXB0aW9uICR1bnVzZWQgbm90
IHVzZWQiKTsKKyAgICB9CisgICAgcHJpbnQgIlxuIjsKK30KKworcHJpbnQgbG9jYWxpemVkQ291
bnQoKSAuICIgbG9jYWxpemFibGUgc3RyaW5nc1xuIiBpZiBsb2NhbGl6ZWRDb3VudCgpOworcHJp
bnQga2V5Q29sbGlzaW9uQ291bnQoKSAuICIga2V5IGNvbGxpc2lvbnNcbiIgaWYga2V5Q29sbGlz
aW9uQ291bnQoKTsKK3ByaW50ICIkbm90TG9jYWxpemVkQ291bnQgc3RyaW5ncyBub3QgbWFya2Vk
IGZvciBsb2NhbGl6YXRpb25cbiIgaWYgJG5vdExvY2FsaXplZENvdW50OworcHJpbnQgIiROU0xv
Y2FsaXplQ291bnQgdXNlcyBvZiBOU0xvY2FsaXplXG4iIGlmICROU0xvY2FsaXplQ291bnQ7Citw
cmludCBzY2FsYXIoQHVudXNlZEV4Y2VwdGlvbnMpLCAiIHVudXNlZCBleGNlcHRpb25zXG4iIGlm
IEB1bnVzZWRFeGNlcHRpb25zOworCitpZiAoc2F3RXJyb3IoKSkgeworICAgIHByaW50ICJcbkVy
cm9ycyBlbmNvdW50ZXJlZC4gRXhpdGluZyB3aXRob3V0IHdyaXRpbmcgdG8gJGZpbGVUb1VwZGF0
ZS5cbiI7CisgICAgZXhpdCAxOworfQorCitpZiAoLWUgIiRmaWxlVG9VcGRhdGUiKSB7CisgICAg
aWYgKCEkdmVyaWZ5KSB7CisgICAgICAgIG15ICR0ZW1wb3JhcnlGaWxlID0gIiRmaWxlVG9VcGRh
dGUudXBkYXRlZCI7CisgICAgICAgIHdyaXRlU3RyaW5nc0ZpbGUoJHRlbXBvcmFyeUZpbGUpOwor
CisgICAgICAgICMgQXZvaWQgdXBkYXRpbmcgdGhlIHRhcmdldCBmaWxlJ3MgbW9kaWZpY2F0aW9u
IHRpbWUgaWYgdGhlIGNvbnRlbnRzIGhhdmUgbm90IGNoYW5nZWQuCisgICAgICAgIGlmIChjb21w
YXJlKCR0ZW1wb3JhcnlGaWxlLCAkZmlsZVRvVXBkYXRlKSkgeworICAgICAgICAgICAgbW92ZSgk
dGVtcG9yYXJ5RmlsZSwgJGZpbGVUb1VwZGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB1bmxpbmsgJHRlbXBvcmFyeUZpbGU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICB2ZXJpZnlTdHJpbmdzRmlsZSgkZmlsZVRvVXBkYXRlKTsKKyAgICB9Cit9IGVsc2Ugewor
ICAgIHByaW50ICJlcnJvcjogJGZpbGVUb1VwZGF0ZSBkb2VzIG5vdCBleGlzdFxuIjsKKyAgICBl
eGl0IDE7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMWQ2NGIzMmY0YTEzMjA4MjNhNTg2N2QwYTVmMWRkNDFhNGI4ZTZiMy4u
MjBjNjdiYjY0NzI0MTUwOTM0M2FjOThmMDBhNTQyZjYzODkyYTQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjA0MSw3ICs2
MDQxLDcgQEAKIAkJMUE4NUIyQUQwQTFCMkE2RDAwRDhDODdDIC8qIEhUTUxEaXZFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRGl2RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBODVCMkI0MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxE
aXZFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4NUIyQjUwQTFC
MkFDNzAwRDhDODdDIC8qIEpTSFRNTERpdkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTERpdkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUE4NzRBREUxOTA4NUU5MTAwQjAzMTcxIC8qIFdBS1ZpZXdJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXQUtWaWV3SW50ZXJuYWwuaDsgcGF0aCA9IC4u
Ly4uL1dBS1ZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTg3
NEFERTE5MDg1RTkxMDBCMDMxNzEgLyogV0FLVmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdBS1ZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTg4QTkwMjE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25Mb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUljb25Mb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTg4QTkwMzE3NTUzQ0Q3MDAwQzc0Rjkg
LyogRmlsZUljb25Mb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZUljb25Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4QTY0MzcxRDE5
RkM1MzAwRDBFMDBGIC8qIFBheW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGF5bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4MSw3ICs2Mjgx
LDcgQEAKIAkJMUFGRkM0NTAxRDVFN0VDNzAwMjY3QTY2IC8qIFBsdWdpbkJsYWNrbGlzdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkJsYWNrbGlzdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRkM0NTExRDVFN0VDNzAwMjY3QTY2
IC8qIFdlYkdMQmxhY2tsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQmxhY2tsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkZDNDUyMUQ1
RTdFQzcwMDI2N0E2NiAvKiBXZWJHTEJsYWNrbGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkdMQmxhY2tsaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQjEyNEQ4QzFEMzgwQjcwMDBFQ0RGQjAgLyogTWVkaWFTYW1wbGVBVkZPYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhU2FtcGxlQVZGT2JqQy5o
OyBwYXRoID0gLi4vTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFCMTI0RDhDMUQzODBCNzAwMEVDREZCMCAvKiBNZWRpYVNhbXBsZUFWRk9iakMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTYW1wbGVBVkZPYmpDLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFCMTI0RDhFMUQzODBCQjYwMEVDREZCMCAvKiBN
ZWRpYVNhbXBsZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZWRpYVNhbXBsZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFCRTVCRkMxMUQ1MTU3MTUwMDE2NjZEOSAvKiBNZWRpYUNvbnN0cmFpbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29uc3RyYWludHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElubGluZVRleHRCb3hTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MDc4LDcgKzcwNzgsNyBAQAogCQkzMzlCNUI2MjEzMURBQTMyMDBGNDhEMDIgLyogQ29va2llc1N0
cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZXNTdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNjYyRjk4NDA0N0NFREJFNUREREFG
QUEgLyogUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzExOUE3OTIwQ0NCNjEwMDAyQzZEQzkgLyogV2ViS2l0VGFyZ2V0Q29uZGl0
aW9uYWxzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzcxN0Q3RTUxN0VDQzNBNjAw
M0MyNzZEIC8qIGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGgg
PSAiZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzcxN0Q3RTUxN0VDQzNBNjAwM0MyNzZEIC8qIGV4dHJhY3QtbG9jYWxpemFibGUt
c3RyaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3Mu
cGw7IHBhdGggPSAiU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFBNjdDQTExQzZDN0RCMDAwNDdCOEIgLyogSHlw
aGVuYXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIeXBo
ZW5hdGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRTY1Q0IxMzY2
MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhZ2VTZXJpYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3MUU2NUNEMTM2NjFFRUQwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlU2VyaWFsaXplci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTIxLDcgKzcxMjEsNyBAQAogCQkzN0M3MzhFRTFFREJE
NzE4MDAzRjJCMEIgLyogTWF0aE1MVW5rbm93bkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWF0aE1MVW5rbm93bkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzdDNzM4RjExRURCREU4NzAwM0YyQjBCIC8qIERhdGVUaW1lQ2hvb3Nlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlVGltZUNob29zZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERh
dGVUaW1lQ2hvb3NlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRlVGltZUNob29zZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzdE
NDU2RkIxQTlBNTBCNjAwMzMzMEExIC8qIExvY2FsaXphYmxlU3RyaW5ncy5wbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IHBhdGggPSBMb2NhbGl6YWJsZVN0cmluZ3MucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTM3RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5wZXJsOyBuYW1lID0gTG9jYWxpemFibGVTdHJpbmdzLnBtOyBwYXRoID0gU2NyaXB0cy9Mb2Nh
bGl6YWJsZVN0cmluZ3MucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RERDRDlE
MTM4NDRGRkEwMDA4Qjc5MyAvKiBBcmNoaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFyY2hpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
N0UzNTI0QTEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzM2MSw4ICsxMzM2MSw4IEBACiAJCUNERTU5NTlDMUJGMjc1NzEwMEEx
Q0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFNjU2MEUxN0NBNkU3NjAwNTI2QkE3IC8q
IG1lZGlhQ29udHJvbHNBcHBsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1lZGlhQ29udHJv
bHNBcHBsZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFNjY3QTExRTRCQkE0
RDAwRTgxNTRBIC8qIFBsYXRmb3JtQXVkaW9EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtQXVkaW9EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNERTY2N0EyMUU0QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXVkaW9CdWZmZXJMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRB
IC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBdWRpb0J1ZmZlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NjY3QTIxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEg
LyogV2ViQXVkaW9CdWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGNvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREU3RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU4M0RBRjE4M0M0NDA2MDAzMUVBQTMg
LyogVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJp
bmdzLnBsIGIvU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2MjVmMjAyMGUwMjVlMDgyYjhkOGJhYmJkZDU0
N2E5NmM4MGM1ZTAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbAorKysgL2Rl
di9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0KLSMgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4gCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIFRoaXMgc2NyaXB0IGlzIGxpa2UgdGhl
IGdlbnN0cmluZ3MgdG9vbCAobWludXMgbW9zdCBvZiB0aGUgb3B0aW9ucykgd2l0aCB0aGVzZSBk
aWZmZXJlbmNlcy4KLSMKLSMgICAgMSkgSXQgdXNlcyB0aGUgbmFtZXMgVUlfU1RSSU5HIGFuZCBV
SV9TVFJJTkdfV0lUSF9LRVkgZm9yIHRoZSBtYWNyb3MsIHJhdGhlciB0aGFuIHRoZSBtYWNyb3MK
LSMgICAgICAgZnJvbSBOU0J1bmRsZS5oLCBhbmQgZG9lc24ndCBzdXBwb3J0IHRhYmxlcyAoYWx0
aG91Z2ggdGhleSB3b3VsZCBiZSBlYXN5IHRvIGFkZCkuCi0jICAgIDIpIEl0IHN1cHBvcnRzIFVU
Ri04IGluIGtleSBzdHJpbmdzIChhbmQgaGVuY2UgdXNlcyAiIiBzdHJpbmdzIHJhdGhlciB0aGFu
IEAiIiBzdHJpbmdzOwotIyAgICAgICBAIiIgc3RyaW5ncyBvbmx5IHJlbGlhYmx5IHN1cHBvcnQg
QVNDSUkgc2luY2UgdGhleSBhcmUgZGVjb2RlZCBiYXNlZCBvbiB0aGUgc3lzdGVtIGVuY29kaW5n
Ci0jICAgICAgIGF0IHJ1bnRpbWUsIHNvIGdpdmUgZGlmZmVyZW50IHJlc3VsdHMgb24gVVMgYW5k
IEphcGFuZXNlIHN5c3RlbXMgZm9yIGV4YW1wbGUpLgotIyAgICAzKSBJdCBsb29rcyBmb3Igc3Ry
aW5ncyB0aGF0IGFyZSBub3QgbWFya2VkIGZvciBsb2NhbGl6YXRpb24sIHVzaW5nIGJvdGggbWFj
cm8gbmFtZXMgdGhhdCBhcmUKLSMgICAgICAga25vd24gdG8gYmUgdXNlZCBmb3IgZGVidWdnaW5n
IGluIEludHJpZ3VlIHNvdXJjZSBjb2RlIGFuZCBhbiBleGNlcHRpb25zIGZpbGUuCi0jICAgIDQp
IEl0IGZpbmRzIHRoZSBmaWxlcyB0byB3b3JrIG9uIHJhdGhlciB0aGFuIHRha2luZyB0aGVtIGFz
IHBhcmFtZXRlcnMsIGFuZCBhbHNvIHVzZXMgYQotIyAgICAgICBoYXJkY29kZWQgbG9jYXRpb24g
Zm9yIGJvdGggdGhlIG91dHB1dCBmaWxlIGFuZCB0aGUgZXhjZXB0aW9ucyBmaWxlLgotIyAgICAg
ICBJdCB3b3VsZCBoYXZlIGJlZW4gbmljZSB0byB1c2UgdGhlIHByb2plY3QgdG8gZmluZCB0aGUg
c291cmNlIGZpbGVzLCBidXQgaXQncyB0b28gaGFyZCB0bwotIyAgICAgICBsb2NhdGUgc291cmNl
IGZpbGVzIGFmdGVyIHBhcnNpbmcgYSAucGJ4cHJvaiBmaWxlLgotCi0jIFRoZSBleGNlcHRpb25z
IGZpbGUgaGFzIGEgbGlzdCBvZiBzdHJpbmdzIGluIHF1b3RlcywgZmlsZW5hbWVzLCBhbmQgZmls
ZW5hbWUvc3RyaW5nIHBhaXJzIHNlcGFyYXRlZCBieSA6LgotCi11c2Ugc3RyaWN0OwotdXNlIHdh
cm5pbmdzOwotdXNlIEZpbGU6OkNvbXBhcmU7Ci11c2UgRmlsZTo6Q29weTsKLXVzZSBGaW5kQmlu
OwotdXNlIEdldG9wdDo6TG9uZzsKLXVzZSBsaWIgJEZpbmRCaW46OkJpbjsKLXVzZSBMb2NhbGl6
YWJsZVN0cmluZ3M7Ci1ubyB3YXJuaW5ncyAnZGVwcmVjYXRlZCc7Ci0KLW15ICVpc0RlYnVnTWFj
cm8gPSAoIEFTU0VSVF9XSVRIX01FU1NBR0UgPT4gMSwgTE9HX0VSUk9SID0+IDEsIEVSUk9SID0+
IDEsIE5TVVJMX0VSUk9SID0+IDEsIEZBVEFMID0+IDEsIExPRyA9PiAxLCBMT0dfV0FSTklORyA9
PiAxLCBVSV9TVFJJTkdfTE9DQUxJWkVfTEFURVIgPT4gMSwgVUlfU1RSSU5HX0xPQ0FMSVpFX0xB
VEVSX0tFWSA9PiAxLCBMUENUU1RSX1VJX1NUUklOR19MT0NBTElaRV9MQVRFUiA9PiAxLCBVTkxP
Q0FMSVpFRF9TVFJJTkcgPT4gMSwgVU5MT0NBTElaRURfTFBDVFNUUiA9PiAxLCBkcHJpbnRmID0+
IDEsIE5TRXhjZXB0aW9uID0+IDEsIE5TTG9nID0+IDEsIHByaW50ZiA9PiAxICk7Ci0KLW15ICR2
ZXJpZnk7Ci1teSAkZXhjZXB0aW9uc0ZpbGU7Ci1teSBAZGlyZWN0b3JpZXNUb1NraXAgPSAoKTsK
LW15ICR0cmVhdFdhcm5pbmdzQXNFcnJvcnM7Ci0KLW15ICVvcHRpb25zID0gKAotICAgICd2ZXJp
ZnknID0+IFwkdmVyaWZ5LAotICAgICdleGNlcHRpb25zPXMnID0+IFwkZXhjZXB0aW9uc0ZpbGUs
Ci0gICAgJ3NraXA9cycgPT4gXEBkaXJlY3Rvcmllc1RvU2tpcCwKLSAgICAndHJlYXQtd2Fybmlu
Z3MtYXMtZXJyb3JzJyA9PiBcJHRyZWF0V2FybmluZ3NBc0Vycm9ycywKLSk7Ci0KLUdldE9wdGlv
bnMoJW9wdGlvbnMpOwotCi1zZXRUcmVhdFdhcm5pbmdzQXNFcnJvcnMoJHRyZWF0V2FybmluZ3NB
c0Vycm9ycyk7Ci0KLUBBUkdWID49IDIgb3IgZGllICJVc2FnZTogZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzIFstLXZlcmlmeV0gWy0tdHJlYXQtd2FybmluZ3MtYXMtZXJyb3JzXSBbLS1leGNl
cHRpb25zIDxleGNlcHRpb25zIGZpbGU+XSA8ZmlsZSB0byB1cGRhdGU+IFstLXNraXAgZGlyZWN0
b3J5IHwgZGlyZWN0b3J5XS4uLlxuRGlkIHlvdSBtZWFuIHRvIHJ1biB1cGRhdGUtd2Via2l0LWxv
Y2FsaXphYmxlLXN0cmluZ3MgaW5zdGVhZD9cbiI7Ci0KLS1mICRleGNlcHRpb25zRmlsZSBvciBk
aWUgIkNvdWxkbid0IGZpbmQgZXhjZXB0aW9ucyBmaWxlICRleGNlcHRpb25zRmlsZVxuIiB1bmxl
c3MgIWRlZmluZWQgJGV4Y2VwdGlvbnNGaWxlOwotCi1teSAkZmlsZVRvVXBkYXRlID0gc2hpZnQg
QEFSR1Y7Ci0tZiAkZmlsZVRvVXBkYXRlIG9yIGRpZSAiQ291bGRuJ3QgZmluZCBmaWxlIHRvIHVw
ZGF0ZSAkZmlsZVRvVXBkYXRlXG4iOwotCi1teSAkd2FybkFib3V0VW5sb2NhbGl6ZWRTdHJpbmdz
ID0gZGVmaW5lZCAkZXhjZXB0aW9uc0ZpbGU7Ci0KLW15IEBkaXJlY3RvcmllcyA9ICgpOwotaWYg
KEBBUkdWIDwgMSkgewotICAgIHB1c2goQGRpcmVjdG9yaWVzLCAiLiIpOwotfSBlbHNlIHsKLSAg
ICBmb3IgbXkgJGRpciAoQEFSR1YpIHsKLSAgICAgICAgcHVzaCBAZGlyZWN0b3JpZXMsICRkaXI7
Ci0gICAgfQotfQotCi1teSAkbm90TG9jYWxpemVkQ291bnQgPSAwOwotbXkgJE5TTG9jYWxpemVD
b3VudCA9IDA7Ci0KLW15ICVleGNlcHRpb247Ci1teSAldXNlZEV4Y2VwdGlvbjsKLQotaWYgKGRl
ZmluZWQgJGV4Y2VwdGlvbnNGaWxlICYmIG9wZW4gRVhDRVBUSU9OUywgJGV4Y2VwdGlvbnNGaWxl
KSB7Ci0gICAgd2hpbGUgKDxFWENFUFRJT05TPikgewotICAgICAgICBjaG9tcDsKLSAgICAgICAg
aWYgKC9eIihbXlxcIl18XFwuKSoiJC8gb3IgL15bLV9cL1x3XHMuXSsuKGh8bXxtbXxjfGNwcCkk
LyBvciAvXlstX1wvXHdccy5dKy4oaHxtfG1tfGN8Y3BwKToiKFteXFwiXXxcXC4pKiIkLykgewot
ICAgICAgICAgICAgaWYgKCRleGNlcHRpb257JF99KSB7Ci0gICAgICAgICAgICAgICAgZW1pdFdh
cm5pbmcoJGV4Y2VwdGlvbnNGaWxlLCAkLiwgImV4Y2VwdGlvbiBmb3IgJF8gYXBwZWFycyB0d2lj
ZSIpOwotICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRleGNlcHRpb25zRmlsZSwgJGV4Y2Vw
dGlvbnskX30sICJmaXJzdCBhcHBlYXJhbmNlIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICRleGNlcHRpb257JF99ID0gJC47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0V2FybmluZygkZXhjZXB0aW9uc0ZpbGUsICQuLCAi
c3ludGF4IGVycm9yIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xvc2UgRVhDRVBUSU9OUzsK
LX0KLQotbXkgJHF1b3RlZERpcmVjdG9yaWVzU3RyaW5nID0gJyInIC4gam9pbignIiAiJywgQGRp
cmVjdG9yaWVzKSAuICciJzsKLWZvciBteSAkZGlyIChAZGlyZWN0b3JpZXNUb1NraXApIHsKLSAg
ICAkcXVvdGVkRGlyZWN0b3JpZXNTdHJpbmcgLj0gJyAtcGF0aCAiJyAuICRkaXIgLiAnIiAtcHJ1
bmUgLW8nOwotfQotCi1teSBAZmlsZXMgPSAoIHNwbGl0ICJcbiIsIGBmaW5kICRxdW90ZWREaXJl
Y3Rvcmllc1N0cmluZyBcXCggLW5hbWUgIiouaCIgLW8gLW5hbWUgIioubSIgLW8gLW5hbWUgIiou
bW0iIC1vIC1uYW1lICIqLmMiIC1vIC1uYW1lICIqLmNwcCIgXFwpYCApOwotCi1mb3IgbXkgJGZp
bGUgKHNvcnQgQGZpbGVzKSB7Ci0gICAgbmV4dCBpZiAkZmlsZSA9fiAvXC9cdytMb2NhbGl6YWJs
ZVN0cmluZ3NcdypcLmgkLyB8fCAkZmlsZSA9fiAvXC9Mb2NhbGl6ZWRTdHJpbmdzXC5oJC87Ci0K
LSAgICAkZmlsZSA9fiBzLV4uLy0tOwotCi0gICAgb3BlbiBTT1VSQ0UsICRmaWxlIG9yIGRpZSAi
Y2FuJ3Qgb3BlbiAkZmlsZVxuIjsKLSAgICAKLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICAK
LSAgICBteSAkZXhwZWN0ZWQgPSAiIjsKLSAgICBteSAkbWFjcm9MaW5lOwotICAgIG15ICRtYWNy
bzsKLSAgICBteSAkVUlTdHJpbmc7Ci0gICAgbXkgJGtleTsKLSAgICBteSAkY29tbWVudDsKLSAg
ICBteSAkbW5lbW9uaWM7Ci0gICAgCi0gICAgbXkgJHN0cmluZzsKLSAgICBteSAkc3RyaW5nTGlu
ZTsKLSAgICBteSAkbmVzdGluZ0xldmVsOwotICAgIAotICAgIG15ICRwcmV2aW91c1Rva2VuID0g
IiI7Ci0KLSAgICB3aGlsZSAoPFNPVVJDRT4pIHsKLSAgICAgICAgY2hvbXA7Ci0gICAgICAgIAot
ICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVsdGktbGluZSBjb21tZW50LgotICAgICAgICBp
ZiAoJGluQ29tbWVudCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAg
ICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBuZXh0IHVubGVz
cyBkZWZpbmVkICRuZXN0aW5nTGV2ZWwgb3IgLyhcInxcL1wqKS87Ci0gICAgCi0gICAgICAgICMg
SGFuZGxlIGFsbCB0aGUgdG9rZW5zIGluIHRoZSBsaW5lLgotICAgICAgICB3aGlsZSAocy1eXHMq
KFsjXHddK3wvXCp8Ly98W14jXHcvJyIoKVxbXF0sXSt8LiktLSkgewotICAgICAgICAgICAgbXkg
JHRva2VuID0gJDE7Ci0KLSAgICAgICAgICAgIGlmICgkdG9rZW4gZXEgIkAiIGFuZCAkZXhwZWN0
ZWQgYW5kICRleHBlY3RlZCBlcSAiYSBxdW90ZWQgc3RyaW5nIikgewotICAgICAgICAgICAgICAg
IG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgkdG9rZW4gZXEgIlwiIikg
ewotICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBuZSAiYSBxdW90
ZWQgc3RyaW5nIikgewotICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUsICQuLCAi
Zm91bmQgYSBxdW90ZWQgc3RyaW5nIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsKLSAgICAgICAg
ICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChzLV4oKFteXFwkdG9rZW5dfFxcLikqPykkdG9rZW4tLSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWRlZmluZWQgJHN0cmluZykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0cmluZ0xpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAk
MTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICRzdHJpbmcgLj0gJDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZpbGUsICQuLCAibWlzbWF0
Y2hlZCBxdW90ZXMiKTsKLSAgICAgICAgICAgICAgICAgICAgJF8gPSAiIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGRlZmluZWQgJHN0cmluZykgewotaGFuZGxlU3RyaW5nOgotICAg
ICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFk
ZWZpbmVkICRVSVN0cmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFs
aWRhdGUgVVRGLTggaGVyZT8KLSAgICAgICAgICAgICAgICAgICAgICAgICRVSVN0cmluZyA9ICRz
dHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gLyhXRUJfKT9VSV9TVFJJTkdfS0VZKF9J
TlRFUk5BTCk/JC8pIGFuZCAhZGVmaW5lZCAka2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPwotICAgICAgICAgICAgICAgICAgICAgICAg
JGtleSA9ICRzdHJpbmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiLCI7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCgkbWFjcm8gPX4gL1dFQl9VSV9TVFJJTkdf
V0lUSF9NTkVNT05JQyQvKSBhbmQgIWRlZmluZWQgJG1uZW1vbmljKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkbW5lbW9uaWMgPSAkc3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAg
JGV4cGVjdGVkID0gIiwiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICghZGVmaW5lZCAk
Y29tbWVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRG
LTggaGVyZT8KLSAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gJHN0cmluZzsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIpIjsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChk
ZWZpbmVkICRuZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gYSBk
ZWJ1ZyBtYWNybywgbm8gbmVlZCB0byBsb2NhbGl6ZS4KLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNpZiAoJHByZXZpb3VzVG9rZW4gZXEgIiNpbmNsdWRlIiBvciAkcHJldmlvdXNUb2tlbiBlcSAi
I2ltcG9ydCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRmlsZSBuYW1lLCBubyBuZWVk
IHRvIGxvY2FsaXplLgotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcHJldmlvdXNUb2tl
biBlcSAiZXh0ZXJuIiBhbmQgJHN0cmluZyBlcSAiQyIpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICMgZXh0ZXJuICJDIiwgbm8gbmVlZCB0byBsb2NhbGl6ZS4KLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHN0cmluZyBlcSAiIikgewotICAgICAgICAgICAgICAgICAgICAgICAgIyBF
bXB0eSBzdHJpbmcgY2FuIHNvbWV0aW1lcyBiZSBsb2NhbGl6ZWQsIGJ1dCB3ZSBuZWVkIG5vdCBj
b21wbGFpbiBpZiBub3QuCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNlcHRpb257
JGZpbGV9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnskZmlsZX0g
PSAxOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZXhjZXB0aW9ueyJcIiRzdHJpbmdc
IiJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnsiXCIkc3RyaW5n
XCIifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNlcHRpb257IiRmaWxl
OlwiJHN0cmluZ1wiIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICR1c2VkRXhjZXB0aW9u
eyIkZmlsZTpcIiRzdHJpbmdcIiJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlLCAkc3RyaW5nTGluZSwg
IlwiJHN0cmluZ1wiIGlzIG5vdCBtYXJrZWQgZm9yIGxvY2FsaXphdGlvbiIpIGlmICR3YXJuQWJv
dXRVbmxvY2FsaXplZFN0cmluZ3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbm90TG9jYWxp
emVkQ291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAkc3RyaW5nID0gdW5kZWY7Ci0gICAgICAgICAgICAgICAgbGFzdCBpZiAh
ZGVmaW5lZCAkdG9rZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
ICRwcmV2aW91c1Rva2VuID0gJHRva2VuOwotCi0gICAgICAgICAgICBpZiAoJHRva2VuID1+IC9e
TlNMb2NhbGl6ZWQvICYmICR0b2tlbiAhfiAvTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleS8gJiYg
JHRva2VuICF+IC9OU0xvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxlLyAmJiAkdG9rZW4g
IX4gL05TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbi8gJiYgJHRva2VuICF+IC9OU0xvY2Fs
aXplZERlc2NyaXB0aW9uS2V5LyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkUmVjb3ZlcnlTdWdn
ZXN0aW9uRXJyb3JLZXkvKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwg
ImZvdW5kIGEgdXNlIG9mIGFuIE5TTG9jYWxpemVkIG1hY3JvICgkdG9rZW4pOyBub3Qgc3VwcG9y
dGVkIik7Ci0gICAgICAgICAgICAgICAgJG5lc3RpbmdMZXZlbCA9IDAgaWYgIWRlZmluZWQgJG5l
c3RpbmdMZXZlbDsKLSAgICAgICAgICAgICAgICAkTlNMb2NhbGl6ZUNvdW50Kys7Ci0gICAgICAg
ICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIi8qIikgewotICAgICAgICAgICAgICAgIGlmICghcy1e
Lio/XCovLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgJF8gPSAiIjsgIyBJZiB0aGUgY29tbWVu
dCBkb2Vzbid0IGVuZCwgZGlzY2FyZCB0aGUgcmVzdWx0IG9mIHRoZSBsaW5lIGFuZCBzZXQgZmxh
ZwotICAgICAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIi8vIikgewotICAgICAgICAgICAgICAg
ICRfID0gIiI7ICMgRGlzY2FyZCB0aGUgcmVzdCBvZiB0aGUgbGluZQotICAgICAgICAgICAgfSBl
bHNpZiAoJHRva2VuIGVxICInIikgewotICAgICAgICAgICAgICAgIGlmICghcy0oW15cXF18XFwu
KSctLSkgeyAjJyA8LS0gdGhhdCBzaW5nbGUgcXVvdGUgbWFrZXMgdGhlIFByb2plY3QgQnVpbGRl
ciBlZGl0b3IgbGVzcyBjb25mdXNlZAotICAgICAgICAgICAgICAgICAgICBlbWl0RXJyb3IoJGZp
bGUsICQuLCAibWlzbWF0Y2hlZCBzaW5nbGUgcXVvdGUiKTsKLSAgICAgICAgICAgICAgICAgICAg
JF8gPSAiIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBuZSAkdG9rZW4pIHsKLSAgICAg
ICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZvdW5kICR0b2tlbiBidXQgZXhw
ZWN0ZWQgJGV4cGVjdGVkIik7Ci0gICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8p
P1VJX1NUUklORyhfS0VZKT8oX0lOVEVSTkFMKT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05T
U1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSB8
fCAoJHRva2VuID1+IC9XRUJfVUlfQ0ZTVFJJTkckLykpIHsKLSAgICAgICAgICAgICAgICAgICAg
JGV4cGVjdGVkID0gIigiOwotICAgICAgICAgICAgICAgICAgICAkbWFjcm8gPSAkdG9rZW47Ci0g
ICAgICAgICAgICAgICAgICAgICRVSVN0cmluZyA9IHVuZGVmOwotICAgICAgICAgICAgICAgICAg
ICAka2V5ID0gdW5kZWY7Ci0gICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gdW5kZWY7Ci0g
ICAgICAgICAgICAgICAgICAgICRtbmVtb25pYyA9IHVuZGVmOwotICAgICAgICAgICAgICAgICAg
ICAkbWFjcm9MaW5lID0gJC47Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIo
IiBvciAkdG9rZW4gZXEgIlsiKSB7Ci0gICAgICAgICAgICAgICAgICAgICsrJG5lc3RpbmdMZXZl
bCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAgICAgICAgICAgICRleHBlY3Rl
ZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKLSAgICAgICAgICAgICAgICB9IGVs
c2lmICgkdG9rZW4gZXEgIiwiKSB7Ci0gICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICJh
IHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgk
dG9rZW4gZXEgIikiIG9yICR0b2tlbiBlcSAiXSIpIHsKLSAgICAgICAgICAgICAgICAgICAgJG5l
c3RpbmdMZXZlbCA9IHVuZGVmIGlmIGRlZmluZWQgJG5lc3RpbmdMZXZlbCAmJiAhLS0kbmVzdGlu
Z0xldmVsOwotICAgICAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAka2V5ID0gJFVJU3RyaW5nIGlmICFkZWZpbmVkICRrZXk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBIYW5kbGVVSVN0cmluZygkVUlTdHJpbmcsICRrZXksICRjb21tZW50
LCAkZmlsZSwgJG1hY3JvTGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbWFjcm8gPSAi
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJGlzRGVidWdNYWNyb3skdG9rZW59
KSB7Ci0gICAgICAgICAgICAgICAgICAgICRuZXN0aW5nTGV2ZWwgPSAwIGlmICFkZWZpbmVkICRu
ZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgZ290byBoYW5kbGVTdHJpbmcgaWYgZGVm
aW5lZCAkc3RyaW5nOwotICAgIAotICAgIGlmICgkZXhwZWN0ZWQpIHsKLSAgICAgICAgZW1pdEVy
cm9yKCRmaWxlLCAwLCAicmVhY2hlZCBlbmQgb2YgZmlsZSBidXQgZXhwZWN0ZWQgJGV4cGVjdGVk
Iik7Ci0gICAgfQotICAgIAotICAgIGNsb3NlIFNPVVJDRTsKLX0KLQotcHJpbnQgIlxuIiBpZiBz
YXdFcnJvcigpIHx8ICRub3RMb2NhbGl6ZWRDb3VudCB8fCAkTlNMb2NhbGl6ZUNvdW50OwotCi1t
eSBAdW51c2VkRXhjZXB0aW9ucyA9IHNvcnQgZ3JlcCB7ICEkdXNlZEV4Y2VwdGlvbnskX30gfSBr
ZXlzICVleGNlcHRpb247Ci1pZiAoQHVudXNlZEV4Y2VwdGlvbnMpIHsKLSAgICBmb3IgbXkgJHVu
dXNlZCAoQHVudXNlZEV4Y2VwdGlvbnMpIHsKLSAgICAgICAgZW1pdFdhcm5pbmcoJGV4Y2VwdGlv
bnNGaWxlLCAkZXhjZXB0aW9ueyR1bnVzZWR9LCAiZXhjZXB0aW9uICR1bnVzZWQgbm90IHVzZWQi
KTsKLSAgICB9Ci0gICAgcHJpbnQgIlxuIjsKLX0KLQotcHJpbnQgbG9jYWxpemVkQ291bnQoKSAu
ICIgbG9jYWxpemFibGUgc3RyaW5nc1xuIiBpZiBsb2NhbGl6ZWRDb3VudCgpOwotcHJpbnQga2V5
Q29sbGlzaW9uQ291bnQoKSAuICIga2V5IGNvbGxpc2lvbnNcbiIgaWYga2V5Q29sbGlzaW9uQ291
bnQoKTsKLXByaW50ICIkbm90TG9jYWxpemVkQ291bnQgc3RyaW5ncyBub3QgbWFya2VkIGZvciBs
b2NhbGl6YXRpb25cbiIgaWYgJG5vdExvY2FsaXplZENvdW50OwotcHJpbnQgIiROU0xvY2FsaXpl
Q291bnQgdXNlcyBvZiBOU0xvY2FsaXplXG4iIGlmICROU0xvY2FsaXplQ291bnQ7Ci1wcmludCBz
Y2FsYXIoQHVudXNlZEV4Y2VwdGlvbnMpLCAiIHVudXNlZCBleGNlcHRpb25zXG4iIGlmIEB1bnVz
ZWRFeGNlcHRpb25zOwotCi1pZiAoc2F3RXJyb3IoKSkgewotICAgIHByaW50ICJcbkVycm9ycyBl
bmNvdW50ZXJlZC4gRXhpdGluZyB3aXRob3V0IHdyaXRpbmcgdG8gJGZpbGVUb1VwZGF0ZS5cbiI7
Ci0gICAgZXhpdCAxOwotfQotCi1pZiAoLWUgIiRmaWxlVG9VcGRhdGUiKSB7Ci0gICAgaWYgKCEk
dmVyaWZ5KSB7Ci0gICAgICAgIG15ICR0ZW1wb3JhcnlGaWxlID0gIiRmaWxlVG9VcGRhdGUudXBk
YXRlZCI7Ci0gICAgICAgIHdyaXRlU3RyaW5nc0ZpbGUoJHRlbXBvcmFyeUZpbGUpOwotCi0gICAg
ICAgICMgQXZvaWQgdXBkYXRpbmcgdGhlIHRhcmdldCBmaWxlJ3MgbW9kaWZpY2F0aW9uIHRpbWUg
aWYgdGhlIGNvbnRlbnRzIGhhdmUgbm90IGNoYW5nZWQuCi0gICAgICAgIGlmIChjb21wYXJlKCR0
ZW1wb3JhcnlGaWxlLCAkZmlsZVRvVXBkYXRlKSkgewotICAgICAgICAgICAgbW92ZSgkdGVtcG9y
YXJ5RmlsZSwgJGZpbGVUb1VwZGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1
bmxpbmsgJHRlbXBvcmFyeUZpbGU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB2
ZXJpZnlTdHJpbmdzRmlsZSgkZmlsZVRvVXBkYXRlKTsKLSAgICB9Ci19IGVsc2UgewotICAgIHBy
aW50ICJlcnJvcjogJGZpbGVUb1VwZGF0ZSBkb2VzIG5vdCBleGlzdFxuIjsKLSAgICBleGl0IDE7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XQUtWaWV3SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dBS1ZpZXdJbnRlcm5hbC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NGY5OGRkMjk5YzVhMDk3ZGJiZTRlMjU4MDgxYjA4MzFlZTVi
Yjg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1dBS1ZpZXdJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBUQVJHRVRfT1NfSVBIT05FCi0KLSNpbXBvcnQg
IldBS1ZpZXcuaCIKLSNpbXBvcnQgIldLVmlldy5oIgotCi1AaW50ZXJmYWNlIFdBS1ZpZXcgKCkg
ewotQHBhY2thZ2UKLSAgICBXS1ZpZXdDb250ZXh0IHZpZXdDb250ZXh0OwotICAgIFdLVmlld1Jl
ZiB2aWV3UmVmOwotCi0gICAgTlNNdXRhYmxlU2V0ICpzdWJ2aWV3UmVmZXJlbmNlczsgICAgLy8g
VGhpcyBhcnJheSBpcyBvbmx5IHVzZWQgdG8ga2VlcCBXQUtWaWV3cyBhbGl2ZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWN0dWFsIHN1YnZpZXdzIGFy
ZSBtYWludGFpbmVkIGJ5IHRoZSBXS1ZpZXcuCi0KLSAgICBCT09MIF9pc0hpZGRlbjsKLSAgICBC
T09MIF9kcmF3c093bkRlc2NlbmRhbnRzOwotfQotCi0tIChXS1ZpZXdSZWYpX3ZpZXdSZWY7Ci0r
IChXQUtWaWV3ICopX3dyYXBwZXJGb3JWaWV3UmVmOihXS1ZpZXdSZWYpX3ZpZXdSZWY7Ci0tIChp
ZClfaW5pdFdpdGhWaWV3UmVmOihXS1ZpZXdSZWYpdmlldzsKLS0gKEJPT0wpX2hhbmRsZVJlc3Bv
bmRlckNhbGw6KFdLVmlld1Jlc3BvbmRlckNhbGxiYWNrVHlwZSl0eXBlOwotLSAoTlNNdXRhYmxl
U2V0ICopX3N1YnZpZXdSZWZlcmVuY2VzOwotLSAoQk9PTClfc2VsZkhhbmRsZUV2ZW50OihXZWJF
dmVudCAqKWV2ZW50OwotCi1AZW5kCi0KLXN0YXRpYyBpbmxpbmUgV0FLVmlldyAqV0FLVmlld0Zv
cldLVmlld1JlZihXS1ZpZXdSZWYgdmlldykKLXsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgV0FLVmlldyAqd3JhcHBlciA9IChXQUtWaWV3ICopdmlldy0+d3JhcHBl
cjsKLSAgICBpZiAod3JhcHBlcikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJu
IFtXQUtWaWV3IF93cmFwcGVyRm9yVmlld1JlZjp2aWV3XTsKLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2ZDUxZGQyMjNlNDhmODc5YjI2MWQwMzE5
Y2UwYjAzN2ZmYjk3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0KLSNpbmNsdWRlICJD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIFBBTDsKLQot
V2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBmb3JtYXQpCi17Ci0gICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFy
aWFibGUtbGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmlj
IG5ldygpIG9wZXJhdG9yCi0gICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6
ZSB0aGUgc3RydWN0IG1hbnVhbGx5LgotICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50ID0gZm9ybWF0
Lm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKTsKLSAgICB1aW50MzJfdCBjaGFubmVsQ291bnQgPSBm
b3JtYXQubnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7Ci0KLSAgICB1aW50NjRfdCBidWZm
ZXJMaXN0U2l6ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNpemVv
ZihBdWRpb0J1ZmZlcikgKiBzdGQ6Om1heCgxVSwgYnVmZmVyQ291bnQpKTsKLSAgICBBU1NFUlQo
YnVmZmVyTGlzdFNpemUgPD0gU0laRV9NQVgpOwotCi0gICAgbV9saXN0QnVmZmVyU2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyTGlzdFNpemUpOwotICAgIG1fY2Fub25pY2FsTGlzdCA9
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVy
TGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOwotICAgIG1lbXNldCht
X2Nhbm9uaWNhbExpc3QuZ2V0KCksIDAsIG1fbGlzdEJ1ZmZlclNpemUpOwotICAgIG1fY2Fub25p
Y2FsTGlzdC0+bU51bWJlckJ1ZmZlcnMgPSBidWZmZXJDb3VudDsKLSAgICBmb3IgKHVpbnQzMl90
IGJ1ZmZlciA9IDA7IGJ1ZmZlciA8IGJ1ZmZlckNvdW50OyArK2J1ZmZlcikKLSAgICAgICAgbV9j
YW5vbmljYWxMaXN0LT5tQnVmZmVyc1tidWZmZXJdLm1OdW1iZXJDaGFubmVscyA9IGNoYW5uZWxD
b3VudDsKLQotICAgIHJlc2V0KCk7Ci19Ci0KLVdlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9C
dWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCB1aW50MzJf
dCBzYW1wbGVDb3VudCkKLSAgICA6IFdlYkF1ZGlvQnVmZmVyTGlzdChmb3JtYXQpCi17Ci0gICAg
aWYgKCFzYW1wbGVDb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdWludDMyX3QgYnVmZmVy
Q291bnQgPSBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwotICAgIHVpbnQzMl90IGNo
YW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZkludGVybGVhdmVkQ2hhbm5lbHMoKTsKLQotICAg
IHNpemVfdCBieXRlc1BlckJ1ZmZlciA9IHNhbXBsZUNvdW50ICogY2hhbm5lbENvdW50ICogZm9y
bWF0LmJ5dGVzUGVyRnJhbWUoKTsKLSAgICBtX2ZsYXRCdWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShidWZmZXJDb3VudCAqIGJ5dGVzUGVyQnVmZmVyKTsKLSAgICBhdXRvIGRhdGEgPSBtX2Zs
YXRCdWZmZXIuZGF0YSgpOwotCi0gICAgZm9yICh1aW50MzJfdCBidWZmZXIgPSAwOyBidWZmZXIg
PCBtX2Nhbm9uaWNhbExpc3QtPm1OdW1iZXJCdWZmZXJzOyArK2J1ZmZlcikgewotICAgICAgICBt
X2Nhbm9uaWNhbExpc3QtPm1CdWZmZXJzW2J1ZmZlcl0ubURhdGEgPSBkYXRhOwotICAgICAgICBt
X2Nhbm9uaWNhbExpc3QtPm1CdWZmZXJzW2J1ZmZlcl0ubURhdGFCeXRlU2l6ZSA9IGJ5dGVzUGVy
QnVmZmVyOwotICAgICAgICBkYXRhICs9IGJ5dGVzUGVyQnVmZmVyOwotICAgIH0KLQotICAgIHJl
c2V0KCk7Ci19Ci0KLVdlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIpCi0gICAgOiBXZWJBdWRpb0J1ZmZlckxpc3QoZm9ybWF0KQotewotCi0gICAgaWYg
KCFzYW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENNQmxvY2tCdWZmZXJSZWYg
YnVmZmVyID0gbnVsbHB0cjsKLSAgICBpZiAobm9FcnIgPT0gQ01TYW1wbGVCdWZmZXJHZXRBdWRp
b0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51bGxwdHIs
IG1fY2Fub25pY2FsTGlzdC5nZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lz
dGVtRGVmYXVsdCwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxh
Z19BdWRpb0J1ZmZlckxpc3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKSkKLSAgICAg
ICAgbV9ibG9ja0J1ZmZlciA9IGFkb3B0Q0YoYnVmZmVyKTsKLQotICAgIHJlc2V0KCk7Ci19Ci0K
LXZvaWQgV2ViQXVkaW9CdWZmZXJMaXN0OjpyZXNldCgpCi17Ci0gICAgaWYgKCFtX2xpc3QpCi0g
ICAgICAgIG1fbGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19j
YXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2xpc3RCdWZmZXJTaXplKSkp
OwotICAgIG1lbWNweShtX2xpc3QuZ2V0KCksIG1fY2Fub25pY2FsTGlzdC5nZXQoKSwgbV9saXN0
QnVmZmVyU2l6ZSk7Ci19Ci0KLVdURjo6SXRlcmF0b3JSYW5nZTxBdWRpb0J1ZmZlcio+IFdlYkF1
ZGlvQnVmZmVyTGlzdDo6YnVmZmVycygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6bWFrZUl0
ZXJhdG9yUmFuZ2UoJm1fbGlzdC0+bUJ1ZmZlcnNbMF0sICZtX2xpc3QtPm1CdWZmZXJzW21fbGlz
dC0+bU51bWJlckJ1ZmZlcnNdKTsKLX0KLQotdWludDMyX3QgV2ViQXVkaW9CdWZmZXJMaXN0Ojpi
dWZmZXJDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnM7
Ci19Ci0KLUF1ZGlvQnVmZmVyKiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcih1aW50MzJfdCBp
bmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJz
KTsKLSAgICBpZiAoaW5kZXggPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzKQotICAgICAgICByZXR1
cm4gJm1fbGlzdC0+bUJ1ZmZlcnNbaW5kZXhdOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZl
ckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1dlYkF1ZGlvQnVmZmVyTGlz
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5
Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1dlYkF1ZGlvQnVmZmVyTGlz
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiUGxhdGZvcm1BdWRpb0RhdGEuaCIKLSNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLXN0cnVjdCBBdWRpb0J1ZmZlcjsKLXN0cnVjdCBBdWRpb0J1ZmZlckxpc3Q7
Ci10eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVmZmVyUmVmOwot
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsK
LQotY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsK
LXB1YmxpYzoKLSAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKLSAgICBXZWJB
dWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgQ01TYW1wbGVC
dWZmZXJSZWYpOwotCi0gICAgdm9pZCByZXNldCgpOwotCi0gICAgQXVkaW9CdWZmZXJMaXN0KiBs
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9saXN0LmdldCgpOyB9Ci0gICAgb3BlcmF0b3IgQXVkaW9C
dWZmZXJMaXN0JigpIGNvbnN0IHsgcmV0dXJuICptX2xpc3Q7IH0KLQotICAgIHVpbnQzMl90IGJ1
ZmZlckNvdW50KCkgY29uc3Q7Ci0gICAgQXVkaW9CdWZmZXIqIGJ1ZmZlcih1aW50MzJfdCBpbmRl
eCkgY29uc3Q7Ci0gICAgV1RGOjpJdGVyYXRvclJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygp
IGNvbnN0OwotCi1wcml2YXRlOgotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQ6
OldlYkF1ZGlvQnVmZmVyTGlzdDsgfQotCi0gICAgc2l6ZV90IG1fbGlzdEJ1ZmZlclNpemUgeyAw
IH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9jYW5vbmljYWxMaXN0
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fbGlzdDsKLSAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9ibG9ja0J1ZmZlcjsKLSAgICBWZWN0b3I8dWludDhf
dD4gbV9mbGF0QnVmZmVyOwotfTsKLQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdCkKLXN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5raW5kKCkgPT0g
V2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGE6OktpbmQ6OldlYkF1ZGlvQnVmZmVyTGlzdDsgfQot
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjI2ZDUxZGQyMjNlNDhmODc5YjI2MWQwMzE5Y2UwYjAzN2ZmYjk3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVy
TGlzdC5jcHAKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisKKyNpbmNsdWRlICJDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworV2ViQXVk
aW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBmb3JtYXQpCit7CisgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUt
bGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygp
IG9wZXJhdG9yCisgICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6ZSB0aGUg
c3RydWN0IG1hbnVhbGx5LgorICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50ID0gZm9ybWF0Lm51bWJl
ck9mQ2hhbm5lbFN0cmVhbXMoKTsKKyAgICB1aW50MzJfdCBjaGFubmVsQ291bnQgPSBmb3JtYXQu
bnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7CisKKyAgICB1aW50NjRfdCBidWZmZXJMaXN0
U2l6ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNpemVvZihBdWRp
b0J1ZmZlcikgKiBzdGQ6Om1heCgxVSwgYnVmZmVyQ291bnQpKTsKKyAgICBBU1NFUlQoYnVmZmVy
TGlzdFNpemUgPD0gU0laRV9NQVgpOworCisgICAgbV9saXN0QnVmZmVyU2l6ZSA9IHN0YXRpY19j
YXN0PHNpemVfdD4oYnVmZmVyTGlzdFNpemUpOworICAgIG1fY2Fub25pY2FsTGlzdCA9IHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+
KDo6b3BlcmF0b3IgbmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOworICAgIG1lbXNldChtX2Nhbm9u
aWNhbExpc3QuZ2V0KCksIDAsIG1fbGlzdEJ1ZmZlclNpemUpOworICAgIG1fY2Fub25pY2FsTGlz
dC0+bU51bWJlckJ1ZmZlcnMgPSBidWZmZXJDb3VudDsKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZl
ciA9IDA7IGJ1ZmZlciA8IGJ1ZmZlckNvdW50OyArK2J1ZmZlcikKKyAgICAgICAgbV9jYW5vbmlj
YWxMaXN0LT5tQnVmZmVyc1tidWZmZXJdLm1OdW1iZXJDaGFubmVscyA9IGNoYW5uZWxDb3VudDsK
KworICAgIHJlc2V0KCk7Cit9CisKK1dlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJM
aXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCB1aW50MzJfdCBzYW1w
bGVDb3VudCkKKyAgICA6IFdlYkF1ZGlvQnVmZmVyTGlzdChmb3JtYXQpCit7CisgICAgaWYgKCFz
YW1wbGVDb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdWludDMyX3QgYnVmZmVyQ291bnQg
PSBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOworICAgIHVpbnQzMl90IGNoYW5uZWxD
b3VudCA9IGZvcm1hdC5udW1iZXJPZkludGVybGVhdmVkQ2hhbm5lbHMoKTsKKworICAgIHNpemVf
dCBieXRlc1BlckJ1ZmZlciA9IHNhbXBsZUNvdW50ICogY2hhbm5lbENvdW50ICogZm9ybWF0LmJ5
dGVzUGVyRnJhbWUoKTsKKyAgICBtX2ZsYXRCdWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShi
dWZmZXJDb3VudCAqIGJ5dGVzUGVyQnVmZmVyKTsKKyAgICBhdXRvIGRhdGEgPSBtX2ZsYXRCdWZm
ZXIuZGF0YSgpOworCisgICAgZm9yICh1aW50MzJfdCBidWZmZXIgPSAwOyBidWZmZXIgPCBtX2Nh
bm9uaWNhbExpc3QtPm1OdW1iZXJCdWZmZXJzOyArK2J1ZmZlcikgeworICAgICAgICBtX2Nhbm9u
aWNhbExpc3QtPm1CdWZmZXJzW2J1ZmZlcl0ubURhdGEgPSBkYXRhOworICAgICAgICBtX2Nhbm9u
aWNhbExpc3QtPm1CdWZmZXJzW2J1ZmZlcl0ubURhdGFCeXRlU2l6ZSA9IGJ5dGVzUGVyQnVmZmVy
OworICAgICAgICBkYXRhICs9IGJ5dGVzUGVyQnVmZmVyOworICAgIH0KKworICAgIHJlc2V0KCk7
Cit9CisKK1dlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIpCisgICAgOiBXZWJBdWRpb0J1ZmZlckxpc3QoZm9ybWF0KQoreworCisgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENNQmxvY2tCdWZmZXJSZWYgYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBpZiAobm9FcnIgPT0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZl
ckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51bGxwdHIsIG1fY2Fu
b25pY2FsTGlzdC5nZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVtRGVm
YXVsdCwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19BdWRp
b0J1ZmZlckxpc3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKSkKKyAgICAgICAgbV9i
bG9ja0J1ZmZlciA9IGFkb3B0Q0YoYnVmZmVyKTsKKworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQg
V2ViQXVkaW9CdWZmZXJMaXN0OjpyZXNldCgpCit7CisgICAgaWYgKCFtX2xpc3QpCisgICAgICAg
IG1fbGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1
ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOworICAg
IG1lbWNweShtX2xpc3QuZ2V0KCksIG1fY2Fub25pY2FsTGlzdC5nZXQoKSwgbV9saXN0QnVmZmVy
U2l6ZSk7Cit9CisKK1dURjo6SXRlcmF0b3JSYW5nZTxBdWRpb0J1ZmZlcio+IFdlYkF1ZGlvQnVm
ZmVyTGlzdDo6YnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9y
UmFuZ2UoJm1fbGlzdC0+bUJ1ZmZlcnNbMF0sICZtX2xpc3QtPm1CdWZmZXJzW21fbGlzdC0+bU51
bWJlckJ1ZmZlcnNdKTsKK30KKwordWludDMyX3QgV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZmZXJD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnM7Cit9CisK
K0F1ZGlvQnVmZmVyKiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcih1aW50MzJfdCBpbmRleCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzKTsKKyAg
ICBpZiAoaW5kZXggPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzKQorICAgICAgICByZXR1cm4gJm1f
bGlzdC0+bUJ1ZmZlcnNbaW5kZXhdOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YjY1YTIyNTNhZjFhZWIyYTFjYTljYWEzNjY3ODZjZDdk
NjU1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQbGF0Zm9ybUF1ZGlvRGF0YS5oIgorI2luY2x1ZGUg
PHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3RydWN0IEF1ZGlvQnVmZmVyOworc3RydWN0IEF1ZGlvQnVm
ZmVyTGlzdDsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tCdWZm
ZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOworCitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1BdWRp
b0RhdGEgeworcHVibGljOgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3Qo
Y29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwor
ICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBD
TVNhbXBsZUJ1ZmZlclJlZik7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBBdWRpb0J1ZmZl
ckxpc3QqIGxpc3QoKSBjb25zdCB7IHJldHVybiBtX2xpc3QuZ2V0KCk7IH0KKyAgICBvcGVyYXRv
ciBBdWRpb0J1ZmZlckxpc3QmKCkgY29uc3QgeyByZXR1cm4gKm1fbGlzdDsgfQorCisgICAgdWlu
dDMyX3QgYnVmZmVyQ291bnQoKSBjb25zdDsKKyAgICBBdWRpb0J1ZmZlciogYnVmZmVyKHVpbnQz
Ml90IGluZGV4KSBjb25zdDsKKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBi
dWZmZXJzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gS2luZDo6V2ViQXVkaW9CdWZmZXJMaXN0OyB9CisKKyAgICBzaXplX3QgbV9saXN0QnVmZmVy
U2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBtX2Nhbm9u
aWNhbExpc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9saXN0Owor
ICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX2Jsb2NrQnVmZmVyOworICAgIFZlY3Rv
cjx1aW50OF90PiBtX2ZsYXRCdWZmZXI7Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0KQorc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLmtp
bmQoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YTo6S2luZDo6V2ViQXVkaW9CdWZmZXJM
aXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
YW1wbGVBVkZPYmpDLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YTgwNmRmZTMz
ZTk3YzBjMWYyOGQyMTEwZGY1ODhmOTU2ODI2YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQyA6IHB1YmxpYyBN
ZWRpYVNhbXBsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQotICAg
IHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlLCBBdG9taWNTdHJpbmcgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YVNhbXBsZUFWRk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KLSAgICBzdGF0aWMgUmVmPE1lZGlh
U2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgVmlkZW9Sb3Rh
dGlvbiByb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxz
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCByb3Rh
dGlvbiwgbWlycm9yZWQpKTsgfQotICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpD
PiBjcmVhdGVJbWFnZVNhbXBsZShSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNhbXBsZShWZWN0b3I8dWludDhfdD4mJiwg
dW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOwotCi0gICAgUmVmUHRy
PEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBvdmVycmlk
ZTsKLQotICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgTWVkaWFUaW1lIG91dHB1dFByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBNZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE1lZGlhVGltZSBk
dXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwotCi0gICAgQXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYg
aWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9Ci0KLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICBQ
bGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5
KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKLSAgICBib29sIGlzRGl2
aXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBs
ZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUpIG92ZXJyaWRlOwotICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxh
eWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3Rh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm90YXRpb247IH0KLSAgICBib29sIHZp
ZGVvTWlycm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21pcnJvcmVkOyB9Ci0KLSAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZS5nZXQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4mJiBzYW1wbGUpCi0gICAgICAgIDogbV9zYW1wbGUoV1RGTW92
ZShzYW1wbGUpKQotICAgIHsKLSAgICB9Ci0gICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxl
QnVmZmVyUmVmIHNhbXBsZSkKLSAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgewotICAg
IH0KLSAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9t
aWNTdHJpbmcgdHJhY2tJRCkKLSAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCi0gICAgICAgICwg
bV9pZCh0cmFja0lEKQotICAgIHsKLSAgICB9Ci0gICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRyYWNrSUQpCi0gICAgICAgIDogbV9zYW1wbGUoc2Ft
cGxlKQotICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgdHJhY2tJRCkpCi0gICAg
ewotICAgIH0KLSAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
LCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQotICAgICAgICA6IG1fc2Ft
cGxlKHNhbXBsZSkKLSAgICAgICAgLCBtX3JvdGF0aW9uKHJvdGF0aW9uKQotICAgICAgICAsIG1f
bWlycm9yZWQobWlycm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfk1lZGlhU2Ft
cGxlQVZGT2JqQygpID0gZGVmYXVsdDsKLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IG1fc2FtcGxlOwotICAgIEF0b21pY1N0cmluZyBtX2lkOwotICAgIFZpZGVvUm90YXRpb24gbV9y
b3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKLSAgICBib29sIG1fbWlycm9yZWQgeyBm
YWxzZSB9OwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNWE4MDZkZmUzM2U5N2MwYzFmMjhkMjExMGRmNTg4Zjk1NjgyNmFj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTAsMCArMSwxMDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIE1lZGlhU2FtcGxlQVZGT2JqQyA6IHB1YmxpYyBNZWRpYVNhbXBs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIGludCB0cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQorICAgIHN0YXRpYyBS
ZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBB
dG9taWNTdHJpbmcgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFW
Rk9iakMoc2FtcGxlLCB0cmFja0lEKSk7IH0KKyAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgVmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCByb3RhdGlvbiwgbWly
cm9yZWQpKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJ
bWFnZVNhbXBsZShSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgbG9uZyB3
aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1w
bGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNhbXBsZShWZWN0b3I8dWludDhfdD4mJiwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpOworCisgICAgUmVmUHRyPEpTQzo6VWlu
dDhDbGFtcGVkQXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKworICAg
IE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFU
aW1lIG91dHB1dFByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRp
bWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBkdXJhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBvdXRwdXREdXJhdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgQXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRUcmFja0lEKGNvbnN0IFN0cmluZyYgaWQpIG92ZXJy
aWRlIHsgbV9pZCA9IGlkOyB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVNh
bXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKKyAgICBib29sIGlzRGl2aXNhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0
cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUp
IG92ZXJyaWRlOworICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm90YXRpb247IH0KKyAgICBib29sIHZpZGVvTWlycm9y
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21pcnJvcmVkOyB9CisKKyAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKFJldGFpblB0cjxDTVNhbXBs
ZUJ1ZmZlclJlZj4mJiBzYW1wbGUpCisgICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUp
KQorICAgIHsKKyAgICB9CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZSkKKyAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCisgICAgeworICAgIH0KKyAgICBN
ZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9taWNTdHJpbmcg
dHJhY2tJRCkKKyAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCisgICAgICAgICwgbV9pZCh0cmFj
a0lEKQorICAgIHsKKyAgICB9CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZSwgaW50IHRyYWNrSUQpCisgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQorICAg
ICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgdHJhY2tJRCkpCisgICAgeworICAgIH0K
KyAgICBNZWRpYVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorICAgICAgICA6IG1fc2FtcGxlKHNhbXBs
ZSkKKyAgICAgICAgLCBtX3JvdGF0aW9uKHJvdGF0aW9uKQorICAgICAgICAsIG1fbWlycm9yZWQo
bWlycm9yZWQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1lZGlhU2FtcGxlQVZGT2Jq
QygpID0gZGVmYXVsdDsKKyAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fc2FtcGxl
OworICAgIEF0b21pY1N0cmluZyBtX2lkOworICAgIFZpZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7
IFZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBib29sIG1fbWlycm9yZWQgeyBmYWxzZSB9Owor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlld0lu
dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FkMDYyODM3MTkwOTcxZDQ2NjZlOWFhN2MwY2Q5OGYxOGVj
MGZhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V0FLVmlld0ludGVybmFsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBUQVJH
RVRfT1NfSVBIT05FCisKKyNpbXBvcnQgIldBS1ZpZXcuaCIKKyNpbXBvcnQgIldLVmlldy5oIgor
CitAaW50ZXJmYWNlIFdBS1ZpZXcgKCkKK3sKK0BwYWNrYWdlCisgICAgV0tWaWV3Q29udGV4dCB2
aWV3Q29udGV4dDsKKyAgICBXS1ZpZXdSZWYgdmlld1JlZjsKKworICAgIC8vIFRoaXMgYXJyYXkg
aXMgb25seSB1c2VkIHRvIGtlZXAgV0FLVmlld3MgYWxpdmUuCisgICAgLy8gVGhlIGFjdHVhbCBz
dWJ2aWV3cyBhcmUgbWFpbnRhaW5lZCBieSB0aGUgV0tWaWV3LgorICAgIE5TTXV0YWJsZVNldCAq
c3Vidmlld1JlZmVyZW5jZXM7CisKKyAgICBCT09MIF9pc0hpZGRlbjsKKyAgICBCT09MIF9kcmF3
c093bkRlc2NlbmRhbnRzOworfQorCistIChXS1ZpZXdSZWYpX3ZpZXdSZWY7CisrIChXQUtWaWV3
ICopX3dyYXBwZXJGb3JWaWV3UmVmOihXS1ZpZXdSZWYpX3ZpZXdSZWY7CistIChpZClfaW5pdFdp
dGhWaWV3UmVmOihXS1ZpZXdSZWYpdmlldzsKKy0gKEJPT0wpX2hhbmRsZVJlc3BvbmRlckNhbGw6
KFdLVmlld1Jlc3BvbmRlckNhbGxiYWNrVHlwZSl0eXBlOworLSAoTlNNdXRhYmxlU2V0ICopX3N1
YnZpZXdSZWZlcmVuY2VzOworLSAoQk9PTClfc2VsZkhhbmRsZUV2ZW50OihXZWJFdmVudCAqKWV2
ZW50OworCitAZW5kCisKK3N0YXRpYyBpbmxpbmUgV0FLVmlldyAqV0FLVmlld0ZvcldLVmlld1Jl
ZihXS1ZpZXdSZWYgdmlldykKK3sKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgV0FLVmlldyAqd3JhcHBlciA9IChXQUtWaWV3ICopdmlldy0+d3JhcHBlcjsKKyAgICBp
ZiAod3JhcHBlcikKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFtXQUtWaWV3
IF93cmFwcGVyRm9yVmlld1JlZjp2aWV3XTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIyOTRjOGE5MzFkYTYyNDAwZGNm
ZjkyODJiMTA1YWNkNjI3YTc1MC4uOWUwMTVhMjBiMmYxZGUxY2NhNjA2NmVhZTk0YWNlZTc3MmNl
ZjhlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTA4LTIyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBmaWxlcyBpbiBXZWJDb3JlIHByb2plY3QgdG8gbWF0Y2gg
WGNvZGUgZm9sZGVyIHN0cnVjdHVyZQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg4
ODUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3M6CisgICAgICAgICogU2NyaXB0cy91
cGRhdGUtd2Via2l0LWxvY2FsaXphYmxlLXN0cmluZ3M6CisgICAgICAgIC0gVXBkYXRlIHRvIG1h
dGNoIG5ldyBsb2NhdGlvbiBvZiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwuCisKIDIw
MTgtMDgtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSb2xsIG91dCByMjM1MTM5IGFuZCByMjM1MTQ2CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncyBiL1Rvb2xzL1NjcmlwdHMvZXh0cmFj
dC1sb2NhbGl6YWJsZS1zdHJpbmdzCmluZGV4IDUyNTQ1YjdiMTdiYWIwZWIyZWU4ZTJlOGNkMGMy
MGUxZTYzNzBmZTEuLjY3MmFlY2ExZDQ3MWI3ZGQzNjI5MDJjMDQ2ZDlkMTIzNjE4NjcxNGYgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzCisrKyBi
L1Rvb2xzL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzCkBAIC0xLDMgKzEsMyBA
QAogIyEvYmluL3NoCiAKLWV4ZWMgIiQoZGlybmFtZSAkMCkvLi4vLi4vU291cmNlL1dlYkNvcmUv
ZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIiAiJEAiCitleGVjICIkKGRpcm5hbWUgJDAp
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdz
LnBsIiAiJEAiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtbG9jYWxp
emFibGUtc3RyaW5ncyBiL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1z
dHJpbmdzCmluZGV4IGFiNmEzZjFkMTNiZjc4OTE1NDM1NThhOTAyZGIxZTRkN2MzZDY3N2MuLjE2
NGQwMGQxZTRmMmMzZjNlZDI0ZDdhZmVjNTlhZGZkOWJiZTExZDcgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzCkBAIC00NSw1ICs0NSw1IEBA
IG15ICR3ZWJJbnNwZWN0b3JVSUZpbGVUb1VwZGF0ZSA9ICJTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sCiAKIGNoZGlyV2ViS2l0KCk7CiAKLXN5c3RlbSAiU291
cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIiwgJHdlYkNvcmVGaWxl
VG9VcGRhdGUsIEB3ZWJLaXREaXJlY3Rvcmllc1RvU2NhbjsKK3N5c3RlbSAiU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwiLCAkd2ViQ29yZUZpbGVU
b1VwZGF0ZSwgQHdlYktpdERpcmVjdG9yaWVzVG9TY2FuOwogc3lzdGVtICJUb29scy9TY3JpcHRz
L2V4dHJhY3QtbG9jYWxpemFibGUtanMtc3RyaW5ncyIsICItLXV0ZjgiLCAkd2ViSW5zcGVjdG9y
VUlGaWxlVG9VcGRhdGUsIEB3ZWJJbnNwZWN0b3JVSURpcmVjdG9yaWVzVG9TY2FuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>