<?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>42340</bug_id>
          
          <creation_ts>2010-07-14 23:23:51 -0700</creation_ts>
          <short_desc>Web Inspector: extract debugger implementation into DebuggerAgent</short_desc>
          <delta_ts>2010-08-06 10:06:57 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251692</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-14 23:23:51 -0700</bug_when>
    <thetext>There is a bunch of methods on the InspectorBackend providing debugger facilities. All of them can be easily extracted and placed into there own class DebuggerAgent. That would limit the InspectorController responsibilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261162</commentid>
    <comment_count>1</comment_count>
      <attachid>63707</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-06 02:50:07 -0700</bug_when>
    <thetext>Created attachment 63707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261168</commentid>
    <comment_count>2</comment_count>
      <attachid>63707</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-08-06 03:07:45 -0700</bug_when>
    <thetext>Comment on attachment 63707
Patch

WebCore/GNUmakefile.am:1600
 +  	WebCore/inspector/InspectorDebuggerAgent.h \
Incorrect order.

WebCore/WebCore.xcodeproj/project.pbxproj: 
 +  			developmentRegion = English;
is it necessary?

WebCore/inspector/InspectorDebuggerAgent.cpp:44
 +  static String md5Base16(const String&amp; string)
Why do you need your own implementation of md5Base16?

WebCore/inspector/InspectorDebuggerAgent.cpp:70
 +      ScriptDebugServer::shared().addListener(agent.get(), inspectorController-&gt;inspectedPage());
I think it would be better to move this code to ctor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261170</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-06 03:12:36 -0700</bug_when>
    <thetext>Attachment 63707 did not build on chromium:
Build output: http://queues.webkit.org/results/3624570</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261193</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-06 04:35:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 63707 [details])
&gt; WebCore/GNUmakefile.am:1600
&gt;  +      WebCore/inspector/InspectorDebuggerAgent.h \
&gt; Incorrect order.
&gt; 
Fixed.

&gt; WebCore/WebCore.xcodeproj/project.pbxproj: 
&gt;  +              developmentRegion = English;
&gt; is it necessary?
&gt; 
No. Thanks.

&gt; WebCore/inspector/InspectorDebuggerAgent.cpp:44
&gt;  +  static String md5Base16(const String&amp; string)
&gt; Why do you need your own implementation of md5Base16?
&gt; 
It was there before. Just forgot to remove it from InspectorController.cpp

&gt; WebCore/inspector/InspectorDebuggerAgent.cpp:70
&gt;  +      ScriptDebugServer::shared().addListener(agent.get(), inspectorController-&gt;inspectedPage());
&gt; I think it would be better to move this code to ctor.
I&apos;d rather keep it in the create method to make sure it&apos;s called only when the object is fully constructed. It would work either way I think since the constructor is private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261198</commentid>
    <comment_count>5</comment_count>
      <attachid>63714</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-06 04:51:19 -0700</bug_when>
    <thetext>Created attachment 63714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261232</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-06 07:07:01 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/CMakeLists.txt
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/inspector/CodeGeneratorInspector.pm
	M	WebCore/inspector/Inspector.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	A	WebCore/inspector/InspectorDebuggerAgent.cpp
	A	WebCore/inspector/InspectorDebuggerAgent.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/front-end/ScriptsPanel.js
Committed r64846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261306</commentid>
    <comment_count>7</comment_count>
      <attachid>63733</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-06 09:45:41 -0700</bug_when>
    <thetext>Created attachment 63733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261309</commentid>
    <comment_count>8</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-08-06 09:46:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=63733) [details]
&gt; Patch

Sorry, passed wrong bug no to webkit-patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261322</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-06 10:06:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64846 might have broken Qt Windows 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/64845
http://trac.webkit.org/changeset/64846</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63707</attachid>
            <date>2010-08-06 02:50:07 -0700</date>
            <delta_ts>2010-08-06 04:51:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42340-20100806135003.patch</filename>
            <type>text/plain</type>
            <size>50752</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFjMDk4YjcwNjJkZDA1MTVkMzUxYTM2YzBmMTMyZjJjMjYwN2RkMzkuLmJkYTUy
ZTY2ZTE5YWQ1MWExY2RiNGUzYzlhYTc0OGM3ZjE3MjkzNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA1Miw2ICsx
MDUyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OTU1NGIxYTgyYWEzZDEx
OTczNDg5MDJjMDgyODFmODZiYzM2YzJjLi5hZWM4YWNlZmZmNjdmZTk0NTA5ZDA0OGVhYmM1ZmYx
NTA3OWRmMjI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEwLTA4LTA2ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgZGVidWdnZXIgaW1wbGVtZW50YXRp
b24gaW50byBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM0MAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVu
YWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6bG9hZEJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNhdmVCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptZDVCYXNlMTYpOgorICAgICAgICAoV2ViQ29yZTo6
Zm9ybWF0QnJlYWtwb2ludElkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzRGVidWdnZXJBbHdheXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFjdGl2YXRlQnJlYWtwb2ludHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJy
ZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjplZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxs
RnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmxvYWRC
cmVha3BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
YXZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorCiAyMDEwLTA4LTA1ICBCZW4gTXVyZG9jaCAgPGJl
bm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA1OGQ2YzE5ZjA2M2UyNGY0NTE5ZGQ3ZWFmYmE5MWU4ZTBhMTU0YmZjLi4zZGIxMGVkNjE2
ZTNiOWExNDllY2RjYmRmODY0M2FkYWZlYTNiZjE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1OTYsNiArMTU5Niw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
LmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgg
XAorCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIFwKKwlXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggXAogCVdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIFwK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggYmFkMTIzZWUyMzM3YjZhOWUwMjZiNDRlYTJlMWFjNDZmYTNkMTM4OS4uMDVhY2M0YzBh
MjgwMmVhMDM5ZjRmYmIzZDE4ZjdkMjQxZmMxMWJhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3MzgsNiArMTczOCw4IEBA
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCcsCisgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggMjdjNzZmZTljOGZhMTFjN2Q1ZTczYjFjYWNjZTdmM2UxZTZjZjZj
ZC4uMjNiYWFjMzI4YzQ0NWQ0MWZjZTAxNzkwY2QzODU0NjM0ZGVhMDlkYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03NDEsNiAr
NzQxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXApAQCAtMTQ5Nyw2ICsxNDk4LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
M2JlZmFiOTFhZGMwODZjYjdhMTNlZjExMTk1M2EyNzdlMzA0ZTRjZC4uZTA0YTY0NmU5NjE5NjIy
NTEwYTNiMDJlZDQ5YjYwMTE3Zjk5NDIyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC01MDY2OSw2ICs1MDY2OSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckRPTUFnZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhjNzFmODIxZjk5M2Q3ZWM2Mzc0NzNmNzE1
MDVhMTBiY2RhYjU5NWUuLjI0MGY4NWUzODhiNGVjNjIxY2EyYzY3ZTAxZjg2MWIxODE3ZDgxZDgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTg4LDYg
KzUxODgsOCBAQAogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQz
MDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJl
Zml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVD
OTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OwogCQlGMzNGMDI4
MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDI4MTEyMDk0N0YyMDBFNTc0M0EgLyog
U2NyaXB0UHJvZmlsZS5jcHAgKi87IH07CisJCUYzM0YwNTNEMTIwQjBEQTUwMEU1NzQzQSAvKiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzM0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCAqLzsgfTsKKwkJRjMzRjA1M0UxMjBCMERBNTAwRTU3NDNBIC8qIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzM0YwNTNDMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmggKi87IH07CiAJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzUyMTEyOTRE
OUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3NTgxMTI5NEZGNjAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVF
IC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovOyB9OwpAQCAtMTA5MjIsNiAr
MTA5MjQsOCBAQAogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQcmVmaXguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CiAJCUYz
M0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMz
RjA1M0MxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjM0NEM3NTIxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0Qzc1NzExMjk0RkY2
MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTU2LDYgKzExNTYwLDggQEAKIAkJ
CQk4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCAqLywKIAkJ
CQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgKi8sCiAJCQkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaCAqLywKKwkJCQlGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgKi8sCisJCQkJRjMzRjA1M0MxMjBCMERBNTAwRTU3NDNBIC8qIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQk3QTI0NTg3OTEwMjFFQUY0MDAwQTAwQUEg
LyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovLAogCQkJCTdBMjQ1ODdBMTAyMUVBRjQwMDBBMDBB
QSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICovLAogCQkJCTQxRjA2MTczMEY1RjAwQUMwMEEwN0VB
QyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovLApAQCAtMTg2NDksNiArMTg2
NTUsNyBAQAogCQkJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEg
LyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MTc0MEY1RjAw
QUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVj
dG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVF
RSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjAwNDUsNyArMjAwNTIsNiBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKIAkJ
CWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lv
biA9IEVuZ2xpc2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVn
aW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtMjEwNzIsNiArMjEwNzgsNyBAQAogCQkJCTQxRjA2
MjE1MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01B
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzM0Yw
NTNEMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzQ0Qzc1ODExMjk0RkY2MDBGMjZFRUUgLyogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzcw
RTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5wbSBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXgg
ZGNlYzZjOTQyZGQ1NmVmNmFjYWQ2ZWQwZTQxN2MyODYwOGI1MDkzZS4uNDY4NzlhYjhhOTIyYjAx
Mjk3MzAxOTc2YmZiODQ3MTk5OThjMDM2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0yNCw5ICsyNCw5IEBAICR0eXBlVHJhbnNmb3JteyJDb250
cm9sbGVyIn0gPSB7CiAgICAgImhhbmRsZXJBY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJv
bGxlciIsCiB9OwogJHR5cGVUcmFuc2Zvcm17IkRlYnVnIn0gPSB7Ci0gICAgImZvcndhcmQiID0+
ICJTY3JpcHREZWJ1Z1NlcnZlciIsCi0gICAgImhlYWRlciIgPT4gIlNjcmlwdERlYnVnU2VydmVy
LmgiLAotICAgICJoYW5kbGVyQWNjZXNzb3IiID0+ICIoJlNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKSkiLAorICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudCIsCisgICAg
ImhlYWRlciIgPT4gIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIsCisgICAgImhhbmRsZXJBY2Nl
c3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGVidWdnZXJBZ2VudCgpIiwKIH07CiAk
dHlwZVRyYW5zZm9ybXsiRE9NIn0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JET01B
Z2VudCIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAwOTlmMTg0NmFmZjU0NDAxNWJkMzk5
MGYyMWFkMjYzMTk5NTVlZDViLi4xZGJmNTZiOWI0ODBjNGQ3ZDA3MzA1YTBhOWY1MzdjZjFiMzM2
MDA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTQ3LDggKzQ3LDEyIEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgW25vdGlmeV0gdm9pZCB1cGRhdGVSZXNvdXJjZShvdXQgVmFsdWUgcmVz
b3VyY2UpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHJlbW92ZVJlc291cmNlKG91dCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlSWQpOwogI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCisgICAgICAgIFtub3RpZnldIHZvaWQg
cGFyc2VkU2NyaXB0U291cmNlKG91dCBTdHJpbmcgc291cmNlSUQsIG91dCBTdHJpbmcgdXJsLCBv
dXQgU3RyaW5nIGRhdGEsIG91dCBpbnQgZmlyc3RMaW5lLCBvdXQgaW50IHNjcmlwdFdvcmxkVHlw
ZSk7CisgICAgICAgIFtub3RpZnldIHZvaWQgZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShvdXQg
U3RyaW5nIHVybCwgb3V0IFN0cmluZyBkYXRhLCBvdXQgaW50IGZpcnN0TGluZSwgb3V0IGludCBl
cnJvckxpbmUsIG91dCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgW25vdGlmeV0gdm9p
ZCBwYXVzZWRTY3JpcHQob3V0IFZhbHVlIGNhbGxGcmFtZXMpOwogICAgICAgICBbbm90aWZ5XSB2
b2lkIHJlc3VtZWRTY3JpcHQoKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCByZXN0b3JlZEJyZWFr
cG9pbnQob3V0IFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyB1cmwsIG91dCBpbnQgbGluZSwg
b3V0IGJvb2xlYW4gZW5hYmxlZCwgb3V0IFN0cmluZyBjb25kaXRpb24pOworICAgICAgICBbbm90
aWZ5XSB2b2lkIHVwZGF0ZVBhdXNlT25FeGNlcHRpb25zU3RhdGUob3V0IGxvbmcgc3RhdGUpOwog
ICAgICAgICBbbm90aWZ5XSB2b2lkIGFkZFByb2ZpbGVIZWFkZXIob3V0IE9iamVjdCBoZWFkZXIp
OwogI2VuZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9EQVRBQkFT
RQpAQCAtODgsMjIgKzkyLDIyIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2hhbmRsZXI9QmFj
a2VuZF0gdm9pZCBlbmFibGVEZWJ1Z2dlcihpbiBib29sZWFuIGFsd2F5cyk7CiAgICAgICAgIFto
YW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlz
KTsKIAotICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4g
bG9uZyBjYWxsSWQsIGluIFN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgaW50IGxpbmVOdW1i
ZXIsIGluIGJvb2xlYW4gZW5hYmxlZCwgaW4gU3RyaW5nIGNvbmRpdGlvbiwgb3V0IGJvb2xlYW4g
c3VjY2Vzcywgb3V0IHVuc2lnbmVkIGludCBhY3R1YWxMaW5lTnVtYmVyKTsKLSAgICAgICAgW2hh
bmRsZXI9Q29udHJvbGxlcl0gdm9pZCByZW1vdmVCcmVha3BvaW50KGluIFN0cmluZyBzb3VyY2VJ
RCwgaW4gdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyKTsKKyAgICAgICAgW2hhbmRsZXI9RGVidWdd
IHZvaWQgc2V0QnJlYWtwb2ludChpbiBsb25nIGNhbGxJZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBp
biB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgaW4gYm9vbGVhbiBlbmFibGVkLCBpbiBTdHJpbmcg
Y29uZGl0aW9uLCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQgdW5zaWduZWQgaW50IGFjdHVhbExp
bmVOdW1iZXIpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCByZW1vdmVCcmVha3BvaW50
KGluIFN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyKTsKICAgICAg
ICAgW2hhbmRsZXI9RGVidWddIHZvaWQgYWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBwYXVzZSgpOwotICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVy
XSB2b2lkIHJlc3VtZSgpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCByZXN1bWUoKTsK
IAogICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAg
ICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBzdGVwSW50b1N0YXRlbWVudCgpOwogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOwogCi0gICAgICAgIFtoYW5k
bGVyPUNvbnRyb2xsZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShpbiBsb25nIHBh
dXNlT25FeGNlcHRpb25zU3RhdGUpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKGluIGxvbmcgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAK
LSAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIGxv
bmcgY2FsbElkLCBpbiBTdHJpbmcgc291cmNlSUQsIGluIFN0cmluZyBuZXdDb250ZW50LCBvdXQg
Ym9vbGVhbiBzdWNjZXNzLCBvdXQgU3RyaW5nIHJlc3VsdCwgb3V0IFZhbHVlIG5ld0NhbGxGcmFt
ZXMpOwotICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGdldFNjcmlwdFNvdXJjZShp
biBsb25nIGNhbGxJZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJj
ZSk7CisgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gbG9u
ZyBjYWxsSWQsIGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBi
b29sZWFuIHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1l
cyk7CisgICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBsb25n
IGNhbGxJZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJjZSk7CiAK
ICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBlbmFibGVQcm9maWxlcihpbiBib29s
ZWFuIGFsd2F5cyk7CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZGlzYWJsZVBy
b2ZpbGVyKGluIGJvb2xlYW4gYWx3YXlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggYjhkN2JkZmVmZDQ2ZjRkOGEyNzljNGUzMGYwNzQ0MjRmNTU5MTg5
Ni4uMjU0YWNiMDllMjQzZWU3NDE2ZWVkNjBiMDJkYmZjZjEzNjRiNThmNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgpAQCAtNzMsNyArNzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlcklubGlu
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAi
U2NyaXB0T2JqZWN0LmgiCkBAIC0xOTEsOCArMTkxLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fZGVidWdnZXJFbmFibGVk
KGZhbHNlKQogICAgICwgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bihmYWxzZSkKLSAgICAsIG1f
cGF1c2VkU2NyaXB0U3RhdGUoMCkKLSAgICAsIG1fYnJlYWtwb2ludHNMb2FkZWQoZmFsc2UpCiAg
ICAgLCBtX3Byb2ZpbGVyRW5hYmxlZCghV1RGX1VTRV9KU0MpCiAgICAgLCBtX3JlY29yZGluZ1Vz
ZXJJbml0aWF0ZWRQcm9maWxlKGZhbHNlKQogICAgICwgbV9jdXJyZW50VXNlckluaXRpYXRlZFBy
b2ZpbGVOdW1iZXIoLTEpCkBAIC01MTAsNyArNTA4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQoY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiAg
ICAgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBpZiAoU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmlzRGVidWdnZXJBbHdh
eXNFbmFibGVkKCkpIHsKKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aXNEZWJ1Z2dl
ckFsd2F5c0VuYWJsZWQoKSkgewogICAgICAgICAvLyBGSVhNRSAoNDAzNjQpOiBUaGlzIHdpbGwg
Zm9yY2UgcHVzaGluZyBzY3JpcHQgc291cmNlcyB0byBmcm9udGVuZCBldmVuIGlmIHNjcmlwdAog
ICAgICAgICAvLyBwYW5lbCBpcyBpbmFjdGl2ZS4KICAgICAgICAgZW5hYmxlRGVidWdnZXJGcm9t
RnJvbnRlbmQoZmFsc2UpOwpAQCAtNzUwLDExICs3NDgsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgbV90
aW1lcy5jbGVhcigpOwogICAgICAgICBtX2NvdW50cy5jbGVhcigpOwogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgICAgICBtX3NvdXJjZUlEVG9VUkwuY2xlYXIoKTsKLSAgICAg
ICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOwotICAgICAgICBtX3N0aWNreUJyZWFrcG9p
bnRzLmNsZWFyKCk7Ci0gICAgICAgIG1fYnJlYWtwb2ludHNNYXBwaW5nLmNsZWFyKCk7Ci0gICAg
ICAgIG1fYnJlYWtwb2ludHNMb2FkZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1fZGVidWdnZXJB
Z2VudCkKKyAgICAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJGb3JQYWdlTmF2aWdhdGlv
bigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0Mp
CiAgICAgICAgIG1fcHJvZmlsZXMuY2xlYXIoKTsKQEAgLTE2NTIsOCArMTY0Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQoYm9vbCBhbHdh
eXMpCiAKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKIAotICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5jbGVhckJyZWFrcG9pbnRzKCk7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLmFkZExpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFnZSk7CisgICAgbV9kZWJ1
Z2dlckFnZW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKHRoaXMpOwogCiAgICAg
bV9kZWJ1Z2dlckVuYWJsZWQgPSB0cnVlOwogICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRW5h
YmxlZCgpOwpAQCAtMTY4NSwxNDggKzE2NzksMjAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNhYmxlRGVidWdnZXIoYm9vbCBhbHdheXMpCiAKICAgICBBU1NFUlQobV9pbnNwZWN0ZWRQ
YWdlKTsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVMaXN0ZW5lcih0
aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIG1fZGVidWdnZXJBZ2VudC5jbGVhcigpOwogCiAg
ICAgbV9kZWJ1Z2dlckVuYWJsZWQgPSBmYWxzZTsKICAgICBtX2F0dGFjaERlYnVnZ2VyV2hlblNo
b3duID0gZmFsc2U7Ci0gICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7CiAKICAgICBpZiAobV9m
cm9udGVuZCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGVidWdnZXJXYXNEaXNhYmxlZCgpOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVkaXRTY3JpcHRTb3VyY2UobG9uZywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNz
LCBTdHJpbmcqIHJlc3VsdCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcykK
LXsKLSAgICBpZiAoKnN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZWRpdFNj
cmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgKnJlc3VsdCkpCi0gICAgICAgICpuZXdD
YWxsRnJhbWVzID0gY3VycmVudENhbGxGcmFtZXMoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpnZXRTY3JpcHRTb3VyY2UobG9uZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3Ry
aW5nKiBzY3JpcHRTb3VyY2UpCi17Ci0gICAgKnNjcmlwdFNvdXJjZSA9IG1fc2NyaXB0SURUb0Nv
bnRlbnQuZ2V0KHNvdXJjZUlEKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1
bWUoKQogewotICAgIGlmICghbV9kZWJ1Z2dlckVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY29udGludWVQcm9ncmFtKCk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShsb25nIHBh
dXNlU3RhdGUpCi17Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNl
cHRpb25zU3RhdGU+KHBhdXNlU3RhdGUpKTsKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAg
bV9mcm9udGVuZC0+dXBkYXRlUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpKTsKLX0KLQotUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3VycmVudENhbGxGcmFtZXMoKQot
ewotICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
clZhbHVlOjpudWxsKCk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7
Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpudWxsKCk7Ci0g
ICAgfQotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC5jYWxsRnJhbWVzKCk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0QnJlYWtwb2ludChsb25nLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBib29sIGVuYWJsZWQsIGNvbnN0IFN0cmluZyYg
Y29uZGl0aW9uLCBib29sKiBzdWNjZXNzLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIp
Ci17Ci0gICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3BvaW50KGVuYWJsZWQsIGNvbmRpdGlvbik7
Ci0gICAgKnN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2lu
dChzb3VyY2VJRCwgYnJlYWtwb2ludCwgbGluZU51bWJlciwgYWN0dWFsTGluZU51bWJlcik7Ci0g
ICAgaWYgKCEqc3VjY2VzcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHVybCA9IG1f
c291cmNlSURUb1VSTC5nZXQoc291cmNlSUQpOwotICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYnJlYWtwb2ludElkID0gZm9ybWF0QnJlYWtwb2lu
dElkKHNvdXJjZUlELCAqYWN0dWFsTGluZU51bWJlcik7Ci0gICAgbV9icmVha3BvaW50c01hcHBp
bmcuc2V0KGJyZWFrcG9pbnRJZCwgKmFjdHVhbExpbmVOdW1iZXIpOwotCi0gICAgU3RyaW5nIGtl
eSA9IG1kNUJhc2UxNih1cmwpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTb3VyY2VCcmVha3BvaW50
cz46Oml0ZXJhdG9yIGl0ID0gbV9zdGlja3lCcmVha3BvaW50cy5maW5kKGtleSk7Ci0gICAgaWYg
KGl0ID09IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zdGlja3lC
cmVha3BvaW50cy5zZXQoa2V5LCBTb3VyY2VCcmVha3BvaW50cygpKS5maXJzdDsKLSAgICBpdC0+
c2Vjb25kLnNldCgqYWN0dWFsTGluZU51bWJlciwgYnJlYWtwb2ludCk7Ci0gICAgc2F2ZUJyZWFr
cG9pbnRzKCk7CisgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkKKyAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5yZXN1bWUoKTsKIH0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCi17Ci0g
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlbW92ZUJyZWFrcG9pbnQoc291cmNlSUQs
IGxpbmVOdW1iZXIpOwotCi0gICAgU3RyaW5nIHVybCA9IG1fc291cmNlSURUb1VSTC5nZXQoc291
cmNlSUQpOwotICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgYnJlYWtwb2ludElkID0gZm9ybWF0QnJlYWtwb2ludElkKHNvdXJjZUlELCBsaW5lTnVt
YmVyKTsKLSAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+OjppdGVyYXRvciBtYXBwaW5nSXQg
PSBtX2JyZWFrcG9pbnRzTWFwcGluZy5maW5kKGJyZWFrcG9pbnRJZCk7Ci0gICAgaWYgKG1hcHBp
bmdJdCA9PSBtX2JyZWFrcG9pbnRzTWFwcGluZy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHVuc2lnbmVkIHN0aWNreUxpbmUgPSBtYXBwaW5nSXQtPnNlY29uZDsKLSAgICBtX2JyZWFrcG9p
bnRzTWFwcGluZy5yZW1vdmUobWFwcGluZ0l0KTsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBTb3Vy
Y2VCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0ID0gbV9zdGlja3lCcmVha3BvaW50cy5maW5kKG1k
NUJhc2UxNih1cmwpKTsKLSAgICBpZiAoaXQgPT0gbV9zdGlja3lCcmVha3BvaW50cy5lbmQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaXQtPnNlY29uZC5yZW1vdmUoc3RpY2t5TGluZSk7Ci0g
ICAgc2F2ZUJyZWFrcG9pbnRzKCk7Ci19Ci0KLS8vIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyIGZ1
bmN0aW9ucwotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFBhcnNlU291cmNlKGNvbnN0
IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEs
IGludCBmaXJzdExpbmUsIFNjcmlwdFdvcmxkVHlwZSB3b3JsZFR5cGUpCi17Ci0gICAgLy8gRG9u
J3Qgc2VuZCBzY3JpcHQgY29udGVudCB0byB0aGUgZnJvbnQgZW5kIHVudGlsIGl0J3MgcmVhbGx5
IG5lZWRlZC4KLSAgICBtX2Zyb250ZW5kLT5wYXJzZWRTY3JpcHRTb3VyY2Uoc291cmNlSUQsIHVy
bCwgIiIsIGZpcnN0TGluZSwgd29ybGRUeXBlKTsKLQotICAgIG1fc2NyaXB0SURUb0NvbnRlbnQu
c2V0KHNvdXJjZUlELCBkYXRhKTsKLQotICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBsb2FkQnJlYWtwb2ludHMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU291
cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuZmluZCht
ZDVCYXNlMTYodXJsKSk7Ci0gICAgaWYgKGl0ICE9IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCkp
IHsKLSAgICAgICAgZm9yIChTb3VyY2VCcmVha3BvaW50czo6aXRlcmF0b3IgYnJlYWtwb2ludEl0
ID0gaXQtPnNlY29uZC5iZWdpbigpOyBicmVha3BvaW50SXQgIT0gaXQtPnNlY29uZC5lbmQoKTsg
KyticmVha3BvaW50SXQpIHsKLSAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gYnJlYWtwb2lu
dEl0LT5maXJzdDsKLSAgICAgICAgICAgIGlmIChmaXJzdExpbmUgPiBsaW5lTnVtYmVyKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdW5zaWduZWQgYWN0dWFsTGluZU51
bWJlciA9IDA7Ci0gICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgYnJlYWtwb2ludEl0LT5zZWNvbmQsIGxp
bmVOdW1iZXIsICZhY3R1YWxMaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcykK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlc3Rv
cmVkQnJlYWtwb2ludChzb3VyY2VJRCwgdXJsLCBhY3R1YWxMaW5lTnVtYmVyLCBicmVha3BvaW50
SXQtPnNlY29uZC5lbmFibGVkLCBicmVha3BvaW50SXQtPnNlY29uZC5jb25kaXRpb24pOwotICAg
ICAgICAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9IGZvcm1hdEJyZWFrcG9pbnRJZChzb3VyY2VJ
RCwgYWN0dWFsTGluZU51bWJlcik7Ci0gICAgICAgICAgICBtX2JyZWFrcG9pbnRzTWFwcGluZy5z
ZXQoYnJlYWtwb2ludElkLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX3Nv
dXJjZUlEVG9VUkwuc2V0KHNvdXJjZUlELCB1cmwpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCi17Ci0gICAgbV9mcm9udGVuZC0+ZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSh1
cmwsIGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwotfQotCi12b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFBhdXNlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkK
LXsKLSAgICBBU1NFUlQoc2NyaXB0U3RhdGUgJiYgIW1fcGF1c2VkU2NyaXB0U3RhdGUpOwotICAg
IG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGNhbGxGcmFtZXMgPSBjdXJyZW50Q2FsbEZyYW1lcygpOwotICAgIG1fcmVtb3RlRnJv
bnRlbmQtPnBhdXNlZFNjcmlwdChjYWxsRnJhbWVzLmdldCgpKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDb250aW51ZSgpCi17Ci0gICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9
IDA7Ci0gICAgbV9yZW1vdGVGcm9udGVuZC0+cmVzdW1lZFNjcmlwdCgpOwotfQotCiAjZW5kaWYK
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxv
bmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKQEAgLTE4NTUsMzYgKzE3MjEsMTMgQEAg
U3RyaW5nIEluc3BlY3RvckNvbnRyb2xsZXI6OmJyZWFrcG9pbnRzU2V0dGluZ0tleSgpCiAgICAg
cmV0dXJuIGtleVByZWZpeCArIG1kNUJhc2UxNihtX21haW5SZXNvdXJjZS0+cmVxdWVzdFVSTCgp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpsb2FkQnJlYWtwb2ludHMoKQorUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQ29udHJvbGxlcjo6bG9hZEJyZWFrcG9p
bnRzKCkKIHsKLSAgICBpZiAobV9icmVha3BvaW50c0xvYWRlZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fYnJlYWtwb2ludHNMb2FkZWQgPSB0cnVlOwotCi0gICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBwYXJzZWRTZXR0aW5nID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihzZXR0aW5nKGJy
ZWFrcG9pbnRzU2V0dGluZ0tleSgpKSk7Ci0gICAgaWYgKCFwYXJzZWRTZXR0aW5nKQotICAgICAg
ICByZXR1cm47Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMgPSBwYXJz
ZWRTZXR0aW5nLT5hc09iamVjdCgpOwotICAgIGlmICghYnJlYWtwb2ludHMpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSBicmVha3BvaW50
cy0+YmVnaW4oKTsgaXQgIT0gYnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gaXQtPnNlY29uZC0+YXNP
YmplY3QoKTsKLSAgICAgICAgaWYgKCFicmVha3BvaW50c0ZvclVSTCkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBIYXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVy
YXRvciBzb3VyY2VCcmVha3BvaW50c0l0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQoaXQtPmZp
cnN0LCBTb3VyY2VCcmVha3BvaW50cygpKS5maXJzdDsKLSAgICAgICAgU2NyaXB0QnJlYWtwb2lu
dDo6c291cmNlQnJlYWtwb2ludHNGcm9tSW5zcGVjdG9yT2JqZWN0KGJyZWFrcG9pbnRzRm9yVVJM
LCAmc291cmNlQnJlYWtwb2ludHNJdC0+c2Vjb25kKTsKLSAgICB9CisgICAgcmV0dXJuIEluc3Bl
Y3RvclZhbHVlOjpwYXJzZUpTT04oc2V0dGluZyhicmVha3BvaW50c1NldHRpbmdLZXkoKSkpOwog
fQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNhdmVCcmVha3BvaW50cygpCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNhdmVCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnJlYWtwb2ludHMpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtw
b2ludHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJp
bmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQobV9zdGlja3lCcmVha3BvaW50cy5i
ZWdpbigpKTsgaXQgIT0gbV9zdGlja3lCcmVha3BvaW50cy5lbmQoKTsgKytpdCkgewotICAgICAg
ICBpZiAoaXQtPnNlY29uZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHNGb3JVUkwgPSBTY3JpcHRCcmVh
a3BvaW50OjppbnNwZWN0b3JPYmplY3RGcm9tU291cmNlQnJlYWtwb2ludHMoaXQtPnNlY29uZCk7
Ci0gICAgICAgIGJyZWFrcG9pbnRzLT5zZXQoaXQtPmZpcnN0LCBicmVha3BvaW50c0ZvclVSTCk7
Ci0gICAgfQogICAgIHNldFNldHRpbmcoYnJlYWtwb2ludHNTZXR0aW5nS2V5KCksIGJyZWFrcG9p
bnRzLT50b0pTT05TdHJpbmcoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA3ZDFmODI4NDAwMmY2NDNmOWVkMWZmMTAxYmI5YzY1NWQwODg0
NjkwLi5kNTFkZTYwMzZkZjc1NTkyZDExMTY5YWM3Y2E1ODFlMWYzYWFmZjE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
dHJpbmdIYXNoLmgiCkBAIC00NCwxMCArNDMsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CkBAIC02MCwxMiArNTUsMTQg
QEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5zcGVjdG9y
QXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NTdG9y
ZTsKIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTsKIGNsYXNzIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIElu
c3BlY3RvclJlc291cmNlOwpAQCAtOTAsMTMgKzg3LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiBj
bGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ7CiAjZW5kaWYKIAotY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBOb25jb3B5
YWJsZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgTm9uY29weWFi
bGUKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKK2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8SW5z
cGVjdG9yUmVzb3VyY2U+ID4gUmVzb3VyY2VzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8RnJhbWU+LCBSZXNvdXJjZXNNYXAqPiBGcmFtZVJlc291cmNlc01hcDsKQEAgLTI2MiwxNyAr
MjUzLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlRGVidWdnZXIoKTsKICAgICB2b2lkIGRp
c2FibGVEZWJ1Z2dlcihib29sIGFsd2F5cyA9IGZhbHNlKTsKICAgICBib29sIGRlYnVnZ2VyRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJFbmFibGVkOyB9Ci0KLSAgICB2b2lkIGVk
aXRTY3JpcHRTb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpOwotICAgIHZvaWQgZ2V0U2NyaXB0U291
cmNlKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNv
dXJjZSk7Ci0KKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z2dlckFnZW50LmdldCgpOyB9CiAgICAgdm9pZCByZXN1bWUoKTsK
LSAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobG9uZyBwYXVzZVN0YXRlKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBTY3Jp
cHRXb3JsZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJv
ckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2UoU2NyaXB0U3RhdGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsKICNl
bmRpZgogCiAgICAgdm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCk7CkBAIC0zMDcsMTEgKzI4OSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpOwogCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY3VycmVudENh
bGxGcmFtZXMoKTsKLQotICAgIHZvaWQgc2V0QnJlYWtwb2ludChsb25nIGNhbGxJZCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgYm9vbCBlbmFibGVkLCBjb25z
dCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCogc3VjY2VzcywgdW5zaWduZWQgaW50KiBhY3R1YWxM
aW5lTnVtYmVyKTsKLSAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWdu
ZWQgaW50LCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc01hcDsKIAogICAgIHZvaWQg
c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nU29vbigpOwpAQCAtMzUxLDkgKzMyOCwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJ
ZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQorICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogICAgIFN0
cmluZyBicmVha3BvaW50c1NldHRpbmdLZXkoKTsKLSAgICB2b2lkIGxvYWRCcmVha3BvaW50cygp
OwotICAgIHZvaWQgc2F2ZUJyZWFrcG9pbnRzKCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gbG9hZEJyZWFrcG9pbnRzKCk7CisgICAgdm9pZCBzYXZlQnJlYWtwb2ludHMoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsKICNlbmRpZgogCiAgICAgUGFnZSog
bV9pbnNwZWN0ZWRQYWdlOwpAQCAtNDA5LDEyICszODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGJvb2wgbV9kZWJ1Z2dlckVuYWJsZWQ7CiAgICAg
Ym9vbCBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duOwotICAgIFNjcmlwdFN0YXRlKiBtX3BhdXNl
ZFNjcmlwdFN0YXRlOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fc291cmNlSURUb1VS
TDsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3NjcmlwdElEVG9Db250ZW50OwotICAg
IEhhc2hNYXA8U3RyaW5nLCBTb3VyY2VCcmVha3BvaW50cz4gbV9zdGlja3lCcmVha3BvaW50czsK
LSAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fYnJlYWtwb2ludHNNYXBwaW5nOwotICAg
IGJvb2wgbV9icmVha3BvaW50c0xvYWRlZDsKKyAgICBPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJB
Z2VudD4gbV9kZWJ1Z2dlckFnZW50OwogCiAgICAgYm9vbCBtX3Byb2ZpbGVyRW5hYmxlZDsKICAg
ICBib29sIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZGE0YzUzMTcwY2E3
ZGYxNTJmZjQ2NTdjY2Q5NjUyMDY2NmUwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMCwwICsxLDMwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgorCisj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvTUQ1Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBt
ZDVCYXNlMTYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIg
ZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisKKyAgICBNRDUgbWQ1OworICAgIG1kNS5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVy
cygpKSwgc3RyaW5nLmxlbmd0aCgpICogMik7CisgICAgVmVjdG9yPHVpbnQ4X3QsIDE2PiBkaWdl
c3Q7CisgICAgbWQ1LmNoZWNrc3VtKGRpZ2VzdCk7CisKKyAgICBWZWN0b3I8Y2hhciwgMzI+IHJl
c3VsdDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChkaWdpdHNbKGRpZ2VzdFtpXSA+PiA0KSAmIDB4Zl0pOworICAgICAgICByZXN1bHQu
YXBwZW5kKGRpZ2l0c1tkaWdlc3RbaV0gJiAweGZdKTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmlu
ZyhyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKK30KKworc3RhdGljIFN0cmluZyBmb3Jt
YXRCcmVha3BvaW50SWQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJl
cikKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzOiVkIiwgc291cmNlSUQudXRmOCgp
LmRhdGEoKSwgbGluZU51bWJlcik7Cit9CisKK1Bhc3NPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJB
Z2VudD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ+IGFnZW50ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcikpOworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5jbGVhckJyZWFr
cG9pbnRzKCk7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmFkZExpc3RlbmVyKGFn
ZW50LmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCkpOworICAgIHJl
dHVybiBhZ2VudC5yZWxlYXNlKCk7Cit9CisKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
cikKKyAgICA6IG1faW5zcGVjdG9yQ29udHJvbGxlcihpbnNwZWN0b3JDb250cm9sbGVyKQorICAg
ICwgbV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQoreworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCit7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLnJlbW92ZUxpc3RlbmVyKHRoaXMsIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVj
dGVkUGFnZSgpKTsKKyAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKK30KKworYm9vbCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojppc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5pc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgp
OworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFjdGl2YXRlQnJlYWtwb2ludHMo
KQoreworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5hY3RpdmF0ZUJyZWFrcG9pbnRz
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCkKK3sKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZGVhY3RpdmF0ZUJyZWFr
cG9pbnRzKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChsb25nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBib29s
IGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sKiBzdWNjZXNzLCB1bnNpZ25l
ZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpCit7CisgICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3Bv
aW50KGVuYWJsZWQsIGNvbmRpdGlvbik7CisgICAgKnN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgYnJlYWtwb2ludCwgbGluZU51bWJl
ciwgYWN0dWFsTGluZU51bWJlcik7CisgICAgaWYgKCEqc3VjY2VzcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIHVybCA9IG1fc291cmNlSURUb1VSTC5nZXQoc291cmNlSUQpOworICAg
IGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgYnJlYWtw
b2ludElkID0gZm9ybWF0QnJlYWtwb2ludElkKHNvdXJjZUlELCAqYWN0dWFsTGluZU51bWJlcik7
CisgICAgbV9icmVha3BvaW50c01hcHBpbmcuc2V0KGJyZWFrcG9pbnRJZCwgKmFjdHVhbExpbmVO
dW1iZXIpOworCisgICAgU3RyaW5nIGtleSA9IG1kNUJhc2UxNih1cmwpOworICAgIEhhc2hNYXA8
U3RyaW5nLCBTb3VyY2VCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0ID0gbV9zdGlja3lCcmVha3Bv
aW50cy5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCkp
CisgICAgICAgIGl0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQoa2V5LCBTb3VyY2VCcmVha3Bv
aW50cygpKS5maXJzdDsKKyAgICBpdC0+c2Vjb25kLnNldCgqYWN0dWFsTGluZU51bWJlciwgYnJl
YWtwb2ludCk7CisgICAgc2F2ZUJyZWFrcG9pbnRzKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNp
Z25lZCBsaW5lTnVtYmVyKQoreworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1v
dmVCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKworICAgIFN0cmluZyB1cmwgPSBt
X3NvdXJjZUlEVG9VUkwuZ2V0KHNvdXJjZUlEKTsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9IGZvcm1hdEJyZWFrcG9p
bnRJZChzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
Pjo6aXRlcmF0b3IgbWFwcGluZ0l0ID0gbV9icmVha3BvaW50c01hcHBpbmcuZmluZChicmVha3Bv
aW50SWQpOworICAgIGlmIChtYXBwaW5nSXQgPT0gbV9icmVha3BvaW50c01hcHBpbmcuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBzdGlja3lMaW5lID0gbWFwcGluZ0l0LT5z
ZWNvbmQ7CisgICAgbV9icmVha3BvaW50c01hcHBpbmcucmVtb3ZlKG1hcHBpbmdJdCk7CisKKyAg
ICBIYXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdCA9IG1fc3Rp
Y2t5QnJlYWtwb2ludHMuZmluZChtZDVCYXNlMTYodXJsKSk7CisgICAgaWYgKGl0ID09IG1fc3Rp
Y2t5QnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0LT5zZWNvbmQu
cmVtb3ZlKHN0aWNreUxpbmUpOworICAgIHNhdmVCcmVha3BvaW50cygpOworfQorCit2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UobG9uZywgY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJp
bmcqIHJlc3VsdCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcykKK3sKKyAg
ICBpZiAoKnN1Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZWRpdFNjcmlwdFNv
dXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgKnJlc3VsdCkpCisgICAgICAgICpuZXdDYWxsRnJh
bWVzID0gY3VycmVudENhbGxGcmFtZXMoKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpnZXRTY3JpcHRTb3VyY2UobG9uZywgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5n
KiBzY3JpcHRTb3VyY2UpCit7CisgICAgKnNjcmlwdFNvdXJjZSA9IG1fc2NyaXB0SURUb0NvbnRl
bnQuZ2V0KHNvdXJjZUlEKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVz
ZSgpCit7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBhdXNlKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdW1lKCkKK3sKKyAgICBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2hhcmVkKCkuY29udGludWVQcm9ncmFtKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c3RlcE92ZXJTdGF0ZW1lbnQoKQoreworICAgIFNjcmlwdERlYnVnU2VydmVy
OjpzaGFyZWQoKS5zdGVwT3ZlclN0YXRlbWVudCgpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnN0ZXBJbnRvU3RhdGVtZW50KCkKK3sKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuc3RlcEludG9TdGF0ZW1lbnQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzdGVwT3V0T2ZGdW5jdGlvbigpCit7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLnN0ZXBPdXRPZkZ1bmN0aW9uKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShsb25nIHBhdXNlU3RhdGUpCit7CisgICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3Rh
dGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNl
U3RhdGUpKTsKKyAgICBpZiAocmVtb3RlRnJvbnRlbmQoKSkKKyAgICAgICAgcmVtb3RlRnJvbnRl
bmQoKS0+dXBkYXRlUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCkKK3sKKyAgICBtX3NvdXJjZUlEVG9V
UkwuY2xlYXIoKTsKKyAgICBtX3NjcmlwdElEVG9Db250ZW50LmNsZWFyKCk7CisgICAgbV9zdGlj
a3lCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1fYnJlYWtwb2ludHNNYXBwaW5nLmNsZWFyKCk7
CisgICAgbV9icmVha3BvaW50c0xvYWRlZCA9IGZhbHNlOworfQorCitQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCit7
CisgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VmFsdWU6Om51bGwoKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5z
cGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVjdGVkU2NyaXB0Rm9y
KG1fcGF1c2VkU2NyaXB0U3RhdGUpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JWYWx1ZTo6bnVsbCgpOworICAgIH0KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQuY2Fs
bEZyYW1lcygpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmxvYWRCcmVha3Bv
aW50cygpCit7CisgICAgaWYgKG1fYnJlYWtwb2ludHNMb2FkZWQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2JyZWFrcG9pbnRzTG9hZGVkID0gdHJ1ZTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcGFyc2VkU2V0dGluZyA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+bG9hZEJyZWFrcG9p
bnRzKCk7CisgICAgaWYgKCFwYXJzZWRTZXR0aW5nKQorICAgICAgICByZXR1cm47CisgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMgPSBwYXJzZWRTZXR0aW5nLT5hc09iamVj
dCgpOworICAgIGlmICghYnJlYWtwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSBicmVha3BvaW50cy0+YmVnaW4oKTsgaXQgIT0g
YnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gaXQtPnNlY29uZC0+YXNPYmplY3QoKTsKKyAgICAgICAg
aWYgKCFicmVha3BvaW50c0ZvclVSTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBI
YXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBzb3VyY2VCcmVha3Bv
aW50c0l0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQoaXQtPmZpcnN0LCBTb3VyY2VCcmVha3Bv
aW50cygpKS5maXJzdDsKKyAgICAgICAgU2NyaXB0QnJlYWtwb2ludDo6c291cmNlQnJlYWtwb2lu
dHNGcm9tSW5zcGVjdG9yT2JqZWN0KGJyZWFrcG9pbnRzRm9yVVJMLCAmc291cmNlQnJlYWtwb2lu
dHNJdC0+c2Vjb25kKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2F2ZUJyZWFrcG9pbnRzKCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50cyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZm9yIChIYXNoTWFwPFN0cmlu
ZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdChtX3N0aWNreUJyZWFrcG9pbnRzLmJl
Z2luKCkpOyBpdCAhPSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpOyArK2l0KSB7CisgICAgICAg
IGlmIChpdC0+c2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50c0ZvclVSTCA9IFNjcmlwdEJyZWFr
cG9pbnQ6Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW50cyhpdC0+c2Vjb25kKTsK
KyAgICAgICAgYnJlYWtwb2ludHMtPnNldChpdC0+Zmlyc3QsIGJyZWFrcG9pbnRzRm9yVVJMKTsK
KyAgICB9CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zYXZlQnJlYWtwb2ludHMoYnJlYWtw
b2ludHMpOworfQorCisvLyBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciBmdW5jdGlvbnMKKwordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RM
aW5lLCBTY3JpcHRXb3JsZFR5cGUgd29ybGRUeXBlKQoreworICAgIC8vIERvbid0IHNlbmQgc2Ny
aXB0IGNvbnRlbnQgdG8gdGhlIGZyb250IGVuZCB1bnRpbCBpdCdzIHJlYWxseSBuZWVkZWQuCisg
ICAgcmVtb3RlRnJvbnRlbmQoKS0+cGFyc2VkU2NyaXB0U291cmNlKHNvdXJjZUlELCB1cmwsICIi
LCBmaXJzdExpbmUsIHdvcmxkVHlwZSk7CisKKyAgICBtX3NjcmlwdElEVG9Db250ZW50LnNldChz
b3VyY2VJRCwgZGF0YSk7CisKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbG9hZEJyZWFrcG9pbnRzKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJy
ZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQgPSBtX3N0aWNreUJyZWFrcG9pbnRzLmZpbmQobWQ1QmFz
ZTE2KHVybCkpOworICAgIGlmIChpdCAhPSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpKSB7Cisg
ICAgICAgIGZvciAoU291cmNlQnJlYWtwb2ludHM6Oml0ZXJhdG9yIGJyZWFrcG9pbnRJdCA9IGl0
LT5zZWNvbmQuYmVnaW4oKTsgYnJlYWtwb2ludEl0ICE9IGl0LT5zZWNvbmQuZW5kKCk7ICsrYnJl
YWtwb2ludEl0KSB7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGJyZWFrcG9pbnRJdC0+
Zmlyc3Q7CisgICAgICAgICAgICBpZiAoZmlyc3RMaW5lID4gbGluZU51bWJlcikKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFjdHVhbExpbmVOdW1iZXIg
PSAwOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSUQsIGJyZWFrcG9pbnRJdC0+c2Vjb25kLCBsaW5lTnVt
YmVyLCAmYWN0dWFsTGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZW1vdGVGcm9udGVuZCgpLT5yZXN0
b3JlZEJyZWFrcG9pbnQoc291cmNlSUQsIHVybCwgYWN0dWFsTGluZU51bWJlciwgYnJlYWtwb2lu
dEl0LT5zZWNvbmQuZW5hYmxlZCwgYnJlYWtwb2ludEl0LT5zZWNvbmQuY29uZGl0aW9uKTsKKyAg
ICAgICAgICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBmb3JtYXRCcmVha3BvaW50SWQoc291cmNl
SUQsIGFjdHVhbExpbmVOdW1iZXIpOworICAgICAgICAgICAgbV9icmVha3BvaW50c01hcHBpbmcu
c2V0KGJyZWFrcG9pbnRJZCwgbGluZU51bWJlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9z
b3VyY2VJRFRvVVJMLnNldChzb3VyY2VJRCwgdXJsKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQoreworICAgIHJlbW90ZUZyb250ZW5kKCktPmZhaWxlZFRvUGFyc2VTY3Jp
cHRTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsK
K30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUpCit7CisgICAgQVNTRVJUKHNjcmlwdFN0YXRlICYmICFtX3BhdXNlZFNjcmlw
dFN0YXRlKTsKKyAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7CisgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzID0gY3VycmVudENhbGxGcmFtZXMoKTsKKyAg
ICByZW1vdGVGcm9udGVuZCgpLT5wYXVzZWRTY3JpcHQoY2FsbEZyYW1lcy5nZXQoKSk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQoreworICAgIG1fcGF1
c2VkU2NyaXB0U3RhdGUgPSAwOworICAgIHJlbW90ZUZyb250ZW5kKCktPnJlc3VtZWRTY3JpcHQo
KTsKK30KKworUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlbW90ZUZyb250ZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5yZW1vdGVJbnNwZWN0b3JGcm9udGVuZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjA0NmRlMGE5ZmE1
ODZjNjdjNzE2MmQ4YTM2ZWIyM2E3ZWIzMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dF9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlICJTY3JpcHRC
cmVha3BvaW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworY2xhc3MgSW5zcGVjdG9yQ29udHJv
bGxlcjsKK2NsYXNzIEluc3BlY3RvclZhbHVlOworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRnJvbnRl
bmQ7CitjbGFzcyBTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJs
aWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zcGVj
dG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgfkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKTsK
KworICAgIHN0YXRpYyBib29sIGlzRGVidWdnZXJBbHdheXNFbmFibGVkKCk7CisKKyAgICB2b2lk
IGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKKyAgICB2b2lkIGRlYWN0aXZhdGVCcmVha3BvaW50cygp
OworICAgIHZvaWQgc2V0QnJlYWtwb2ludChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgYm9vbCBlbmFibGVkLCBjb25zdCBTdHJpbmcmIGNv
bmRpdGlvbiwgYm9vbCogc3VjY2VzcywgdW5zaWduZWQgaW50KiBhY3R1YWxMaW5lTnVtYmVyKTsK
KyAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWdu
ZWQgbGluZU51bWJlcik7CisKKyAgICB2b2lkIGVkaXRTY3JpcHRTb3VyY2UobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCog
c3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxG
cmFtZXMpOworICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CisKKyAgICB2b2lkIHBhdXNlKCk7
CisgICAgdm9pZCByZXN1bWUoKTsKKyAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CisgICAg
dm9pZCBzdGVwSW50b1N0YXRlbWVudCgpOworICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rpb24oKTsK
KworICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShsb25nIHBhdXNlU3RhdGUpOwor
CisgICAgdm9pZCBjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7CisKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBjdXJyZW50Q2FsbEZyYW1lcygpOworCisgICAgdm9pZCBsb2Fk
QnJlYWtwb2ludHMoKTsKKyAgICB2b2lkIHNhdmVCcmVha3BvaW50cygpOworCisgICAgdmlydHVh
bCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIFNjcmlwdFdvcmxkVHlw
ZSk7CisgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShTY3Jp
cHRTdGF0ZSopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOworCisgICAgUmVtb3Rl
SW5zcGVjdG9yRnJvbnRlbmQqIHJlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKKyAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CisgICAgU2NyaXB0U3RhdGUqIG1f
cGF1c2VkU2NyaXB0U3RhdGU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9zb3VyY2VJ
RFRvVVJMOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fc2NyaXB0SURUb0NvbnRlbnQ7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPiBtX3N0aWNreUJyZWFrcG9p
bnRzOworICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9icmVha3BvaW50c01hcHBpbmc7
CisgICAgYm9vbCBtX2JyZWFrcG9pbnRzTG9hZGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggOTk0ZjRkYzc3YmQwM2NlY2Q0ZTkyY2MxMmEzMTlhNzNi
MGU3MWJlOS4uN2YyMTQ0MGJiZTJmNTkxMGY0NDUwYTFiMzRmNzQyODEwY2IzMGU4MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAtMjIxLDUyICsyMjEsNiBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kOjpkZWJ1Z2dlcldhc0Rpc2FibGVkKCkKICAgICBjYWxsU2lt
cGxlRnVuY3Rpb24oImRlYnVnZ2VyV2FzRGlzYWJsZWQiKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JG
cm9udGVuZDo6ZGlkU2V0QnJlYWtwb2ludChsb25nIGNhbGxJZCwgYm9vbCBzdWNjZXNzLCB1bnNp
Z25lZCBsaW5lKQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3Bl
Y3RvciwgImRpc3BhdGNoIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoImRpZFNldEJy
ZWFrcG9pbnQiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsSWQpOwotICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN1Y2Nlc3MpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGxpbmUpOwotICAgIGZ1bmN0aW9uLmNhbGwoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6cGFyc2VkU2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBzY3JpcHRX
b3JsZFR5cGUpCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVj
dG9yLCAiZGlzcGF0Y2giKTsgCi0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoInBhcnNlZFNj
cmlwdFNvdXJjZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZUlEKTsKLSAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh1cmwpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGRhdGEpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZpcnN0TGluZSk7Ci0gICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc2NyaXB0V29ybGRUeXBlKTsKLSAgICBmdW5jdGlvbi5j
YWxsKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnJlc3RvcmVkQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmUsIGJvb2wg
ZW5hYmxlZCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24pCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsKLSAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCgicmVzdG9yZWRCcmVha3BvaW50Iik7Ci0gICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoc291cmNlSUQpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHVybCk7Ci0g
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobGluZSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoZW5hYmxlZCk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29uZGl0aW9uKTsK
LSAgICBmdW5jdGlvbi5jYWxsKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmZhaWxl
ZFRvUGFyc2VTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0
YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAi
ZGlzcGF0Y2giKTsgCi0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoImZhaWxlZFRvUGFyc2VT
Y3JpcHRTb3VyY2UiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh1cmwpOwotICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGRhdGEpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGZpcnN0TGluZSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXJyb3JMaW5lKTsKLSAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlcnJvck1lc3NhZ2UpOwotICAgIGZ1bmN0aW9uLmNh
bGwoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cHJvZmlsZXJXYXNFbmFibGVkKCkK
IHsKICAgICBjYWxsU2ltcGxlRnVuY3Rpb24oInByb2ZpbGVyV2FzRW5hYmxlZCIpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXggZDdjZWYwNDg1MjIxMmEzYjhhOTY1YWIw
Nzc3MTgyYTIzN2Y5ZDc2OS4uNmUwNjIwYWE4Zjc3OGU4MTU4YTA1YWJhMjc5NGY5NGEwZjkxYzAx
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBAIC03OSwxMiArNzksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCk7
CiAgICAgICAgIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpOwogCi0gICAgICAgIHZvaWQgZGlk
U2V0QnJlYWtwb2ludChsb25nIGNhbGxJZCwgYm9vbCBzdWNjZXNzLCB1bnNpZ25lZCBsaW5lKTsK
LQotICAgICAgICB2b2lkIHBhcnNlZFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBp
bnQgc2NyaXB0V29ybGRUeXBlKTsKLSAgICAgICAgdm9pZCByZXN0b3JlZEJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lLCBib29sIGVu
YWJsZWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uKTsKLSAgICAgICAgdm9pZCBmYWlsZWRUb1Bh
cnNlU2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGlu
dCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
LQogICAgICAgICB2b2lkIHByb2ZpbGVyV2FzRW5hYmxlZCgpOwogICAgICAgICB2b2lkIHByb2Zp
bGVyV2FzRGlzYWJsZWQoKTsKICAgICAgICAgdm9pZCBzZXRSZWNvcmRpbmdQcm9maWxlKGJvb2wg
aXNQcm9maWxpbmcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKaW5kZXggZGZmNDg1M2ZjMTU1ZjNjZDExMTJhNmUwMjI1YTI5ZDFjNDZjYjE4YS4uNzgyNmQy
ZWQzMjAwMzdkNDA2MGVjMmJkOWQyNzYzZGRlOTQzMjlmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xMDMsMTEgKzEwMywxMSBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc3RlcE91dEJ1dHRvbi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CiAgICAgdGhpcy5zaWRl
YmFyQnV0dG9uc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zdGVwT3V0QnV0dG9uKTsKIAotICAg
IHRoaXMudG9nZ2xlQnJlYWtwb2ludHNCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0Jh
ckJ1dHRvbigiIiwgInRvZ2dsZS1icmVha3BvaW50cyIpOworICAgIHRoaXMudG9nZ2xlQnJlYWtw
b2ludHNCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRlYWN0aXZhdGUgYWxsIGJyZWFrcG9pbnRzLiIpLCAidG9nZ2xlLWJyZWFr
cG9pbnRzIik7CisgICAgLy8gQnJlYWtwb2ludHMgc2hvdWxkIGJlIGFjdGl2YXRlZCBieSBkZWZh
dWx0LCBzbyBlbXVsYXRlIGEgY2xpY2sgdG8gdG9nZ2xlIG9uLgorICAgIHRoaXMudG9nZ2xlQnJl
YWtwb2ludHNCdXR0b24udG9nZ2xlZCA9IHRydWU7CiAgICAgdGhpcy50b2dnbGVCcmVha3BvaW50
c0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudG9nZ2xlQnJlYWtwb2ludHND
bGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLnNpZGViYXJCdXR0b25zRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmVsZW1lbnQpOwotICAg
IC8vIEJyZWFrcG9pbnRzIHNob3VsZCBiZSBhY3RpdmF0ZWQgYnkgZGVmYXVsdCwgc28gZW11bGF0
ZSBhIGNsaWNrIHRvIHRvZ2dsZSBvbi4KLSAgICB0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQ2xpY2tl
ZCgpOwogCiAgICAgdGhpcy5kZWJ1Z2dlclN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICB0aGlzLmRlYnVnZ2VyU3RhdHVzRWxlbWVudC5pZCA9ICJzY3Jp
cHRzLWRlYnVnZ2VyLXN0YXR1cyI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63714</attachid>
            <date>2010-08-06 04:51:19 -0700</date>
            <delta_ts>2010-08-06 05:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42340-20100806155115.patch</filename>
            <type>text/plain</type>
            <size>51921</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFjMDk4YjcwNjJkZDA1MTVkMzUxYTM2YzBmMTMyZjJjMjYwN2RkMzkuLmJkYTUy
ZTY2ZTE5YWQ1MWExY2RiNGUzYzlhYTc0OGM3ZjE3MjkzNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTA1Miw2ICsx
MDUyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OTU1NGIxYTgyYWEzZDEx
OTczNDg5MDJjMDgyODFmODZiYzM2YzJjLi5hZWM4YWNlZmZmNjdmZTk0NTA5ZDA0OGVhYmM1ZmYx
NTA3OWRmMjI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEwLTA4LTA2ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgZGVidWdnZXIgaW1wbGVtZW50YXRp
b24gaW50byBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM0MAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVu
YWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6bG9hZEJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNhdmVCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjptZDVCYXNlMTYpOgorICAgICAgICAoV2ViQ29yZTo6
Zm9ybWF0QnJlYWtwb2ludElkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzRGVidWdnZXJBbHdheXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFjdGl2YXRlQnJlYWtwb2ludHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJy
ZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjplZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxs
RnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmxvYWRC
cmVha3BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
YXZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorCiAyMDEwLTA4LTA1ICBCZW4gTXVyZG9jaCAgPGJl
bm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA1OGQ2YzE5ZjA2M2UyNGY0NTE5ZGQ3ZWFmYmE5MWU4ZTBhMTU0YmZjLi41MDljM2ZiYTk4
MWRhMjkyOWE3MjlkN2QyMWI0OGU5YWQ4YmMxMjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE1OTIsNiArMTU5Miw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
U3RvcmUuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBcCisJ
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgXAorCVdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggYmFkMTIzZWUyMzM3YjZhOWUwMjZiNDRlYTJlMWFjNDZmYTNkMTM4OS4uMDVh
Y2M0YzBhMjgwMmVhMDM5ZjRmYmIzZDE4ZjdkMjQxZmMxMWJhMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3MzgsNiArMTcz
OCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCcsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwJywKKyAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VSZXNvdXJjZS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjdjNzZmZTljOGZhMTFjN2Q1ZTczYjFjYWNjZTdmM2Ux
ZTZjZjZjZC4uMjNiYWFjMzI4YzQ0NWQ0MWZjZTAxNzkwY2QzODU0NjM0ZGVhMDlkYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03
NDEsNiArNzQxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0
b3JlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgXAorICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgXApAQCAtMTQ5Nyw2ICsxNDk4
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBcCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggM2JlZmFiOTFhZGMwODZjYjdhMTNlZjExMTk1M2EyNzdlMzA0ZTRjZC4uZTA0YTY0NmU5
NjE5NjIyNTEwYTNiMDJlZDQ5YjYwMTE3Zjk5NDIyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC01MDY2OSw2ICs1MDY2OSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckRPTUFnZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhjNzFmODIxZjk5M2Q3ZWM2Mzc0
NzNmNzE1MDVhMTBiY2RhYjU5NWUuLjAyNjYyMjQ4NzI2ZjUwNTIzMWU4ZTNmZWJlMzk3OTU4YjIy
MTY3ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MTg4LDYgKzUxODgsOCBAQAogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJD
b3JlUHJlZml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OwogCQlG
MzNGMDI4MjEyMDk0N0YyMDBFNTc0M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDI4MTEyMDk0N0YyMDBFNTc0
M0EgLyogU2NyaXB0UHJvZmlsZS5jcHAgKi87IH07CisJCUYzM0YwNTNEMTIwQjBEQTUwMEU1NzQz
QSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzM0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcCAqLzsgfTsKKwkJRjMzRjA1M0UxMjBCMERBNTAwRTU3NDNBIC8q
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzM0YwNTNDMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmggKi87IH07CiAJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RjM0NEM3NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzUy
MTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3NTgxMTI5
NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NEM3NTcxMTI5NEZGNjAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovOyB9OwpAQCAtMTA5
MjIsNiArMTA5MjQsOCBAQAogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQ
cmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQcmVmaXgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07
CiAJCUYzM0YwMjgxMTIwOTQ3RjIwMEU1NzQzQSAvKiBTY3JpcHRQcm9maWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFByb2ZpbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjMzRjA1M0MxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjM0NEM3NTIxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0Qzc1NzEx
Mjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTU2LDYgKzExNTYwLDgg
QEAKIAkJCQk4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCAq
LywKIAkJCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5jcHAgKi8sCiAJCQkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLywKKwkJCQlGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi8sCisJCQkJRjMzRjA1M0MxMjBCMERBNTAwRTU3NDNB
IC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQk3QTI0NTg3OTEwMjFFQUY0MDAw
QTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovLAogCQkJCTdBMjQ1ODdBMTAyMUVBRjQw
MDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICovLAogCQkJCTQxRjA2MTczMEY1RjAwQUMw
MEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwICovLApAQCAtMTg2NDks
NiArMTg2NTUsNyBAQAogCQkJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAw
QTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MTc0
MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyog
SW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMw
MEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjM0NEM3NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aCBpbiBIZWFkZXJzICovLApAQCAtMjEwNzIsNiArMjEwNzksNyBAQAogCQkJCTQxRjA2MjE1MEY1
RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzM0YwNTNEMTIw
QjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGMzQ0Qzc1ODExMjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzcwRTEwQzAw
QTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbSBi
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXggZGNlYzZj
OTQyZGQ1NmVmNmFjYWQ2ZWQwZTQxN2MyODYwOGI1MDkzZS4uNDY4NzlhYjhhOTIyYjAxMjk3MzAx
OTc2YmZiODQ3MTk5OThjMDM2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5wbQorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnBtCkBAIC0yNCw5ICsyNCw5IEBAICR0eXBlVHJhbnNmb3JteyJDb250cm9sbGVy
In0gPSB7CiAgICAgImhhbmRsZXJBY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlciIs
CiB9OwogJHR5cGVUcmFuc2Zvcm17IkRlYnVnIn0gPSB7Ci0gICAgImZvcndhcmQiID0+ICJTY3Jp
cHREZWJ1Z1NlcnZlciIsCi0gICAgImhlYWRlciIgPT4gIlNjcmlwdERlYnVnU2VydmVyLmgiLAot
ICAgICJoYW5kbGVyQWNjZXNzb3IiID0+ICIoJlNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKSki
LAorICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudCIsCisgICAgImhlYWRl
ciIgPT4gIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIsCisgICAgImhhbmRsZXJBY2Nlc3NvciIg
PT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGVidWdnZXJBZ2VudCgpIiwKIH07CiAkdHlwZVRy
YW5zZm9ybXsiRE9NIn0gPSB7CiAgICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JET01BZ2VudCIs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAwOTlmMTg0NmFmZjU0NDAxNWJkMzk5MGYyMWFk
MjYzMTk5NTVlZDViLi4xZGJmNTZiOWI0ODBjNGQ3ZDA3MzA1YTBhOWY1MzdjZjFiMzM2MDA5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTQ3LDggKzQ3LDEyIEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW25vdGlmeV0gdm9pZCB1cGRhdGVSZXNvdXJjZShvdXQgVmFsdWUgcmVzb3VyY2Up
OwogICAgICAgICBbbm90aWZ5XSB2b2lkIHJlbW92ZVJlc291cmNlKG91dCB1bnNpZ25lZCBsb25n
IHJlc291cmNlSWQpOwogI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYm
IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCisgICAgICAgIFtub3RpZnldIHZvaWQgcGFyc2Vk
U2NyaXB0U291cmNlKG91dCBTdHJpbmcgc291cmNlSUQsIG91dCBTdHJpbmcgdXJsLCBvdXQgU3Ry
aW5nIGRhdGEsIG91dCBpbnQgZmlyc3RMaW5lLCBvdXQgaW50IHNjcmlwdFdvcmxkVHlwZSk7Cisg
ICAgICAgIFtub3RpZnldIHZvaWQgZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShvdXQgU3RyaW5n
IHVybCwgb3V0IFN0cmluZyBkYXRhLCBvdXQgaW50IGZpcnN0TGluZSwgb3V0IGludCBlcnJvckxp
bmUsIG91dCBTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCBwYXVz
ZWRTY3JpcHQob3V0IFZhbHVlIGNhbGxGcmFtZXMpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHJl
c3VtZWRTY3JpcHQoKTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCByZXN0b3JlZEJyZWFrcG9pbnQo
b3V0IFN0cmluZyBzb3VyY2VJRCwgb3V0IFN0cmluZyB1cmwsIG91dCBpbnQgbGluZSwgb3V0IGJv
b2xlYW4gZW5hYmxlZCwgb3V0IFN0cmluZyBjb25kaXRpb24pOworICAgICAgICBbbm90aWZ5XSB2
b2lkIHVwZGF0ZVBhdXNlT25FeGNlcHRpb25zU3RhdGUob3V0IGxvbmcgc3RhdGUpOwogICAgICAg
ICBbbm90aWZ5XSB2b2lkIGFkZFByb2ZpbGVIZWFkZXIob3V0IE9iamVjdCBoZWFkZXIpOwogI2Vu
ZGlmCiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUJBU0UpICYmIEVOQUJMRV9EQVRBQkFTRQpAQCAt
ODgsMjIgKzkyLDIyIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2hhbmRsZXI9QmFja2VuZF0g
dm9pZCBlbmFibGVEZWJ1Z2dlcihpbiBib29sZWFuIGFsd2F5cyk7CiAgICAgICAgIFtoYW5kbGVy
PUNvbnRyb2xsZXJdIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKIAot
ICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gbG9uZyBj
YWxsSWQsIGluIFN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGlu
IGJvb2xlYW4gZW5hYmxlZCwgaW4gU3RyaW5nIGNvbmRpdGlvbiwgb3V0IGJvb2xlYW4gc3VjY2Vz
cywgb3V0IHVuc2lnbmVkIGludCBhY3R1YWxMaW5lTnVtYmVyKTsKLSAgICAgICAgW2hhbmRsZXI9
Q29udHJvbGxlcl0gdm9pZCByZW1vdmVCcmVha3BvaW50KGluIFN0cmluZyBzb3VyY2VJRCwgaW4g
dW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyKTsKKyAgICAgICAgW2hhbmRsZXI9RGVidWddIHZvaWQg
c2V0QnJlYWtwb2ludChpbiBsb25nIGNhbGxJZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBpbiB1bnNp
Z25lZCBpbnQgbGluZU51bWJlciwgaW4gYm9vbGVhbiBlbmFibGVkLCBpbiBTdHJpbmcgY29uZGl0
aW9uLCBvdXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQgdW5zaWduZWQgaW50IGFjdHVhbExpbmVOdW1i
ZXIpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCByZW1vdmVCcmVha3BvaW50KGluIFN0
cmluZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgbG9uZyBsaW5lTnVtYmVyKTsKICAgICAgICAgW2hh
bmRsZXI9RGVidWddIHZvaWQgYWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgICAgICBbaGFuZGxl
cj1EZWJ1Z10gdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAogICAgICAgICBbaGFuZGxl
cj1EZWJ1Z10gdm9pZCBwYXVzZSgpOwotICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lk
IHJlc3VtZSgpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCByZXN1bWUoKTsKIAogICAg
ICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgICAgICBb
aGFuZGxlcj1EZWJ1Z10gdm9pZCBzdGVwSW50b1N0YXRlbWVudCgpOwogICAgICAgICBbaGFuZGxl
cj1EZWJ1Z10gdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOwogCi0gICAgICAgIFtoYW5kbGVyPUNv
bnRyb2xsZXJdIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShpbiBsb25nIHBhdXNlT25F
eGNlcHRpb25zU3RhdGUpOworICAgICAgICBbaGFuZGxlcj1EZWJ1Z10gdm9pZCBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKGluIGxvbmcgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CiAKLSAgICAg
ICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBlZGl0U2NyaXB0U291cmNlKGluIGxvbmcgY2Fs
bElkLCBpbiBTdHJpbmcgc291cmNlSUQsIGluIFN0cmluZyBuZXdDb250ZW50LCBvdXQgYm9vbGVh
biBzdWNjZXNzLCBvdXQgU3RyaW5nIHJlc3VsdCwgb3V0IFZhbHVlIG5ld0NhbGxGcmFtZXMpOwot
ICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBsb25n
IGNhbGxJZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJjZSk7Cisg
ICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gbG9uZyBjYWxs
SWQsIGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFu
IHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7Cisg
ICAgICAgIFtoYW5kbGVyPURlYnVnXSB2b2lkIGdldFNjcmlwdFNvdXJjZShpbiBsb25nIGNhbGxJ
ZCwgaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJjZSk7CiAKICAgICAg
ICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBlbmFibGVQcm9maWxlcihpbiBib29sZWFuIGFs
d2F5cyk7CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZGlzYWJsZVByb2ZpbGVy
KGluIGJvb2xlYW4gYWx3YXlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggYjhkN2JkZmVmZDQ2ZjRkOGEyNzljNGUzMGYwNzQ0MjRmNTU5MTg5Ni4uYWY4
ZTQwZDI4ZWRiNTI2YzMwYjYyYWEyNmM4MGQ1YWFjYjdlOGRiYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgpAQCAtNzMsNyArNzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0
T2JqZWN0LmgiCkBAIC04OSw3ICs4OSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTQ1LDMyICsxNDQsNiBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZXhwaXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwMDsKIAogc3Rh
dGljIHVuc2lnbmVkIHNfaW5zcGVjdG9yQ29udHJvbGxlckNvdW50OwogCi1uYW1lc3BhY2Ugewot
Ci1TdHJpbmcgbWQ1QmFzZTE2KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHN0YXRpYyBj
b25zdCBjaGFyIGRpZ2l0c1tdID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi0gICAgTUQ1IG1kNTsK
LSAgICBtZDUuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5n
LmNoYXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIDIpOwotICAgIFZlY3Rvcjx1aW50OF90
LCAxNj4gZGlnZXN0OwotICAgIG1kNS5jaGVja3N1bShkaWdlc3QpOwotCi0gICAgVmVjdG9yPGNo
YXIsIDMyPiByZXN1bHQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoZGlnaXRzWyhkaWdlc3RbaV0gPj4gNCkgJiAweGZdKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChkaWdpdHNbZGlnZXN0W2ldICYgMHhmXSk7Ci0gICAgfQotICAgIHJl
dHVybiBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7Ci19Ci0KLVN0cmluZyBm
b3JtYXRCcmVha3BvaW50SWQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlcikKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzOiVkIiwgc291cmNlSUQudXRm
OCgpLmRhdGEoKSwgbGluZU51bWJlcik7Ci19Ci0KLX0KLQogSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkK
ICAgICA6IG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAt
MTkxLDggKzE2NCw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIo
UGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXR0
YWNoRGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCi0gICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDAp
Ci0gICAgLCBtX2JyZWFrcG9pbnRzTG9hZGVkKGZhbHNlKQogICAgICwgbV9wcm9maWxlckVuYWJs
ZWQoIVdURl9VU0VfSlNDKQogICAgICwgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZShm
YWxzZSkKICAgICAsIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKC0xKQpAQCAt
NTEwLDcgKzQ4MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5k
KGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKQogICAgIHBvcHVsYXRlU2NyaXB0T2Jq
ZWN0cygpOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKFNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5pc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgpKSB7CisgICAg
aWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzRGVidWdnZXJBbHdheXNFbmFibGVkKCkpIHsK
ICAgICAgICAgLy8gRklYTUUgKDQwMzY0KTogVGhpcyB3aWxsIGZvcmNlIHB1c2hpbmcgc2NyaXB0
IHNvdXJjZXMgdG8gZnJvbnRlbmQgZXZlbiBpZiBzY3JpcHQKICAgICAgICAgLy8gcGFuZWwgaXMg
aW5hY3RpdmUuCiAgICAgICAgIGVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGZhbHNlKTsKQEAg
LTc1MCwxMSArNzIxLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fdGltZXMuY2xlYXIoKTsKICAgICAg
ICAgbV9jb3VudHMuY2xlYXIoKTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICAgICAgbV9zb3VyY2VJRFRvVVJMLmNsZWFyKCk7Ci0gICAgICAgIG1fc2NyaXB0SURUb0NvbnRl
bnQuY2xlYXIoKTsKLSAgICAgICAgbV9zdGlja3lCcmVha3BvaW50cy5jbGVhcigpOwotICAgICAg
ICBtX2JyZWFrcG9pbnRzTWFwcGluZy5jbGVhcigpOwotICAgICAgICBtX2JyZWFrcG9pbnRzTG9h
ZGVkID0gZmFsc2U7CisgICAgICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpCisgICAgICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQtPmNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKTsKICNlbmRpZgogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBVU0UoSlNDKQogICAgICAgICBtX3Byb2ZpbGVz
LmNsZWFyKCk7CkBAIC0xNjUyLDggKzE2MjAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKQogCiAgICAgQVNTRVJUKG1f
aW5zcGVjdGVkUGFnZSk7CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY2xlYXJC
cmVha3BvaW50cygpOwotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5hZGRMaXN0ZW5l
cih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIG1fZGVidWdnZXJBZ2VudCA9IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSh0aGlzKTsKIAogICAgIG1fZGVidWdnZXJFbmFibGVkID0g
dHJ1ZTsKICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTE2ODUsMTQ4
ICsxNjUyLDIwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKGJv
b2wgYWx3YXlzKQogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAKLSAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVtb3ZlTGlzdGVuZXIodGhpcywgbV9pbnNwZWN0ZWRQYWdl
KTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKIAogICAgIG1fZGVidWdnZXJFbmFibGVk
ID0gZmFsc2U7CiAgICAgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93biA9IGZhbHNlOwotICAgIG1f
cGF1c2VkU2NyaXB0U3RhdGUgPSAwOwogCiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIG1f
ZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRGlzYWJsZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjplZGl0U2NyaXB0U291cmNlKGxvbmcsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpCi17Ci0gICAgaWYgKCpzdWNjZXNz
ID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmVkaXRTY3JpcHRTb3VyY2Uoc291cmNlSUQs
IG5ld0NvbnRlbnQsICpyZXN1bHQpKQotICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRD
YWxsRnJhbWVzKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0U2NyaXB0U291
cmNlKGxvbmcsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0U291cmNlKQot
ewotICAgICpzY3JpcHRTb3VyY2UgPSBtX3NjcmlwdElEVG9Db250ZW50LmdldChzb3VyY2VJRCk7
Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdW1lKCkKIHsKLSAgICBpZiAoIW1f
ZGVidWdnZXJFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLmNvbnRpbnVlUHJvZ3JhbSgpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobG9uZyBwYXVzZVN0YXRlKQotewotICAgIFNj
cmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRp
Y19jYXN0PFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlPihwYXVzZVN0
YXRlKSk7Ci0gICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgIG1fZnJvbnRlbmQtPnVwZGF0ZVBh
dXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBhdXNlT25F
eGNlcHRpb25zU3RhdGUoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmN1cnJlbnRDYWxsRnJhbWVzKCkKLXsKLSAgICBpZiAoIW1fcGF1c2Vk
U2NyaXB0U3RhdGUpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmlu
amVjdGVkU2NyaXB0Rm9yKG1fcGF1c2VkU2NyaXB0U3RhdGUpOwotICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAgIH0KLSAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHQuY2FsbEZyYW1lcygpOworICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpCisgICAg
ICAgIG1fZGVidWdnZXJBZ2VudC0+cmVzdW1lKCk7CiB9Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0QnJlYWtwb2ludChsb25nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBib29sIGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29s
KiBzdWNjZXNzLCB1bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpCi17Ci0gICAgU2NyaXB0
QnJlYWtwb2ludCBicmVha3BvaW50KGVuYWJsZWQsIGNvbmRpdGlvbik7Ci0gICAgKnN1Y2Nlc3Mg
PSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgYnJl
YWtwb2ludCwgbGluZU51bWJlciwgYWN0dWFsTGluZU51bWJlcik7Ci0gICAgaWYgKCEqc3VjY2Vz
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHVybCA9IG1fc291cmNlSURUb1VSTC5n
ZXQoc291cmNlSUQpOwotICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBTdHJpbmcgYnJlYWtwb2ludElkID0gZm9ybWF0QnJlYWtwb2ludElkKHNvdXJjZUlELCAq
YWN0dWFsTGluZU51bWJlcik7Ci0gICAgbV9icmVha3BvaW50c01hcHBpbmcuc2V0KGJyZWFrcG9p
bnRJZCwgKmFjdHVhbExpbmVOdW1iZXIpOwotCi0gICAgU3RyaW5nIGtleSA9IG1kNUJhc2UxNih1
cmwpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTb3VyY2VCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0
ID0gbV9zdGlja3lCcmVha3BvaW50cy5maW5kKGtleSk7Ci0gICAgaWYgKGl0ID09IG1fc3RpY2t5
QnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQo
a2V5LCBTb3VyY2VCcmVha3BvaW50cygpKS5maXJzdDsKLSAgICBpdC0+c2Vjb25kLnNldCgqYWN0
dWFsTGluZU51bWJlciwgYnJlYWtwb2ludCk7Ci0gICAgc2F2ZUJyZWFrcG9pbnRzKCk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQotewotICAgIFNjcmlwdERlYnVnU2VydmVy
OjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKLQotICAg
IFN0cmluZyB1cmwgPSBtX3NvdXJjZUlEVG9VUkwuZ2V0KHNvdXJjZUlEKTsKLSAgICBpZiAodXJs
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9
IGZvcm1hdEJyZWFrcG9pbnRJZChzb3VyY2VJRCwgbGluZU51bWJlcik7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIHVuc2lnbmVkPjo6aXRlcmF0b3IgbWFwcGluZ0l0ID0gbV9icmVha3BvaW50c01hcHBp
bmcuZmluZChicmVha3BvaW50SWQpOwotICAgIGlmIChtYXBwaW5nSXQgPT0gbV9icmVha3BvaW50
c01hcHBpbmcuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB1bnNpZ25lZCBzdGlja3lMaW5l
ID0gbWFwcGluZ0l0LT5zZWNvbmQ7Ci0gICAgbV9icmVha3BvaW50c01hcHBpbmcucmVtb3ZlKG1h
cHBpbmdJdCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVy
YXRvciBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuZmluZChtZDVCYXNlMTYodXJsKSk7Ci0gICAg
aWYgKGl0ID09IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGl0LT5zZWNvbmQucmVtb3ZlKHN0aWNreUxpbmUpOwotICAgIHNhdmVCcmVha3BvaW50cygp
OwotfQotCi0vLyBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciBmdW5jdGlvbnMKLQotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBTY3Jp
cHRXb3JsZFR5cGUgd29ybGRUeXBlKQotewotICAgIC8vIERvbid0IHNlbmQgc2NyaXB0IGNvbnRl
bnQgdG8gdGhlIGZyb250IGVuZCB1bnRpbCBpdCdzIHJlYWxseSBuZWVkZWQuCi0gICAgbV9mcm9u
dGVuZC0+cGFyc2VkU2NyaXB0U291cmNlKHNvdXJjZUlELCB1cmwsICIiLCBmaXJzdExpbmUsIHdv
cmxkVHlwZSk7Ci0KLSAgICBtX3NjcmlwdElEVG9Db250ZW50LnNldChzb3VyY2VJRCwgZGF0YSk7
Ci0KLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbG9hZEJy
ZWFrcG9pbnRzKCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRl
cmF0b3IgaXQgPSBtX3N0aWNreUJyZWFrcG9pbnRzLmZpbmQobWQ1QmFzZTE2KHVybCkpOwotICAg
IGlmIChpdCAhPSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpKSB7Ci0gICAgICAgIGZvciAoU291
cmNlQnJlYWtwb2ludHM6Oml0ZXJhdG9yIGJyZWFrcG9pbnRJdCA9IGl0LT5zZWNvbmQuYmVnaW4o
KTsgYnJlYWtwb2ludEl0ICE9IGl0LT5zZWNvbmQuZW5kKCk7ICsrYnJlYWtwb2ludEl0KSB7Ci0g
ICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGJyZWFrcG9pbnRJdC0+Zmlyc3Q7Ci0gICAgICAg
ICAgICBpZiAoZmlyc3RMaW5lID4gbGluZU51bWJlcikKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGFjdHVhbExpbmVOdW1iZXIgPSAwOwotICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9p
bnQoc291cmNlSUQsIGJyZWFrcG9pbnRJdC0+c2Vjb25kLCBsaW5lTnVtYmVyLCAmYWN0dWFsTGlu
ZU51bWJlcik7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBtX2Zyb250ZW5kLT5yZXN0b3JlZEJyZWFrcG9pbnQoc291cmNl
SUQsIHVybCwgYWN0dWFsTGluZU51bWJlciwgYnJlYWtwb2ludEl0LT5zZWNvbmQuZW5hYmxlZCwg
YnJlYWtwb2ludEl0LT5zZWNvbmQuY29uZGl0aW9uKTsKLSAgICAgICAgICAgIFN0cmluZyBicmVh
a3BvaW50SWQgPSBmb3JtYXRCcmVha3BvaW50SWQoc291cmNlSUQsIGFjdHVhbExpbmVOdW1iZXIp
OwotICAgICAgICAgICAgbV9icmVha3BvaW50c01hcHBpbmcuc2V0KGJyZWFrcG9pbnRJZCwgbGlu
ZU51bWJlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9zb3VyY2VJRFRvVVJMLnNldChzb3Vy
Y2VJRCwgdXJsKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpmYWlsZWRUb1BhcnNl
U291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExp
bmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIG1f
ZnJvbnRlbmQtPmZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUs
IGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRQYXVzZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgQVNTRVJUKHNjcmlw
dFN0YXRlICYmICFtX3BhdXNlZFNjcmlwdFN0YXRlKTsKLSAgICBtX3BhdXNlZFNjcmlwdFN0YXRl
ID0gc2NyaXB0U3RhdGU7Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzID0g
Y3VycmVudENhbGxGcmFtZXMoKTsKLSAgICBtX3JlbW90ZUZyb250ZW5kLT5wYXVzZWRTY3JpcHQo
Y2FsbEZyYW1lcy5nZXQoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29u
dGludWUoKQotewotICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSAwOwotICAgIG1fcmVtb3RlRnJv
bnRlbmQtPnJlc3VtZWRTY3JpcHQoKTsKLX0KLQogI2VuZGlmCiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQpCkBAIC0xODUyLDM5ICsxNjkxLDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3Ry
aW5nCiBTdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6YnJlYWtwb2ludHNTZXR0aW5nS2V5KCkK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5UHJlZml4LCAoImJyZWFrcG9p
bnRzOiIpKTsKLSAgICByZXR1cm4ga2V5UHJlZml4ICsgbWQ1QmFzZTE2KG1fbWFpblJlc291cmNl
LT5yZXF1ZXN0VVJMKCkpOworICAgIHJldHVybiBrZXlQcmVmaXggKyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjptZDVCYXNlMTYobV9tYWluUmVzb3VyY2UtPnJlcXVlc3RVUkwoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bG9hZEJyZWFrcG9pbnRzKCkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IEluc3BlY3RvckNvbnRyb2xsZXI6OmxvYWRCcmVha3BvaW50cygpCiB7Ci0g
ICAgaWYgKG1fYnJlYWtwb2ludHNMb2FkZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2JyZWFr
cG9pbnRzTG9hZGVkID0gdHJ1ZTsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2Vk
U2V0dGluZyA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oc2V0dGluZyhicmVha3BvaW50c1Nl
dHRpbmdLZXkoKSkpOwotICAgIGlmICghcGFyc2VkU2V0dGluZykKLSAgICAgICAgcmV0dXJuOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzID0gcGFyc2VkU2V0dGluZy0+
YXNPYmplY3QoKTsKLSAgICBpZiAoIWJyZWFrcG9pbnRzKQotICAgICAgICByZXR1cm47Ci0gICAg
Zm9yIChJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGl0ID0gYnJlYWtwb2ludHMtPmJlZ2luKCk7
IGl0ICE9IGJyZWFrcG9pbnRzLT5lbmQoKTsgKytpdCkgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBicmVha3BvaW50c0ZvclVSTCA9IGl0LT5zZWNvbmQtPmFzT2JqZWN0KCk7Ci0g
ICAgICAgIGlmICghYnJlYWtwb2ludHNGb3JVUkwpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3Igc291cmNl
QnJlYWtwb2ludHNJdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuc2V0KGl0LT5maXJzdCwgU291cmNl
QnJlYWtwb2ludHMoKSkuZmlyc3Q7Ci0gICAgICAgIFNjcmlwdEJyZWFrcG9pbnQ6OnNvdXJjZUJy
ZWFrcG9pbnRzRnJvbUluc3BlY3Rvck9iamVjdChicmVha3BvaW50c0ZvclVSTCwgJnNvdXJjZUJy
ZWFrcG9pbnRzSXQtPnNlY29uZCk7Ci0gICAgfQorICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6
cGFyc2VKU09OKHNldHRpbmcoYnJlYWtwb2ludHNTZXR0aW5nS2V5KCkpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzYXZlQnJlYWtwb2ludHMoKQordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzYXZlQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFr
cG9pbnRzKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTb3VyY2VC
cmVha3BvaW50cz46Oml0ZXJhdG9yIGl0KG1fc3RpY2t5QnJlYWtwb2ludHMuYmVnaW4oKSk7IGl0
ICE9IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT5z
ZWNvbmQuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gU2NyaXB0QnJlYWtwb2ludDo6aW5z
cGVjdG9yT2JqZWN0RnJvbVNvdXJjZUJyZWFrcG9pbnRzKGl0LT5zZWNvbmQpOwotICAgICAgICBi
cmVha3BvaW50cy0+c2V0KGl0LT5maXJzdCwgYnJlYWtwb2ludHNGb3JVUkwpOwotICAgIH0KICAg
ICBzZXRTZXR0aW5nKGJyZWFrcG9pbnRzU2V0dGluZ0tleSgpLCBicmVha3BvaW50cy0+dG9KU09O
U3RyaW5nKCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggN2QxZjgyODQwMDJmNjQzZjllZDFmZjEwMWJiOWM2NTVkMDg4NDY5MC4uZDUxZGU2
MDM2ZGY3NTU5MmQxMTE2OWFjN2NhNTgxZTFmM2FhZmYxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNvb2tpZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJv
ZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgpAQCAtNDQsMTAgKzQzLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwpAQCAtNjAsMTIgKzU1LDE0IEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlw
dDsKIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKK2NsYXNzIEluc3BlY3RvckFycmF5OwogY2xh
c3MgSW5zcGVjdG9yQmFja2VuZDsKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwog
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ1NTU3RvcmU7CiBjbGFzcyBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlOworY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250
ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZTsKQEAgLTkwLDEzICs4Nyw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogI2VuZGlmCiAKLWNsYXNzIEluc3BlY3RvckNvbnRy
b2xsZXIKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgTm9uY29weWFibGUKLSNlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIE5vbmNvcHlhYmxlCi0jZW5kaWYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Citj
bGFzcyBJbnNwZWN0b3JDb250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPEluc3BlY3RvclJlc291
cmNlPiA+IFJlc291cmNlc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwg
UmVzb3VyY2VzTWFwKj4gRnJhbWVSZXNvdXJjZXNNYXA7CkBAIC0yNjIsMTcgKzI1Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKCk7CiAgICAgdm9pZCBkaXNhYmxlRGVidWdn
ZXIoYm9vbCBhbHdheXMgPSBmYWxzZSk7CiAgICAgYm9vbCBkZWJ1Z2dlckVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2RlYnVnZ2VyRW5hYmxlZDsgfQotCi0gICAgdm9pZCBlZGl0U2NyaXB0U291
cmNlKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5l
d0NvbnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+KiBuZXdDYWxsRnJhbWVzKTsKLSAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotCisg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdnZXJBZ2VudC5nZXQoKTsgfQogICAgIHZvaWQgcmVzdW1lKCk7Ci0gICAgdm9pZCBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKGxvbmcgcGF1c2VTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgU2NyaXB0V29ybGRUeXBl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlw
dFN0YXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAjZW5kaWYKIAogICAg
IHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpOwpAQCAtMzA3LDExICsyODksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMoKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGN1cnJlbnRDYWxsRnJhbWVzKCk7
Ci0KLSAgICB2b2lkIHNldEJyZWFrcG9pbnQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGJvb2wgZW5hYmxlZCwgY29uc3QgU3RyaW5nJiBj
b25kaXRpb24sIGJvb2wqIHN1Y2Nlc3MsIHVuc2lnbmVkIGludCogYWN0dWFsTGluZU51bWJlcik7
Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2ln
bmVkIGxpbmVOdW1iZXIpOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVm
UHRyPFNjcmlwdFByb2ZpbGU+ID4gUHJvZmlsZXNNYXA7CiAKICAgICB2b2lkIHN0YXJ0VXNlcklu
aXRpYXRlZFByb2ZpbGluZ1Nvb24oKTsKQEAgLTM1MSw5ICszMjgsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYganNvblJlc3VsdCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAg
ICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKICAgICBTdHJpbmcgYnJlYWtw
b2ludHNTZXR0aW5nS2V5KCk7Ci0gICAgdm9pZCBsb2FkQnJlYWtwb2ludHMoKTsKLSAgICB2b2lk
IHNhdmVCcmVha3BvaW50cygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGxvYWRC
cmVha3BvaW50cygpOworICAgIHZvaWQgc2F2ZUJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBicmVha3BvaW50cyk7CiAjZW5kaWYKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVk
UGFnZTsKQEAgLTQwOSwxMiArMzg3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKICAgICBib29sIG1fZGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9hdHRh
Y2hEZWJ1Z2dlcldoZW5TaG93bjsKLSAgICBTY3JpcHRTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0
ZTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3NvdXJjZUlEVG9VUkw7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV9zY3JpcHRJRFRvQ29udGVudDsKLSAgICBIYXNoTWFwPFN0
cmluZywgU291cmNlQnJlYWtwb2ludHM+IG1fc3RpY2t5QnJlYWtwb2ludHM7Ci0gICAgSGFzaE1h
cDxTdHJpbmcsIHVuc2lnbmVkPiBtX2JyZWFrcG9pbnRzTWFwcGluZzsKLSAgICBib29sIG1fYnJl
YWtwb2ludHNMb2FkZWQ7CisgICAgT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IG1fZGVi
dWdnZXJBZ2VudDsKIAogICAgIGJvb2wgbV9wcm9maWxlckVuYWJsZWQ7CiAgICAgYm9vbCBtX3Jl
Y29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTZkOTg2NTVhMThiNGY1YmY4YTlhMzNm
MDcwYzRkODdlYTQyNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTAsMCArMSwzMDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKworI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JGcm9u
dGVuZC5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL01E
NS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgZm9ybWF0QnJlYWtw
b2ludElkKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCit7Cisg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlczolZCIsIHNvdXJjZUlELnV0ZjgoKS5kYXRhKCks
IGxpbmVOdW1iZXIpOworfQorCitQYXNzT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKQoreworICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBhZ2Vu
dCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluc3BlY3RvckNvbnRyb2xs
ZXIpKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY2xlYXJCcmVha3BvaW50cygp
OworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5hZGRMaXN0ZW5lcihhZ2VudC5nZXQo
KSwgaW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpKTsKKyAgICByZXR1cm4gYWdl
bnQucmVsZWFzZSgpOworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCisgICAg
OiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAsIG1fcGF1
c2VkU2NyaXB0U3RhdGUoMCkKK3sKK30KKworSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6fkluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKQoreworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5y
ZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KSk7CisgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7Cit9CisKK2Jvb2wgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6aXNEZWJ1Z2dlckFsd2F5c0VuYWJsZWQoKQoreworICAgIHJldHVybiBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuaXNEZWJ1Z2dlckFsd2F5c0VuYWJsZWQoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjphY3RpdmF0ZUJyZWFrcG9pbnRzKCkKK3sKKyAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuYWN0aXZhdGVCcmVha3BvaW50cygpOworfQor
Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYWN0aXZhdGVCcmVha3BvaW50cygpCit7
CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmRlYWN0aXZhdGVCcmVha3BvaW50cygp
OworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQobG9uZywg
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgYm9vbCBlbmFibGVk
LCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCogc3VjY2VzcywgdW5zaWduZWQgaW50KiBh
Y3R1YWxMaW5lTnVtYmVyKQoreworICAgIFNjcmlwdEJyZWFrcG9pbnQgYnJlYWtwb2ludChlbmFi
bGVkLCBjb25kaXRpb24pOworICAgICpzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSUQsIGJyZWFrcG9pbnQsIGxpbmVOdW1iZXIsIGFjdHVh
bExpbmVOdW1iZXIpOworICAgIGlmICghKnN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAg
IFN0cmluZyB1cmwgPSBtX3NvdXJjZUlEVG9VUkwuZ2V0KHNvdXJjZUlEKTsKKyAgICBpZiAodXJs
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9
IGZvcm1hdEJyZWFrcG9pbnRJZChzb3VyY2VJRCwgKmFjdHVhbExpbmVOdW1iZXIpOworICAgIG1f
YnJlYWtwb2ludHNNYXBwaW5nLnNldChicmVha3BvaW50SWQsICphY3R1YWxMaW5lTnVtYmVyKTsK
KworICAgIFN0cmluZyBrZXkgPSBtZDVCYXNlMTYodXJsKTsKKyAgICBIYXNoTWFwPFN0cmluZywg
U291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuZmlu
ZChrZXkpOworICAgIGlmIChpdCA9PSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpKQorICAgICAg
ICBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuc2V0KGtleSwgU291cmNlQnJlYWtwb2ludHMoKSku
Zmlyc3Q7CisgICAgaXQtPnNlY29uZC5zZXQoKmFjdHVhbExpbmVOdW1iZXIsIGJyZWFrcG9pbnQp
OworICAgIHNhdmVCcmVha3BvaW50cygpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGlu
ZU51bWJlcikKK3sKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVtb3ZlQnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlcik7CisKKyAgICBTdHJpbmcgdXJsID0gbV9zb3VyY2VJ
RFRvVVJMLmdldChzb3VyY2VJRCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBmb3JtYXRCcmVha3BvaW50SWQoc291
cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD46Oml0ZXJh
dG9yIG1hcHBpbmdJdCA9IG1fYnJlYWtwb2ludHNNYXBwaW5nLmZpbmQoYnJlYWtwb2ludElkKTsK
KyAgICBpZiAobWFwcGluZ0l0ID09IG1fYnJlYWtwb2ludHNNYXBwaW5nLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgdW5zaWduZWQgc3RpY2t5TGluZSA9IG1hcHBpbmdJdC0+c2Vjb25kOwor
ICAgIG1fYnJlYWtwb2ludHNNYXBwaW5nLnJlbW92ZShtYXBwaW5nSXQpOworCisgICAgSGFzaE1h
cDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQgPSBtX3N0aWNreUJyZWFr
cG9pbnRzLmZpbmQobWQ1QmFzZTE2KHVybCkpOworICAgIGlmIChpdCA9PSBtX3N0aWNreUJyZWFr
cG9pbnRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdC0+c2Vjb25kLnJlbW92ZShz
dGlja3lMaW5lKTsKKyAgICBzYXZlQnJlYWtwb2ludHMoKTsKK30KKwordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjplZGl0U2NyaXB0U291cmNlKGxvbmcsIGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1
bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpCit7CisgICAgaWYgKCpz
dWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmVkaXRTY3JpcHRTb3VyY2Uoc291
cmNlSUQsIG5ld0NvbnRlbnQsICpyZXN1bHQpKQorICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1
cnJlbnRDYWxsRnJhbWVzKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
U2NyaXB0U291cmNlKGxvbmcsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2NyaXB0
U291cmNlKQoreworICAgICpzY3JpcHRTb3VyY2UgPSBtX3NjcmlwdElEVG9Db250ZW50LmdldChz
b3VyY2VJRCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoKQorewor
ICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5wYXVzZSgpOworfQorCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSgpCit7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLmNvbnRpbnVlUHJvZ3JhbSgpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnN0ZXBPdmVyU3RhdGVtZW50KCkKK3sKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVk
KCkuc3RlcE92ZXJTdGF0ZW1lbnQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzdGVwSW50b1N0YXRlbWVudCgpCit7CisgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LnN0ZXBJbnRvU3RhdGVtZW50KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c3RlcE91dE9mRnVuY3Rpb24oKQoreworICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5z
dGVwT3V0T2ZGdW5jdGlvbigpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dFBhdXNlT25FeGNlcHRpb25zU3RhdGUobG9uZyBwYXVzZVN0YXRlKQoreworICAgIFNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRpY19jYXN0
PFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7
CisgICAgaWYgKHJlbW90ZUZyb250ZW5kKCkpCisgICAgICAgIHJlbW90ZUZyb250ZW5kKCktPnVw
ZGF0ZVBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnBh
dXNlT25FeGNlcHRpb25zU3RhdGUoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpCit7CisgICAgbV9zb3VyY2VJRFRvVVJMLmNsZWFy
KCk7CisgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOworICAgIG1fc3RpY2t5QnJlYWtw
b2ludHMuY2xlYXIoKTsKKyAgICBtX2JyZWFrcG9pbnRzTWFwcGluZy5jbGVhcigpOworICAgIG1f
YnJlYWtwb2ludHNMb2FkZWQgPSBmYWxzZTsKK30KKworU3RyaW5nIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Om1kNUJhc2UxNihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzdGF0aWMgY29u
c3QgY2hhciBkaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKKworICAgIE1ENSBtZDU7Cisg
ICAgbWQ1LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5j
aGFyYWN0ZXJzKCkpLCBzdHJpbmcubGVuZ3RoKCkgKiAyKTsKKyAgICBWZWN0b3I8dWludDhfdCwg
MTY+IGRpZ2VzdDsKKyAgICBtZDUuY2hlY2tzdW0oZGlnZXN0KTsKKworICAgIFZlY3RvcjxjaGFy
LCAzMj4gcmVzdWx0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAg
ICByZXN1bHQuYXBwZW5kKGRpZ2l0c1soZGlnZXN0W2ldID4+IDQpICYgMHhmXSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoZGlnaXRzW2RpZ2VzdFtpXSAmIDB4Zl0pOworICAgIH0KKyAgICByZXR1
cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworfQorCitQYXNzUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1l
cygpCit7CisgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQorICAgICAgICByZXR1cm4gSW5z
cGVjdG9yVmFsdWU6Om51bGwoKTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVjdGVkU2Ny
aXB0Rm9yKG1fcGF1c2VkU2NyaXB0U3RhdGUpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOworICAgIH0KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3Jp
cHQuY2FsbEZyYW1lcygpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmxvYWRC
cmVha3BvaW50cygpCit7CisgICAgaWYgKG1fYnJlYWtwb2ludHNMb2FkZWQpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2JyZWFrcG9pbnRzTG9hZGVkID0gdHJ1ZTsKKworICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gcGFyc2VkU2V0dGluZyA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+bG9hZEJy
ZWFrcG9pbnRzKCk7CisgICAgaWYgKCFwYXJzZWRTZXR0aW5nKQorICAgICAgICByZXR1cm47Cisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMgPSBwYXJzZWRTZXR0aW5nLT5h
c09iamVjdCgpOworICAgIGlmICghYnJlYWtwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICBm
b3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSBicmVha3BvaW50cy0+YmVnaW4oKTsg
aXQgIT0gYnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGJyZWFrcG9pbnRzRm9yVVJMID0gaXQtPnNlY29uZC0+YXNPYmplY3QoKTsKKyAg
ICAgICAgaWYgKCFicmVha3BvaW50c0ZvclVSTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBzb3VyY2VC
cmVha3BvaW50c0l0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQoaXQtPmZpcnN0LCBTb3VyY2VC
cmVha3BvaW50cygpKS5maXJzdDsKKyAgICAgICAgU2NyaXB0QnJlYWtwb2ludDo6c291cmNlQnJl
YWtwb2ludHNGcm9tSW5zcGVjdG9yT2JqZWN0KGJyZWFrcG9pbnRzRm9yVVJMLCAmc291cmNlQnJl
YWtwb2ludHNJdC0+c2Vjb25kKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2F2ZUJyZWFrcG9pbnRzKCkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
cmVha3BvaW50cyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZm9yIChIYXNoTWFw
PFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdChtX3N0aWNreUJyZWFrcG9p
bnRzLmJlZ2luKCkpOyBpdCAhPSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIGlmIChpdC0+c2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50c0ZvclVSTCA9IFNjcmlw
dEJyZWFrcG9pbnQ6Omluc3BlY3Rvck9iamVjdEZyb21Tb3VyY2VCcmVha3BvaW50cyhpdC0+c2Vj
b25kKTsKKyAgICAgICAgYnJlYWtwb2ludHMtPnNldChpdC0+Zmlyc3QsIGJyZWFrcG9pbnRzRm9y
VVJMKTsKKyAgICB9CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zYXZlQnJlYWtwb2ludHMo
YnJlYWtwb2ludHMpOworfQorCisvLyBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciBmdW5jdGlvbnMK
Kwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQg
Zmlyc3RMaW5lLCBTY3JpcHRXb3JsZFR5cGUgd29ybGRUeXBlKQoreworICAgIC8vIERvbid0IHNl
bmQgc2NyaXB0IGNvbnRlbnQgdG8gdGhlIGZyb250IGVuZCB1bnRpbCBpdCdzIHJlYWxseSBuZWVk
ZWQuCisgICAgcmVtb3RlRnJvbnRlbmQoKS0+cGFyc2VkU2NyaXB0U291cmNlKHNvdXJjZUlELCB1
cmwsICIiLCBmaXJzdExpbmUsIHdvcmxkVHlwZSk7CisKKyAgICBtX3NjcmlwdElEVG9Db250ZW50
LnNldChzb3VyY2VJRCwgZGF0YSk7CisKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbG9hZEJyZWFrcG9pbnRzKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFNv
dXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQgPSBtX3N0aWNreUJyZWFrcG9pbnRzLmZpbmQo
bWQ1QmFzZTE2KHVybCkpOworICAgIGlmIChpdCAhPSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgp
KSB7CisgICAgICAgIGZvciAoU291cmNlQnJlYWtwb2ludHM6Oml0ZXJhdG9yIGJyZWFrcG9pbnRJ
dCA9IGl0LT5zZWNvbmQuYmVnaW4oKTsgYnJlYWtwb2ludEl0ICE9IGl0LT5zZWNvbmQuZW5kKCk7
ICsrYnJlYWtwb2ludEl0KSB7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGJyZWFrcG9p
bnRJdC0+Zmlyc3Q7CisgICAgICAgICAgICBpZiAoZmlyc3RMaW5lID4gbGluZU51bWJlcikKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFjdHVhbExpbmVO
dW1iZXIgPSAwOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSUQsIGJyZWFrcG9pbnRJdC0+c2Vjb25kLCBs
aW5lTnVtYmVyLCAmYWN0dWFsTGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3Mp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZW1vdGVGcm9udGVuZCgp
LT5yZXN0b3JlZEJyZWFrcG9pbnQoc291cmNlSUQsIHVybCwgYWN0dWFsTGluZU51bWJlciwgYnJl
YWtwb2ludEl0LT5zZWNvbmQuZW5hYmxlZCwgYnJlYWtwb2ludEl0LT5zZWNvbmQuY29uZGl0aW9u
KTsKKyAgICAgICAgICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBmb3JtYXRCcmVha3BvaW50SWQo
c291cmNlSUQsIGFjdHVhbExpbmVOdW1iZXIpOworICAgICAgICAgICAgbV9icmVha3BvaW50c01h
cHBpbmcuc2V0KGJyZWFrcG9pbnRJZCwgbGluZU51bWJlcik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbV9zb3VyY2VJRFRvVVJMLnNldChzb3VyY2VJRCwgdXJsKTsKK30KKwordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIHJlbW90ZUZyb250ZW5kKCktPmZhaWxlZFRvUGFy
c2VTY3JpcHRTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNz
YWdlKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgQVNTRVJUKHNjcmlwdFN0YXRlICYmICFtX3BhdXNl
ZFNjcmlwdFN0YXRlKTsKKyAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGU7Cisg
ICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsRnJhbWVzID0gY3VycmVudENhbGxGcmFtZXMo
KTsKKyAgICByZW1vdGVGcm9udGVuZCgpLT5wYXVzZWRTY3JpcHQoY2FsbEZyYW1lcy5nZXQoKSk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQoreworICAg
IG1fcGF1c2VkU2NyaXB0U3RhdGUgPSAwOworICAgIHJlbW90ZUZyb250ZW5kKCktPnJlc3VtZWRT
Y3JpcHQoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQqIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnJlbW90ZUZyb250ZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5yZW1vdGVJbnNwZWN0b3JGcm9udGVuZCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTVhZTkw
ZWY0ZmRjNmJkODkyNWVlZmE4YWM0MGM0YzhiYWQ0ODA3Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW5zcGVjdG9yRGVidWdnZXJBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaW5jbHVkZSAi
U2NyaXB0QnJlYWtwb2ludC5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbmplY3RlZFNj
cmlwdEhvc3Q7CitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xhc3MgSW5zcGVjdG9yVmFs
dWU7CitjbGFzcyBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZDsKK2NsYXNzIFN0cmluZzsKKworY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBw
dWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmly
dHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOworCisgICAgc3RhdGljIGJvb2wgaXNEZWJ1
Z2dlckFsd2F5c0VuYWJsZWQoKTsKKworICAgIHZvaWQgYWN0aXZhdGVCcmVha3BvaW50cygpOwor
ICAgIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CisgICAgdm9pZCBzZXRCcmVha3BvaW50
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBib29sIGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sKiBzdWNjZXNzLCB1
bnNpZ25lZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpOworICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKKworICAgIHZv
aWQgZWRpdFNjcmlwdFNvdXJjZShsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcyk7CisgICAgdm9pZCBnZXRTY3Jp
cHRTb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc291cmNlSUQsIFN0cmluZyogc2Ny
aXB0U291cmNlKTsKKworICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lkIHJlc3VtZSgpOworICAg
IHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKKyAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7
CisgICAgdm9pZCBzdGVwT3V0T2ZGdW5jdGlvbigpOworCisgICAgdm9pZCBzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKGxvbmcgcGF1c2VTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyRm9yUGFnZU5h
dmlnYXRpb24oKTsKKworICAgIHN0YXRpYyBTdHJpbmcgbWQ1QmFzZTE2KGNvbnN0IFN0cmluZyYg
c3RyaW5nKTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGN1cnJlbnRD
YWxsRnJhbWVzKCk7CisKKyAgICB2b2lkIGxvYWRCcmVha3BvaW50cygpOworICAgIHZvaWQgc2F2
ZUJyZWFrcG9pbnRzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwg
aW50IGZpcnN0TGluZSwgU2NyaXB0V29ybGRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQg
Zmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKik7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKCk7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JGcm9udGVuZCogcmVtb3RlRnJv
bnRlbmQoKSBjb25zdDsKKworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIG1faW5zcGVjdG9yQ29u
dHJvbGxlcjsKKyAgICBTY3JpcHRTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsKKyAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBtX3NvdXJjZUlEVG9VUkw7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gbV9zY3JpcHRJRFRvQ29udGVudDsKKyAgICBIYXNoTWFwPFN0cmluZywgU291cmNl
QnJlYWtwb2ludHM+IG1fc3RpY2t5QnJlYWtwb2ludHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVu
c2lnbmVkPiBtX2JyZWFrcG9pbnRzTWFwcGluZzsKKyAgICBib29sIG1fYnJlYWtwb2ludHNMb2Fk
ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnRfaCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA5OTRm
NGRjNzdiZDAzY2VjZDRlOTJjYzEyYTMxOWE3M2IwZTcxYmU5Li43ZjIxNDQwYmJlMmY1OTEwZjQ0
NTBhMWIzNGY3NDI4MTBjYjMwZTgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwCkBAIC0yMjEsNTIgKzIyMSw2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRlYnVn
Z2VyV2FzRGlzYWJsZWQoKQogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigiZGVidWdnZXJXYXNEaXNh
YmxlZCIpOwogfQogCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRTZXRCcmVha3BvaW50KGxv
bmcgY2FsbElkLCBib29sIHN1Y2Nlc3MsIHVuc2lnbmVkIGxpbmUpCi17Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsKLSAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudCgiZGlkU2V0QnJlYWtwb2ludCIpOwotICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGNhbGxJZCk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3VjY2Vz
cyk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobGluZSk7Ci0gICAgZnVuY3Rpb24uY2Fs
bCgpOwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpwYXJzZWRTY3JpcHRTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0
YSwgaW50IGZpcnN0TGluZSwgaW50IHNjcmlwdFdvcmxkVHlwZSkKLXsKLSAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOyAKLSAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudCgicGFyc2VkU2NyaXB0U291cmNlIik7Ci0gICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoc291cmNlSUQpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHVy
bCk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZGF0YSk7Ci0gICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoZmlyc3RMaW5lKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzY3Jp
cHRXb3JsZFR5cGUpOwotICAgIGZ1bmN0aW9uLmNhbGwoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JG
cm9udGVuZDo6cmVzdG9yZWRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFN0cmluZyYgdXJsLCBpbnQgbGluZSwgYm9vbCBlbmFibGVkLCBjb25zdCBTdHJpbmcmIGNvbmRp
dGlvbikKLXsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3Is
ICJkaXNwYXRjaCIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCJyZXN0b3JlZEJyZWFr
cG9pbnQiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2VJRCk7Ci0gICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQodXJsKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChs
aW5lKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlbmFibGVkKTsKLSAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChjb25kaXRpb24pOwotICAgIGZ1bmN0aW9uLmNhbGwoKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JM
aW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOyAKLSAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCgiZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSIpOwotICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KHVybCk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZGF0YSk7
Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmlyc3RMaW5lKTsKLSAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChlcnJvckxpbmUpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGVy
cm9yTWVzc2FnZSk7Ci0gICAgZnVuY3Rpb24uY2FsbCgpOwotfQotCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kOjpwcm9maWxlcldhc0VuYWJsZWQoKQogewogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigi
cHJvZmlsZXJXYXNFbmFibGVkIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApp
bmRleCBkN2NlZjA0ODUyMjEyYTNiOGE5NjVhYjA3NzcxODJhMjM3ZjlkNzY5Li42ZTA2MjBhYThm
Nzc4ZTgxNThhMDVhYmEyNzk0Zjk0YTBmOTFjMDFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmgKQEAgLTc5LDEyICs3OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKTsKICAgICAgICAgdm9pZCBkZWJ1Z2dlcldhc0Rp
c2FibGVkKCk7CiAKLSAgICAgICAgdm9pZCBkaWRTZXRCcmVha3BvaW50KGxvbmcgY2FsbElkLCBi
b29sIHN1Y2Nlc3MsIHVuc2lnbmVkIGxpbmUpOwotCi0gICAgICAgIHZvaWQgcGFyc2VkU2NyaXB0
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBzY3JpcHRXb3JsZFR5cGUpOwotICAgICAg
ICB2b2lkIHJlc3RvcmVkQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBT
dHJpbmcmIHVybCwgaW50IGxpbmUsIGJvb2wgZW5hYmxlZCwgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24pOwotICAgICAgICB2b2lkIGZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotCiAgICAgICAgIHZvaWQgcHJvZmlsZXJXYXNF
bmFibGVkKCk7CiAgICAgICAgIHZvaWQgcHJvZmlsZXJXYXNEaXNhYmxlZCgpOwogICAgICAgICB2
b2lkIHNldFJlY29yZGluZ1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZyk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBkZmY0ODUzZmMxNTVmM2NkMTEx
MmE2ZTAyMjVhMjlkMWM0NmNiMThhLi43ODI2ZDJlZDMyMDAzN2Q0MDYwZWMyYmQ5ZDI3NjNkZGU5
NDMyOWY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
QEAgLTEwMywxMSArMTAzLDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5zdGVwT3V0QnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImltZyIpKTsKICAgICB0aGlzLnNpZGViYXJCdXR0b25zRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLnN0ZXBPdXRCdXR0b24pOwogCi0gICAgdGhpcy50b2dnbGVCcmVha3BvaW50c0J1dHRv
biA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAidG9nZ2xlLWJyZWFrcG9p
bnRzIik7CisgICAgdGhpcy50b2dnbGVCcmVha3BvaW50c0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVhY3RpdmF0ZSBhbGwg
YnJlYWtwb2ludHMuIiksICJ0b2dnbGUtYnJlYWtwb2ludHMiKTsKKyAgICAvLyBCcmVha3BvaW50
cyBzaG91bGQgYmUgYWN0aXZhdGVkIGJ5IGRlZmF1bHQsIHNvIGVtdWxhdGUgYSBjbGljayB0byB0
b2dnbGUgb24uCisgICAgdGhpcy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi50b2dnbGVkID0gdHJ1
ZTsKICAgICB0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy50b2dnbGVCcmVha3BvaW50c0NsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwog
ICAgIHRoaXMuc2lkZWJhckJ1dHRvbnNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudG9nZ2xlQnJl
YWtwb2ludHNCdXR0b24uZWxlbWVudCk7Ci0gICAgLy8gQnJlYWtwb2ludHMgc2hvdWxkIGJlIGFj
dGl2YXRlZCBieSBkZWZhdWx0LCBzbyBlbXVsYXRlIGEgY2xpY2sgdG8gdG9nZ2xlIG9uLgotICAg
IHRoaXMudG9nZ2xlQnJlYWtwb2ludHNDbGlja2VkKCk7CiAKICAgICB0aGlzLmRlYnVnZ2VyU3Rh
dHVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZGVi
dWdnZXJTdGF0dXNFbGVtZW50LmlkID0gInNjcmlwdHMtZGVidWdnZXItc3RhdHVzIjsK
</data>
<flag name="review"
          id="52119"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63733</attachid>
            <date>2010-08-06 09:45:41 -0700</date>
            <delta_ts>2010-08-06 09:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42340-20100806174538.patch</filename>
            <type>text/plain</type>
            <size>133092</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzODRjZGNiODFkM2JjZDk0NGU1YzQ2MzZkZjYxMGM1MTU0ZWRkZmJkLi41MThjNjM0
YmVkMmEzMWRlZjRkZTY2ZWZhZDI0OTI2NmQ0ZWU0ODNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xMTMsMjUgKzExMyw2
IEBACiAgICAgICAgICogc3ZnL2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJhc2ljLWV4cGVjdGVkLnR4
dDogQW4gZW1wdHkgc3Ryb2tlLWRhc2hhcnJheSByZXBvcnRzICJub25lIiwgYXMgZGVmaW5lZCBp
biB0aGUgc3BlYyBub3cuCiAgICAgICAgICogc3ZnL2N1c3RvbS9wYXRoLXplcm8tc3Ryb2tld2lk
dGguc3ZnOiBBZGRlZC4KIAotMjAxMC0wOC0wNSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgotCi0gICAgICAg
IEluaXRpYWwgYmluZGluZ3MgYW5kIHBsdW1iaW5nIGZvciBJREJDdXJzb3IuCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4OAotCi0gICAgICAgIFRl
c3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2lkYi1vcGVuY3Vyc29yLmh0bWwKLQotICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbDogQWRkZWQuCi0gICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL29wZW4tY3Vyc29yLmpzOiBBZGRlZC4KLSAg
ICAgICAgKGN1cnNvclN1Y2Nlc3MpOgotICAgICAgICAob3BlbkN1cnNvcik6Ci0gICAgICAgIChw
b3B1bGF0ZU9iamVjdFN0b3JlKToKLSAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vzcyk6
Ci0gICAgICAgIChvcGVuU3VjY2Vzcyk6Ci0gICAgICAgICh0ZXN0KToKLQogMjAxMC0wOC0wNiAg
UGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2
aWV3ZWQ6IENocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zIHJlYmFzZWxpbmUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNTg3ODUyMGFlNTdiYWUyYTQ3ZmE5ZDcx
NjY5MTlhZmM2YmU0YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLVRlc3QgSW5kZXhlZERCJ3Mgb3Bl
bkN1cnNvci4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLWluZGV4ZWREQi5vcGVu
KCduYW1lJywgJ2Rlc2NyaXB0aW9uJykKLVBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRy
dWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdhYm9ydCcgaW4gcmVz
dWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCi1BbiBldmVu
dCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLVN1Y2Nlc3MgZXZlbnQgZmlyZWQ6Ci1QQVNTICdy
ZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCi1Q
QVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnc291cmNlJyBpbiBldmVudCBp
cyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKLVBBU1MgJ29uc3VjY2Vz
cycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdl
dCBpcyB0cnVlCi1QQVNTICdhYm9ydCcgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ3Jl
YWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTIGV2ZW50LnRhcmdldC5yZWFk
eVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLWRiID0gZXZlbnQucmVzdWx0Ci1kYi5jcmVh
dGVPYmplY3RTdG9yZSgndGVzdCcpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
Ci1QQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnYWJvcnQnIGluIHJlc3Vs
dCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQg
c2hvdWxkIGZpcmUgc2hvcnRseS4uLgotCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyB0cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMg
dHJ1ZQotUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3Mn
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQotUEFTUyAnYWJvcnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQotCi1vYmplY3RTdG9yZSA9IGV2ZW50LnJlc3VsdAot
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykKLVBBU1MgJ29uc3VjY2VzcycgaW4g
cmVzdWx0IGlzIHRydWUKLVBBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdh
Ym9ydCcgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0
cnVlCi1BbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCi0KLU9wZW5pbmcgY3Vyc29yCi1v
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKQotUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1
bHQgaXMgdHJ1ZQotUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKLVBBU1MgJ2Fib3J0
JyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUK
LUFuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KLQotQ3Vyc29yIG9wZW5lZCBzdWNjZXNz
ZnVsbHkuCi1TdWNjZXNzIGV2ZW50IGZpcmVkOgotUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0
cnVlCi1QQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAnbWVzc2FnZScgaW4gZXZl
bnQgaXMgZmFsc2UKLVBBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQotUEFTUyBldmVudC5z
b3VyY2UgIT0gbnVsbCBpcyB0cnVlCi1QQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCi1QQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQotUEFTUyAnYWJv
cnQnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQotUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJn
ZXQuRE9ORQotCi1QQVNTIGV2ZW50LnJlc3VsdC5kaXJlY3Rpb24gaXMgMAotUEFTUyBldmVudC5y
ZXN1bHQua2V5IGlzICdteUtleScKLVBBU1MgZXZlbnQucmVzdWx0LnZhbHVlIGlzICdteVZhbHVl
JwotCi1PcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4KLW9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpCi1QQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNTICdvbmVycm9y
JyBpbiByZXN1bHQgaXMgdHJ1ZQotUEFTUyAnYWJvcnQnIGluIHJlc3VsdCBpcyB0cnVlCi1QQVNT
ICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQotQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hv
cnRseS4uLgotCi1FbXB0eSBjdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4KLVN1Y2Nlc3MgZXZl
bnQgZmlyZWQ6Ci1QQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKLVBBU1MgJ2NvZGUnIGlu
IGV2ZW50IGlzIGZhbHNlCi1QQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQotUEFTUyAn
c291cmNlJyBpbiBldmVudCBpcyB0cnVlCi1QQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRy
dWUKLVBBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKLVBBU1MgJ29uZXJy
b3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNTICdhYm9ydCcgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKLVBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCi1QQVNT
IGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCi0KLVBBU1MgZXZl
bnQucmVzdWx0IGlzIG51bGwKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Bl
bi1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29y
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MDM2NWQ1ZDA2ZmQ5NGQ1Mzg1
YTgxYjJmYjg5YmJlYmRhNTIwOWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvb3Blbi1jdXJzb3IuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL29wZW4tY3Vyc29y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2NyaXB0LXRlc3RzL29wZW4tY3Vy
c29yLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2M2MTVjNGE1YWU3MDUwY2Qy
N2M2MDIwODc1NWJlYmIyOWZkMDc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NjcmlwdC10ZXN0cy9v
cGVuLWN1cnNvci5qcworKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQot
ZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiRW1wdHkgY3Vyc29y
IG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKLSAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwot
ICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAg
c2hvdWxkQmUoImV2ZW50LnJlc3VsdCIsICJudWxsIik7Ci0gICAgZG9uZSgpOwotfQotCi1mdW5j
dGlvbiBvcGVuRW1wdHlDdXJzb3IoKQotewotICAgIGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5IGN1
cnNvci4iKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxlZnRCb3VuZCgiSW5leGlzdGVu
dEtleSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3Vj
Y2VzcyA9IGVtcHR5Q3Vyc29yU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2Vzcygp
Ci17Ci0gICAgZGVidWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCi0gICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICAvLyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRl
cmF0ZSB0aGUgY3Vyc29yLgotICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHQuZGlyZWN0aW9uIiwg
IjAiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0LmtleSIsICInbXlLZXknIik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnJlc3VsdC52YWx1ZSIsICInbXlWYWx1ZSciKTsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgb3BlbkVtcHR5Q3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQot
ewotICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFu
Z2UubGVmdEJvdW5kKCJteUtleSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0g
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIHBvcHVs
YXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKLSAgICB2ZXJpZnlSZXN1bHQo
cmVzdWx0KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVP
YmplY3RTdG9yZVN1Y2Nlc3MoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0g
ICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC5yZXN1
bHQiKTsKLSAgICBwb3B1bGF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlKTsKLX0KLQotZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7Ci0gICAg
dmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5yZXN1bHQiKTsKLSAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgdmVyaWZ5UmVz
dWx0KHJlc3VsdCk7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlU3Vj
Y2VzczsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignbmFtZScsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7
Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLXRlc3QoKTsKLQotdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5q
c2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCmlu
ZGV4IDI5ZWZhNmZkZjQ4OWExNjgyODNlNjk0YzRkMTA4ZDIyMTU5ZjUyY2EuLjFmNTY1ZDdhMzEw
MzQyNmFhMGVkNjk4ZDQ4ZTU0ZTc2OTA2ZDcyMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9p
ZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpz
Y2JpbmRpbmdzLm1rCkBAIC0xLDQgKzEsMyBAQAotCiAjIwogIyMgQ29weXJpZ2h0IDIwMDksIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKICMjCkBAIC0zNjMsNyArMzYyLDYgQEAgJChw
YXRzdWJzdCAlLmgsJS5jcHAsJChHRU4pKTogJChpbnRlcm1lZGlhdGVzKS9zdG9yYWdlLyUuY3Bw
IDogJChpbnRlcm1lZGlhdGVzKS8KICMgSW5kZXhlZCBEYXRhYmFzZQogR0VOIDo9IFwKICAgICAk
KGludGVybWVkaWF0ZXMpL3N0b3JhZ2UvSlNJREJBbnkuaCBcCi0gICAgJChpbnRlcm1lZGlhdGVz
KS9zdG9yYWdlL0pTSURCQ3Vyc29yLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvc3RvcmFnZS9K
U0lEQkRhdGFiYXNlRXJyb3IuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9zdG9yYWdlL0pTSURC
RGF0YWJhc2VFeGNlcHRpb24uaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9zdG9yYWdlL0pTSURC
RGF0YWJhc2UuaCBcCkBAIC0zNzUsOCArMzczLDcgQEAgR0VOIDo9IFwKICAgICAkKGludGVybWVk
aWF0ZXMpL3N0b3JhZ2UvSlNJREJLZXlSYW5nZS5oIFwKICAgICAkKGludGVybWVkaWF0ZXMpL3N0
b3JhZ2UvSlNJREJPYmplY3RTdG9yZS5oIFwKICAgICAkKGludGVybWVkaWF0ZXMpL3N0b3JhZ2Uv
SlNJREJSZXF1ZXN0LmggXAotICAgICQoaW50ZXJtZWRpYXRlcykvc3RvcmFnZS9KU0lEQlN1Y2Nl
c3NFdmVudC5oIFwKLSAgICAkKGludGVybWVkaWF0ZXMpL3N0b3JhZ2UvSlNJREJUcmFuc2FjdGlv
bi5oCisgICAgJChpbnRlcm1lZGlhdGVzKS9zdG9yYWdlL0pTSURCU3VjY2Vzc0V2ZW50LmgKIAog
JChHRU4pOiBQUklWQVRFX1BBVEggOj0gJChMT0NBTF9QQVRIKQogJChHRU4pOiBQUklWQVRFX0NV
U1RPTV9UT09MID0gcGVybCAtSSQoUFJJVkFURV9QQVRIKS9iaW5kaW5ncy9zY3JpcHRzICQoUFJJ
VkFURV9QQVRIKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0tZGVmaW5l
cyAiJChGRUFUVVJFX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0tZ2VuZXJhdG9yIEpT
IC0taW5jbHVkZSBkb20gLS1pbmNsdWRlIGh0bWwgLS1pbmNsdWRlIHN0b3JhZ2UgLS1vdXRwdXRk
aXIgJChkaXIgJEApICQ8CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC52OGJp
bmRpbmdzLm1rIGIvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawppbmRleCA5
MzAzN2IzOGNjYjNiZDM0NzJlYTUwMzhjZTZmMzIyZmRmODE1ZTc3Li40YjU2OGZlZTdkMTljYWI2
MmY1MDdlMzllYTIxZjY2NDFiMzkyNGVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQuZGVy
aXZlZC52OGJpbmRpbmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGlu
Z3MubWsKQEAgLTM0Myw3ICszNDMsNiBAQCAkKHBhdHN1YnN0ICUuaCwlLmNwcCwkKEdFTikpOiAk
KGludGVybWVkaWF0ZXMpL2JpbmRpbmdzLyUuY3BwIDogJChpbnRlcm1lZGlhdGVzKQogIyBJbmRl
eGVkIERhdGFiYXNlCiBHRU4gOj0gXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJ
REJBbnkuaCBcCi0gICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOElEQkN1cnNvci5oIFwK
ICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4SURCRGF0YWJhc2VFcnJvci5oIFwKICAg
ICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4SURCRGF0YWJhc2VFeGNlcHRpb24uaCBcCiAg
ICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOElEQkRhdGFiYXNlLmggXApAQCAtMzU1LDgg
KzM1NCw3IEBAIEdFTiA6PSBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOElEQktl
eVJhbmdlLmggXAogICAgICQoaW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJREJPYmplY3RTdG9y
ZS5oIFwKICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4SURCUmVxdWVzdC5oIFwKLSAg
ICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4SURCU3VjY2Vzc0V2ZW50LmggXAotICAgICQo
aW50ZXJtZWRpYXRlcykvYmluZGluZ3MvVjhJREJUcmFuc2FjdGlvbi5oCisgICAgJChpbnRlcm1l
ZGlhdGVzKS9iaW5kaW5ncy9WOElEQlN1Y2Nlc3NFdmVudC5oCiAKICQoR0VOKTogUFJJVkFURV9Q
QVRIIDo9ICQoTE9DQUxfUEFUSCkKICQoR0VOKTogUFJJVkFURV9DVVNUT01fVE9PTCA9IFNPVVJD
RV9ST09UPSQoUFJJVkFURV9QQVRIKSBwZXJsIC1JJChQUklWQVRFX1BBVEgpL2JpbmRpbmdzL3Nj
cmlwdHMgJChQUklWQVRFX1BBVEgpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3Mu
cGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1n
ZW5lcmF0b3IgVjggLS1pbmNsdWRlIGRvbSAtLWluY2x1ZGUgaHRtbCAtLWluY2x1ZGUgc3RvcmFn
ZSAtLW91dHB1dGRpciAkKGRpciAkQCkgJDwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5t
ayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRleCA4M2Y4MmVkNDU2NGNhNTBhNTg1Njc2ZjcwNzZh
YmUwYTdmZGJhMmUyLi45ZDYyMTg0ZmI2OGNmNzE2NDVjM2M3MThjZDU1YWJlMWZmODExNjMwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBA
IC03NDYsMTUgKzc0NiwxMCBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcCBcCiAJc3RvcmFnZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwIFwKIAlzdG9yYWdlL0lEQkFueS5jcHAgXAotCXN0b3JhZ2UvSURCQ3Vyc29yLmNwcCBc
Ci0Jc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgXAogCXN0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwIFwKIAlzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIFwKIAlzdG9yYWdl
L0lEQkVycm9yRXZlbnQuY3BwIFwKIAlzdG9yYWdlL0lEQkV2ZW50LmNwcCBcCi0Jc3RvcmFnZS9J
REJGYWN0b3J5LmNwcCBcCi0Jc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5jcHAg
XAotCXN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBcCiAJc3RvcmFnZS9JREJJbmRl
eC5jcHAgXAogCXN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgXAogCXN0b3JhZ2UvSURC
S2V5LmNwcCBcCkBAIC03NjMsNyArNzU4LDkgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxf
U1JDX0ZJTEVTKSBcCiAJc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBcCiAJ
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBcCiAJc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwIFwK
LQlzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCBcCisJc3RvcmFnZS9JREJGYWN0b3J5LmNwcCBc
CisJc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5jcHAgXAorCXN0b3JhZ2UvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBcCiAJc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcCBc
CiAJc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3BwIFwKIAlzdG9yYWdlL09yaWdpblF1b3Rh
TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWE5M2IwYjJhOGJiNDMyMmVjODQxMjE0Y2FjM2M4MTk3
M2ZiMTRmZS4uNDA5MzllMjYwZWJjNGRiNzI3NTI2YWI4NGJjYmVjYzJlMDEzMjYzYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0zMzUsNyArMzM1LDYgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgc3RvcmFnZS9E
YXRhYmFzZUNhbGxiYWNrLmlkbAogICAgIHN0b3JhZ2UvRGF0YWJhc2VTeW5jLmlkbAogICAgIHN0
b3JhZ2UvSURCQW55LmlkbAotICAgIHN0b3JhZ2UvSURCQ3Vyc29yLmlkbAogICAgIHN0b3JhZ2Uv
SURCRGF0YWJhc2VFcnJvci5pZGwKICAgICBzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlk
bAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCkBAIC0zNDgsNyArMzQ3LDYgQEAgU0VUKFdl
YkNvcmVfSURMX0ZJTEVTCiAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKICAgICBzdG9y
YWdlL0lEQlJlcXVlc3QuaWRsCiAgICAgc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaWRsCi0gICAg
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwKICAgICBzdG9yYWdlL1NRTEVycm9yLmlkbAogICAg
IHN0b3JhZ2UvU1FMRXhjZXB0aW9uLmlkbAogICAgIHN0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbApA
QCAtMTQ0Niw4ICsxNDQ0LDYgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvSURC
QW55LmNwcAogICAgIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCiAgICAgc3RvcmFnZS9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcAotICAgIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcAotICAgIHN0b3Jh
Z2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCiAgICAgc3RvcmFnZS9JREJFcnJvckV2ZW50LmNw
cAogICAgIHN0b3JhZ2UvSURCRXZlbnQuY3BwCiAgICAgc3RvcmFnZS9JREJJbmRleC5jcHAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdh
ZTE3Mzk4NjhmYzQzMTJhOTdiNTQzYTBlMWJiMzUyYzZmODlhMS4uYzYyYjExMmNiNjIwZTA3MWZl
MGY1Mjk5YzY2ZjYxN2NlYjgwMzhjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTQ5NCwxNDIgKzQ5NCw2IEBACiAgICAgICAgICogcGxh
dGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwOiBSZW1vdmVkLgogICAgICAgICAqIHBsYXRm
b3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0Lmg6IFJlbW92ZWQuCiAKLTIwMTAtMDgtMDUgIE1hcmN1
cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEpl
cmVteSBPcmxvdy4KLQotICAgICAgICBJbml0aWFsIGJpbmRpbmdzIGFuZCBwbHVtYmluZyBmb3Ig
SURCQ3Vyc29yLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDE4ODgKLQotICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9pZGItb3BlbmN1cnNv
ci5odG1sCi0KLSAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQuanNjYmluZGluZ3MubWs6Ci0gICAg
ICAgICogQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWs6Ci0gICAgICAgICogQW5kcm9pZC5t
azoKLSAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKLSAgICAgICAgKiBEZXJpdmVkU291cmNlcy5j
cHA6Ci0gICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKLSAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKLSAgICAgICAgKiBXZWJDb3JlLmd5cGk6Ci0gICAgICAgICogV2ViQ29yZS5wcmk6Ci0g
ICAgICAgICogV2ViQ29yZS5wcm86Ci0gICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6Ci0gICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjp0b1Y4KToKLSAgICAgICAgKiBzdG9yYWdlL0lEQkFueS5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpJREJBbnk6OmlkYkN1cnNvcik6Ci0gICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNl
dCk6Ci0gICAgICAgICogc3RvcmFnZS9JREJBbnkuaDoKLSAgICAgICAgKFdlYkNvcmU6OklEQkFu
eTo6KToKLSAgICAgICAgKiBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oOgotICAgICAgICAqIHN0b3Jh
Z2UvSURCQ3Vyc29yLmNwcDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OklE
QkN1cnNvcik6Ci0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6On5JREJDdXJzb3IpOgotICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yOjprZXkpOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp2YWx1ZSk6Ci0g
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
OjpyZW1vdmUpOgotICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmg6IEFkZGVkLgotICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yOjopOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpj
cmVhdGUpOgotICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yLmlkbDogQWRkZWQuCi0gICAgICAg
ICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6IEFkZGVkLgotICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKToKLSAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjp+SURCQ3Vyc29yQmFja2VuZEltcGwp
OgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRpcmVjdGlvbik6Ci0g
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6a2V5KToKLSAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKToKLSAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmRJbXBsOjpyZW1vdmUpOgotICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y3JlYXRlKToKLSAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjp+
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSk6Ci0gICAgICAgICogc3RvcmFnZS9JREJPYmplY3RT
dG9yZS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6
Ci0gICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oOgotICAgICAgICAqIHN0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuaWRsOgotICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKToKLSAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuaDoKLSAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
OgotICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgotICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dGlt
ZXJGaXJlZCk6Ci0gICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6Ci0KLTIwMTAtMDgtMDYg
IEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgotCi0gICAgICAgIFVucmV2aWV3
ZWQsIHJlbGVhc2UgYnVpbGQgZml4LgotCi0gICAgICAgIExlb3BhcmQgcmVsYXNlIGJ1aWxkIGlz
IGJyb2tlbiBkdWUgdG8gYWJzb2x1dGUgcGF0aCB0byBKU0lEQlRyYW5zYWN0aW9uLmNwcCBmaWxl
IHByZXNlbnQgaW4gWENvZGUgcHJvamVjdCBmaWxlLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM2MTYKLQotICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAxMC0wOC0wNSAgQW5kcmVpIFBvcGVzY3UgIDxhbmRy
ZWlwQGRoY3AtMTcyLTE2LTE0LTEyLmxvbi5jb3JwLmdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgSmVyZW15IE9ybG93LgotCi0gICAgICAgIFtJbmRleGVkREJdIEluZGV4ZWREQiBp
cyBtaXNzaW5nIHRoZSBUcmFuc2FjdGlvbiBpbnRlcmZhY2UuCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjk3MAotCi0gICAgICAgIEFkZCBJREJUcmFu
c2FjdGlvbiBib2lsZXJwbGF0ZS4KLQotICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCBmdW5jdGlv
bmFsIHlldC4KLQotICAgICAgICAqIEFuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tazoKLSAg
ICAgICAgKiBBbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tazoKLSAgICAgICAgKiBBbmRyb2lk
Lm1rOgotICAgICAgICAqIENNYWtlTGlzdHMudHh0OgotICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LmNwcDoKLSAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgotICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgotICAgICAgICAqIFdlYkNvcmUuZ3lwaToKLSAgICAgICAgKiBXZWJDb3JlLnByaToK
LSAgICAgICAgKiBXZWJDb3JlLnBybzoKLSAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKLSAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0g
ICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKLSAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNl
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6Ci0gICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgotICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2UuaWRsOgotICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbik6Ci0g
ICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6Ci0gICAgICAgICogc3Rv
cmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKLSAgICAgICAgKiBzdG9yYWdlL0lE
QlJlcXVlc3QuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6
Ci0gICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpjYW5TdXNwZW5kKToKLSAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnRpbWVyRmlyZWQpOgotICAgICAgICAoV2ViQ29yZTo6SURCUmVx
dWVzdDo6b25FdmVudENvbW1vbik6Ci0gICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0Lmg6Ci0g
ICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgotICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246Om1vZGUpOgotICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRi
KToKLSAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnQpOgotICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgotICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQpOgotICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKLSAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0
ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6KToKLSAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjp0b0lEQlRyYW5zYWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpyZWZFdmVudFRhcmdldCk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6Ci0gICAgICAgICogc3RvcmFnZS9JREJUcmFu
c2FjdGlvbi5pZGw6IEFkZGVkLgotICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlLmg6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlOjp+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKToKLQogMjAx
MC0wOC0wNiAgUmFmYWVsIEFudG9nbm9sbGkgIDxhbnRvZ25vbGxpQHByb2Z1c2lvbi5tb2JpPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5jcHAgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBmZDdmY2Y4
ZjE5ZDNmZTI1YWRlY2UzNWY3YzdjMTkwODkxOWUwNTMyLi40YmVkNTY4ZDcwM2I0NWQ2NWRlNjcx
YTBlNzIxNDQ2ODhjNjcyYzIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMTc2LDcgKzE3Niw2IEBACiAj
aW5jbHVkZSAiSlNIVE1MVUxpc3RFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSURCQW55LmNwcCIKLSNpbmNsdWRlICJKU0lEQkN1cnNv
ci5jcHAiCiAjaW5jbHVkZSAiSlNJREJEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNJREJEYXRh
YmFzZUVycm9yLmNwcCIKICNpbmNsdWRlICJKU0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCIKQEAg
LTE4OSw3ICsxODgsNiBAQAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuY3BwIgogI2luY2x1
ZGUgIkpTSURCUmVxdWVzdC5jcHAiCiAjaW5jbHVkZSAiSlNJREJTdWNjZXNzRXZlbnQuY3BwIgot
I2luY2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmNw
cCIKICNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAiCiAjaW5jbHVkZSAiSlNJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGYyNWU5MWVlNzkwZmYx
ODJlY2M0MDFmMjFiMjliNmE0NTYwMmY5ZDguLjAyZDZlZmI5OTljODAwZWMxYjRmNDI1N2M5Yjhm
OGU1YTU2NjNhZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyNyw3ICsyMjcsNiBAQCBET01fQ0xB
U1NFUyA9IFwKICAgICBIVE1MVmlkZW9FbGVtZW50IFwKICAgICBIaXN0b3J5IFwKICAgICBJREJB
bnkgXAotICAgIElEQkN1cnNvciBcCiAgICAgSURCRGF0YWJhc2VFcnJvciBcCiAgICAgSURCRGF0
YWJhc2VFeGNlcHRpb24gXAogICAgIElEQkRhdGFiYXNlIFwKQEAgLTI0MCw3ICsyMzksNiBAQCBE
T01fQ0xBU1NFUyA9IFwKICAgICBJREJPYmplY3RTdG9yZSBcCiAgICAgSURCUmVxdWVzdCBcCiAg
ICAgSURCU3VjY2Vzc0V2ZW50IFwKLSAgICBJREJUcmFuc2FjdGlvbiBcCiAgICAgSW1hZ2VEYXRh
IFwKICAgICBJbmplY3RlZFNjcmlwdEhvc3QgXAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCA4NDA2MTcwN2Y3NWY1Mjc1MGE3OTJlNmE4M2QwYjQ4MjU4NzVlYTgxLi40NDFj
MWJhNDMyM2M4YjdiOTZiZTg2NjQ2MzE1ZGEyOTA5MGE0NjczIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI4NjYsMjAg
KzI4NjYsMTMgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSURCUmVxdWVzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJREJS
ZXF1ZXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJREJTdWNjZXNzRXZlbnQuY3Bw
IFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSURCU3VjY2Vzc0V2ZW50LmggXAotCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNJREJUcmFuc2FjdGlvbi5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNJREJUcmFuc2FjdGlvbi5oCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lE
QlN1Y2Nlc3NFdmVudC5oCiAKIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdl
L0lEQkFueS5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9JREJBbnkuaCBcCiAJV2ViQ29yZS9zdG9y
YWdlL0lEQkNhbGxiYWNrcy5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIFwK
LQlXZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggXAotCVdlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3IuY3BwIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIFwKLQlX
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBcCi0JV2ViQ29yZS9zdG9yYWdl
L0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmggXAogCVdlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBcCiAJ
V2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBcCkBAIC0yODkwLDEyICsy
ODgzLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCRXJyb3JF
dmVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvSURCRXZlbnQuY3BwIFwKIAlXZWJDb3JlL3N0b3Jh
Z2UvSURCRXZlbnQuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuY3BwIFwKLQlXZWJD
b3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuY3BwIFwKLQlXZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAg
XAotCVdlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaAogCVdlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleC5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oIFwKIAlXZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggXApAQCAtMjkxMiw5ICsyODk5
LDEyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aCBcCiAJV2ViQ29yZS9zdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXAogCVdlYkNvcmUvc3Rv
cmFnZS9JREJTdWNjZXNzRXZlbnQuaCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmNwcCBcCi0JV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmggXAotCVdlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorCVdlYkNvcmUvc3RvcmFnZS9J
REJGYWN0b3J5LmNwcCBcCisJV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaCBcCisJV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmNwcCBcCisJV2ViQ29yZS9zdG9y
YWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggXAorCVdlYkNvcmUvc3RvcmFnZS9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmgKIGVuZGlmICMgRU5EIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFCiAKICMgLS0tLQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBjMWU1OWZlOWE3OWI3ZGViOWU0ZGJkYzEzZWU5NDc5MDY4M2I3Nzc4Li5mYWQ0Nzc4OTUx
OTJjNzlmMGE1MDQ0YjAyYzMzNWMzZDhiMWRkNzg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjM4LDcgKzIzOCw2IEBACiAg
ICAgICAgICAgICAnc3RvcmFnZS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAg
ICdzdG9yYWdlL0ZsYWdzLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaWRsJywK
LSAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCRGF0YWJhc2VFcnJvci5pZGwnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCRGF0YWJh
c2VFeGNlcHRpb24uaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlLmlkbCcs
CkBAIC0yNTEsNyArMjUwLDYgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmlkbCcsCiAgICAgICAgICAg
ICAnc3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuaWRsJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9NZXRhZGF0YS5pZGwnLAog
ICAgICAgICAgICAgJ3N0b3JhZ2UvTWV0YWRhdGFDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvU1FMRXJyb3IuaWRsJywKQEAgLTM1MDcsMTEgKzM1MDUsNiBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvSURCQW55LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9JREJDYWxsYmFja3MuaCcsCi0gICAgICAgICAgICAnc3Rv
cmFnZS9JREJDdXJzb3IuY3BwJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5oJywK
LSAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCcsCi0gICAgICAg
ICAgICAnc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oJywKLSAgICAgICAgICAgICdzdG9y
YWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9J
REJEYXRhYmFzZS5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9JREJEYXRhYmFzZUVycm9yLmgnLApAQCAtMzU0OCw5ICszNTQx
LDYgQEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlJlcXVlc3QuaCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJTdWNjZXNzRXZlbnQuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlN1
Y2Nlc3NFdmVudC5oJywKLSAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCcs
Ci0gICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oJywKLSAgICAgICAgICAgICdz
dG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oJywKICAgICAgICAgICAgICdz
dG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0xvY2Fs
U3RvcmFnZVRhc2suaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQu
Y3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9XZWJDb3JlL1dlYkNvcmUu
cHJpCmluZGV4IDdkZDA2ODE3MzlhNDcyZThjNWU1YmJjMTk5NTAzYzQzYjBiNDI3OTQuLmYzNjRh
Y2Y1ODU0YmQ5ZjBhYmY0NzdiMGFmYzViYmY1ZTI5NWEwY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5wcmkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtNDg0LDIwICs0ODQsMTgg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBzdG9yYWdlL0RhdGFiYXNlQ2FsbGJhY2suaWRsIFwK
ICAgICBzdG9yYWdlL0RhdGFiYXNlU3luYy5pZGwgXAogICAgIHN0b3JhZ2UvSURCQW55LmlkbCBc
Ci0gICAgc3RvcmFnZS9JREJDdXJzb3IuaWRsIFwKICAgICBzdG9yYWdlL0lEQkRhdGFiYXNlRXJy
b3IuaWRsIFwKICAgICBzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbCBcCiAgICAgc3Rv
cmFnZS9JREJEYXRhYmFzZS5pZGwgXAogICAgIHN0b3JhZ2UvSURCRXJyb3JFdmVudC5pZGwgXAog
ICAgIHN0b3JhZ2UvSURCRXZlbnQuaWRsIFwKLSAgICBzdG9yYWdlL0lEQkZhY3RvcnkuaWRsIFwK
ICAgICBzdG9yYWdlL0lEQkluZGV4LmlkbCBcCiAgICAgc3RvcmFnZS9JREJLZXkuaWRsIFwKICAg
ICBzdG9yYWdlL0lEQktleVJhbmdlLmlkbCBcCiAgICAgc3RvcmFnZS9JREJPYmplY3RTdG9yZS5p
ZGwgXAogICAgIHN0b3JhZ2UvSURCUmVxdWVzdC5pZGwgXAogICAgIHN0b3JhZ2UvSURCU3VjY2Vz
c0V2ZW50LmlkbCBcCi0gICAgc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwgXAorICAgIHN0b3Jh
Z2UvSURCRmFjdG9yeS5pZGwgXAogICAgIHN0b3JhZ2UvU3RvcmFnZS5pZGwgXAogICAgIHN0b3Jh
Z2UvU3RvcmFnZUV2ZW50LmlkbCBcCiAgICAgc3RvcmFnZS9TUUxFcnJvci5pZGwgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOTY3
ZTMzMDdiNTlkY2Y2ODQzNWMzMmFjM2ZkNjMyNjNhNTlkMDY4OS4uMDM3Yjk2Y2E0MzMyNTI1Y2Mx
MmY2ODdjY2NlMGVmN2Q2YjFlMmYyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNDM0LDkgKzI0MzQsNiBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xKSB7CiAgICAgICAgIGJpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBcCiAgICAgICAgIHN0b3JhZ2UvSURCQW55LmggXAogICAg
ICAgICBzdG9yYWdlL0lEQkNhbGxiYWNrcy5oIFwKLSAgICAgICAgc3RvcmFnZS9JREJDdXJzb3Iu
aCBcCi0gICAgICAgIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBcCi0gICAgICAgIHN0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIFwKICAgICAgICAgc3RvcmFnZS9JREJE
YXRhYmFzZS5oIFwKICAgICAgICAgc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggXAog
ICAgICAgICBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIFwKQEAgLTI0NTYs
MTcgKzI0NTMsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0lOREVYRURfREFUQUJBU0U9
MSkgewogICAgICAgICBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggXAogICAgICAgICBz
dG9yYWdlL0lEQlJlcXVlc3QuaCBcCi0gICAgICAgIHN0b3JhZ2UvSURCU3VjY2Vzc0V2ZW50Lmgg
XAotICAgICAgICBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmggXAotICAgICAgICBzdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisgICAgICAgIHN0b3JhZ2UvSURCU3VjY2Vz
c0V2ZW50LmgKIAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBiaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcCBcCiAgICAgICAgIHN0
b3JhZ2UvSURCQW55LmNwcCBcCi0gICAgICAgIHN0b3JhZ2UvSURCQ3Vyc29yLmNwcCBcCi0gICAg
ICAgIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIFwKICAgICAgICAgc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHAgXAogICAgICAgICBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJFcnJvckV2ZW50LmNwcCBcCkBAIC0yNDgxLDggKzI0
NzQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xKSB7CiAg
ICAgICAgIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIFwKICAgICAgICAgc3RvcmFnZS9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvSURCUmVxdWVzdC5j
cHAgXAotICAgICAgICBzdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5jcHAgXAotICAgICAgICBzdG9y
YWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorICAgICAgICBzdG9yYWdlL0lEQlN1Y2Nlc3NFdmVudC5j
cHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdFPTEpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDE4YThkOTI2ZjQ0NjNhY2M3YzRlNjcy
Y2UwOGRhZjNiNzM4NTg4YTguLjM5ZmZiMGRjYjI3N2I3NmM2MDJjODM0NGFmYzgwNzcwN2U4OTNj
NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQ0NDgsMTEwICs0
NDQ0OCw2IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkN1cnNvci5jcHAiDQotCQkJCQk+DQotCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
DQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29s
DQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0J
CQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0J
CQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiIN
Ci0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wN
Ci0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRl
YnVnX0FsbHxXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+
DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkv
Pg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0K
LQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTSURCQ3Vyc29yLmgiDQotCQkJCQk+DQotCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19JbnRl
cm5hbHxXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQot
CQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0K
LQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJ
CQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCi0JCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJ
PFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00NTU0OCw2MiArNDU0
NDQsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQlRyYW5zYWN0aW9uLmNwcCINCi0JCQkJCT4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KLQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdp
bjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8
VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQot
CQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQot
CQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
LQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0K
LQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0K
LQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNJREJUcmFuc2FjdGlvbi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAi
DQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC01MDQwMSwyNiArNTAyNDEs
NiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdG9yYWdlXElEQkN1cnNvci5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQkN1cnNvci5oIg0KLQkJCQk+DQotCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxJREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQkN1cnNvckJhY2tlbmRJbXBsLmgiDQotCQkJCT4N
Ci0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCRGF0YWJhc2UuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KQEAgLTUwNTYxLDE0ICs1MDM4MSw2IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcSURCVHJhbnNhY3Rp
b24uY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxJREJUcmFuc2FjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxMb2NhbFN0b3JhZ2VUYXNrLmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGZhMmM1MWYwYTJlNjM5ZTVjNTFjMDliZDBiODgzNWI0YzQ0M2M2N2Mu
LjE1MjM5YmE0M2E5NjY4NmUyYWRkZWVhOWU4ZWNmODM1NjI5YzJhZWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDIzLDEzICsxNDIzLDYgQEAKIAkJ
N0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBE
MkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAw
MzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVh
a3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3
QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MUJFMjA5MzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmNwcCAqLzsgfTsKLQkJ
ODFCRTIwOTcxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvci5oICovOyB9OwotCQk4MUJFMjA5ODExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vy
c29yQmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODFCRTIwOTMxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcCAqLzsgfTsKLQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tl
bmRJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCAqLzsgfTsK
LQkJODFCRTIwOUIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUyMDk2
MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi87IH07Ci0J
CTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjBBNzExRjRCNjZGMDA5MTVE
RkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9OwotCQk4MUJFMjBEMzExRjRCQzMyMDA5MTVERkEg
LyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5oICovOyB9Owog
CQk4MkI2NTg5ODExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQjY1ODk3MTE4OUUzOTIw
MEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgyQjY1ODlBMTE4OUU0NzYwMEUwNTJBMSAvKiBJbnNw
ZWN0b3JDU1NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MkI2NTg5OTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
ICovOyB9OwogCQk4NDFGREMyNjExNzhDOUJFMDBGOEFDOUIgLyogUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODQxRkRDMjQxMTc4QzlCRTAwRjhBQzlCIC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAq
LzsgfTsKQEAgLTQzNzQsMTAgKzQzNjcsNiBAQAogCQlCNUQzNjAxQTExMkY4QjU2MDA0OERFQTgg
LyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjVEMzYwMTkxMTJGOEI1NjAwNDhERUE4IC8qIERhdGFiYXNlQ2FsbGJhY2su
aCAqLzsgfTsKIAkJQjYxNzYyNTQxMjAzMzc0RjAwRUY5MTE0IC8qIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjYxNzYyNTMxMjAzMzc0RjAwRUY5MTE0IC8qIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oICovOyB9OwogCQlCNjE3NjI2MjEyMDM0OTA4MDBFRjkxMTQgLyogSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjYxNzYyNjExMjAzNDkwODAwRUY5MTE0IC8qIElEQkRhdGFiYXNlQmFja2VuZEltcGwuaCAqLzsg
fTsKLQkJQjY1NjYyNkExMjBCMTE1QTAwNkVBODVDIC8qIElEQlRyYW5zYWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2NTY2MjY3MTIwQjEx
NUEwMDZFQTg1QyAvKiBJREJUcmFuc2FjdGlvbi5jcHAgKi87IH07Ci0JCUI2NTY2MjZCMTIwQjEx
NUEwMDZFQTg1QyAvKiBJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjY1NjYyNjgxMjBCMTE1QTAwNkVBODVDIC8qIElEQlRyYW5z
YWN0aW9uLmggKi87IH07Ci0JCUI2NTY2MjcwMTIwQjEyMjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5z
YWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NjU2NjI2RTEyMEIxMjI3MDA2RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5oICovOyB9OwotCQlC
NjU2NjI3MTEyMEIxMjI3MDA2RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjU2NjI2RjEyMEIxMjI3MDA2
RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCUI2OTFDMUY5MTIwNkQ0QTAw
MDI1RDk4MCAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTZBMzExRDRGQjNEMDA0QzNFNEIgLyogSURCRGF0YWJhc2Uu
Y3BwICovOyB9OwogCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNzc2RDQzQTEx
MDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjczNEIxODExMTlCOTkxMTAwNjU4N0JEIC8qIEZv
bnRUcmFuc2NvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAgKi87
IH07CkBAIC03MjQzLDEzICs3MjMyLDYgQEAKIAkJN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThB
MTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVERkEg
LyogSURCQ3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MUJFMjA5MzExRjRBQjhEMDA5MTVE
RkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZElt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZElt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODFCRTIwOTQxMUY0QUI4RDAwOTE1
REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4MUJFMjA5QzExRjRBQkJEMDA5MTVERkEgLyogSURCQ3Vyc29yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MUJFMjBBODExRjRCNjZGMDA5MTVERkEgLyogSlNJ
REJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJREJDdXJzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJCNjU4OTcxMTg5RTM5MjAwRTA1MkEx
IC8qIEluc3BlY3RvckNTU1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckNTU1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQjY1
ODk5MTE4OUU0NzYwMEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDU1NTdG9yZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MUZEQzI0MTE3OEM5QkUwMEY4QUM5QiAvKiBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDA2NSwxMiArMTAwNDcsNiBAQAogCQlCNUQzNjAxOTExMkY4QjU2MDA0OERFQTggLyog
RGF0YWJhc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
YmFzZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2MTc2MjUzMTIw
MzM3NEYwMEVGOTExNCAvKiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2MTc2MjYxMTIwMzQ5MDgwMEVGOTExNCAvKiBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQkRhdGFiYXNlQmFja2VuZEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjY1NjYyNjcxMjBCMTE1QTAwNkVBODVDIC8qIElEQlRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjY1NjYyNjgxMjBCMTE1QTAwNkVBODVDIC8qIElEQlRyYW5z
YWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUI2NTY2MjY5MTIwQjExNUEwMDZFQTg1
QyAvKiBJREJUcmFuc2FjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSURCVHJhbnNh
Y3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjU2NjI2RDEyMEIxMTZC
MDA2RUE4NUMgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjU2NjI2RTEyMEIxMjI3MDA2RUE4NUMgLyog
SlNJREJUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0lE
QlRyYW5zYWN0aW9uLmg7IHBhdGggPSBKU0lEQlRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUI2NTY2MjZGMTIwQjEyMjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTSURCVHJhbnNh
Y3Rpb24uY3BwOyBwYXRoID0gSlNJREJUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5j
cHA7IHBhdGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBh
dGggPSB0cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI3NzZENDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTQ0MSwxMiArMTE0MTcsNiBAQAogCQkJCUM1ODVBNjk5MTFENEZC
M0QwMDRDM0U0QiAvKiBJREJBbnkuaCAqLywKIAkJCQlDNTg1QTY5QTExRDRGQjNEMDA0QzNFNEIg
LyogSURCQW55LmlkbCAqLywKIAkJCQlDNTg1QTY5QjExRDRGQjNEMDA0QzNFNEIgLyogSURCQ2Fs
bGJhY2tzLmggKi8sCi0JCQkJODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5j
cHAgKi8sCi0JCQkJODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oICovLAot
CQkJCTgxQkUyMDlDMTFGNEFCQkQwMDkxNURGQSAvKiBJREJDdXJzb3IuaWRsICovLAotCQkJCTgx
QkUyMDkzMTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgKi8sCi0J
CQkJODFCRTIwOTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8s
Ci0JCQkJODFCRTIwOTUxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UuaCAqLywKIAkJCQlDNTg1QTZBMzExRDRGQjNEMDA0QzNFNEIgLyogSURCRGF0YWJhc2UuY3Bw
ICovLAogCQkJCUM1ODVBNkE0MTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZS5oICovLAog
CQkJCUM1ODVBNkE1MTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZS5pZGwgKi8sCkBAIC0x
MTQ5NSwxMCArMTE0NjUsNiBAQAogCQkJCUM1ODVBNkMyMTFENEZCM0QwMDRDM0U0QiAvKiBJREJT
dWNjZXNzRXZlbnQuY3BwICovLAogCQkJCUM1ODVBNkMzMTFENEZCM0QwMDRDM0U0QiAvKiBJREJT
dWNjZXNzRXZlbnQuaCAqLywKIAkJCQlDNTg1QTZDNDExRDRGQjNEMDA0QzNFNEIgLyogSURCU3Vj
Y2Vzc0V2ZW50LmlkbCAqLywKLQkJCQlCNjU2NjI2NzEyMEIxMTVBMDA2RUE4NUMgLyogSURCVHJh
bnNhY3Rpb24uY3BwICovLAotCQkJCUI2NTY2MjY4MTIwQjExNUEwMDZFQTg1QyAvKiBJREJUcmFu
c2FjdGlvbi5oICovLAotCQkJCUI2NTY2MjY5MTIwQjExNUEwMDZFQTg1QyAvKiBJREJUcmFuc2Fj
dGlvbi5pZGwgKi8sCi0JCQkJQjY1NjYyNkQxMjBCMTE2QjAwNkVBODVDIC8qIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oICovLAogCQkJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLywKIAkJCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIg
LyogTG9jYWxTdG9yYWdlVGFzay5oICovLAogCQkJCTUxMUYyMzE1MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUaHJlYWQuY3BwICovLApAQCAtMTQ5MTYsOCArMTQ4ODIsNiBAQAogCQkJ
CTg5N0EyRDkyMTIwMDAzNzYwMDgyNzQwQyAvKiBKU0ZsYWdzLmggKi8sCiAJCQkJQzU4NUE2NjQx
MUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCQW55LmNwcCAqLywKIAkJCQlDNTg1QTY2NTExRDRGQjA3
MDA0QzNFNEIgLyogSlNJREJBbnkuaCAqLywKLQkJCQk4MUJFMjBBNzExRjRCNjZGMDA5MTVERkEg
LyogSlNJREJDdXJzb3IuY3BwICovLAotCQkJCTgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAvKiBK
U0lEQkN1cnNvci5oICovLAogCQkJCUM1ODVBNjZBMTFENEZCMDcwMDRDM0U0QiAvKiBKU0lEQkRh
dGFiYXNlLmNwcCAqLywKIAkJCQlDNTg1QTY2QjExRDRGQjA3MDA0QzNFNEIgLyogSlNJREJEYXRh
YmFzZS5oICovLAogCQkJCUM1ODVBNjY2MTFENEZCMDcwMDRDM0U0QiAvKiBKU0lEQkRhdGFiYXNl
RXJyb3IuY3BwICovLApAQCAtMTQ5NDIsOCArMTQ5MDYsNiBAQAogCQkJCUM1ODVBNjc5MTFENEZC
MDcwMDRDM0U0QiAvKiBKU0lEQlJlcXVlc3QuaCAqLywKIAkJCQlDNTg1QTY3QTExRDRGQjA3MDA0
QzNFNEIgLyogSlNJREJTdWNjZXNzRXZlbnQuY3BwICovLAogCQkJCUM1ODVBNjdCMTFENEZCMDcw
MDRDM0U0QiAvKiBKU0lEQlN1Y2Nlc3NFdmVudC5oICovLAotCQkJCUI2NTY2MjZGMTIwQjEyMjcw
MDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmNwcCAqLywKLQkJCQlCNjU2NjI2RTEyMEIxMjI3
MDA2RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5oICovLAogCQkJCTUxNEM3NjM1MENFOTIyNUUw
MDdFRjNDRCAvKiBKU1NRTEVycm9yLmNwcCAqLywKIAkJCQlCQzgyNDMyNTBEMENFOEEyMDA0NjBD
OEYgLyogSlNTUUxFcnJvci5oICovLAogCQkJCUI1MjVBOTY0MTFDQTIzNDAwMDNBMjNBOCAvKiBK
U1NRTEV4Y2VwdGlvbi5jcHAgKi8sCkBAIC0xODY2OCw5ICsxODYzMCw2IEBACiAJCQkJQzU4NUE2
Q0QxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkFueS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2
NjMxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1ODVBNkNGMTFENEZCM0QwMDRDM0U0QiAvKiBJREJDYWxsYmFja3MuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTgxQkUyMDk3MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTgxQkUyMDk5MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNr
ZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODFCRTIwOUIxMUY0QUI4RDAwOTE1REZBIC8q
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNkQ4
MTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYx
NzYyNjIxMjAzNDkwODAwRUY5MTE0IC8qIElEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUI2MTc2MjU0MTIwMzM3NEYwMEVGOTExNCAvKiBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTg2OTIsNyArMTg2NTEsNiBAQAogCQkJ
CUM1ODVBNkYxMTFENEZCM0QwMDRDM0U0QiAvKiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNkY0MTFENEZCM0QwMDRDM0U0QiAvKiBJREJS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTg1QTZGNzExRDRGQjNEMDA0QzNFNEIgLyog
SURCU3VjY2Vzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCNjU2NjI2QjEyMEIxMTVBMDA2
RUE4NUMgLyogSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzFENTdDMEYz
MzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5
MTFDNTBFRjg2RDQ3MDA5RDBDQUYgLyogSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMwQzA1NENEMTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0g
aW4gSGVhZGVycyAqLywKQEAgLTE4OTI4LDcgKzE4ODg2LDYgQEAKIAkJCQkxQTg1QjIxMTBBMUIy
NTg3MDBEOEM4N0MgLyogSlNIVE1MVUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDQ2MTQxNzBDRDY4MjY5MDBGQURBNzUgLyogSlNIVE1MVmlkZW9FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTg1QTY3RDExRDRGQjA4MDA0QzNFNEIgLyogSlNJREJBbnkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTgxQkUyMEQzMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2ODMxMUQ0RkIwODAwNEMzRTRCIC8qIEpTSURCRGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNjdGMTFENEZCMDgwMDRDM0U0QiAvKiBKU0lE
QkRhdGFiYXNlRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNjgxMTFENEZCMDgwMDRD
M0U0QiAvKiBKU0lEQkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE4OTQx
LDcgKzE4ODk4LDYgQEAKIAkJCQlDNTg1QTY4RjExRDRGQjA4MDA0QzNFNEIgLyogSlNJREJPYmpl
Y3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2OTExMUQ0RkIwODAwNEMzRTRCIC8q
IEpTSURCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2OTMxMUQ0RkIwODAwNEMz
RTRCIC8qIEpTSURCU3VjY2Vzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCNjU2NjI3MDEy
MEIxMjI3MDA2RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2QzQ5RjQwRDdEQkEwNTAwRkZBNTU4IC8qIEpTSW1hZ2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTBFNzZEQjEwQkYwNTk4MDBBMDI3NkUgLyogSlNJbmplY3RlZFNj
cmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjAxMzQsNiArMjAwOTAsNyBAQAogCQkJaXNh
ID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAy
QjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJX
ZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CisJCQlk
ZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0g
MTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtMjExMTIsOCArMjEwNjks
NiBAQAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM1ODVBNkNDMTFENEZCM0QwMDRDM0U0QiAvKiBJREJBbnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdV
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZB
IC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MUJFMjA5ODExRjRBQjhEMDA5
MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjY5
MUMxRjkxMjA2RDRBMDAwMjVEOTgwIC8qIElEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUM1ODVBNkQ1MTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNkRBMTFENEZCM0QwMDRDM0U0QiAvKiBJREJFcnJv
ckV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjExMjksNyArMjEwODQsNiBAQAogCQkJCUM1
ODVBNkVFMTFENEZCM0QwMDRDM0U0QiAvKiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM1ODVBNkYzMTFENEZCM0QwMDRDM0U0QiAvKiBJREJSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNkY2MTFENEZCM0QwMDRDM0U0QiAvKiBJREJT
dWNjZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjY1NjYyNkExMjBCMTE1QTAwNkVB
ODVDIC8qIElEQlRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzFENTdCMEYz
MzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
NzUzNTZGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkExMEI5NDBCMzgxOEQ3MDAwOTlBQTQgLyogSW1hZ2VCdWZmZXJDRy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTIxNDA4LDcgKzIxMzYyLDYgQEAKIAkJCQlFNDQ2MTQxNjBDRDY4MjY5MDBGQURBNzUg
LyogSlNIVE1MVmlkZW9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNjdDMTFE
NEZCMDgwMDRDM0U0QiAvKiBKU0lEQkFueS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY1
RTExRDRGQUIyMDA0QzNFNEIgLyogSlNJREJBbnlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJODFCRTIwRDIxMUY0QkMzMjAwOTE1REZBIC8qIEpTSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM1ODVBNjgyMTFENEZCMDgwMDRDM0U0QiAvKiBKU0lEQkRhdGFiYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM1ODVBNjdFMTFENEZCMDgwMDRDM0U0QiAvKiBKU0lEQkRhdGFi
YXNlRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2ODAxMUQ0RkIwODAwNEMzRTRC
IC8qIEpTSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMTQyMiw3
ICsyMTM3NSw2IEBACiAJCQkJQzU4NUE2OEUxMUQ0RkIwODAwNEMzRTRCIC8qIEpTSURCT2JqZWN0
U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2OTAxMUQ0RkIwODAwNEMzRTRCIC8q
IEpTSURCUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY5MjExRDRGQjA4MDA0
QzNFNEIgLyogSlNJREJTdWNjZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjY1NjYy
NzExMjBCMTIyNzAwNkVBODVDIC8qIEpTSURCVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM2QzQ5RjMwRDdEQkEwNTAwRkZBNTU4IC8qIEpTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzc5NzkyODBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEMDMxOEUwRTkzNTQwMzAwRTI0QUNEIC8qIEpT
SW1hZ2VEYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA3ZTcyMTUyNjljODU3MjhlZTI0ZjhjZWY0ZTViNGU3
YWU5NDFjMWNlLi4xZTgyNzBiNTk0YWIwMmViMzMwM2EyM2M0NGMxMTUzNDVlMmQ4YmNmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggM2Rm
ZmViNWEyZjBjY2M4ZWU0YWE4Y2JkNWMzMTAzZWM4MmIzYzgzMi4uMWFiZTg3MDMyMWJiZTQwOWEw
Mzk2N2NiMjFlNTIxM2QwYjE2ZmUxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJREJBbnlDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SURCQW55Q3VzdG9tLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlY4SURCQW55
LmgiCiAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJWOElE
QkN1cnNvci5oIgogI2luY2x1ZGUgIlY4SURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJWOElEQkZh
Y3RvcnkuaCIKICNpbmNsdWRlICJWOElEQkluZGV4LmgiCkBAIC01MSw4ICs1MCw2IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCkKICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKICAgICBjYXNlIElEQkFueTo6TnVsbFR5cGU6CiAgICAgICAgIHJldHVybiB2
ODo6TnVsbCgpOwotICAgIGNhc2UgSURCQW55OjpJREJDdXJzb3JUeXBlOgotICAgICAgICByZXR1
cm4gdG9WOChpbXBsLT5pZGJDdXJzb3IoKSk7CiAgICAgY2FzZSBJREJBbnk6OklEQkRhdGFiYXNl
VHlwZToKICAgICAgICAgcmV0dXJuIHRvVjgoaW1wbC0+aWRiRGF0YWJhc2UoKSk7CiAgICAgY2Fz
ZSBJREJBbnk6OklEQkluZGV4VHlwZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA0NTVkNmFjNjkzMmRiZGM2MTY4
YjVkMDFhMDMzZWE5ODJjMzNhNDRjLi4yMzU5ODhhNzkwYTZiNjM0NWNlOGQ2ZDdiMGMwNDkwMWEx
YTNmNzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhjaGVja2luZykgXAogICAgIG1hY3JvKGNsaWNrKSBcCiAgICAgbWFjcm8oY2xv
c2UpIFwKLSAgICBtYWNybyhjb21wbGV0ZSkgXAogICAgIG1hY3JvKGNvbXBvc2l0aW9uZW5kKSBc
CiAgICAgbWFjcm8oY29tcG9zaXRpb25zdGFydCkgXAogICAgIG1hY3JvKGNvbXBvc2l0aW9udXBk
YXRlKSBcCkBAIC0xNTIsOCArMTUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAg
ICBtYWNybyhvcmllbnRhdGlvbmNoYW5nZSkgXAogICAgIFwKLSAgICBtYWNybyh0aW1lb3V0KSBc
Ci0gICAgXAogICAgIG1hY3JvKHRvdWNoc3RhcnQpIFwKICAgICBtYWNybyh0b3VjaG1vdmUpIFwK
ICAgICBtYWNybyh0b3VjaGVuZCkgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkFu
eS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmNwcAppbmRleCA5M2QyNjMzM2Y1M2YwYTMy
MDc4ZTEyZTZhMDkzMTA5ZjFjYWFkMjNmLi44NTJlODMxMzNhNzFhYjIxNWEzZTQ3Njc2MzRkYmNj
OTlhMzRlNGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmNwcAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCQW55LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJJREJDdXJzb3IuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJJREJJbmRl
eC5oIgpAQCAtNTEsMTIgKzUwLDYgQEAgSURCQW55Ojp+SURCQW55KCkKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJDdXJzb3I+IElEQkFueTo6aWRiQ3Vyc29yKCkKLXsKLSAgICBBU1NFUlQobV90eXBl
ID09IElEQkN1cnNvclR5cGUpOwotICAgIHJldHVybiBtX2lkYkN1cnNvcjsKLX0KLQogUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZT4gSURCQW55OjppZGJEYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKG1f
dHlwZSA9PSBJREJEYXRhYmFzZVR5cGUpOwpAQCAtOTksMTMgKzkyLDYgQEAgdm9pZCBJREJBbnk6
OnNldCgpCiAgICAgbV90eXBlID0gTnVsbFR5cGU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFz
c1JlZlB0cjxJREJDdXJzb3I+IHZhbHVlKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZp
bmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCQ3Vyc29yVHlwZTsKLSAgICBtX2lkYkN1cnNvciA9
IHZhbHVlOwotfQotCiB2b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZh
bHVlKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmgKaW5k
ZXggOTUwNjYwYTVmYTkxOWRkYzRhNjM2NDg0ZDdmMTQzYmUwZTdkMWZlYy4uMWY5NjUwMDUyYzNh
ZjAzZmFkYzFkN2Y4YjhiM2I4M2QyM2IyM2M2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkFueS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJBbnkuaApAQCAtMzQsNyArMzQsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkN1cnNvcjsKIGNsYXNzIElEQkRh
dGFiYXNlOwogY2xhc3MgSURCSW5kZXg7CiBjbGFzcyBJREJLZXk7CkBAIC01Nyw3ICs1Niw2IEBA
IHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmRlZmluZWRUeXBlID0gMCwKICAg
ICAgICAgTnVsbFR5cGUsCi0gICAgICAgIElEQkN1cnNvclR5cGUsCiAgICAgICAgIElEQkRhdGFi
YXNlVHlwZSwKICAgICAgICAgSURCRmFjdG9yeVR5cGUsCiAgICAgICAgIElEQkluZGV4VHlwZSwK
QEAgLTY4LDcgKzY2LDYgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgLy8gVXNlIHR5cGUoKSB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSBv
ZiB0aGVzZSB5b3UncmUgYWxsb3dlZCB0byBjYWxsLgotICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiBpZGJDdXJzb3IoKTsKICAgICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSgp
OwogICAgIFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gaWRiRmFjdG9yeSgpOwogICAgIFBhc3NSZWZQ
dHI8SURCSW5kZXg+IGlkYkluZGV4KCk7CkBAIC03OCw3ICs3NSw2IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNldCBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4KICAgICB2b2lkIHNldCgpOyAvLyBGb3Ig
Im51bGwiLgotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CiAgICAgdm9pZCBz
ZXQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURC
RmFjdG9yeT4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCSW5kZXg+KTsKQEAgLTkyLDcg
Kzg4LDYgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIAogICAgIC8vIE9ubHkgb25lIG9m
IHRoZSBmb2xsb3dpbmcgc2hvdWxkIGV2ZXIgYmUgaW4gdXNlIGF0IGFueSBnaXZlbiB0aW1lLgot
ICAgIFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZT4gbV9pZGJEYXRhYmFzZTsKICAgICBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJGYWN0b3J5Owog
ICAgIFJlZlB0cjxJREJJbmRleD4gbV9pZGJJbmRleDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJDYWxsYmFja3MuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAppbmRl
eCBiYzQ4NDc3Yzc3MGJlYTYzMDU3MDM2ZWJkZmFkNzk3NmE3N2QzM2JhLi40N2MzNjk0ZDYwYWQz
MDdiNzMzYjM4N2Y4N2I4YjIyN2E5ZTJlODg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ2FsbGJhY2tzLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCkBAIC0y
OSw3ICsyOSw2IEBACiAjaWZuZGVmIElEQkNhbGxiYWNrc19oCiAjZGVmaW5lIElEQkNhbGxiYWNr
c19oCiAKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgpAQCAtNDgsNyArNDcs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcygpID0gMDsgLy8g
Rm9yICJudWxsIi4KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQkN1cnNvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzUyZjVkODlk
NWI5OTE1ZDcxNDZlYTg5OGFlODA4M2YyMzdhNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIklEQkN1cnNvci5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNp
bmNsdWRlICJJREJBbnkuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSURCS2V5LmgiCi0jaW5jbHVk
ZSAiSURCUmVxdWVzdC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1JREJDdXJzb3I6OklEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQpCi0gICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKLXsKLX0KLQotSURCQ3Vyc29y
Ojp+SURCQ3Vyc29yKCkKLXsKLX0KLQotdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yOjpkaXJlY3Rp
b24oKSBjb25zdAotewotICAgIHJldHVybiBtX2JhY2tlbmQtPmRpcmVjdGlvbigpOwotfQotCi1Q
YXNzUmVmUHRyPElEQktleT4gSURCQ3Vyc29yOjprZXkoKSBjb25zdAotewotICAgIHJldHVybiBt
X2JhY2tlbmQtPmtleSgpOwotfQotCi1QYXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yOjp2YWx1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+dmFsdWUoKTsKLX0KLQotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCi17Ci0g
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcykpOwotICAgIG1fYmFja2VuZC0+dXBkYXRlKHZhbHVlLCBy
ZXF1ZXN0KTsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkpCi17Ci0gICAgUmVmUHRyPElE
QlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55Ojpj
cmVhdGUodGhpcykpOwotICAgIG1fYmFja2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIHJlcXVl
c3QpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJDdXJzb3I6OnJlbW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQotewotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpKTsKLSAgICBtX2JhY2tlbmQtPnJlbW92ZShy
ZXF1ZXN0KTsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2NlMDAxNDMxZmUwMmNmNTU0
ODYwYTU2ZmRmZDc2YTZiYjNiMjNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIElEQkN1cnNvcl9oCi0jZGVmaW5lIElEQkN1
cnNvcl9oCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIElEQkFueTsKLWNsYXNzIElEQkNhbGxiYWNrczsKLWNsYXNzIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJLZXk7Ci1jbGFzcyBJREJSZXF1ZXN0OwotY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
LQotY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8SURCQ3Vyc29yPiB7
Ci1wdWJsaWM6Ci0gICAgZW51bSBEaXJlY3Rpb24gewotICAgICAgICBORVhUID0gMCwKLSAgICAg
ICAgTkVYVF9OT19EVVBMSUNBVEUgPSAxLAotICAgICAgICBQUkVWID0gMiwKLSAgICAgICAgUFJF
Vl9OT19EVVBMSUNBVEUgPSAzLAotICAgIH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vy
c29yPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3IoYmFja2VuZCkp
OwotICAgIH0KLSAgICB2aXJ0dWFsIH5JREJDdXJzb3IoKTsKLQotICAgIC8vIEltcGxlbWVudCB0
aGUgSURMCi0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCQW55PiB2YWx1ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
S2V5PiA9IDApOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiByZW1vdmUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IElEQkN1cnNv
cihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KTsKLQotICAgIFJlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gSURCQ3Vyc29yX2gKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaWRsIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MDJlZjM3YTViYmQ1Nzk5ODk1
YjEzY2EyNzI4ZDliZjlhYjEyYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotCi0gICAgaW50ZXJmYWNl
IFsKLSAgICAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQotICAgIF0gSURCQ3Vyc29y
IHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVYVCA9IDA7Ci0gICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IE5FWFRfTk9fRFVQTElDQVRFID0gMTsKLSAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgUFJFViA9IDI7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBSRVZf
Tk9fRFVQTElDQVRFID0gMzsKLQotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
c2hvcnQgZGlyZWN0aW9uOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCS2V5IGtleTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSB2YWx1ZTsKLQotICAgICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCB1cGRhdGUoaW4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlIHZhbHVlKTsKLSAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEltcGxlbWVudGF0aW9uRnVuY3Rpb249Y29udGludWVGdW5jdGlvbl0gSURCUmVx
dWVzdCBjb250aW51ZShpbiBbT3B0aW9uYWxdIElEQktleSBrZXkpOwotICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCByZW1vdmUoKTsKLSAgICB9Owot
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDRlMDhiOGY0ODBlYmM1OTFlMjVjNGNmZDU3YjQzYTAwYWFmMDYyYTcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFj
a2VuZEltcGwuaCIKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVkZSAi
SURCQW55LmgiCi0jaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCS2V5UmFu
Z2UuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAi
SURCUmVxdWVzdC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5k
SW1wbChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGlkYk9iamVjdFN0b3Jl
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUpCi0gICAgOiBtX2lkYk9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3Jl
KQotICAgICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKLSAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlv
bikKLSAgICAsIG1fa2V5KGtleSkKLSAgICAsIG1fdmFsdWUoSURCQW55OjpjcmVhdGUodmFsdWUu
Z2V0KCkpKQotewotfQotCi1JREJDdXJzb3JCYWNrZW5kSW1wbDo6fklEQkN1cnNvckJhY2tlbmRJ
bXBsKCkKLXsKLX0KLQotdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRpcmVj
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGlyZWN0aW9uOwotfQotCi1QYXNzUmVmUHRy
PElEQktleT4gSURCQ3Vyc29yQmFja2VuZEltcGw6OmtleSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fa2V5OwotfQotCi1QYXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yQmFja2VuZEltcGw6OnZh
bHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92YWx1ZTsKLX0KLQotdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBt
ZXRob2QuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1ldGhvZC4K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6cmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgbWV0aG9kLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDllZjYyZmU3YjljNmQ3MDlhZDcyNDQ5MGM0NjQ1NThjMTQ3MjQ3NjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9zdG9yYWdl
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotCi0jaWZuZGVmIElEQkN1cnNvckJhY2tlbmRJbXBsX2gKLSNkZWZpbmUgSURCQ3Vyc29y
QmFja2VuZEltcGxfaAotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRl
ICJJREJDdXJzb3IuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElE
QktleVJhbmdlOwotY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDsKLWNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKLQotY2xhc3MgSURCQ3Vyc29yQmFja2VuZEltcGwgOiBwdWJsaWMg
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRJbXBsKG9iamVjdFN0b3JlLCBr
ZXlSYW5nZSwgZGlyZWN0aW9uLCBrZXksIHZhbHVlKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfklE
QkN1cnNvckJhY2tlbmRJbXBsKCk7Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLQotcHJpdmF0ZToKLSAg
ICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLQotICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBtX2lkYk9iamVjdFN0b3JlOwotICAg
IFJlZlB0cjxJREJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKLSAgICBJREJDdXJzb3I6OkRpcmVjdGlv
biBtX2RpcmVjdGlvbjsKLSAgICBSZWZQdHI8SURCS2V5PiBtX2tleTsKLSAgICBSZWZQdHI8SURC
QW55PiBtX3ZhbHVlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNlbmRpZiAvLyBJREJDdXJzb3JCYWNrZW5kSW1w
bF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIyMDljNDk1YzVmYTdmODc2YzA4NjhlZmJjZTRlMjRm
MjEyMjQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZV9oCi0jZGVmaW5lIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2VfaAotCi0jaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElEQkFueTsKLWNsYXNzIElEQkNhbGxiYWNrczsKLWNsYXNz
IElEQktleTsKLWNsYXNzIElEQlJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
Ci0KLWNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVNo
YXJlZDxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSgpIHt9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNo
b3J0IGRpcmVjdGlvbigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUo
KSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCi0KLSNlbmRpZiAvLyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCmluZGV4IGZhMTgwN2NjZDM1NmExMDYyYzI2N2FiMGI1MzRmNjY0NzA2NzBm
ZDUuLmU0ZDQzODUwM2U4YmQ2YWZmMTBmYmVmYjZiOTU5OGY1NjY1Zjc1OTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJ
REJSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAg
LTY5LDE2ICs2OCw2IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRGF0YWJhc2U6OnJlbW92
ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBET01TdHJpbmdMaXN0KiBzdG9y
ZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCi17Ci0g
ICAgLy8gV2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgdHJhbnNhY3Rpb24gc3luY2hyb25vdXNseS4g
TG9ja3MgYXJlIGFjcXVpcmVkIGFzeW5jaHJvbm91c2x5LiBPcGVyYXRpb25zCi0gICAgLy8gY2Fu
IGJlIHF1ZXVlZCBhZ2FpbnN0IHRoZSB0cmFuc2FjdGlvbiBhdCBhbnkgcG9pbnQuIFRoZXkgd2ls
bCBzdGFydCBleGVjdXRpbmcgYXMgc29vbiBhcyB0aGUKLSAgICAvLyBhcHByb3ByaWF0ZSBsb2Nr
cyBoYXZlIGJlZW4gYWNxdWlyZWQuCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb25CYWNrZW5kID0gbV9iYWNrZW5kLT50cmFuc2FjdGlvbihzdG9y
ZU5hbWVzLCBtb2RlLCB0aW1lb3V0KTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tl
bmQucmVsZWFzZSgpLCB0aGlzKTsKLSAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oIGIvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggNjkwMGVmZDQ0MGRjY2I4MTkyMDE4ZmUy
NGJmMjUwZDk2NGIwZmVkNy4uY2NhMjBlM2NkNGQyODZiOWYzMWJkNDA1Y2RmMDU2MGE4MjcyODBh
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIK
LSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBA
IC01NywxMCArNTYsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZXMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm9iamVjdFN0b3JlcygpOyB9
CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZU9iamVjdFN0b3JlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCA9IFN0cmluZygpLCBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZSk7Ci0gICAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25l
ZCBzaG9ydCBtb2RlID0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSk7CisgICAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25l
ZCBzaG9ydCBtb2RlID0gMCk7IC8vIEZJWE1FOiBVc2UgY29uc3RhbnQgcmF0aGVyIHRoYW4gMC4K
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZU9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01TdHJpbmdM
aXN0KiBzdG9yZU5hbWVzID0gMCwgdW5zaWduZWQgc2hvcnQgbW9kZSA9IElEQlRyYW5zYWN0aW9u
OjpSRUFEX09OTFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gMCk7IC8vIEZJWE1FOiB3aGF0IHNob3VsZCB0aGUgZGVm
YXVsdCB0aW1lb3V0IGJlPworCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJEYXRhYmFzZS5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmlu
ZGV4IDRlM2Y2MjAwY2I0NTkwNTYwNTczYzc1NGNhZjg1OTY3NWIwMDdlMTQuLmQ3NWVkNTU0NGUx
NTRjNjE3OWQ0NTBjNWE2ZTdhMTlhZDU0ODNhZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5pZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbApA
QCAtMzMsMTMgKzMzLDEzIEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyB2ZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nTGlzdCBvYmplY3RTdG9yZXM7CiAKKyAgICAgICAgLy8gRklYTUU6IEFkZCB0cmFuc2Fj
dGlvbi4KICAgICAgICAgLy8gRklYTUU6IEFkZCBzZXRWZXJzaW9uLgogCiAgICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGNyZWF0ZU9iamVjdFN0b3Jl
KGluIERPTVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dG9JbmNyZW1lbnQp
OwogICAgICAgICAvLyBGSVhNRTogb2JqZWN0U3RvcmUgbmVlZHMgdG8gYmUgYWJsZSB0byByYWlz
ZSBhbiBJREJEYXRhYmFzZUV4Y2VwdGlvbi4KICAgICAgICAgSURCT2JqZWN0U3RvcmUgb2JqZWN0
U3RvcmUoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgbW9k
ZSk7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0
IHJlbW92ZU9iamVjdFN0b3JlKGluIERPTVN0cmluZyBuYW1lKTsKLSAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uIChpbiBb
T3B0aW9uYWxdIERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgaW4gW09wdGlvbmFsXSB1bnNpZ25l
ZCBzaG9ydCBtb2RlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAgICAg
fTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4
IDA5YjlkZWU2MTViNTI2Y2RkZWZmZmY4YTcyNWM3N2Y4MGExYWQ1NmMuLjg2MjI4YmRlMjI0YWM1
OTUzNDU0ZWZmMzU5MjYzMjg4MTIxZjBhODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKQEAgLTgzLDEzICs4Myw2IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElECiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0
aW9uKERPTVN0cmluZ0xpc3QqLCB1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgbG9uZykKLXsKLSAg
ICAvLyBGSVhNRTogQXNrIHRoZSB0cmFuc2FjdGlvbiBtYW5hZ2VyIGZvciBhIG5ldyBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAwOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmlu
ZGV4IGY2ZmYwNTg3ZjkxMDJhOWYwMDA5Y2ZjNTc1NWM2ZGQzMGU2OWExYTYuLjg3ZTA3MGExMjMy
NGZhYmI0ZTMzNWM3ZjgyOWNkNTdkOWZhZTYzZDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMs
IHVuc2lnbmVkIHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CisKIHByaXZhdGU6
CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBhYzEyYmYxM2M4OGJl
M2Q2Zjc5NjgzZGM3YTUzMmUyZTUyYjJmMTMxLi5jMmIwOGYxNDY0NTFkY2Y1ZThhZjBlZDY5ZDdi
NWQ4Njc1OTZjYzI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIElEQkNhbGxiYWNrczsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZTsKLWNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKIAogLy8gVGhp
cyBjbGFzcyBpcyBzaGFyZWQgYnkgSURCRGF0YWJhc2UgKGFzeW5jKSBhbmQgSURCRGF0YWJhc2VT
eW5jIChzeW5jKS4KIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgSURCRGF0YWJhc2VCYWNrZW5k
SW1wbCBhbmQgb3B0aW9uYWxseSBvdGhlcnMgKGluIG9yZGVyIHRvIHByb3h5CkBAIC01OCw3ICs1
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9
IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBiNDU3Y2QxZDE1ODg2YzEw
ZmIyZTFmMzM0YTNkYzIyYTNmZGYxYzg1Li40YjFkZTBhZmVjZThmYzE2Zjg0NDQ1MWFiMmQzODc2
ZWZhNjUwZDZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUg
IklEQktleS5oIgotI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTEwOSwx
MyArMTA4LDYgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cmVtb3Zl
SW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGUKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBy
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQotewotICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpKTsKLSAgICBtX29iamVjdFN0b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIHJl
cXVlc3QpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5oCmluZGV4IDhiMWQ4NDEyYjhiNDE3NGIyOWZjY2U3YTE2NzQ2MzYzYjU1
YWUzYTQuLmUzNTQyNzNmNzlmMWE2ZGIzYTExOTJkM2E5ODI2NmExM2M3MzAzZGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIElEQk9iamVjdFN0
b3JlX2gKICNkZWZpbmUgSURCT2JqZWN0U3RvcmVfaAogCi0jaW5jbHVkZSAiSURCQ3Vyc29yLmgi
CiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC00MSw3ICs0MCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBJREJB
bnk7CiBjbGFzcyBJREJJbmRleFJlcXVlc3Q7Ci1jbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElE
QktleTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIApAQCAtNjYsOCArNjQsNiBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
KTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZUluZGV4KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiA9IDAsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVCk7
Ci0KIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXgg
MTY0OWExZGE5YWMyNWUyMTcyOWYyNjkzMzc5MzMxNTJlZWViZjdmYi4uMGE1N2M3ZGQyOGI3MWIz
ODZjNGRkZDY5N2FkMmEwYjU4MWE2YWJmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRs
CkBAIC00MSw4ICs0MSw2IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgSURCSW5kZXggaW5k
ZXgoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gSURCUmVxdWVzdCByZW1vdmVJbmRleChpbiBET01TdHJpbmcgbmFtZSk7CiAKLSAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1
cnNvcihpbiBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlLCBpbiBbT3B0aW9uYWxdIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbik7Ci0KICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBuYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5n
VG89TnVsbF0gRE9NU3RyaW5nIGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmdMaXN0IGluZGV4TmFtZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggOTczMmJjMWViZGFmYjUwMGU4MjdkYWJiNjI4YTU2YmZj
NWUxMTA5OS4uZjYxMjBhZTMzMGIyZjRlYjk4MGYxNjYxYjRjZTc2MzQ5NjkzN2RjYyAxMDA3NTUK
LS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjksMTAg
KzI5LDggQEAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQmluZGlu
Z1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkN1
cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJJREJJbmRleEJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIK
ICNpbmNsdWRlICJJREJLZXlUcmVlLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
QEAgLTEzMiwxNiArMTMwLDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1v
dmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2EKICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcygpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBSZWZQ
dHI8SURCS2V5PiBrZXkgPSByYW5nZS0+bGVmdCgpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlID0gbV90cmVlLT5nZXQoa2V5LmdldCgpKTsKLSAgICBpZiAodmFsdWUp
IHsKLSAgICAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElE
QkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgcmFuZ2UsIHN0YXRpY19jYXN0PElEQkN1
cnNvcjo6RGlyZWN0aW9uPihkaXJlY3Rpb24pLCBrZXksIHZhbHVlKTsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoY3Vyc29yLnJlbGVhc2UoKSk7Ci0gICAgfSBlbHNlCi0gICAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcygpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGZjNjM2NTgxMmQ5
ZTdhYjU1YTg2NzczMGE4YmQ0NmMxMTVlYmE3YzguLmIwOTc2YzJhM2NjYjFhNTA2MDE5ZWY1NTM2
YTczNWI3NDMxZDg3OTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaApAQCAtNTYsOCArNTYsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCBy
ZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CiAKLSAgICB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLQogcHJp
dmF0ZToKICAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmggYi9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggMjAwYWMy
OWJhN2NjYTE1OTgxODVlMzU5M2JmYTRkNmZiNjNhMWQ0ZS4uNjZmOWE3MWVhZDVhMDVmMzRjMzhi
MTJlNDkyMDUzMjgxZjk3YTdhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBET01TdHJpbmdM
aXN0OwogY2xhc3MgSURCQ2FsbGJhY2tzOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
OwogY2xhc3MgSURCS2V5OwotY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlU2hhcmVkPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gewpAQCAt
NTUsOCArNTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcAppbmRleCA5NGVmN2U1MmUwMjdhNjk5MzdlMDQyYmExYzliNGM1OGFlYTZhMzNiLi5j
MjlmYzViNDBkMzIwMDhiYjg2ZmI5YWYwYzBjMmM1NDQyZmZmZDU0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1
ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURC
SW5kZXguaCIKICNpbmNsdWRlICJJREJFcnJvckV2ZW50LmgiCkBAIC01MCw2ICs0OSw3IEBAIElE
QlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJBbnk+IHNvdXJjCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3Jl
c3VsdChJREJBbnk6OmNyZWF0ZSgpKQogICAgICwgbV90aW1lcih0aGlzLCAmSURCUmVxdWVzdDo6
dGltZXJGaXJlZCkKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAsIG1fYWJvcnRlZChmYWxz
ZSkKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUSUFMKQogewpAQCAtNzMsMTIgKzczLDYgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoKQogICAgIG1fcmVzdWx0LT5zZXQoKTsKIH0KIAotdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlPiBiYWNrZW5kKQotewotICAgIG9uRXZlbnRDb21tb24oKTsKLSAgICBtX3Jlc3VsdC0+c2V0
KElEQkN1cnNvcjo6Y3JlYXRlKGJhY2tlbmQpKTsKLX0KLQogdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7
CiAgICAgb25FdmVudENvbW1vbigpOwpAQCAtMTIxLDExICsxMTUsMjQgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQog
Ci1ib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmQoKSBjb25zdAordm9pZCBJREJSZXF1ZXN0Ojpz
dG9wKCkKK3sKKyAgICBhYm9ydCgpOworICAgIG1fc2VsZlJlZiA9IDA7IC8vIENvdWxkIHRyaWdn
ZXIgYSBkZWxldGUuCit9CisKK3ZvaWQgSURCUmVxdWVzdDo6c3VzcGVuZCgpCit7CisgICAgbV90
aW1lci5zdG9wKCk7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30KKwordm9pZCBJREJSZXF1ZXN0
OjpyZXN1bWUoKQogewotICAgIC8vIElEQlRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgc3VzcGVuZGVk
IGF0IHRoZSBtb21lbnQuIFdlIHRoZXJlZm9yZQotICAgIC8vIGRpc2FsbG93IHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUgZm9yIHBhZ2VzIHRoYXQgdXNlIEluZGV4ZWREYXRhYmFzZS4KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgbV9zdG9wcGVkID0gZmFsc2U7CisgICAgLy8gV2Ugb25seSBob2xkIG91
ciBzZWxmIHJlZiB3aGVuIHdlJ3JlIHdhaXRpbmcgdG8gZGlzcGF0Y2ggYW4gZXZlbnQuCisgICAg
aWYgKG1fc2VsZlJlZiAmJiAhbV9hYm9ydGVkKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKIH0KIAogRXZlbnRUYXJnZXREYXRhKiBJREJSZXF1ZXN0OjpldmVudFRhcmdldERhdGEo
KQpAQCAtMTQyLDYgKzE0OSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6dGltZXJGaXJlZChUaW1lcjxJ
REJSZXF1ZXN0PiopCiB7CiAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBET05FKTsKICAgICBB
U1NFUlQobV9zZWxmUmVmKTsKKyAgICBBU1NFUlQoIW1fc3RvcHBlZCk7CiAgICAgQVNTRVJUKCFt
X2Fib3J0ZWQpOwogCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIHNlbGYtcmVmZXJlbmNpbmcgb3Vy
c2VsZiwgb3RoZXJ3aXNlIGl0J3MgcG9zc2libGUgd2UnbGwgYmUgZGVsZXRlZC4KQEAgLTE1NCw3
ICsxNjIsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnRpbWVyRmlyZWQoVGltZXI8SURCUmVxdWVzdD4q
KQogICAgICAgICBkaXNwYXRjaEV2ZW50KElEQkVycm9yRXZlbnQ6OmNyZWF0ZShtX3NvdXJjZSwg
Km1fZXJyb3IpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9yZXN1bHQtPnR5cGUo
KSAhPSBJREJBbnk6OlVuZGVmaW5lZFR5cGUpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KElEQlN1
Y2Nlc3NFdmVudDo6Y3JlYXRlKG1fc291cmNlLCBtX3Jlc3VsdCkpOworICAgICAgICBkaXNwYXRj
aEV2ZW50KElEQlN1Y2Nlc3NFdmVudDo6Y3JlYXRlKG1fc291cmNlLCBtX3Jlc3VsdCkpOyAgICAg
ICAgCiAgICAgfQogfQogCkBAIC0xNzEsNyArMTc5LDggQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkV2
ZW50Q29tbW9uKCkKIAogICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7CiAgICAgbV9zZWxmUmVmID0g
dGhpczsKLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAoIW1fc3RvcHBlZCkK
KyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IGRkZmRjZjNmOWQwZjc5NDhhMDQwMTQwZTM4MjE1
Y2JmZmQ1NmY4YzEuLmQzOGRhNTc3YzYyNzVhZTczMzBiZDRhYmQyYTUzZjUxNTAxNmI2ODQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaApAQCAtNjMsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcygpOyAvLyBGb3IgIm51bGwiLgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4pOwpAQCAtNzQsNyArNzMsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPElE
QkNhbGxiYWNrcz46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkNhbGxiYWNrcz46OmRl
cmVmOwpAQCAtMTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8SURCUmVxdWVzdD4g
bV90aW1lcjsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9zZWxmUmVmOyAvLyBUaGlzIGlzIHNl
dCB0byB1cyBpZmYgdGhlcmUncyBhbiBldmVudCBwZW5kaW5nLgogCisgICAgYm9vbCBtX3N0b3Bw
ZWQ7CiAgICAgYm9vbCBtX2Fib3J0ZWQ7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAg
ICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzA1OWEzNzdmMGE3ZDBl
MGRjNzlhNzJhZDBkOTk3ZDEzYzI0MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDcyICswLDAgQEAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbi5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNs
dWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURC
RGF0YWJhc2UuaCIKLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgotI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JREJUcmFuc2FjdGlvbjo6SURCVHJh
bnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBkYikKLSAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9iYWNrZW5kKGJhY2tl
bmQpCi0gICAgLCBtX2RhdGFiYXNlKGRiKQotewotfQotCi1JREJUcmFuc2FjdGlvbjo6fklEQlRy
YW5zYWN0aW9uKCkKLXsKLX0KLQotdW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb246Om1vZGUo
KSBjb25zdAotewotICAgIHJldHVybiBtX2JhY2tlbmQtPm1vZGUoKTsKLX0KLQotSURCRGF0YWJh
c2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCi17Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7
Ci19Ci0KLVBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEV4Y2VwdGlvbkNvZGUmKQotewotICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlQmFja2VuZCA9
IG1fYmFja2VuZC0+b2JqZWN0U3RvcmUobmFtZSk7Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5k
KTsKLSAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwotfQotCi12b2lkIElEQlRyYW5z
YWN0aW9uOjphYm9ydCgpCi17Ci0gICAgbV9iYWNrZW5kLT5hYm9ydCgpOwotfQotCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotfQotCi1ib29sIElEQlRyYW5zYWN0aW9uOjpjYW5TdXNwZW5kKCkgY29uc3QKLXsK
LSAgICAvLyBXZSBtYXkgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRyYW5zYWN0aW9uIHNvIHdlIGNh
bm5vdCBzdXNwZW5kIG91ciBvYmplY3QuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2ltcGx5IGRvbid0
IGFsbG93IHRoZSBvd25lciBwYWdlIHRvIGdvIGludG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogSURCVHJhbnNhY3Rpb246
OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQotRXZlbnRUYXJnZXREYXRhKiBJREJUcmFuc2FjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMzE2N2M2ODM4ZDdmMDcxYmUwZmRkMmJiYTA1MTgx
NWI2MGMyNjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJUcmFuc2FjdGlvbl9oCi0jZGVmaW5lIElEQlRyYW5z
YWN0aW9uX2gKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJEYXRhYmFzZTsKLWNsYXNzIElEQk9iamVj
dFN0b3JlOwotCi1jbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBFdmVudFRhcmdldCwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJh
c2UqIGRiKQotICAgIHsgCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rp
b24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsgCi0gICAgfQotICAgIHZpcnR1YWwgfklEQlRyYW5z
YWN0aW9uKCk7Ci0KLSAgICBlbnVtIE1vZGUgewotICAgICAgICBSRUFEX1dSSVRFID0gMCwKLSAg
ICAgICAgUkVBRF9PTkxZID0gMSwKLSAgICAgICAgU05BUFNIT1RfUkVBRCA9IDIKLSAgICB9Owot
Ci0gICAgdW5zaWduZWQgc2hvcnQgbW9kZSgpIGNvbnN0OwotICAgIElEQkRhdGFiYXNlKiBkYigp
OwotICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWJvcnQoKTsKLQotICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwotICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoY29tcGxldGUpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodGltZW91dCk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwg
SURCVHJhbnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9Ci0KLSAg
ICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3Vz
cGVuZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4s
IElEQkRhdGFiYXNlKik7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCk7Ci0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0gICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwotICAgIFJl
ZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jZW5kaWYgLy8gSURC
VHJhbnNhY3Rpb25faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5pZGwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGEzOTA3ZGM4NGQ0MzJiNmM3MDg0YjNjMjI0YjNlYTUyMjM0ODA1NjUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQlRyYW5zYWN0aW9uLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LSAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29u
ZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKLSAgICAgICAgRXZlbnRUYXJnZXQKLSAgICBdIElE
QlRyYW5zYWN0aW9uIHsKLSAgICAgICAgLy8gTW9kZXMKLSAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgUkVBRF9XUklURSA9IDA7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFJFQURf
T05MWSA9IDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNOQVBTSE9UX1JFQUQgPSAy
OwotICAgICAgICAvLyBQcm9wZXJ0aWVzCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBzaG9ydCBtb2RlOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCRGF0YWJhc2Ug
ZGI7Ci0gICAgICAgIC8vIE1ldGhvZHMKLSAgICAgICAgSURCT2JqZWN0U3RvcmUgb2JqZWN0U3Rv
cmUgKGluIERPTVN0cmluZyBuYW1lKQotICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4
Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgYWJvcnQgKCk7Ci0gICAgICAgIC8vIEV2ZW50cwotICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwotICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmNvbXBsZXRlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnRpbWVvdXQ7Ci0gICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgICAgICB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAgICAgdm9pZCByZW1v
dmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpIAotICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhj
ZXB0aW9uKTsKLSAgICB9OwotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmYyYmQ3
Zjk0M2RlZDg0OTQ0NDk0YmZmNTY1ZDE2YjQ4OTkxNWQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZV9oCi0jZGVmaW5lIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZV9oCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0j
aW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwotY2xhc3MgU1FMaXRl
RGF0YWJhc2U7Ci0KLS8vIFRoaXMgY2xhc3MgaXMgc2hhcmVkIGJ5IElEQlRyYW5zYWN0aW9uIChh
c3luYykgYW5kIElEQlRyYW5zYWN0aW9uU3luYyAoc3luYykuCi0vLyBUaGlzIGlzIGltcGxlbWVu
dGVkIGJ5IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwgYW5kIG9wdGlvbmFsbHkgb3RoZXJzIChp
biBvcmRlciB0byBwcm94eQotLy8gY2FsbHMgYWNyb3NzIHByb2Nlc3MgYmFycmllcnMpLiBBbGwg
Y2FsbHMgdG8gdGhlc2UgY2xhc3NlcyBzaG91bGQgYmUgbm9uLWJsb2NraW5nIGFuZAotLy8gdHJp
Z2dlciB3b3JrIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgaWYgbmVjZXNzYXJ5LgotY2xhc3MgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwot
ICAgIHZpcnR1YWwgU1FMaXRlRGF0YWJhc2UqIHNxbGl0ZURhdGFiYXNlKCkgPSAwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZV9oCi0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk5YmJlZWMzZTUzZDFhNTgx
NTliZTk5YjU5ZDE4MjE5MzljMDc1NDUuLmM4YzFkNTYyMzA3NDQ5MDU3NTRiOTYwMjY1ZTQ1MGVj
ZGQyNjliOGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtOCw4NSArOCw2IEBACiAgICAgICAgICogc3JjL2pz
L0RldlRvb2xzLmpzOgogICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6CiAKLTIwMTAtMDgt
MDUgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEplcmVteSBPcmxvdy4KLQotICAgICAgICBJbml0aWFsIGJpbmRpbmdzIGFuZCBwbHVt
YmluZyBmb3IgSURCQ3Vyc29yLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE4ODgKLQotICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9pZGIt
b3BlbmN1cnNvci5odG1sCi0KLSAgICAgICAgKiBXZWJLaXQuZ3lwOgotICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJDYWxsYmFja3MuaDoKLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpv
blN1Y2Nlc3MpOgotICAgICAgICAqIHB1YmxpYy9XZWJJREJDdXJzb3IuaDogQWRkZWQuCi0gICAg
ICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6fldlYklEQkN1cnNvcik6Ci0gICAgICAgIChXZWJL
aXQ6OldlYklEQkN1cnNvcjo6ZGlyZWN0aW9uKToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vy
c29yOjprZXkpOgotICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnZhbHVlKToKLSAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjp1cGRhdGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgotICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJz
b3I6OnJlbW92ZSk6Ci0gICAgICAgICogcHVibGljL1dlYklEQktleVJhbmdlLmg6IEFkZGVkLgot
ICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlSYW5nZTo6fldlYklEQktleVJhbmdlKToKLSAgICAg
ICAgKFdlYktpdDo6V2ViSURCS2V5UmFuZ2U6OldlYklEQktleVJhbmdlKToKLSAgICAgICAgKiBw
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDoKLSAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmU6Om9wZW5DdXJzb3IpOgotICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKLSAgICAg
ICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKLSAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFj
a2VuZFByb3h5LmNwcDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5k
UHJveHk6OmNyZWF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kUHJveHk6
OklEQkN1cnNvckJhY2tlbmRQcm94eSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kUHJveHk6On5JREJDdXJzb3JCYWNrZW5kUHJveHkpOgotICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZFByb3h5OjpkaXJlY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yQmFja2VuZFByb3h5OjprZXkpOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZFByb3h5Ojp2YWx1ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kUHJveHk6
OnVwZGF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OmNvbnRp
bnVlRnVuY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZFByb3h5Ojpy
ZW1vdmUpOgotICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDogQWRkZWQuCi0g
ICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVQcm94eTo6b3BlbkN1cnNvcik6Ci0gICAgICAgICogc3JjL0lEQk9iamVj
dFN0b3JlUHJveHkuaDoKLSAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgotICAgICAg
ICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6Ci0gICAgICAgICogc3JjL1dlYklEQkN1cnNv
ckltcGwuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6V2Vi
SURCQ3Vyc29ySW1wbCk6Ci0gICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6On5XZWJJ
REJDdXJzb3JJbXBsKToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6ZGlyZWN0
aW9uKToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6a2V5KToKLSAgICAgICAg
KFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6dmFsdWUpOgotICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDdXJzb3JJbXBsOjp1cGRhdGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBs
Ojpjb250aW51ZUZ1bmN0aW9uKToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6
cmVtb3ZlKToKLSAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5oOiBBZGRlZC4KLSAgICAg
ICAgKiBzcmMvV2ViSURCS2V5UmFuZ2UuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdlYktpdDo6V2Vi
SURCS2V5UmFuZ2U6OldlYklEQktleVJhbmdlKToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5
UmFuZ2U6OmFzc2lnbik6Ci0gICAgICAgIChXZWJLaXQ6OldlYklEQktleVJhbmdlOjpyZXNldCk6
Ci0gICAgICAgIChXZWJLaXQ6OldlYklEQktleVJhbmdlOjpsZWZ0KToKLSAgICAgICAgKFdlYktp
dDo6V2ViSURCS2V5UmFuZ2U6OnJpZ2h0KToKLSAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UmFu
Z2U6OmZsYWdzKToKLSAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKLSAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpvcGVuQ3Vyc29yKToKLSAgICAg
ICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6Ci0KLTIwMTAtMDgtMDUgIEFuZHJlaSBQ
b3Blc2N1ICA8YW5kcmVpcEBkaGNwLTE3Mi0xNi0xNC0xMi5sb24uY29ycC5nb29nbGUuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KLQotICAgICAgICBbSW5kZXhlZERC
XSBJbmRleGVkREIgaXMgbWlzc2luZyB0aGUgVHJhbnNhY3Rpb24gaW50ZXJmYWNlLgotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI5NzAKLQotICAgICAg
ICBBZGQgSURCVHJhbnNhY3Rpb24gYm9pbGVycGxhdGUuCi0KLSAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VQcm94eS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZVByb3h5Ojp0cmFu
c2FjdGlvbik6Ci0gICAgICAgICogc3JjL0lEQkRhdGFiYXNlUHJveHkuaDoKLQogMjAxMC0wOC0w
NSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAwNmZkODJjYmI5
YmU5MDAxY2M2N2ZjODQ3MDRhMDZiNjMzOThkOWMzLi4yYTYwNDY3MGI3YTk1ODBlMWE4NzgzNDg5
YjI0NGViNmM3MDQwZTVkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTc0LDExICsxNzQsOSBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViSW1hZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJbWFnZURlY29kZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklEQkRhdGFiYXNlRXJyb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJREJGYWN0b3J5LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UmFuZ2Uu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJJbmRleC5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYklEQktleS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklE
Qk9iamVjdFN0b3JlLmgnLApAQCAtMzE2LDggKzMxNCw2IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDYWxsYmFja3NQ
cm94eS5oJywKLSAgICAgICAgICAgICAgICAnc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAn
LAotICAgICAgICAgICAgICAgICdzcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvSURCRGF0YWJhc2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwJywKQEAgLTQwOSw4ICs0MDUsNiBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCcs
Ci0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCcsCi0gICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJREJDdXJzb3JJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCRGF0YWJhc2VFcnJvci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCcs
CkBAIC00MTksNyArNDEzLDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkluZGV4SW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCSW5kZXhJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCS2V5LmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
REJLZXlSYW5nZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUNHLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCAyZTJjNGQyOTllMGM4YzdmNTc1ZGFmMmI0ZTgw
N2ZlNzc1M2NkNmQxLi5jZWU4NjEyY2NiYWFjODU2OGE5MWM3MjA5OTgyZjA4NjMwNTNlNjE3IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTMwLDcgKzMwLDYg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYklEQkN1cnNvcjsKIGNsYXNzIFdl
YklEQkRhdGFiYXNlOwogY2xhc3MgV2ViSURCRGF0YWJhc2VFcnJvcjsKIGNsYXNzIFdlYklEQktl
eTsKQEAgLTQ2LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIC8vIEZvciB0aGUgcmVzdCwgcGFzcyBv
d25lcnNoaXAgdG8gdGhlIGNhbGxlZSB2aWEgYSBwb2ludGVyLgogICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfSAvLyBGb3IgIm51bGwiLgotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoV2ViSURCQ3Vyc29yKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktl
eSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhXZWJJREJJbmRleCopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjdlYjkyNDdhZTdiYmU5YWIyYmI2OTlmMTc4OGIxNGQ5YTBmMGM5NS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkN1cnNvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViSURCQ3Vyc29yX2gKLSNkZWZpbmUgV2ViSURCQ3Vyc29yX2gKLQotI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IldlYklEQktleS5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gU2VlIGNvbW1l
bnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2Ug
Y2xhc3Nlcy4KLWNsYXNzIFdlYklEQkN1cnNvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2Vi
SURCQ3Vyc29yKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbigp
IGNvbnN0Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgV2ViSURCS2V5IGtleSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBXZWJJREJLZXkoIiIpOwotICAgIH0KLQotICAgIHZpcnR1YWwgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKikKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlv
bihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqKQotICAgIHsKLSAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoV2ViSURCQ2FsbGJhY2tzKikKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IFdlYklEQkN1cnNvcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QktleVJhbmdlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVJhbmdlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOTUzY2UxYTMxNTNiYWRmNjIxZjNkZDBjOTc4
MzI1NWZjYmU1YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlSYW5nZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSURCS2V5UmFuZ2VfaAotI2RlZmlu
ZSBXZWJJREJLZXlSYW5nZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJX
ZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCS2V5UmFuZ2U7
IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYklEQktleTsKLWNsYXNzIFdlYlN0
cmluZzsKLQotY2xhc3MgV2ViSURCS2V5UmFuZ2UgewotcHVibGljOgotICAgIH5XZWJJREJLZXlS
YW5nZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViSURCS2V5UmFuZ2UoY29uc3QgV2ViSURCS2V5
UmFuZ2UmIGtleVJhbmdlKSB7IGFzc2lnbihrZXlSYW5nZSk7IH0KLSAgICBXZWJJREJLZXlSYW5n
ZShjb25zdCBXZWJJREJLZXkmIGxlZnQsIGNvbnN0IFdlYklEQktleSYgcmlnaHQsIHVuc2lnbmVk
IHNob3J0IGZsYWdzKSB7IGFzc2lnbihsZWZ0LCByaWdodCwgZmxhZ3MpOyB9Ci0KLSAgICBXRUJL
SVRfQVBJIFdlYklEQktleSBsZWZ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0FQSSBXZWJJREJLZXkg
cmlnaHQoKSBjb25zdDsKLSAgICBXRUJLSVRfQVBJIHVuc2lnbmVkIHNob3J0IGZsYWdzKCkgY29u
c3Q7Ci0KLSAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYklEQktleVJhbmdlJik7
Ci0gICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJJREJLZXkmIGxlZnQsIGNvbnN0
IFdlYklEQktleSYgcmlnaHQsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKLSAgICBXRUJLSVRfQVBJ
IHZvaWQgcmVzZXQoKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYklEQktl
eVJhbmdlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4mKTsKLSAg
ICBXZWJJREJLZXlSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJLZXlSYW5nZT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCS2V5UmFuZ2U+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRl
UHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYklEQktleVJhbmdlX2gKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCA3NDUyYmU5OWI0MGMwYmQyMjY5NTA0Mjcx
MGM5ZGE4YmY5YjIwOWQwLi5mYjgxZmI5Y2UxZGMwOTkzYTJhMmQxNzhiNjc1MjY1NmFjZWUyZTNh
IDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC0zMyw4
ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJREJLZXlSYW5nZTsK
LQogLy8gU2VlIGNvbW1lbnQgaW4gV2ViSW5kZXhlZERhdGFiYXNlIGZvciBhIGhpZ2ggbGV2ZWwg
b3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlIHsKIHB1Ymxp
YzoKQEAgLTgxLDEwICs3OSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoY29u
c3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxi
YWNrcyopCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
fQogICAgIC8vIEZJWE1FOiBmaW5pc2guCiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCmluZGV4IDNlYWI2MjI0YTk3OWIwNzEzZmQ5ZmU3YWFmYTU3NGZmODE0
YzQzODEuLjAzNzVjNmIyMDcwMTc0MWQ0YWYzNzJjOWNlY2M1YWIwZTZmNjFjOTIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlUHJveHku
aCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJXZWJJREJDdXJzb3JJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURC
RGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQkluZGV4SW1wbC5oIgpAQCAtNzAsMTIg
KzY5LDYgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKCkKICAgICBtX2NhbGxi
YWNrcy5jbGVhcigpOwogfQogCi12b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kKQotewot
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbChp
ZGJDdXJzb3JCYWNrZW5kKSk7Ci0gICAgbV9jYWxsYmFja3MuY2xlYXIoKTsKLX0KLQogdm9pZCBJ
REJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdl
YktpdDo6V2ViSURCRGF0YWJhc2VJbXBsKGJhY2tlbmQpKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q2FsbGJhY2tzUHJveHkuaAppbmRleCA1MDZkYmIwZjZjYTk4ZmM0OWQ2ODJmYWZjZWQ0N2Y5Y2Ni
ZDQxZWJjLi40MGJiOTQ3OTZhYWUxNWNkZGRkYzZkNzZlMTIwNWZiNjJkODRjNDRiIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBAIC00OSw3ICs0OSw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsgLy8gRm9yICJudWxsIi4KLSAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQktleT4pOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
dXJzb3JCYWNrZW5kUHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNr
ZW5kUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmYwMGI3Nzg3ZTJk
ODQyMGRmYmYxOTQ4ZDliNWU4OTFkYzliYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZFByb3h5LmgiCi0KLSNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklE
QkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1
ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKLSNpbmNsdWRlICJXZWJJREJLZXkuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJD
dXJzb3I+IGlkYkN1cnNvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJh
Y2tlbmRQcm94eShpZGJDdXJzb3IpKTsKLX0KLQotSURCQ3Vyc29yQmFja2VuZFByb3h5OjpJREJD
dXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4gaWRiQ3Vy
c29yKQotICAgIDogbV9pZGJDdXJzb3IoaWRiQ3Vyc29yKQotewotfQotCi1JREJDdXJzb3JCYWNr
ZW5kUHJveHk6On5JREJDdXJzb3JCYWNrZW5kUHJveHkoKQotewotfQotCi11bnNpZ25lZCBzaG9y
dCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OmRpcmVjdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faWRiQ3Vyc29yLT5kaXJlY3Rpb24oKTsKLX0KLQotUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1
cnNvckJhY2tlbmRQcm94eTo6a2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pZGJDdXJzb3It
PmtleSgpOwotfQotCi1QYXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yQmFja2VuZFByb3h5Ojp2
YWx1ZSgpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUg
PSBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4obV9pZGJDdXJzb3ItPnZhbHVlKCkp
OwotICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5nZXQoKSk7Ci19Ci0KLXZvaWQgSURC
Q3Vyc29yQmFja2VuZFByb3h5Ojp1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG1f
aWRiQ3Vyc29yLT51cGRhdGUodmFsdWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cykpOwotfQotCi12b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y29udGludWVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQotewotICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbmV3IFdlYklEQkNh
bGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5
OjpyZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBtX2lk
YkN1cnNvci0+cmVtb3ZlKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGI2MjFhMWU3NTAxNTBjM2M5N2M2MmZlMjQ1YWM3
YTFkOTU2YmJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJDdXJzb3JCYWNrZW5kUHJveHlf
aAotI2RlZmluZSBJREJDdXJzb3JCYWNrZW5kUHJveHlfaAotCi0jaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCi0KLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5j
bHVkZSAiV2ViSURCQ3Vyc29yLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSURCQ3Vyc29y
QmFja2VuZFByb3h5IDogcHVibGljIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ3Vyc29yPik7Ci0gICAgdmlydHVhbCB+SURCQ3Vy
c29yQmFja2VuZFByb3h5KCk7Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
bigpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLQotcHJpdmF0ZToKLSAgICBJ
REJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4pOwot
Ci0gICAgT3duUHRyPFdlYktpdDo6V2ViSURCQ3Vyc29yPiBtX2lkYkN1cnNvcjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBJREJDdXJzb3JCYWNr
ZW5kUHJveHlfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZVBy
b3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5jcHAKaW5kZXgg
ZDExZDE4MmE2Y2ZiMDkwNDdjMmRkNWE0OTExMjc3YzZlZGE5NGQwYi4uZjk5NWIzY2UyNmU5ZDhh
ODE4ZmZkMzdhYTVlMWJkNjIyNzZhYmU5YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZVByb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5o
IgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJv
eHkuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViSURCRGF0YWJhc2UuaCIKQEAgLTkyLDEzICs5MSw2IEBAIHZvaWQgSURCRGF0
YWJhc2VQcm94eTo6cmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiCiAgICAgbV93ZWJJREJEYXRhYmFzZS0+cmVtb3ZlT2JqZWN0U3RvcmUobmFt
ZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKLVBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5Ojp0cmFuc2Fj
dGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNp
Z25lZCBsb25nIHRpbWVvdXQpCi17Ci0gICAgLy8gRklYTUU6IHBsdW1iIHRvIHRoZSBicm93c2Vy
IHByb2Nlc3MsIGV0YyBldGMuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZVByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAppbmRleCBl
ZDIwMTZhNTc5NDM2MjcwMmUyYmQwNTk1NzBhZDA3ZmI4MzcxNmE3Li4wMzMxMWYyOWNhOTZhYTJl
MTMwMzMxMjY4Y2Y0ZWNmNTM3Nzg4NWQ5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlUHJveHkuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
UHJveHkuaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBzaG9ydCBtb2RlKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVk
IHNob3J0IG1vZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CiAKIHByaXZhdGU6CiAgICAgSURC
RGF0YWJhc2VQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2U+KTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVQcm94eS5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuY3BwCmluZGV4IGFkMjdmYTM0MWM1
YmM3Yzg5YzdkMDhhMjdiNTVkMTgzMjhkZjJiMDIuLjBlMWE1OTlkNDY2YzU5OWZhZTRmODhmODM3
ZGM1ZmFkNTI3ODY2MzAgMTAwNzU1Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVQcm94eS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVBy
b3h5LmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNp
bmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRQcm94eS5o
IgotI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1w
bC5oIgotI2luY2x1ZGUgIldlYklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXgu
aCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5o
IgpAQCAtMTAzLDExICsxMDEsNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlUHJveHk6OnJlbW92ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFjawogICAgIG1fd2Vi
SURCT2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4KG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcykpOwogfQogCi12b2lkIElEQk9iamVjdFN0b3JlUHJveHk6Om9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBtX3dlYklEQk9iamVj
dFN0b3JlLT5vcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIG5ldyBXZWJJREJDYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcykpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCT2JqZWN0U3RvcmVQcm94eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RT
dG9yZVByb3h5LmgKaW5kZXggYTMzNDU3MmI2ZjM2YzFlMDA0ODJjMDRkMGEwN2I2NWFhYmY1OTlh
MS4uZjU2OTE2NmM4MzA4N2U3MTE5NTkyNGYwNTdmYzIyZGY0YTQwNzJmNyAxMDA3NTUKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgKQEAgLTU0LDggKzU0LDYgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLQogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9y
ZVByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZT4pOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAppbmRleCBlNTQzMTIzMDUxNzQ4
MGZkOGJiMjc0MjhmYjM4NzdlN2U3ZjM0ZDg4Li5kYmY3ZDg1NTFjOGY2N2RmMDM5MTFiMGExNTRl
MjQzNzI2MzhiODUzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgi
CiAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5k
UHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZFByb3h5LmgiCkBAIC02Niwx
MiArNjUsNiBAQCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcygpCiAgICAgbV9j
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MoV2ViS2l0OjpXZWJJREJDdXJzb3IqIGN1cnNvcikKLXsKLSAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y3JlYXRlKGN1cnNvcikpOwotICAgIG1fY2Fs
bGJhY2tzLmNsZWFyKCk7Ci19Ci0KIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNz
KFdlYktpdDo6V2ViSURCRGF0YWJhc2UqIHdlYktpdEluc3RhbmNlKQogewogICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VQcm94eTo6Y3JlYXRlKHdlYktpdEluc3RhbmNlKSk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDE4MzVjNjBj
MmM0NWZkYzIwODFlOTlmNmQ3NDgwZGYxYWU0OTFkY2EuLmE0ZDUzYjU1YWY0YzY5ODViZmZhNjhi
YTQzYWNlMjAxMGFmMjY3MjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q2FsbGJhY2tzSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yKGNvbnN0IFdlYktpdDo6V2ViSURCRGF0YWJhc2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoKTsgLy8gRm9yICJudWxsIi4KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFdlYktpdDo6V2ViSURCQ3Vyc29yKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJL
aXQ6OldlYklEQkRhdGFiYXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJLaXQ6OldlYklEQktleSYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpX
ZWJJREJJbmRleCopOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJz
b3JJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZGU2ODdlOWM2Y2U1N2I1ODVlNzY5MjZjYTMx
YTZjZjg1MjA0MGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViSURCQ3Vyc29ySW1wbC5oIgotCi0jaW5jbHVkZSAiSURCQW55LmgiCi0jaW5jbHVkZSAiSURC
Q2FsbGJhY2tzUHJveHkuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgi
Ci0jaW5jbHVkZSAiSURCS2V5LmgiCi0jaW5jbHVkZSAiV2ViSURCS2V5LmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSURCQ3Vyc29ySW1w
bDo6V2ViSURCQ3Vyc29ySW1wbChQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IGlkYkN1cnNvckJhY2tlbmQpCi0gICAgOiBtX2lkYkN1cnNvckJhY2tlbmQoaWRiQ3Vyc29yQmFj
a2VuZCkKLXsKLX0KLQotV2ViSURCQ3Vyc29ySW1wbDo6fldlYklEQkN1cnNvckltcGwoKQotewot
fQotCi11bnNpZ25lZCBzaG9ydCBXZWJJREJDdXJzb3JJbXBsOjpkaXJlY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2lkYkN1cnNvckJhY2tlbmQtPmRpcmVjdGlvbigpOwotfQotCi1XZWJJ
REJLZXkgV2ViSURCQ3Vyc29ySW1wbDo6a2V5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViSURC
S2V5KG1faWRiQ3Vyc29yQmFja2VuZC0+a2V5KCkpOwotfQotCi1XZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUgV2ViSURCQ3Vyc29ySW1wbDo6dmFsdWUoKSBjb25zdAotewotICAgIHJldHVybiBtX2lk
YkN1cnNvckJhY2tlbmQtPnZhbHVlKCktPnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwotfQotCi12
b2lkIFdlYklEQkN1cnNvckltcGw6OnVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIHZhbHVlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBtX2lkYkN1cnNv
ckJhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFj
a3MpKTsKLX0KLQotdm9pZCBXZWJJREJDdXJzb3JJbXBsOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0
IFdlYklEQktleSYga2V5LCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBtX2lk
YkN1cnNvckJhY2tlbmQtPmNvbnRpbnVlRnVuY3Rpb24oa2V5LCBJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGNhbGxiYWNrcykpOwotfQotCi12b2lkIFdlYklEQkN1cnNvckltcGw6OnJlbW92ZShX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKLXsKLSAgICBtX2lkYkN1cnNvckJhY2tlbmQtPnJl
bW92ZShJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcykpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1
cnNvckltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjVlODZhMTM0ZDUxOTI4ZWViMjBmNzNhZGNiZjZm
MTI0NzMzYmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSURCQ3Vyc29ySW1wbF9oCi0jZGVmaW5l
IFdlYklEQkN1cnNvckltcGxfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAi
V2ViSURCQ3Vyc29yLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZTsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gU2VlIGNvbW1lbnQgaW4g
V2ViSW5kZXhlZE9iamVjdFN0b3JlIGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xh
c3Nlcy4KLWNsYXNzIFdlYklEQkN1cnNvckltcGwgOiBwdWJsaWMgV2ViSURCQ3Vyc29yIHsKLXB1
YmxpYzoKLSAgICBXZWJJREJDdXJzb3JJbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPik7Ci0gICAgdmlydHVhbCB+V2ViSURCQ3Vyc29ySW1wbCgp
OwotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24oKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFdlYklEQktleSBrZXkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSB2YWx1ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKik7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tz
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3MqKTsKLQotIHByaXZh
dGU6Ci0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
bV9pZGJDdXJzb3JCYWNrZW5kOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBXZWJJREJDdXJzb3JJbXBsX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCS2V5UmFuZ2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlSYW5nZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZTk0NTIxNjRjZjMxMjVmOWQ4YWYy
MmFmZmFiMmEyYTBjMDg3MzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlSYW5nZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYklEQktleVJhbmdlLmgiCi0KLSNpbmNsdWRlICJJREJLZXkuaCIKLSNpbmNsdWRlICJJ
REJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIldlYklEQktleS5oIgotCi11c2luZyBXZWJDb3JlOjpJ
REJLZXlSYW5nZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViSURCS2V5UmFuZ2U6
OmFzc2lnbihjb25zdCBXZWJJREJLZXlSYW5nZSYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0g
b3RoZXIubV9wcml2YXRlOwotfQotCi12b2lkIFdlYklEQktleVJhbmdlOjphc3NpZ24oY29uc3Qg
V2ViSURCS2V5JiBsZWZ0LCBjb25zdCBXZWJJREJLZXkmIHJpZ2h0LCB1bnNpZ25lZCBzaG9ydCBm
bGFncykKLXsKLSAgICBtX3ByaXZhdGUgPSBJREJLZXlSYW5nZTo6Y3JlYXRlKGxlZnQsIHJpZ2h0
LCBmbGFncyk7Ci19Ci0KLXZvaWQgV2ViSURCS2V5UmFuZ2U6OnJlc2V0KCkKLXsKLSAgICBtX3By
aXZhdGUucmVzZXQoKTsKLX0KLQotV2ViSURCS2V5IFdlYklEQktleVJhbmdlOjpsZWZ0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5sZWZ0KCk7Ci19Ci0KLVdlYklEQktleSBXZWJJ
REJLZXlSYW5nZTo6cmlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnJpZ2h0
KCk7Ci19Ci0KLXVuc2lnbmVkIHNob3J0IFdlYklEQktleVJhbmdlOjpmbGFncygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZmxhZ3MoKTsKLX0KLQotV2ViSURCS2V5UmFuZ2U6Oldl
YklEQktleVJhbmdlKGNvbnN0IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+JiB2YWx1ZSkKLSAgICA6
IG1fcHJpdmF0ZSh2YWx1ZSkKLXsKLX0KLQotV2ViSURCS2V5UmFuZ2UmIFdlYklEQktleVJhbmdl
OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4mIHZhbHVlKQotewotICAg
IG1fcHJpdmF0ZSA9IHZhbHVlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViSURCS2V5UmFu
Z2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAxYWQxZDlmM2U0
NzM4YTc3NGYzYjY2MTRiMjA2ZjYxYTNhYjJlYzAyLi4yYzM0N2E4ZGFjMDFiM2M1NjYyMDEwYzdj
OGQ1MzRjNWY5ODI5NzdhIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwCkBAIC0yOCwxMSArMjgsOSBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCi0jaW5jbHVkZSAiSURCS2V5UmFu
Z2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJXZWJJREJJbmRleEltcGwuaCIKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKLSNpbmNsdWRl
ICJXZWJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC05OCwxMSArOTYsNiBAQCB2b2lk
IFdlYklEQk9iamVjdFN0b3JlSW1wbDo6cmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqCiAgICAgbV9vYmplY3RTdG9yZS0+cmVtb3ZlSW5kZXgobmFtZSwg
SURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBXZWJJREJP
YmplY3RTdG9yZUltcGw6Om9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdl
LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQot
ewotICAgIG1fb2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IoSURCS2V5UmFuZ2U6OmNyZWF0ZShrZXlS
YW5nZS5sZWZ0KCksIGtleVJhbmdlLnJpZ2h0KCksIGtleVJhbmdlLmZsYWdzKCkpLCBkaXJlY3Rp
b24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggOWYzMTM2OWMz
MGIxNDE1ZjFiOTJjNzA4NWNhZGVkYTAyNzg5OTIyYi4uNmZkMzQ1YTRiZTc5YWRiMjUyNjdiNzNi
YTA4MTk4NjgxM2U1MWI0NyAxMDA3NTUKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5oCkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoKICAgICBXZWJJREJJbmRleCogaW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpOwogCi0gICAgdm9pZCBv
cGVuQ3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBXZWJJREJDYWxsYmFja3MqKTsKLQogIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>