<?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>46953</bug_id>
          
          <creation_ts>2010-09-30 18:47:22 -0700</creation_ts>
          <short_desc>Add simple API tester for WebKit2</short_desc>
          <delta_ts>2010-10-01 14:07:08 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>287996</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 18:47:22 -0700</bug_when>
    <thetext>Add simple API tester for WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288006</commentid>
    <comment_count>1</comment_count>
      <attachid>69411</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 19:12:51 -0700</bug_when>
    <thetext>Created attachment 69411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288007</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 19:13:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/8235234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288010</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-30 19:16:47 -0700</bug_when>
    <thetext>Attachment 69411 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/TestWebKitAPI/TestWebKitAPIPrefix.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/TestsController.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/Test.h:80:  TEST_CLASS_NAME is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/Tests/WTF/Vector1.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/TestWebKitAPI/Tests/WTF/Vector1.cpp:36:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKitTools/TestWebKitAPI/Tests/WTF/Vector1.cpp:37:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 8 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288016</commentid>
    <comment_count>4</comment_count>
      <attachid>69413</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-30 19:39:40 -0700</bug_when>
    <thetext>Created attachment 69413
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288386</commentid>
    <comment_count>5</comment_count>
      <attachid>69413</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-01 11:54:51 -0700</bug_when>
    <thetext>Comment on attachment 69413
Updated patch

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

I didn&apos;t look at the Perl very closely.

When should we integrate this into run-webkit-tests?

&gt; WebKitTools/ChangeLog:24
&gt; +        * TestWebKitAPI: Added.

Maybe TestWebKit2API would be better?

&gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:30
&gt; +#if __APPLE__
&gt; +#if __OBJC__

#ifdef is better if you want to turn on the &quot;warn for undefined macros&quot; warning someday.

&gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:38
&gt; +typedef WKView* PlatformWKView;
&gt; +typedef NSWindow* PlatformWindow;

Misplaced *s.

&gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:52
&gt; +    PlatformWKView platformView() { return m_view; }

Can be a const member function.

&gt; WebKitTools/TestWebKitAPI/ForwardingHeaders/wtf/ASCIICType.h:1
&gt; +#include &lt;JavaScriptCore/ASCIICType.h&gt;

Can we just use WebCore&apos;s forwarding headers instead? They&apos;re copied into WebCore&apos;s PrivateHeaders.

&gt; WebKitTools/TestWebKitAPI/Tests/WTF/Vector1.cpp:38
&gt; +TEST(Vector1)
&gt; +{
&gt; +    Vector&lt;int&gt; intVector;
&gt; +    TEST_ASSERT(intVector.isEmpty());
&gt; +    TEST_ASSERT(intVector.size() == 0);
&gt; +    TEST_ASSERT(intVector.capacity() == 0);
&gt; +}

WTF isn&apos;t really part of the WebKit2 API. Why are we testing it here?

&gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:52
&gt; +    State* state = ((State*)clientInfo);

Extra parentheses here. And static_cast/const_cast would maybe be better.

&gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:57
&gt; +    TEST_ASSERT(state-&gt;didDecidePolicyForNavigationAction);
&gt; +    TEST_ASSERT(!state-&gt;didCommitLoadForFrame);
&gt; +
&gt; +    state-&gt;didStartProvisionalLoadForFrame = true;

Should we assert that didStartProvisionalLoadForFrame is false before this?

An enum for the states would be nicer, since we always expect them to be called in the same order. It would make the order clearer!

&gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:107
&gt; +    PlatformWebView webView(pageNamespace.get());

Having PlatformWebView both here and in WebKitTestRunner makes me think that getting the view from the page (rather than vice-versa) might be better overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288397</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 12:06:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 69413 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69413&amp;action=review
&gt; 
&gt; I didn&apos;t look at the Perl very closely.
&gt; 
&gt; When should we integrate this into run-webkit-tests?
&gt; 
&gt; &gt; WebKitTools/ChangeLog:24
&gt; &gt; +        * TestWebKitAPI: Added.
&gt; 
&gt; Maybe TestWebKit2API would be better?

There is not much in here that has to be WebKit2 specific.  I have even provided a test case for WTF/Vector.h.

&gt; 
&gt; &gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:30
&gt; &gt; +#if __APPLE__
&gt; &gt; +#if __OBJC__
&gt; 
&gt; #ifdef is better if you want to turn on the &quot;warn for undefined macros&quot; warning someday.
&gt; 
&gt; &gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:38
&gt; &gt; +typedef WKView* PlatformWKView;
&gt; &gt; +typedef NSWindow* PlatformWindow;
&gt; 
&gt; Misplaced *s.
&gt; 

Done.

&gt; &gt; WebKitTools/TestWebKitAPI/PlatformWebView.h:52
&gt; &gt; +    PlatformWKView platformView() { return m_view; }
&gt; 
&gt; Can be a const member function.

Done.

&gt; 
&gt; &gt; WebKitTools/TestWebKitAPI/ForwardingHeaders/wtf/ASCIICType.h:1
&gt; &gt; +#include &lt;JavaScriptCore/ASCIICType.h&gt;
&gt; 
&gt; Can we just use WebCore&apos;s forwarding headers instead? They&apos;re copied into WebCore&apos;s PrivateHeaders.
&gt; 

I am not sure how to do that. If that works, we should change both WebKitTestRunner and this.


&gt; &gt; WebKitTools/TestWebKitAPI/Tests/WTF/Vector1.cpp:38
&gt; &gt; +TEST(Vector1)
&gt; &gt; +{
&gt; &gt; +    Vector&lt;int&gt; intVector;
&gt; &gt; +    TEST_ASSERT(intVector.isEmpty());
&gt; &gt; +    TEST_ASSERT(intVector.size() == 0);
&gt; &gt; +    TEST_ASSERT(intVector.capacity() == 0);
&gt; &gt; +}
&gt; 
&gt; WTF isn&apos;t really part of the WebKit2 API. Why are we testing it here?

See above.

&gt; 
&gt; &gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:52
&gt; &gt; +    State* state = ((State*)clientInfo);
&gt; 
&gt; Extra parentheses here. And static_cast/const_cast would maybe be better.

Done.

&gt; &gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:57
&gt; &gt; +    TEST_ASSERT(state-&gt;didDecidePolicyForNavigationAction);
&gt; &gt; +    TEST_ASSERT(!state-&gt;didCommitLoadForFrame);
&gt; &gt; +
&gt; &gt; +    state-&gt;didStartProvisionalLoadForFrame = true;
&gt; 
&gt; Should we assert that didStartProvisionalLoadForFrame is false before this?

Done.

&gt; &gt; WebKitTools/TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp:107
&gt; &gt; +    PlatformWebView webView(pageNamespace.get());
&gt; 
&gt; Having PlatformWebView both here and in WebKitTestRunner makes me think that getting the view from the page (rather than vice-versa) might be better overall.

Perhaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288398</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 12:07:24 -0700</bug_when>
    <thetext>Oops, didn&apos;t mean to close this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288399</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 12:07:53 -0700</bug_when>
    <thetext>Landed in r68910.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288467</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 14:07:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/68910 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69411</attachid>
            <date>2010-09-30 19:12:51 -0700</date>
            <delta_ts>2010-09-30 19:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>APITests.diff</filename>
            <type>text/plain</type>
            <size>79125</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4ODU5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTAtMDktMzAgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc2ltcGxlIEFQSSB0ZXN0ZXIgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTUzCisKKyAgICAgICAgVGhpcyBhZGRz
IGEgdmVyeSBzaW1wbGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSBmb3IgdGVzdGluZyBBUElzIGV4
cG9zZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgV2ViS2l0IHByb2plY3QuIEl0IGNvbnNpc3RzIG9m
IHR3byBwYXJ0czogMSkgYSBwcm9qZWN0IHRoYXQKKyAgICAgICAgYnVpbGRzIHRoZSBhbGwgdGhl
IHRlc3RzIDIpIGEgc2NyaXB0IHRoYXQgc2VhcmNoZXMgdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQK
KyAgICAgICAgY2FsbHMgdGhlIHRlc3RlciBvbmNlIGZvciBlYWNoIHRlc3QuCisKKyAgICAgICAg
VGhpcyBhZGRzIHRoZSBpbmZyYXN0cnVjdHVyZSBhbmQgdHdvIHRlc3RzOgorICAgICAgICAtIFRl
c3RzL1dURi9WZWN0b3IxLmNwcCAtIEEgcHJvb2Ygb2YgY29uY2VwdCB0ZXN0IG9mIFdURiBkYXRh
LXN0cnVjdHVyZXMuCisgICAgICAgIC0gVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcCAtIEEg
cHJvb2Ygb2YgY29uY2VwdCB0ZXN0IG9mIFdlYktpdDIgQVBJLgorCisgICAgICAgIFRoaXMgY3Vy
cmVudGx5IG9ubHkgd29ya3Mgb24gdGhlIG1hYywgYnV0IGlzIGRlc2lnbmVkIHRvIGJlIGVhc2ls
eSBwb3J0ZWQgCisgICAgICAgIHRvIGFueSBwbGF0Zm9ybS4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLWFwaS10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9idWlsZC1hcGktdGVzdHM6
IEFkZGVkLgorICAgICAgICBTY3JpcHRzIHRvIGJ1aWxkL3J1biB0aGUgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWc6IEFkZGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnM6IEFkZGVkLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGxhdGZvcm1XZWJWaWV3OjpwbGF0Zm9ybVZpZXcpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
U3RyaW5nRnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdC5o
OiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3Q6On5UZXN0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3Q6Om5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVz
dDo6UmVnaXN0ZXI6OlJlZ2lzdGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3Q6OlJl
Z2lzdGVyOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdDo6VGVzdCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvajogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZp
eC5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxlci5jcHA6
IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpzaGFyZWQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpUZXN0c0NvbnRyb2xs
ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpydW5UZXN0TmFt
ZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjp0ZXN0RmFpbGVk
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6cmVnaXN0ZXJDcmVh
dGVUZXN0RnVuY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVy
Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbTogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFj
L1BsYXRmb3JtV2ViVmlld01hYy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBs
YXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZv
cm1XZWJWaWV3Ojpmb2N1cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvbWFpbi5tbTog
QWRkZWQuCisgICAgICAgIEluZnJhc3RydWN0dXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0czogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEY6IEFkZGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3RvcjEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDI6IEFkZGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy0xLmh0bWw6IEFkZGVkLgorICAgICAgICBQcm9vZiBvZiBj
b25jZXB0IHRlc3RzLgorCiAyMDEwLTA5LTI5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBvbiBXaW5kb3dzIHNob3VsZCB1c2UgV2luZG93
cyBmb250cyBmb3IgdGhlIHZhcmlvdXMgc3RhbmRhcmQKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lv
biA2ODgxMCkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDggQEAgc3RhdGljIHZvaWQg
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUAogCiBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUg
bmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VC
dXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVmIHVybCwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewor
ICAgIHByaW50ZigiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAlZFxuIiwgbW91c2VC
dXR0b24pOworCiAgICAgTE9HKEAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiIpOwog
ICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiB9CkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLWFwaS10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9T
Y3JpcHRzL2J1aWxkLWFwaS10ZXN0cwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtYXBpLXRlc3RzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisjIS91c3Iv
YmluL3BlcmwgLXcKKworIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNl
IHN0cmljdDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaW5kQmluOwordXNlIEdldG9wdDo6
TG9uZyBxdyg6Y29uZmlnIHBhc3NfdGhyb3VnaCk7Cit1c2UgbGliICRGaW5kQmluOjpCaW47Cit1
c2Ugd2Via2l0ZGlyczsKK3VzZSBQT1NJWDsKKworbXkgJHNob3dIZWxwID0gMDsKK215ICRjbGVh
biA9IDA7CisKK215ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKK215ICR1c2FnZSA9IDw8
RU9GOworVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBi
dWlsZCBzeXN0ZW1dCisgIC0taGVscCAgICAgICAgU2hvdyB0aGlzIGhlbHAgbWVzc2FnZQorICAt
LWNsZWFuICAgICAgIENsZWFuIHVwIHRoZSBidWlsZCBkaXJlY3RvcnkKK0VPRgorCitHZXRPcHRp
b25zKAorICAgICdoZWxwJyA9PiBcJHNob3dIZWxwLAorICAgICdjbGVhbicgPT4gXCRjbGVhbiwK
Kyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAgIHByaW50IFNUREVSUiAkdXNhZ2U7CisgICBleGl0
IDE7Cit9CisKK2NoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcoKTsKK3NldENvbmZpZ3VyYXRpb24o
KTsKK2NoZGlyV2ViS2l0KCk7CisKKyMgQnVpbGQKK2NoZGlyICJXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJIiBvciBkaWU7CisKK215ICRyZXN1bHQ7CitpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7
CisgICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJUZXN0V2ViS2l0QVBJIiwgJGNsZWFu
LCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOworfSBlbHNlIHsKKyAgICBkaWUgIldlYktpdFRlc3RS
dW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLlxuIjsKK30KKworZXhpdCBl
eGl0U3RhdHVzKCRyZXN1bHQpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC1hcGktdGVzdHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cwkocmV2aXNpb24gMCkKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MTYgQEAKKyMhL3Vzci9iaW4vcGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIEZlYXR1cmVzIHRvIGFkZDoKKyMgICAtIEFiaWxpdHkgdG8gcnVuIGEgc2lu
Z2xlIHRlc3QuCisjICAgLSBBYmlsaXR5IHRvIHJ1biBhbGwgdGVzdHMgdW5kZXIgb25lIGRpcmVj
dG9yeS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZpbGU6OkJhc2VuYW1l
OwordXNlIEZpbGU6OkZpbmQ7Cit1c2UgRmlsZTo6U3BlYzo6RnVuY3Rpb25zOwordXNlIEZpbGU6
OlNwZWM7Cit1c2UgRmluZEJpbjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBwYXNzX3Ro
cm91Z2gpOwordXNlIElQQzo6T3BlbjM7Cit1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2Ugd2Vi
a2l0ZGlyczsKKworc3ViIHNwbGl0cGF0aCgkKTsKK3N1YiBudW1lcmljY21wKCQkKTsKK3N1YiBw
YXRoY21wKCQkKTsKK3N1YiBmaW5kVGVzdHNUb1J1bigpOworc3ViIHJ1blRlc3QoJCk7CitzdWIg
YnVpbGRUZXN0VG9vbCgpOworCitteSAkc2hvd0hlbHAgPSAwOworbXkgJHF1aWV0ID0gMDsKKwor
bXkgJHByb2dyYW1OYW1lID0gYmFzZW5hbWUoJDApOworbXkgJHVzYWdlID0gPDxFT0Y7CitVc2Fn
ZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXQorICAtLWhlbHAgICAgICAgICAgICAgICAgU2hvdyB0
aGlzIGhlbHAgbWVzc2FnZQorICAtcXwtLXF1aXRlICAgICAgICAgICAgTGVzcyB2ZXJib3NlIG91
dHB1dAorRU9GCisKK0dldE9wdGlvbnMoCisgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAsCisgICAg
J3F1aWV0fHEnID0+IFwkcXVpZXQsCispOworCitpZiAoJHNob3dIZWxwKSB7CisgICBwcmludCBT
VERFUlIgJHVzYWdlOworICAgZXhpdCAxOworfQorCitzZXRDb25maWd1cmF0aW9uKCk7CitidWls
ZFRlc3RUb29sKCk7CitteSBAdGVzdHNUb1J1biA9IGZpbmRUZXN0c1RvUnVuKCk7CisKK215ICRh
bnlGYWlsdXJlcyA9IDA7Citmb3IgbXkgJHRlc3RQYXRoIChAdGVzdHNUb1J1bikgeworICAgIG15
ICRmYWlsZWQgPSBydW5UZXN0KCR0ZXN0UGF0aCk7CisgICAgaWYgKCRmYWlsZWQpIHsKKyAgICAg
ICAgJGFueUZhaWx1cmVzID0gMTsKKyAgICB9Cit9CitleGl0ICRhbnlGYWlsdXJlczsKKworCitz
dWIgc3BsaXRwYXRoKCQpCit7CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisgICAgbXkgJHBhdGhT
ZXBhcmF0b3IgPSAiLyI7CisgICAgbXkgJGRpcm5hbWUgPSBkaXJuYW1lKCRwYXRoKSAuICRwYXRo
U2VwYXJhdG9yOworICAgICRkaXJuYW1lID0gIiIgaWYgJGRpcm5hbWUgZXEgIi4iIC4gJHBhdGhT
ZXBhcmF0b3I7CisKKyAgICByZXR1cm4gKCRkaXJuYW1lLCBiYXNlbmFtZSgkcGF0aCkpOworfQor
CitzdWIgbnVtZXJpY2NtcCgkJCkKK3sKKyAgICBteSAoJGFhLCAkYmIpID0gQF87CisKKyAgICBt
eSBAYSA9IHNwbGl0IC8oXGQrKS8sICRhYTsKKyAgICBteSBAYiA9IHNwbGl0IC8oXGQrKS8sICRi
YjsKKworICAgICMgQ29tcGFyZSBvbmUgY2h1bmsgYXQgYSB0aW1lLgorICAgICMgRWFjaCBjaHVu
ayBpcyBlaXRoZXIgYWxsIG51bWVyaWMgZGlnaXRzLCBvciBhbGwgbm90IG51bWVyaWMgZGlnaXRz
LgorICAgIHdoaWxlIChAYSAmJiBAYikgeworICAgICAgICBteSAkYSA9IHNoaWZ0IEBhOworICAg
ICAgICBteSAkYiA9IHNoaWZ0IEBiOworICAgICAgICAKKyAgICAgICAgIyBVc2UgbnVtZXJpYyBj
b21wYXJpc29uIGlmIGNodW5rcyBhcmUgbm9uLWVxdWFsIG51bWJlcnMuCisgICAgICAgIHJldHVy
biAkYSA8PT4gJGIgaWYgJGEgPX4gL15cZC8gJiYgJGIgPX4gL15cZC8gJiYgJGEgIT0gJGI7CisK
KyAgICAgICAgIyBVc2Ugc3RyaW5nIGNvbXBhcmlzb24gaWYgY2h1bmtzIGFyZSBhbnkgb3RoZXIg
a2luZCBvZiBub24tZXF1YWwgc3RyaW5nLgorICAgICAgICByZXR1cm4gJGEgY21wICRiIGlmICRh
IG5lICRiOworICAgIH0KKyAgICAKKyAgICAjIE9uZSBvZiB0aGUgdHdvIGlzIG5vdyBlbXB0eTsg
Y29tcGFyZSBsZW5ndGhzIGZvciByZXN1bHQgaW4gdGhpcyBjYXNlLgorICAgIHJldHVybiBAYSA8
PT4gQGI7Cit9CisKK3N1YiBwYXRoY21wKCQkKQoreworICAgIG15ICgkcGF0aGEsICRwYXRoYikg
PSBAXzsKKworICAgIG15ICgkZGlyYSwgJG5hbWVhKSA9IHNwbGl0cGF0aCgkcGF0aGEpOworICAg
IG15ICgkZGlyYiwgJG5hbWViKSA9IHNwbGl0cGF0aCgkcGF0aGIpOworCisgICAgcmV0dXJuIG51
bWVyaWNjbXAoJGRpcmEsICRkaXJiKSBpZiAkZGlyYSBuZSAkZGlyYjsKKyAgICByZXR1cm4gbnVt
ZXJpY2NtcCgkbmFtZWEsICRuYW1lYik7Cit9CisKK3N1YiBmaW5kVGVzdHNUb1J1bigpCit7Cisg
ICAgb3VyICVpZ25vcmVkTG9jYWxEaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBxdyguc3Zu
IF9zdm4pOworICAgIG91ciAlc3VwcG9ydGVkRmlsZUV4dGVuc2lvbnMgPSBtYXAgeyAkXyA9PiAx
IH0gcXcoY3BwKTsKKyAgICBvdXIgJHRlc3RzRGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+Y2F0Zmls
ZShzb3VyY2VEaXIoKSwgcXcoV2ViS2l0VG9vbHMgVGVzdFdlYktpdEFQSSBUZXN0cykpOworICAg
IG91ciBAdGVzdHNGb3VuZCA9ICgpOworCisgICAgc3ViIGRpcmVjdG9yeUZpbHRlcgorICAgIHsK
KyAgICAgICAgcmV0dXJuICgpIGlmIGV4aXN0cyAkaWdub3JlZExvY2FsRGlyZWN0b3JpZXN7YmFz
ZW5hbWUoJEZpbGU6OkZpbmQ6OmRpcil9OworICAgICAgICByZXR1cm4gQF87CisgICAgfQorCisg
ICAgc3ViIGZpbGVGaWx0ZXIKKyAgICB7CisgICAgICAgIG15ICRmaWxlbmFtZSA9ICRfOworICAg
ICAgICBpZiAoJGZpbGVuYW1lID1+IC9cLihbXi5dKykkLykgeworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoZXhpc3RzICRzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uc3skMX0pIHsKKyAgICAg
ICAgICAgICAgICBteSAkcGF0aCA9IEZpbGU6OlNwZWMtPmFiczJyZWwoY2F0ZmlsZSgkRmlsZTo6
RmluZDo6ZGlyLCAkZmlsZW5hbWUpLCAkdGVzdHNEaXJlY3RvcnkpOworICAgICAgICAgICAgICAg
IHB1c2ggQHRlc3RzRm91bmQsICRwYXRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgY2hkaXJXZWJLaXQoKTsKKworICAgIGZpbmQoeyBwcmVwcm9jZXNzID0+IFwmZGly
ZWN0b3J5RmlsdGVyLCB3YW50ZWQgPT4gXCZmaWxlRmlsdGVyIH0sICR0ZXN0c0RpcmVjdG9yeSk7
CisgICAgcmV0dXJuIHNvcnQgcGF0aGNtcCBAdGVzdHNGb3VuZDsKK30KKworc3ViIHJ1blRlc3Qo
JCkKK3sKKyAgICBteSAoJHRlc3RQYXRoKSA9IEBfOworCisgICAgbXkgKCRkaXIsICR0ZXN0Rmls
ZSkgPSBzcGxpdHBhdGgoJHRlc3RQYXRoKTsKKyAgICBteSAkdGVzdCA9IHN1YnN0cigkdGVzdEZp
bGUsIDAsIHJpbmRleCgkdGVzdEZpbGUsICIuIikpOworCisgICAgcHJpbnQgIlJ1bm5pbmcgIiAu
ICRkaXIgLiAkdGVzdCAuICJcbiI7CisKKyAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7Cisg
ICAgICAgIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOworICAgICAgICAkRU5We0RZTERf
RlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7CisgICAgICAgICRFTlZ7V0VCS0lUX1VOU0VU
X0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gIllFUyI7CisgICAgICAgIG15ICRhcGlUZXN0ZXJQYXRo
ID0gIiRwcm9kdWN0RGlyL1Rlc3RXZWJLaXRBUEkiOworICAgICAgICBpZiAoIWlzVGlnZXIoKSAm
JiBhcmNoaXRlY3R1cmUoKSkgeworICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICIt
IiAuIGFyY2hpdGVjdHVyZSgpLCAkYXBpVGVzdGVyUGF0aCwgJHRlc3QsIEBBUkdWOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAkYXBpVGVzdGVyUGF0aCwgJHRl
c3QsIEBBUkdWOworICAgICAgICB9CisgICAgfQorfQorCitzdWIgYnVpbGRUZXN0VG9vbCgpCit7
CisgICAgY2hkaXJXZWJLaXQoKTsKKworICAgIG15ICRidWlsZFRlc3RUb29sID0gICJidWlsZC1h
cGktdGVzdHMiOworICAgIHByaW50IFNUREVSUiAiUnVubmluZyAkYnVpbGRUZXN0VG9vbFxuIjsK
KworICAgIGxvY2FsICpERVZOVUxMOworICAgIG15ICgkY2hpbGRJbiwgJGNoaWxkT3V0LCAkY2hp
bGRFcnIpOworICAgIGlmICgkcXVpZXQpIHsKKyAgICAgICAgb3BlbihERVZOVUxMLCAiPiIsIEZp
bGU6OlNwZWMtPmRldm51bGwoKSkgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAvZGV2L251bGwiOwor
ICAgICAgICAkY2hpbGRPdXQgPSAiPiZERVZOVUxMIjsKKyAgICAgICAgJGNoaWxkRXJyID0gIj4m
REVWTlVMTCI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgIyBXaGVuIG5vdCBxdWlldCwgbGV0IHRo
ZSBjaGlsZCB1c2Ugb3VyIHN0ZG91dC9zdGRlcnIuCisgICAgICAgICRjaGlsZE91dCA9ICI+JlNU
RE9VVCI7CisgICAgICAgICRjaGlsZEVyciA9ICI+JlNUREVSUiI7CisgICAgfQorCisgICAgbXkg
QGFyZ3MgPSBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCk7CisgICAgbXkgJGJ1aWxkUHJvY2Vz
cyA9IG9wZW4zKCRjaGlsZEluLCAkY2hpbGRPdXQsICRjaGlsZEVyciwgIldlYktpdFRvb2xzL1Nj
cmlwdHMvJGJ1aWxkVGVzdFRvb2wiLCBAYXJncykgb3IgZGllICJGYWlsZWQgdG8gcnVuICIgLiAk
YnVpbGRUZXN0VG9vbDsKKyAgICBjbG9zZSgkY2hpbGRJbik7CisgICAgd2FpdHBpZCAkYnVpbGRQ
cm9jZXNzLCAwOworICAgIG15ICRidWlsZFJlc3VsdCA9ICQ/OworICAgIGNsb3NlKCRjaGlsZE91
dCk7CisgICAgY2xvc2UoJGNoaWxkRXJyKTsKKworICAgIGNsb3NlIERFVk5VTEwgaWYgKCRxdWll
dCk7CisKKyAgICBpZiAoJGJ1aWxkUmVzdWx0KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiQ29t
cGlsaW5nIFRlc3RXZWJLaXRBUEkgZmFpbGVkIVxuIjsKKyAgICAgICAgZXhpdCBleGl0U3RhdHVz
KCRidWlsZFJlc3VsdCk7CisgICAgfQorfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9v
bHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtVXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFBsYXRmb3JtVXRpbGl0aWVzX2gKKyNkZWZpbmUgUGxhdGZvcm1VdGlsaXRpZXNf
aAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKKy8vIFJ1
bnMgYSBwbGF0Zm9ybSBydW5sb29wIHVudGlsIHRoZSAnZG9uZScgaXMgdHJ1ZS4gCit2b2lkIHJ1
bihib29sKiBkb25lKTsKKworV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hh
ciogZmlsZSk7CisKK30gLy8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKKworI2VuZGlmIC8vIFBsYXRmb3JtVXRpbGl0aWVzX2gKSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCisjZGVm
aW5lIFBsYXRmb3JtV2ViVmlld19oCisKKyNpZiBfX0FQUExFX18KKyNpZiBfX09CSkNfXworQGNs
YXNzIFdLVmlldzsKK0BjbGFzcyBOU1dpbmRvdzsKKyNlbHNlCitjbGFzcyBXS1ZpZXc7CitjbGFz
cyBOU1dpbmRvdzsKKyNlbmRpZgordHlwZWRlZiBXS1ZpZXcqIFBsYXRmb3JtV0tWaWV3OwordHlw
ZWRlZiBOU1dpbmRvdyogUGxhdGZvcm1XaW5kb3c7CisjZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBk
ZWZpbmVkKF9XSU4zMikKK3R5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwordHlwZWRl
ZiBIV05EIFBsYXRmb3JtV2luZG93OworI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVdlYlZp
ZXcoV0tQYWdlTmFtZXNwYWNlUmVmKTsKKyAgICB+UGxhdGZvcm1XZWJWaWV3KCk7CisKKyAgICBX
S1BhZ2VSZWYgcGFnZSgpOworICAgIFBsYXRmb3JtV0tWaWV3IHBsYXRmb3JtVmlldygpIHsgcmV0
dXJuIG1fdmlldzsgfQorICAgIHZvaWQgcmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCk7CisgICAgdm9pZCBmb2N1cygpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtV0tW
aWV3IG1fdmlldzsKKyAgICBQbGF0Zm9ybVdpbmRvdyBtX3dpbmRvdzsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBsYXRmb3JtV2ViVmlld19oCkluZGV4
OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1N0cmluZ0Z1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvU3RyaW5nRnVuY3Rpb25zLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1N0cmluZ0Z1bmN0aW9ucy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyaW5nRnVu
Y3Rpb25zX2gKKyNkZWZpbmUgU3RyaW5nRnVuY3Rpb25zX2gKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1N0cmluZy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdDRi5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMQ0YuaD4KKyNpbmNs
dWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXVFIgewor
CisvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucworCitpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0b0NGKEpTU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICByZXR1cm4gUmV0YWluUHRyPENGU3Ry
aW5nUmVmPihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZygwLCBzdHJpbmcpKTsKK30KKwor
aW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdG9DRihXS1N0cmluZ1JlZiBzdHJpbmcpCit7
CisgICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgV0tTdHJpbmdDb3B5
Q0ZTdHJpbmcoMCwgc3RyaW5nKSk7Cit9CisKK2lubGluZSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHRv
Q0YoV0tVUkxSZWYgdXJsKQoreworICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0
Q0YsIFdLVVJMQ29weUNGVVJMKDAsIHVybCkpOworfQorCitpbmxpbmUgUmV0YWluUHRyPENGVVJM
UmVmPiB0b0NGKGNvbnN0IFdLUmV0YWluUHRyPFdLVVJMUmVmPiYgdXJsKQoreworICAgIHJldHVy
biB0b0NGKHVybC5nZXQoKSk7Cit9CisKK2lubGluZSBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
dG9XSyhKU1N0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyh0b0NGKHN0cmluZyku
Z2V0KCkpKTsKK30KKworaW5saW5lIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0b1dLKEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJpbmcpCit7CisgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyh0b0NGKHN0cmlu
Zy5nZXQoKSkuZ2V0KCkpKTsKK30KKworaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0
b0pTKFdLU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyh0b0NGKHN0cmluZykuZ2V0
KCkpKTsKK30KKworaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQoreworICAgIHJldHVybiB0b0pTKHN0cmlu
Zy5nZXQoKSk7Cit9CisKKy8vIFN0cmVhbWluZyBmdW5jdGlvbnMKKworaW5saW5lIHN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgQ0ZTdHJpbmdSZWYgc3RyaW5nUmVm
KQoreworICAgIGlmICghc3RyaW5nUmVmKQorICAgICAgICByZXR1cm4gb3V0OworICAgIENGSW5k
ZXggYnVmZmVyTGVuZ3RoID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZUZvckVuY29kaW5nKENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZ1JlZiksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkgKyAxOworICAg
IFZlY3RvcjxjaGFyPiBidWZmZXIoYnVmZmVyTGVuZ3RoKTsKKyAgICBpZiAoIUNGU3RyaW5nR2V0
Q1N0cmluZyhzdHJpbmdSZWYsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KSkKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICByZXR1cm4gb3V0IDw8IGJ1
ZmZlci5kYXRhKCk7Cit9CisKK2lubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpv
c3RyZWFtJiBvdXQsIGNvbnN0IFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHN0cmluZ1JlZikKK3sK
KyAgICByZXR1cm4gb3V0IDw8IHN0cmluZ1JlZi5nZXQoKTsKK30KKworaW5saW5lIHN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgV0tTdHJpbmdSZWYgc3RyaW5nUmVm
KQoreworICAgIGlmICghc3RyaW5nUmVmKQorICAgICAgICByZXR1cm4gb3V0OworICAgIHJldHVy
biBvdXQgPDwgdG9DRihzdHJpbmdSZWYpOworfQorCitpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4m
IHN0cmluZ1JlZikKK3sKKyAgICByZXR1cm4gb3V0IDw8IHN0cmluZ1JlZi5nZXQoKTsKK30KKwor
Ly8gVVJMIGNyZWF0aW9uCisKK2lubGluZSBXS1VSTFJlZiBjcmVhdGVXS1VSTChjb25zdCBjaGFy
KiBwYXRoT3JVUkwpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoT3JVUkxDRlN0
cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKDAsIHBhdGhPclVSTCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKKyAg
ICBpZiAoQ0ZTdHJpbmdIYXNQcmVmaXgocGF0aE9yVVJMQ0ZTdHJpbmcuZ2V0KCksIENGU1RSKCJo
dHRwOi8vIikpIHx8IENGU3RyaW5nSGFzUHJlZml4KHBhdGhPclVSTENGU3RyaW5nLmdldCgpLCBD
RlNUUigiaHR0cHM6Ly8iKSkpCisgICAgICAgIGNmVVJMLmFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
U3RyaW5nKDAsIHBhdGhPclVSTENGU3RyaW5nLmdldCgpLCAwKSk7CisgICAgZWxzZQorI2lmIFBM
QVRGT1JNKFdJTikKKyAgICAgICAgY2ZVUkwuYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lz
dGVtUGF0aCgwLCBwYXRoT3JVUkxDRlN0cmluZy5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgZmFsc2UpKTsKKyNlbHNlCisgICAgICAgIGNmVVJMLmFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgcGF0aE9yVVJMQ0ZTdHJpbmcuZ2V0KCksIGtDRlVSTFBPU0lYUGF0
aFN0eWxlLCBmYWxzZSkpOworI2VuZGlmCisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aENGVVJM
KGNmVVJMLmdldCgpKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIFN0
cmluZ0Z1bmN0aW9uc19oCkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3QuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXN0X2gKKyNkZWZpbmUgVGVzdF9o
CisKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCisvLyBBYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgYWxsIHRlc3RzIGluaGVyaXQgZnJv
bS4KK2NsYXNzIFRlc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgflRlc3QoKSB7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOworICAgIHN0ZDo6c3RyaW5nIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ZXN0Q2xhc3NUeT4gY2xhc3MgUmVnaXN0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVnaXN0
ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkucmVnaXN0ZXJDcmVhdGVUZXN0RnVuY3Rpb24oaWRl
bnRpZmllciwgUmVnaXN0ZXI6OmNyZWF0ZSk7CisgICAgICAgIH0KKyAgICAKKyAgICBwcml2YXRl
OgorICAgICAgICBzdGF0aWMgVGVzdCogY3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlm
aWVyKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXN0Q2xhc3NUeShpZGVu
dGlmaWVyKTsKKyAgICAgICAgfQorICAgIH07CisKK3Byb3RlY3RlZDoKKyAgICBUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgIHsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBtX2lkZW50aWZpZXI7Cit9Owor
CisjZGVmaW5lIFRFU1RfQ0xBU1NfTkFNRSh0ZXN0Q2FzZU5hbWUpIHRlc3RDYXNlTmFtZSMjX1Rl
c3QKKyNkZWZpbmUgVEVTVF9SRUdJU1RSQVJfTkFNRSh0ZXN0Q2FzZU5hbWUpIHRlc3RDYXNlTmFt
ZSMjX1JlZ2lzdHJhcgorCisvLyBVc2UgdGhpcyB0byBkZWZpbmUgYSBuZXcgdGVzdC4KKyNkZWZp
bmUgVEVTVCh0ZXN0Q2FzZU5hbWUpIFwKKyAgICBjbGFzcyBURVNUX0NMQVNTX05BTUUodGVzdENh
c2VOYW1lKSA6IHB1YmxpYyBUZXN0IHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICBURVNUX0NM
QVNTX05BTUUodGVzdENhc2VOYW1lKShjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikgXAor
ICAgICAgICAgICAgOiBUZXN0KGlkZW50aWZpZXIpIFwKKyAgICAgICAgeyBcCisgICAgICAgIH0g
XAorICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuKCk7IFwKKyAgICB9OyBcCisgICAgXAorICAgIHN0
YXRpYyBUZXN0OjpSZWdpc3RlcjxURVNUX0NMQVNTX05BTUUodGVzdENhc2VOYW1lKT4gVEVTVF9S
RUdJU1RSQVJfTkFNRSh0ZXN0Q2FzZU5hbWUpKCN0ZXN0Q2FzZU5hbWUpOyBcCisgICAgXAorICAg
IHZvaWQgVEVTVF9DTEFTU19OQU1FKHRlc3RDYXNlTmFtZSk6OnJ1bigpCisKKyNkZWZpbmUgVEVT
VF9BU1NFUlQoZXhwcmVzc2lvbikgZG8geyBpZiAoIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRy
b2xsZXI6OnNoYXJlZCgpLnRlc3RGYWlsZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lv
bik7IHJldHVybjsgfSB9IHdoaWxlICgwKQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CisKKyNlbmRpZiAvLyBUZXN0X2gKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJUHJlZml4LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPFdl
YktpdDIvV2ViS2l0Mi5oPgorCisjaWYgX19BUFBMRV9fCisKKyNpZmRlZiBfX09CSkNfXworI2lt
cG9ydCA8Q29jb2EvQ29jb2EuaD4KKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiVGVzdHNDb250cm9sbGVy
LmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGFzc2VydC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1Rlc3RzQ29udHJvbGxl
ciYgVGVzdHNDb250cm9sbGVyOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBUZXN0c0NvbnRyb2xs
ZXImIHNoYXJlZCA9ICpuZXcgVGVzdHNDb250cm9sbGVyOworICAgIHJldHVybiBzaGFyZWQ7Cit9
CisKK1Rlc3RzQ29udHJvbGxlcjo6VGVzdHNDb250cm9sbGVyKCkKKyAgICA6IG1fdGVzdEZhaWxl
ZChmYWxzZSkKKyAgICAsIG1fY3VycmVudFRlc3QoMCkKK3sKK30KKworYm9vbCBUZXN0c0NvbnRy
b2xsZXI6OnJ1blRlc3ROYW1lZChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICBDcmVhdGVUZXN0RnVuY3Rpb24gY3JlYXRlVGVzdEZ1bmN0aW9uID0gbV9jcmVhdGVUZXN0RnVu
Y3Rpb25zW2lkZW50aWZpZXJdOworICAgIGlmICghY3JlYXRlVGVzdEZ1bmN0aW9uKSB7CisgICAg
ICAgIHByaW50ZigiRVJST1I6IFRlc3Qgbm90IGZvdW5kIC0gJXNcbiIsIGlkZW50aWZpZXIuY19z
dHIoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRUZXN0
ID0gY3JlYXRlVGVzdEZ1bmN0aW9uKGlkZW50aWZpZXIpOworICAgIG1fY3VycmVudFRlc3QtPnJ1
bigpOworCisgICAgaWYgKCFtX3Rlc3RGYWlsZWQpCisgICAgICAgIHByaW50ZigiUEFTUzogJXNc
biIsIG1fY3VycmVudFRlc3QtPm5hbWUoKS5jX3N0cigpKTsKKworICAgIGRlbGV0ZSBtX2N1cnJl
bnRUZXN0OworICAgIG1fY3VycmVudFRlc3QgPSAwOworCisgICAgcmV0dXJuICFtX3Rlc3RGYWls
ZWQ7Cit9CisKK3ZvaWQgVGVzdHNDb250cm9sbGVyOjp0ZXN0RmFpbGVkKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIG1fdGVzdEZhaWxlZCA9
IHRydWU7CisgICAgcHJpbnRmKCJGQUlMOiAlc1xuXHQlcyAoJXM6JWQpXG4iLCBtX2N1cnJlbnRU
ZXN0LT5uYW1lKCkuY19zdHIoKSwgbWVzc2FnZSwgZmlsZSwgbGluZSk7Cit9CisKK3ZvaWQgVGVz
dHNDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0ZVRlc3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmlu
ZyYgaWRlbnRpZmllciwgQ3JlYXRlVGVzdEZ1bmN0aW9uIGNyZWF0ZVRlc3RGdW5jdGlvbikKK3sK
KyAgICBtX2NyZWF0ZVRlc3RGdW5jdGlvbnNbaWRlbnRpZmllcl0gPSBjcmVhdGVUZXN0RnVuY3Rp
b247Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250cm9sbGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlc3RzQ29udHJvbGxlcl9oCisjZGVm
aW5lIFRlc3RzQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c3RyaW5n
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFRlc3Q7CisKK2NsYXNzIFRl
c3RzQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFRlc3RzQ29udHJvbGxlciYgc2hh
cmVkKCk7CisKKyAgICBib29sIHJ1blRlc3ROYW1lZChjb25zdCBzdGQ6OnN0cmluZyYpOworCisg
ICAgLy8gQ2FsbGVkIGJ5IHRoZSB0ZXN0cyB0aGVtc2VsdmVzLgorICAgIHZvaWQgdGVzdEZhaWxl
ZChjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSk7CisKKyAg
ICB0eXBlZGVmIFRlc3QqICgqQ3JlYXRlVGVzdEZ1bmN0aW9uKShjb25zdCBzdGQ6OnN0cmluZyYp
OworICAgIHZvaWQgcmVnaXN0ZXJDcmVhdGVUZXN0RnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcm
LCBDcmVhdGVUZXN0RnVuY3Rpb24pOworCitwcml2YXRlOgorICAgIFRlc3RzQ29udHJvbGxlcigp
OworICAgIH5UZXN0c0NvbnRyb2xsZXIoKTsKKworICAgIGJvb2wgbV90ZXN0RmFpbGVkOworICAg
IFRlc3QqIG1fY3VycmVudFRlc3Q7CisKKyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgQ3JlYXRl
VGVzdEZ1bmN0aW9uPiBtX2NyZWF0ZVRlc3RGdW5jdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBUZXN0c0NvbnRyb2xsZXJfaApJbmRleDogV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLy8g
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCitIRUFERVJfU0VBUkNIX1BBVEhTID0g
Rm9yd2FyZGluZ0hlYWRlcnM7CitGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChTWVNURU1fTElC
UkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzICQoU1lTVEVN
X0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL0Zy
YW1ld29ya3MgJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZy
YW1ld29yay9GcmFtZXdvcmtzOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IEVOQUJM
RV9EQVNIQk9BUkRfU1VQUE9SVCBXRUJLSVRfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9V0VCS0lUX1ZF
UlNJT05fTEFURVNUOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYKK1BSRUJJTkRJ
TkcgPSBOTworR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OQorR0NDX1BSRUNPTVBJTEVf
UFJFRklYX0hFQURFUiA9IFlFUworR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUwor
R0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTCitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVMKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk8KK1dBUk5JTkdf
Q0ZMQUdTID0gLVdhbGwgLVcgLVduby11bnVzZWQtcGFyYW1ldGVyCitMSU5LRVJfRElTUExBWVNf
TUFOR0xFRF9OQU1FUyA9IFlFUzsKKworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9
ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKKworLy8gVXNlIEdDQyA0LjIgd2l0aCBYY29k
ZSAzLjEsIHdoaWNoIGluY2x1ZGVzIEdDQyA0LjIgYnV0IGRlZmF1bHRzIHRvIEdDQyA0LjAuCisv
LyBOb3RlIHRoYXQgWGNvZGUgdmVyc2lvbnMgYXMgbmV3IGFzIDMuMS4yIHVzZSBYQ09ERV9WRVJT
SU9OX0FDVFVBTCBmb3IgdGhlIG1pbm9yIHZlcnNpb24KKy8vIG51bWJlci4gIE5ld2VyIHZlcnNp
b25zIG9mIFhjb2RlIHVzZSBYQ09ERV9WRVJTSU9OX01JTk9SIGZvciB0aGUgbWlub3IgdmVyc2lv
biwgYW5kCisvLyBYQ09ERV9WRVJTSU9OX0FDVFVBTCBmb3IgdGhlIGZ1bGwgdmVyc2lvbiBudW1i
ZXIuCitUQVJHRVRfR0NDX1ZFUlNJT04gPSAkKFRBUkdFVF9HQ0NfVkVSU0lPTl8kKFRBUkdFVF9N
QUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitUQVJHRVRfR0NDX1ZFUlNJT05fID0gJChUQVJHRVRf
R0NDX1ZFUlNJT05fMTA0MCk7CitUQVJHRVRfR0NDX1ZFUlNJT05fMTA0MCA9IEdDQ180MDsKK1RB
UkdFVF9HQ0NfVkVSU0lPTl8xMDUwID0gJChUQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8kKFhDT0RF
X1ZFUlNJT05fTUlOT1IpKTsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8xMDUwXyA9ICQoVEFSR0VUX0dD
Q19WRVJTSU9OXzEwNTBfJChYQ09ERV9WRVJTSU9OX0FDVFVBTCkpOworVEFSR0VUX0dDQ19WRVJT
SU9OXzEwNTBfMDMxMCA9IEdDQ180MjsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8xMDUwXzAzMjAgPSBH
Q0NfNDI7CitUQVJHRVRfR0NDX1ZFUlNJT05fMTA2MCA9IEdDQ180MjsKK1RBUkdFVF9HQ0NfVkVS
U0lPTl8xMDcwID0gTExWTV9HQ0NfNDI7CisKK0dDQ19WRVJTSU9OID0gJChHQ0NfVkVSU0lPTl8k
KFRBUkdFVF9HQ0NfVkVSU0lPTikpOworR0NDX1ZFUlNJT05fR0NDXzQwID0gNC4wOworR0NDX1ZF
UlNJT05fR0NDXzQyID0gNC4yOworR0NDX1ZFUlNJT05fTExWTV9HQ0NfNDIgPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm1nY2M0MjsKKworLy8gSWYgdGhlIHRhcmdldCBNYWMgT1MgWCB2ZXJzaW9u
IGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IE1hYyBPUyBYIHZlcnNpb24gdGhlbiB3ZSdsbCB3
YW50IHRvIGJ1aWxkIHVzaW5nIHRoZSB0YXJnZXQgdmVyc2lvbidzIFNESy4KK1NES1JPT1QgPSAk
KFNES1JPT1RfJChNQUNfT1NfWF9WRVJTSU9OX01BSk9SKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SKSk7CitTREtST09UXzEwNTBfMTA0MCA9IG1hY29zeDEwLjQ7CitTREtST09UXzEw
NjBfMTA0MCA9IG1hY29zeDEwLjQ7CitTREtST09UXzEwNjBfMTA1MCA9IG1hY29zeDEwLjU7CitT
REtST09UXzEwNzBfMTA0MCA9IG1hY29zeDEwLjQ7CitTREtST09UXzEwNzBfMTA1MCA9IG1hY29z
eDEwLjU7CitTREtST09UXzEwNzBfMTA2MCA9IG1hY29zeDEwLjY7CisKK1dFQktJVF9VTUJSRUxM
QV9GUkFNRVdPUktTX0RJUiA9ICQoTkVYVF9ST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzOworV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSID0gJChXRUJLSVRfVU1CUkVMTEFfRlJBTUVXT1JLU19ESVIpL1dl
YkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
Ly8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiQmFz
ZS54Y2NvbmZpZyIKKworQVJDSFMgPSAkKEFSQ0hTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05f
TUFKT1IpKTsKK0FSQ0hTXyA9ICQoQVJDSFNfMTA0MCk7CitBUkNIU18xMDQwID0gJChOQVRJVkVf
QVJDSCk7CitBUkNIU18xMDUwID0gJChOQVRJVkVfQVJDSCk7CitBUkNIU18xMDYwID0gJChBUkNI
U19TVEFOREFSRF8zMl82NF9CSVQpOworQVJDSFNfMTA3MCA9ICQoQVJDSFNfU1RBTkRBUkRfMzJf
NjRfQklUKTsKKworT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKworTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gJChNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfJChUQVJHRVRfTUFDX09TX1hfVkVS
U0lPTl9NQUpPUikpCitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfID0gMTAuNDsKK01BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVF8xMDQwID0gMTAuNDsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8x
MDUwID0gMTAuNTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8xMDYwID0gMTAuNjsKK01BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVF8xMDcwID0gMTAuNzsKKworV0VCS0lUX1VNQlJFTExBX0ZSQU1F
V09SS1NfRElSID0gJChCVUlMVF9QUk9EVUNUU19ESVIpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8v
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCitQUk9EVUNU
X05BTUUgPSBUZXN0V2ViS2l0QVBJCitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUwor
R0NDX1BSRUZJWF9IRUFERVIgPSBUZXN0V2ViS2l0QVBJUHJlZml4LmgKSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0FTQ0lJQ1R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9BU0NJSUNUeXBlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9BU0NJSUNUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BU0NJSUNUeXBlLmg+CkluZGV4OiBXZWJL
aXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Bc3NlcnRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXNzZXJ0aW9ucy5oPgpJbmRleDog
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXRvbWljcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0F0b21pY3MuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0F0b21pY3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0F0b21pY3MuaD4KSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Zhc3RNYWxsb2MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9GYXN0TWFsbG9jLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9GYXN0TWFsbG9jLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GYXN0TWFsbG9jLmg+CkluZGV4OiBXZWJL
aXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9HZXRQdHIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9HZXRQdHIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL0dldFB0ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0UHRyLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaE1hcC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvSGFzaE1hcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGFzaE1hcC5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hTZXQuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L0hhc2hTZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hhc2hTZXQuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL0hhc2hUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9I
YXNoVHJhaXRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IYXNoVHJhaXRzLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9Mb2NrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Mb2NrZXIuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0xvY2tl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TG9ja2VyLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTWFpblRocmVh
ZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
TWFpblRocmVhZC5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvTWF0aEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL01hdGhFeHRyYXMuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL01hdGhF
eHRyYXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL01hdGhFeHRyYXMuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL05vbmNvcHlhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uY29weWFibGUuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L05vbmNvcHlhYmxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Ob25jb3B5YWJsZS5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duUHRyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9P
d25QdHIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL093blB0ci5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvT3duUHRyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duUHRyQ29tbW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9P
d25QdHJDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1Bhc3NPd25QdHIuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NPd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzT3duUHRyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QYXNzT3duUHRyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9QYXNzT3duUHRyLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc1JlZlB0ci5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvUGFzc1JlZlB0ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUGFzc1JlZlB0ci5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmVmQ291bnRlZC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvUmVmQ291bnRlZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUmVmQ291bnRlZC5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmVmUHRyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1JlZlB0ci5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvUmV0YWluUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmV0YWluUHRyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9S
ZXRhaW5QdHIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1JldGFpblB0ci5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nRXh0cmFzLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9TdHJpbmdFeHRyYXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cmluZ0V4dHJhcy5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkU2FmZVNoYXJlZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Ro
cmVhZFNhZmVTaGFyZWQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFNhZmVTaGFyZWQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZFNhZmVTaGFyZWQu
aD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZGluZy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRpbmcu
aD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CkluZGV4OiBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9WZWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9W
ZWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVmVjdG9yLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI5OCBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwlj
bGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ1OworCW9iamVjdHMgPSB7CisKKy8q
IEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCUJDMTMxODg1MTE3MTE0QjYwMEI2OTcy
NyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxODg0MTE3MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0
aWxpdGllc01hYy5tbSAqLzsgfTsKKwkJQkMxMzFBOUIxMTcxMzE2OTAwQjY5NzI3IC8qIG1haW4u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUE5
QTExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSAqLzsgfTsKKwkJQkMxMzFBQTkxMTcxMzFGQzAw
QjY5NzI3IC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250
cm9sbGVyLmNwcCAqLzsgfTsKKwkJQkM5MDk1NUQxMjU1NDhBQTAwMDgzNzU2IC8qIFBsYXRmb3Jt
V2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTA5NTVDMTI1NTQ4QUEwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi87
IH07CisJCUJDOTA5NjRDMTI1NTYxQkYwMDA4Mzc1NiAvKiBWZWN0b3IxLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTA5NjRCMTI1NTYxQkYwMDA4
Mzc1NiAvKiBWZWN0b3IxLmNwcCAqLzsgfTsKKwkJQkM5MDk2NEUxMjU1NjIwQzAwMDgzNzU2IC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTA5NjREMTI1NTYyMEMwMDA4Mzc1NiAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCUJDOTA5NzdBMTI1NTcxQUIwMDA4Mzc1NiAvKiBCYXNp
Y1Rlc3QxLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOTA5Nzc5MTI1NTcxQUIwMDA4Mzc1NiAvKiBCYXNpY1Rlc3QxLmNwcCAqLzsgfTsKKwkJQkM5
MDk3ODQxMjU1NzFDRjAwMDgzNzU2IC8qIGJhc2ljLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwOTc3ODEyNTU3MUFCMDAwODM3
NTYgLyogYmFzaWMtMS5odG1sICovOyB9OworCQlCQ0E2MURCNTExNzAwRUZEMDA0NjBEMUUgLyog
V2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E2MURCNDExNzAwRUZEMDA0NjBEMUUgLyogV2ViS2l0Mi5mcmFtZXdvcmsg
Ki87IH07CisJCUJDQjlFOUYxMTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5RTlGMDEx
MjM1QkRFMDBBMTM3RTAgLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OworLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQk4REQ3NkY5RTA0ODZBQTc2MDBEOTZCNUUgLyogQ29weUZpbGVzICovID0geworCQkJ
aXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CisJ
CQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0g
MDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOworCQl9OworCQlCQ0I5RjRGQjExMjM4NEMwMDBBMTM3RTAgLyogQ29weSBSZXNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAiIjsKKwkJCWRzdFN1YmZvbGRl
clNwZWMgPSA3OworCQkJZmlsZXMgPSAoCisJCQkJQkM5MDk3ODQxMjU1NzFDRjAwMDgzNzU2IC8q
IGJhc2ljLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkNv
cHkgUmVzb3VyY2VzIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJOERENzZGQTEwNDg2QUE3NjAwRDk2
QjVFIC8qIFRlc3RXZWJLaXRBUEkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IFRlc3RXZWJLaXRBUEk7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCUJDMTMxODgzMTE3MTE0QTgwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyog
UGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMxMzFBOUExMTcxMzE2OTAwQjY5NzI3IC8qIG1haW4ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzEzMUE5RTExNzEzMTdDMDBCNjk3MjcgLyogVGVzdFdlYktpdEFQSVByZWZpeC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0V2ViS2l0QVBJUHJlZml4Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTMxQUE4MTE3MTMxRkMwMEI2OTcyNyAv
KiBUZXN0c0NvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGgg
PSBUZXN0c0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzkw
OTUxQjEyNTUzM0Q3MDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtV2ViVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQzkwOTUxQzEyNTUzM0Q3MDAwODM3NTYgLyogU3RyaW5nRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0Z1bmN0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzkwOTU1QzEyNTU0OEFBMDAwODM3NTYgLyogUGxh
dGZvcm1XZWJWaWV3TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1XZWJWaWV3TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzkwOTU3RTEyNTU0Q0Y5MDAwODM3NTYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzkwOTU3RjEyNTU0Q0Y5MDAwODM3NTYgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRl
c3RXZWJLaXRBUEkueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVGVz
dFdlYktpdEFQSS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5MDk2
NEIxMjU1NjFCRjAwMDgzNzU2IC8qIFZlY3RvcjEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gVmVjdG9yMS5jcHA7IHBhdGggPSBXVEYvVmVjdG9yMS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA5NjREMTI1NTYyMEMwMDA4Mzc1NiAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yazsgcGF0aCA9IC4uLy4uL1dlYktpdEJ1aWxkL0RlYnVnL0phdmFTY3JpcHRDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCQzkwOTc3ODEyNTU3MUFC
MDAwODM3NTYgLyogYmFzaWMtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImJh
c2ljLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA5Nzc5MTI1NTcx
QUIwMDA4Mzc1NiAvKiBCYXNpY1Rlc3QxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2ljVGVzdDEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
Q0E2MURCNDExNzAwRUZEMDA0NjBEMUUgLyogV2ViS2l0Mi5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
cGF0aCA9IFdlYktpdDIuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RzQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAgLyogVGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDQjlFOUYwMTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
Ky8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk4REQ3NkY5QjA0ODZBQTc2MDBEOTZCNUUgLyog
RnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUJDQjlFOUYx
MTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQlCQ0E2MURCNTExNzAwRUZEMDA0NjBEMUUgLyogV2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKKwkJCQlCQzkwOTY0RTEyNTU2MjBDMDAwODM3NTYgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTA4RkI3Nzk0
RkU4NDE1NURDMDJBQUMwNyAvKiBUZXN0V2ViS2l0QVBJICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwOEZCNzc5NUZFODQxNTVEQzAyQUFDMDcgLyogU291
cmNlICovLAorCQkJCUJDQjlFQjY2MTEyMzY2RDgwMEExMzdFMCAvKiBUZXN0cyAqLywKKwkJCQlC
QzkwOTU3RDEyNTU0Q0VBMDAwODM3NTYgLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJMDhGQjc3
OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAq
LywKKwkJCQkxQUI2NzRBREZFOUQ1NEI1MTFDQTJDQkIgLyogUHJvZHVjdHMgKi8sCisJCQkpOwor
CQkJbmFtZSA9IFRlc3RXZWJLaXRBUEk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkwOEZCNzc5NUZFODQxNTVEQzAyQUFDMDcgLyogU291cmNlICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQ0E2MUMzQTExNzAwQjk0MDA0NjBEMUUg
LyogbWFjICovLAorCQkJCUJDMTMxQTlFMTE3MTMxN0MwMEI2OTcyNyAvKiBUZXN0V2ViS2l0QVBJ
UHJlZml4LmggKi8sCisJCQkJQkMxMzE4ODMxMTcxMTRBODAwQjY5NzI3IC8qIFBsYXRmb3JtVXRp
bGl0aWVzLmggKi8sCisJCQkJQkM5MDk1MUIxMjU1MzNENzAwMDgzNzU2IC8qIFBsYXRmb3JtV2Vi
Vmlldy5oICovLAorCQkJCUJDOTA5NTFDMTI1NTMzRDcwMDA4Mzc1NiAvKiBTdHJpbmdGdW5jdGlv
bnMuaCAqLywKKwkJCQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAgLyogVGVzdC5oICovLAorCQkJ
CUJDMTMxQUE4MTE3MTMxRkMwMEI2OTcyNyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwICovLAorCQkJ
CUJDQjlFN0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0c0NvbnRyb2xsZXIuaCAqLywKKwkJCSk7
CisJCQluYW1lID0gU291cmNlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MDhGQjc3OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJh
cmllcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkNC
OUU5RjAxMTIzNUJERTAwQTEzN0UwIC8qIENvY29hLmZyYW1ld29yayAqLywKKwkJCQlCQzkwOTY0
RDEyNTU2MjBDMDAwODM3NTYgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAorCQkJCUJD
QTYxREI0MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayAqLywKKwkJCSk7CisJ
CQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyI7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQkxQUI2NzRBREZFOUQ1NEI1MTFDQTJDQkIgLyogUHJv
ZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCThE
RDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovLAorCQkJKTsKKwkJCW5h
bWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUJDOTA5
NTdEMTI1NTRDRUEwMDA4Mzc1NiAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkM5MDk1N0UxMjU1NENGOTAwMDgzNzU2IC8q
IEJhc2UueGNjb25maWcgKi8sCisJCQkJQkM5MDk1N0YxMjU1NENGOTAwMDgzNzU2IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQlCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVz
dFdlYktpdEFQSS54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzkwOTY0MTEyNTU2MTYwMDAw
ODM3NTYgLyogV2ViS2l0MiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNlcyAqLywKKwkJCQlC
QzkwOTc3OTEyNTU3MUFCMDAwODM3NTYgLyogQmFzaWNUZXN0MS5jcHAgKi8sCisJCQkpOworCQkJ
cGF0aCA9IFdlYktpdDI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzkw
OTY0NjEyNTU2MTg5MDAwODM3NTYgLyogV1RGICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCQzkwOTY0QjEyNTU2MUJGMDAwODM3NTYgLyogVmVjdG9yMS5j
cHAgKi8sCisJCQkpOworCQkJbmFtZSA9IFdURjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUJDOTA5NzdCMTI1NTcxQUUwMDA4Mzc1NiAvKiBSZXNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDOTA5Nzc4MTI1NTcxQUIw
MDA4Mzc1NiAvKiBiYXNpYy0xLmh0bWwgKi8sCisJCQkpOworCQkJbmFtZSA9IFJlc291cmNlczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUJDQTYxQzNBMTE3MDBCOTQwMDQ2
MEQxRSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUJDMTMxQTlBMTE3MTMxNjkwMEI2OTcyNyAvKiBtYWluLm1tICovLAorCQkJCUJDMTMxODg0
MTE3MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSAqLywKKwkJCQlCQzkw
OTU1QzEyNTU0OEFBMDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tICovLAorCQkJKTsK
KwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQ0I5
RUI2NjExMjM2NkQ4MDBBMTM3RTAgLyogVGVzdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUJDOTA5NjQxMTI1NTYxNjAwMDA4Mzc1NiAvKiBXZWJLaXQy
ICovLAorCQkJCUJDOTA5NjQ2MTI1NTYxODkwMDA4Mzc1NiAvKiBXVEYgKi8sCisJCQkpOworCQkJ
cGF0aCA9IFRlc3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisJCThERDc2Rjk2MDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovID0geworCQkJ
aXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFERUI5
Mjc0MDg3MzNERDQwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiVGVzdFdlYktpdEFQSSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk4
REQ3NkY5OTA0ODZBQTc2MDBEOTZCNUUgLyogU291cmNlcyAqLywKKwkJCQk4REQ3NkY5QjA0ODZB
QTc2MDBEOTZCNUUgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk4REQ3NkY5RTA0ODZBQTc2MDBEOTZC
NUUgLyogQ29weUZpbGVzICovLAorCQkJCUJDQjlGNEZCMTEyMzg0QzAwMEExMzdFMCAvKiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVu
ZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gVGVzdFdlYktpdEFQSTsKKwkJCXByb2R1Y3RJ
bnN0YWxsUGF0aCA9ICIkKEhPTUUpL2JpbiI7CisJCQlwcm9kdWN0TmFtZSA9IFRlc3RXZWJLaXRB
UEk7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIFRl
c3RXZWJLaXRBUEkgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBl
LnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQkwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDFERUI5Mjc4MDg3MzNERDQwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlRlc3RXZWJLaXRBUEkiICovOworCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4xIjsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3Mg
PSAxOworCQkJbWFpbkdyb3VwID0gMDhGQjc3OTRGRTg0MTU1REMwMkFBQzA3IC8qIFRlc3RXZWJL
aXRBUEkgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsK
KwkJCXRhcmdldHMgPSAoCisJCQkJOERENzZGOTYwNDg2QUE3NjAwRDk2QjVFIC8qIFRlc3RXZWJL
aXRBUEkgKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThERDc2Rjk5MDQ4NkFB
NzYwMEQ5NkI1RSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJ
QkMxMzE4ODUxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQkMxMzFBOUIxMTcxMzE2OTAwQjY5NzI3IC8qIG1haW4ubW0gaW4gU291
cmNlcyAqLywKKwkJCQlCQzEzMUFBOTExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDOTA5NTVEMTI1NTQ4QUEwMDA4Mzc1NiAvKiBQbGF0
Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzkwOTY0QzEyNTU2MUJGMDAw
ODM3NTYgLyogVmVjdG9yMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzkwOTc3QTEyNTU3MUFC
MDAwODM3NTYgLyogQmFzaWNUZXN0MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KKwkJMURFQjkyNzUwODczM0RENDAwMTBFOUNEIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0g
KAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIlwiJChTUkNST09UKS8uLi8uLi9XZWJLaXRC
dWlsZC9EZWJ1Z1wiIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MURFQjkyNzYwODczM0RENDAwMTBFOUNEIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1
ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGlu
aGVyaXRlZCkiLAorCQkJCQkiXCIkKFNSQ1JPT1QpLy4uLy4uL1dlYktpdEJ1aWxkL0RlYnVnXCIi
LAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFERUI5Mjc5MDg3
MzNERDQwMDEwRTlDRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU3RjEyNTU0Q0Y5MDAw
ODM3NTYgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7
CisJCX07CisJCTFERUI5MjdBMDg3MzNERDQwMDEwRTlDRCAvKiBSZWxlYXNlICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEJDOTA5NTdGMTI1NTRDRjkwMDA4Mzc1NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9Owor
LyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25m
aWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTFERUI5Mjc0MDg3MzNERDQwMDEwRTlDRCAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiVGVzdFdlYktpdEFQ
SSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkxREVCOTI3NTA4NzMzREQ0MDAxMEU5Q0QgLyogRGVidWcgKi8sCisJ
CQkJMURFQjkyNzYwODczM0RENDAwMTBFOUNEIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMURFQjkyNzgwODczM0RENDAwMTBFOUNEIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiVGVzdFdlYktpdEFQSSIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkxREVCOTI3OTA4NzMzREQ0MDAxMEU5Q0QgLyogRGVidWcgKi8sCisJCQkJMURFQjky
N0EwODczM0RENDAwMTBFOUNEIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9Owor
CXJvb3RPYmplY3QgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87Cit9CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3Ix
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
ZWN0b3IxLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1ZlY3RvcjEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIlRlc3QuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoVmVjdG9yMSkKK3sKKyAg
ICBWZWN0b3I8aW50PiBpbnRWZWN0b3I7CisgICAgVEVTVF9BU1NFUlQoaW50VmVjdG9yLmlzRW1w
dHkoKSk7CisgICAgVEVTVF9BU1NFUlQoaW50VmVjdG9yLnNpemUoKSA9PSAwKTsKKyAgICBURVNU
X0FTU0VSVChpbnRWZWN0b3IuY2FwYWNpdHkoKSA9PSAwKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0Jhc2ljVGVzdDEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiVGVzdC5oIgorCisj
aW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0
YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgdGVz
dDFEb25lOworCitzdHJ1Y3QgU3RhdGUgeworICAgIFN0YXRlKCkKKyAgICAgICAgOiBkaWREZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZhbHNlKQorICAgICAgICAsIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoZmFsc2UpCisgICAgICAgICwgZGlkQ29tbWl0TG9hZEZvckZy
YW1lKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGRpZERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb247CisgICAgYm9vbCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OworICAgIGJvb2wgZGlkQ29tbWl0TG9hZEZvckZyYW1lOworfTsKKworc3RhdGljIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IFN0YXRlKiBzdGF0ZSA9ICgoU3RhdGUqKWNsaWVudEluZm8pOworCisgICAgVEVTVF9BU1NFUlQo
c3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOworICAgIFRFU1RfQVNT
RVJUKCFzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKKworICAgIHN0YXRlLT5kaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgU3RhdGUqIHN0YXRl
ID0gKChTdGF0ZSopY2xpZW50SW5mbyk7CisgICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOworICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKworICAgIHN0YXRlLT5kaWRDb21taXRMb2Fk
Rm9yRnJhbWUgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBTdGF0ZSogc3RhdGUgPSAoKFN0YXRlKiljbGll
bnRJbmZvKTsKKyAgICBURVNUX0FTU0VSVChzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik7CisgICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUpOworICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRDb21taXRMb2FkRm9yRnJh
bWUpOworCisgICAgdGVzdDFEb25lID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZU5hdmlnYXRpb25U
eXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1v
dXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlZiB1cmwsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBTdGF0ZSogc3RhdGUgPSAoKFN0YXRlKiljbGllbnRJbmZvKTsKKyAgICBURVNUX0FT
U0VSVCghc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgIFRFU1Rf
QVNTRVJUKCFzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKKworICAgIHN0YXRlLT5kaWRE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gdHJ1ZTsKKworICAgIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5h
dmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlZiB1cmwsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOworfQorCitzdGF0aWMgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgTUlNRVR5
cGUsIFdLVVJMUmVmIHVybCwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVy
UmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7Cit9CisKK1RFU1QoQmFzaWNUZXN0MSkKK3sKKyAgICBT
dGF0ZSBzdGF0ZTsKKworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNl
UmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0
LmdldCgpKSk7CisgCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5n
ZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OworICAgIG1lbXNl
dCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJD
bGllbnQudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmNsaWVudEluZm8gPSAmc3RhdGU7
CisgICAgbG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIGxvYWRlckNsaWVudC5kaWRDb21taXRM
b2FkRm9yRnJhbWUgPSBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisgICAgbG9hZGVyQ2xpZW50LmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50KTsKKworICAg
IFdLUGFnZVBvbGljeUNsaWVudCBwb2xpY3lDbGllbnQ7CisgICAgbWVtc2V0KCZwb2xpY3lDbGll
bnQsIDAsIHNpemVvZihwb2xpY3lDbGllbnQpKTsKKworICAgIHBvbGljeUNsaWVudC52ZXJzaW9u
ID0gMDsKKyAgICBwb2xpY3lDbGllbnQuY2xpZW50SW5mbyA9ICZzdGF0ZTsKKyAgICBwb2xpY3lD
bGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb247CisgICAgcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbiA9IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjsKKyAgICBwb2xpY3lDbGll
bnQuZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUgPSBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTsKKyAg
ICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHdlYlZpZXcucGFnZSgpLCAmcG9saWN5Q2xpZW50
KTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgVXRpbDo6Y3JlYXRl
VVJMRm9yUmVzb3VyY2UoImJhc2ljLTEiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBh
Z2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmdGVzdDFEb25lKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL2Jhc2ljLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvYmFzaWMtMS5odG1sCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLTEuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICBCYXNpYyB0ZXN0IDEu
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9Q
bGF0Zm9ybVV0aWxpdGllc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtVXRpbGl0aWVzTWFjLm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nQ0YuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLVVJMQ0YuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNl
IFV0aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpCisg
ICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxv
b3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50RnV0dXJlXV07Cit9CisKK1dLVVJMUmVm
IGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgTlNVUkwqIG5z
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6ZmlsZV0gd2l0aEV4dGVuc2lvbjpAImh0bWwiXTsKKyAgICByZXR1
cm4gV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKW5zVVJMKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2
aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitQ
bGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNw
YWNlUmVmKQoreworICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7
CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFt
ZXNwYWNlUmVmOm5hbWVzcGFjZVJlZl07CisKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zm
c2V0UmVjdChyZWN0LCAtMTAwMDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6
MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBt
X3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVj
dCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2Ny
ZWVuIG1haW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3Om1fdmlld107CisgICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOworICAg
IFttX3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107CisgICAgW21fd2luZG93IHNldFJlbGVhc2Vk
V2hlbkNsb3NlZDpOT107Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIFttX3ZpZXcgc2V0RnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBs
YXRmb3JtV2ViVmlldygpCit7CisgICAgW21fd2luZG93IGNsb3NlXTsKKyAgICBbbV93aW5kb3cg
cmVsZWFzZV07CisgICAgW21fdmlldyByZWxlYXNlXTsKK30KKworV0tQYWdlUmVmIFBsYXRmb3Jt
V2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIFttX3ZpZXcgcGFnZVJlZl07Cit9CisKK3Zv
aWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7CisgICAgLy8gSW1wbGVtZW50LgorfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL21hYy9tYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL21haW4ubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21h
Yy9tYWluLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiVGVzdHNDb250cm9sbGVyLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFy
KiBhcmd2W10pCit7CisgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVh
c2VQb29sIGFsbG9jXSBpbml0XTsKKworICAgIFtOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0
aW9uXTsKKworICAgIGJvb2wgcGFzc2VkID0gVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVy
OjpzaGFyZWQoKS5ydW5UZXN0TmFtZWQoc3RkOjpzdHJpbmcoYXJndlsxXSkpOworCisgICAgW3Bv
b2wgZHJhaW5dOworCisgICAgcmV0dXJuIHBhc3NlZCA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJ
TFVSRTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69413</attachid>
            <date>2010-09-30 19:39:40 -0700</date>
            <delta_ts>2010-10-01 11:54:51 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>APITests.diff</filename>
            <type>text/plain</type>
            <size>73156</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4ODU5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTAtMDktMzAgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc2ltcGxlIEFQSSB0ZXN0ZXIgZm9yIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTUzCisKKyAgICAgICAgVGhpcyBhZGRz
IGEgdmVyeSBzaW1wbGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZSBmb3IgdGVzdGluZyBBUElzIGV4
cG9zZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgV2ViS2l0IHByb2plY3QuIEl0IGNvbnNpc3RzIG9m
IHR3byBwYXJ0czogMSkgYSBwcm9qZWN0IHRoYXQKKyAgICAgICAgYnVpbGRzIHRoZSBhbGwgdGhl
IHRlc3RzIDIpIGEgc2NyaXB0IHRoYXQgc2VhcmNoZXMgdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQK
KyAgICAgICAgY2FsbHMgdGhlIHRlc3RlciBvbmNlIGZvciBlYWNoIHRlc3QuCisKKyAgICAgICAg
VGhpcyBhZGRzIHRoZSBpbmZyYXN0cnVjdHVyZSBhbmQgdHdvIHRlc3RzOgorICAgICAgICAtIFRl
c3RzL1dURi9WZWN0b3IxLmNwcCAtIEEgcHJvb2Ygb2YgY29uY2VwdCB0ZXN0IG9mIFdURiBkYXRh
LXN0cnVjdHVyZXMuCisgICAgICAgIC0gVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcCAtIEEg
cHJvb2Ygb2YgY29uY2VwdCB0ZXN0IG9mIFdlYktpdDIgQVBJLgorCisgICAgICAgIFRoaXMgY3Vy
cmVudGx5IG9ubHkgd29ya3Mgb24gdGhlIG1hYywgYnV0IGlzIGRlc2lnbmVkIHRvIGJlIGVhc2ls
eSBwb3J0ZWQgCisgICAgICAgIHRvIGFueSBwbGF0Zm9ybS4KKworICAgICAgICAqIFNjcmlwdHMv
cnVuLWFwaS10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9idWlsZC1hcGktdGVzdHM6
IEFkZGVkLgorICAgICAgICBTY3JpcHRzIHRvIGJ1aWxkL3J1biB0aGUgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWc6IEFkZGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnM6IEFkZGVkLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGxhdGZvcm1XZWJWaWV3OjpwbGF0Zm9ybVZpZXcpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3Q6On5UZXN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3Q6Om5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdDo6UmVnaXN0ZXI6OlJlZ2lzdGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRl
c3Q6OlJlZ2lzdGVyOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdDo6VGVz
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvajogQWRk
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SVByZWZpeC5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpz
aGFyZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpUZXN0c0Nv
bnRyb2xsZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjpydW5U
ZXN0TmFtZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdHNDb250cm9sbGVyOjp0ZXN0
RmFpbGVkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6cmVnaXN0
ZXJDcmVhdGVUZXN0RnVuY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHNDb250
cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjOiBBZGRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbTogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGxhdGZvcm1XZWJWaWV3Ojpmb2N1cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvbWFp
bi5tbTogQWRkZWQuCisgICAgICAgIEluZnJhc3RydWN0dXJlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0czogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEY6
IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3RvcjEuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDI6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy0xLmh0bWw6IEFkZGVkLgorICAgICAgICBQcm9v
ZiBvZiBjb25jZXB0IHRlc3RzLgorCiAyMDEwLTA5LTI5ICBKb24gSG9uZXljdXR0ICA8amhvbmV5
Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBvbiBXaW5kb3dzIHNob3VsZCB1c2Ug
V2luZG93cyBmb250cyBmb3IgdGhlIHZhcmlvdXMgc3RhbmRhcmQKSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtYXBpLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtYXBpLXRlc3RzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWlsZC1hcGktdGVzdHMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKyMhL3Vzci9iaW4v
cGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3Ry
aWN0OwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25n
IHF3KDpjb25maWcgcGFzc190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3
ZWJraXRkaXJzOwordXNlIFBPU0lYOworCitteSAkc2hvd0hlbHAgPSAwOworbXkgJGNsZWFuID0g
MDsKKworbXkgJHByb2dyYW1OYW1lID0gYmFzZW5hbWUoJDApOworbXkgJHVzYWdlID0gPDxFT0Y7
CitVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRvIGJ1aWxk
IHN5c3RlbV0KKyAgLS1oZWxwICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCisgIC0tY2xl
YW4gICAgICAgQ2xlYW4gdXAgdGhlIGJ1aWxkIGRpcmVjdG9yeQorRU9GCisKK0dldE9wdGlvbnMo
CisgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAsCisgICAgJ2NsZWFuJyA9PiBcJGNsZWFuLAorKTsK
KworaWYgKCRzaG93SGVscCkgeworICAgcHJpbnQgU1RERVJSICR1c2FnZTsKKyAgIGV4aXQgMTsK
K30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygpOworc2V0Q29uZmlndXJhdGlvbigpOwor
Y2hkaXJXZWJLaXQoKTsKKworIyBCdWlsZAorY2hkaXIgIldlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkiIG9yIGRpZTsKKworbXkgJHJlc3VsdDsKK2lmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKKyAg
ICAkcmVzdWx0ID0gYnVpbGRYQ29kZVByb2plY3QoIlRlc3RXZWJLaXRBUEkiLCAkY2xlYW4sIFhj
b2RlT3B0aW9ucygpLCBAQVJHVik7Cit9IGVsc2UgeworICAgIGRpZSAiVGVzdFdlYktpdEFQSSBp
cyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4iOworfQorCitleGl0IGV4aXRTdGF0
dXMoJHJlc3VsdCk7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL2J1
aWxkLWFwaS10ZXN0cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCklu
ZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi1hcGktdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxNiBAQAor
IyEvdXNyL2Jpbi9wZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgRmVhdHVyZXMgdG8gYWRkOgorIyAgIC0gQWJpbGl0eSB0byBydW4gYSBzaW5nbGUgdGVz
dC4KKyMgICAtIEFiaWxpdHkgdG8gcnVuIGFsbCB0ZXN0cyB1bmRlciBvbmUgZGlyZWN0b3J5Lgor
Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2Ug
RmlsZTo6RmluZDsKK3VzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7Cit1c2UgRmlsZTo6U3BlYzsK
K3VzZSBGaW5kQmluOwordXNlIEdldG9wdDo6TG9uZyBxdyg6Y29uZmlnIHBhc3NfdGhyb3VnaCk7
Cit1c2UgSVBDOjpPcGVuMzsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJz
OworCitzdWIgc3BsaXRwYXRoKCQpOworc3ViIG51bWVyaWNjbXAoJCQpOworc3ViIHBhdGhjbXAo
JCQpOworc3ViIGZpbmRUZXN0c1RvUnVuKCk7CitzdWIgcnVuVGVzdCgkKTsKK3N1YiBidWlsZFRl
c3RUb29sKCk7CisKK215ICRzaG93SGVscCA9IDA7CitteSAkcXVpZXQgPSAwOworCitteSAkcHJv
Z3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsKK1VzYWdlOiAkcHJv
Z3JhbU5hbWUgW29wdGlvbnNdCisgIC0taGVscCAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVs
cCBtZXNzYWdlCisgIC1xfC0tcXVpdGUgICAgICAgICAgICBMZXNzIHZlcmJvc2Ugb3V0cHV0CitF
T0YKKworR2V0T3B0aW9ucygKKyAgICAnaGVscCcgPT4gXCRzaG93SGVscCwKKyAgICAncXVpZXR8
cScgPT4gXCRxdWlldCwKKyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAgIHByaW50IFNUREVSUiAk
dXNhZ2U7CisgICBleGl0IDE7Cit9CisKK3NldENvbmZpZ3VyYXRpb24oKTsKK2J1aWxkVGVzdFRv
b2woKTsKK215IEB0ZXN0c1RvUnVuID0gZmluZFRlc3RzVG9SdW4oKTsKKworbXkgJGFueUZhaWx1
cmVzID0gMDsKK2ZvciBteSAkdGVzdFBhdGggKEB0ZXN0c1RvUnVuKSB7CisgICAgbXkgJGZhaWxl
ZCA9IHJ1blRlc3QoJHRlc3RQYXRoKTsKKyAgICBpZiAoJGZhaWxlZCkgeworICAgICAgICAkYW55
RmFpbHVyZXMgPSAxOworICAgIH0KK30KK2V4aXQgJGFueUZhaWx1cmVzOworCisKK3N1YiBzcGxp
dHBhdGgoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICBteSAkcGF0aFNlcGFyYXRv
ciA9ICIvIjsKKyAgICBteSAkZGlybmFtZSA9IGRpcm5hbWUoJHBhdGgpIC4gJHBhdGhTZXBhcmF0
b3I7CisgICAgJGRpcm5hbWUgPSAiIiBpZiAkZGlybmFtZSBlcSAiLiIgLiAkcGF0aFNlcGFyYXRv
cjsKKworICAgIHJldHVybiAoJGRpcm5hbWUsIGJhc2VuYW1lKCRwYXRoKSk7Cit9CisKK3N1YiBu
dW1lcmljY21wKCQkKQoreworICAgIG15ICgkYWEsICRiYikgPSBAXzsKKworICAgIG15IEBhID0g
c3BsaXQgLyhcZCspLywgJGFhOworICAgIG15IEBiID0gc3BsaXQgLyhcZCspLywgJGJiOworCisg
ICAgIyBDb21wYXJlIG9uZSBjaHVuayBhdCBhIHRpbWUuCisgICAgIyBFYWNoIGNodW5rIGlzIGVp
dGhlciBhbGwgbnVtZXJpYyBkaWdpdHMsIG9yIGFsbCBub3QgbnVtZXJpYyBkaWdpdHMuCisgICAg
d2hpbGUgKEBhICYmIEBiKSB7CisgICAgICAgIG15ICRhID0gc2hpZnQgQGE7CisgICAgICAgIG15
ICRiID0gc2hpZnQgQGI7CisgICAgICAgIAorICAgICAgICAjIFVzZSBudW1lcmljIGNvbXBhcmlz
b24gaWYgY2h1bmtzIGFyZSBub24tZXF1YWwgbnVtYmVycy4KKyAgICAgICAgcmV0dXJuICRhIDw9
PiAkYiBpZiAkYSA9fiAvXlxkLyAmJiAkYiA9fiAvXlxkLyAmJiAkYSAhPSAkYjsKKworICAgICAg
ICAjIFVzZSBzdHJpbmcgY29tcGFyaXNvbiBpZiBjaHVua3MgYXJlIGFueSBvdGhlciBraW5kIG9m
IG5vbi1lcXVhbCBzdHJpbmcuCisgICAgICAgIHJldHVybiAkYSBjbXAgJGIgaWYgJGEgbmUgJGI7
CisgICAgfQorICAgIAorICAgICMgT25lIG9mIHRoZSB0d28gaXMgbm93IGVtcHR5OyBjb21wYXJl
IGxlbmd0aHMgZm9yIHJlc3VsdCBpbiB0aGlzIGNhc2UuCisgICAgcmV0dXJuIEBhIDw9PiBAYjsK
K30KKworc3ViIHBhdGhjbXAoJCQpCit7CisgICAgbXkgKCRwYXRoYSwgJHBhdGhiKSA9IEBfOwor
CisgICAgbXkgKCRkaXJhLCAkbmFtZWEpID0gc3BsaXRwYXRoKCRwYXRoYSk7CisgICAgbXkgKCRk
aXJiLCAkbmFtZWIpID0gc3BsaXRwYXRoKCRwYXRoYik7CisKKyAgICByZXR1cm4gbnVtZXJpY2Nt
cCgkZGlyYSwgJGRpcmIpIGlmICRkaXJhIG5lICRkaXJiOworICAgIHJldHVybiBudW1lcmljY21w
KCRuYW1lYSwgJG5hbWViKTsKK30KKworc3ViIGZpbmRUZXN0c1RvUnVuKCkKK3sKKyAgICBvdXIg
JWlnbm9yZWRMb2NhbERpcmVjdG9yaWVzID0gbWFwIHsgJF8gPT4gMSB9IHF3KC5zdm4gX3N2bik7
CisgICAgb3VyICVzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IG1hcCB7ICRfID0+IDEgfSBxdyhj
cHApOworICAgIG91ciAkdGVzdHNEaXJlY3RvcnkgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKHNvdXJj
ZURpcigpLCBxdyhXZWJLaXRUb29scyBUZXN0V2ViS2l0QVBJIFRlc3RzKSk7CisgICAgb3VyIEB0
ZXN0c0ZvdW5kID0gKCk7CisKKyAgICBzdWIgZGlyZWN0b3J5RmlsdGVyCisgICAgeworICAgICAg
ICByZXR1cm4gKCkgaWYgZXhpc3RzICRpZ25vcmVkTG9jYWxEaXJlY3Rvcmllc3tiYXNlbmFtZSgk
RmlsZTo6RmluZDo6ZGlyKX07CisgICAgICAgIHJldHVybiBAXzsKKyAgICB9CisKKyAgICBzdWIg
ZmlsZUZpbHRlcgorICAgIHsKKyAgICAgICAgbXkgJGZpbGVuYW1lID0gJF87CisgICAgICAgIGlm
ICgkZmlsZW5hbWUgPX4gL1wuKFteLl0rKSQvKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChleGlzdHMgJHN1cHBvcnRlZEZpbGVFeHRlbnNpb25zeyQxfSkgeworICAgICAgICAgICAg
ICAgIG15ICRwYXRoID0gRmlsZTo6U3BlYy0+YWJzMnJlbChjYXRmaWxlKCRGaWxlOjpGaW5kOjpk
aXIsICRmaWxlbmFtZSksICR0ZXN0c0RpcmVjdG9yeSk7CisgICAgICAgICAgICAgICAgcHVzaCBA
dGVzdHNGb3VuZCwgJHBhdGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjaGRpcldlYktpdCgpOworCisgICAgZmluZCh7IHByZXByb2Nlc3MgPT4gXCZkaXJlY3RvcnlG
aWx0ZXIsIHdhbnRlZCA9PiBcJmZpbGVGaWx0ZXIgfSwgJHRlc3RzRGlyZWN0b3J5KTsKKyAgICBy
ZXR1cm4gc29ydCBwYXRoY21wIEB0ZXN0c0ZvdW5kOworfQorCitzdWIgcnVuVGVzdCgkKQorewor
ICAgIG15ICgkdGVzdFBhdGgpID0gQF87CisKKyAgICBteSAoJGRpciwgJHRlc3RGaWxlKSA9IHNw
bGl0cGF0aCgkdGVzdFBhdGgpOworICAgIG15ICR0ZXN0ID0gc3Vic3RyKCR0ZXN0RmlsZSwgMCwg
cmluZGV4KCR0ZXN0RmlsZSwgIi4iKSk7CisKKyAgICBwcmludCAiUnVubmluZyAiIC4gJGRpciAu
ICR0ZXN0IC4gIlxuIjsKKworICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKKyAgICAgICAg
bXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CisgICAgICAgICRFTlZ7RFlMRF9GUkFNRVdP
UktfUEFUSH0gPSAkcHJvZHVjdERpcjsKKyAgICAgICAgJEVOVntXRUJLSVRfVU5TRVRfRFlMRF9G
UkFNRVdPUktfUEFUSH0gPSAiWUVTIjsKKyAgICAgICAgbXkgJGFwaVRlc3RlclBhdGggPSAiJHBy
b2R1Y3REaXIvVGVzdFdlYktpdEFQSSI7CisgICAgICAgIGlmICghaXNUaWdlcigpICYmIGFyY2hp
dGVjdHVyZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gc3lzdGVtICJhcmNoIiwgIi0iIC4gYXJj
aGl0ZWN0dXJlKCksICRhcGlUZXN0ZXJQYXRoLCAkdGVzdCwgQEFSR1Y7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gc3lzdGVtICRhcGlUZXN0ZXJQYXRoLCAkdGVzdCwgQEFS
R1Y7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N1YiBidWlsZFRlc3RUb29sKCkKK3sKKyAgICBj
aGRpcldlYktpdCgpOworCisgICAgbXkgJGJ1aWxkVGVzdFRvb2wgPSAgImJ1aWxkLWFwaS10ZXN0
cyI7CisgICAgcHJpbnQgU1RERVJSICJSdW5uaW5nICRidWlsZFRlc3RUb29sXG4iOworCisgICAg
bG9jYWwgKkRFVk5VTEw7CisgICAgbXkgKCRjaGlsZEluLCAkY2hpbGRPdXQsICRjaGlsZEVycik7
CisgICAgaWYgKCRxdWlldCkgeworICAgICAgICBvcGVuKERFVk5VTEwsICI+IiwgRmlsZTo6U3Bl
Yy0+ZGV2bnVsbCgpKSBvciBkaWUgIkZhaWxlZCB0byBvcGVuIC9kZXYvbnVsbCI7CisgICAgICAg
ICRjaGlsZE91dCA9ICI+JkRFVk5VTEwiOworICAgICAgICAkY2hpbGRFcnIgPSAiPiZERVZOVUxM
IjsKKyAgICB9IGVsc2UgeworICAgICAgICAjIFdoZW4gbm90IHF1aWV0LCBsZXQgdGhlIGNoaWxk
IHVzZSBvdXIgc3Rkb3V0L3N0ZGVyci4KKyAgICAgICAgJGNoaWxkT3V0ID0gIj4mU1RET1VUIjsK
KyAgICAgICAgJGNoaWxkRXJyID0gIj4mU1RERVJSIjsKKyAgICB9CisKKyAgICBteSBAYXJncyA9
IGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24oKTsKKyAgICBteSAkYnVpbGRQcm9jZXNzID0gb3Bl
bjMoJGNoaWxkSW4sICRjaGlsZE91dCwgJGNoaWxkRXJyLCAiV2ViS2l0VG9vbHMvU2NyaXB0cy8k
YnVpbGRUZXN0VG9vbCIsIEBhcmdzKSBvciBkaWUgIkZhaWxlZCB0byBydW4gIiAuICRidWlsZFRl
c3RUb29sOworICAgIGNsb3NlKCRjaGlsZEluKTsKKyAgICB3YWl0cGlkICRidWlsZFByb2Nlc3Ms
IDA7CisgICAgbXkgJGJ1aWxkUmVzdWx0ID0gJD87CisgICAgY2xvc2UoJGNoaWxkT3V0KTsKKyAg
ICBjbG9zZSgkY2hpbGRFcnIpOworCisgICAgY2xvc2UgREVWTlVMTCBpZiAoJHF1aWV0KTsKKwor
ICAgIGlmICgkYnVpbGRSZXN1bHQpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICJDb21waWxpbmcg
VGVzdFdlYktpdEFQSSBmYWlsZWQhXG4iOworICAgICAgICBleGl0IGV4aXRTdGF0dXMoJGJ1aWxk
UmVzdWx0KTsKKyAgICB9Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3Jp
cHRzL3J1bi1hcGktdGVzdHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
CgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAorI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKworLy8gUnVucyBhIHBs
YXRmb3JtIHJ1bmxvb3AgdW50aWwgdGhlICdkb25lJyBpcyB0cnVlLiAKK3ZvaWQgcnVuKGJvb2wq
IGRvbmUpOworCitXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShjb25zdCBjaGFyKiBmaWxl
KTsKKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQor
CisjZW5kaWYgLy8gUGxhdGZvcm1VdGlsaXRpZXNfaApJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1XZWJWaWV3X2gKKyNkZWZpbmUgUGxh
dGZvcm1XZWJWaWV3X2gKKworI2lmIF9fQVBQTEVfXworI2lmIF9fT0JKQ19fCitAY2xhc3MgV0tW
aWV3OworQGNsYXNzIE5TV2luZG93OworI2Vsc2UKK2NsYXNzIFdLVmlldzsKK2NsYXNzIE5TV2lu
ZG93OworI2VuZGlmCit0eXBlZGVmIFdLVmlldyogUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIE5T
V2luZG93KiBQbGF0Zm9ybVdpbmRvdzsKKyNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQo
X1dJTjMyKQordHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIEhXTkQg
UGxhdGZvcm1XaW5kb3c7CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitj
bGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworcHVibGljOgorICAgIFBsYXRmb3JtV2ViVmlldyhXS1Bh
Z2VOYW1lc3BhY2VSZWYpOworICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKKworICAgIFdLUGFnZVJl
ZiBwYWdlKCk7CisgICAgUGxhdGZvcm1XS1ZpZXcgcGxhdGZvcm1WaWV3KCkgeyByZXR1cm4gbV92
aWV3OyB9CisgICAgdm9pZCByZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0
KTsKKyAgICB2b2lkIGZvY3VzKCk7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1XS1ZpZXcgbV92
aWV3OworICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUGxhdGZvcm1XZWJWaWV3X2gKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFRlc3RfaAorI2RlZmluZSBUZXN0X2gKKworI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxl
ci5oIgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIEFic3RyYWN0IGJhc2UgY2xh
c3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9tLgorY2xhc3MgVGVzdCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VGVzdCgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBydW4oKSA9IDA7
CisgICAgc3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
ICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RDbGFzc1R5PiBjbGFzcyBSZWdpc3RlciB7
CisgICAgcHVibGljOgorICAgICAgICBSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRp
ZmllcikKKyAgICAgICAgeworICAgICAgICAgICAgVGVzdHNDb250cm9sbGVyOjpzaGFyZWQoKS5y
ZWdpc3RlckNyZWF0ZVRlc3RGdW5jdGlvbihpZGVudGlmaWVyLCBSZWdpc3Rlcjo6Y3JlYXRlKTsK
KyAgICAgICAgfQorICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBUZXN0KiBjcmVh
dGUoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpIAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IFRlc3RDbGFzc1R5KGlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfTsK
KworcHJvdGVjdGVkOgorICAgIFRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCisg
ICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHN0
ZDo6c3RyaW5nIG1faWRlbnRpZmllcjsKK307CisKKyNkZWZpbmUgVEVTVF9DTEFTU19OQU1FKHRl
c3RDYXNlTmFtZSkgdGVzdENhc2VOYW1lIyNfVGVzdAorI2RlZmluZSBURVNUX1JFR0lTVFJBUl9O
QU1FKHRlc3RDYXNlTmFtZSkgdGVzdENhc2VOYW1lIyNfUmVnaXN0cmFyCisKKy8vIFVzZSB0aGlz
IHRvIGRlZmluZSBhIG5ldyB0ZXN0LgorI2RlZmluZSBURVNUKHRlc3RDYXNlTmFtZSkgXAorICAg
IGNsYXNzIFRFU1RfQ0xBU1NfTkFNRSh0ZXN0Q2FzZU5hbWUpIDogcHVibGljIFRlc3QgeyBcCisg
ICAgcHVibGljOiBcCisgICAgICAgIFRFU1RfQ0xBU1NfTkFNRSh0ZXN0Q2FzZU5hbWUpKGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKSBcCisgICAgICAgICAgICA6IFRlc3QoaWRlbnRpZmll
cikgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHZpcnR1YWwgdm9pZCBydW4o
KTsgXAorICAgIH07IFwKKyAgICBcCisgICAgc3RhdGljIFRlc3Q6OlJlZ2lzdGVyPFRFU1RfQ0xB
U1NfTkFNRSh0ZXN0Q2FzZU5hbWUpPiBURVNUX1JFR0lTVFJBUl9OQU1FKHRlc3RDYXNlTmFtZSko
I3Rlc3RDYXNlTmFtZSk7IFwKKyAgICBcCisgICAgdm9pZCBURVNUX0NMQVNTX05BTUUodGVzdENh
c2VOYW1lKTo6cnVuKCkKKworI2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBkbyB7IGlm
ICghKGV4cHJlc3Npb24pKSB7IFRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkudGVzdEZhaWxlZChf
X0ZJTEVfXywgX19MSU5FX18sICNleHByZXNzaW9uKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDApCisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFRlc3RfaApJbmRleDog
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJUHJlZml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJUHJlZml4LmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUElQcmVm
aXguaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1
ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisKKyNpZiBfX0FQ
UExFX18KKworI2lmZGVmIF9fT0JKQ19fCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2VuZGlm
CisKKyNlbmRpZgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0c0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHNDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKKworVGVzdHNDb250cm9sbGVyJiBUZXN0c0NvbnRyb2xsZXI6OnNoYXJlZCgp
Cit7CisgICAgc3RhdGljIFRlc3RzQ29udHJvbGxlciYgc2hhcmVkID0gKm5ldyBUZXN0c0NvbnRy
b2xsZXI7CisgICAgcmV0dXJuIHNoYXJlZDsKK30KKworVGVzdHNDb250cm9sbGVyOjpUZXN0c0Nv
bnRyb2xsZXIoKQorICAgIDogbV90ZXN0RmFpbGVkKGZhbHNlKQorICAgICwgbV9jdXJyZW50VGVz
dCgwKQoreworfQorCitib29sIFRlc3RzQ29udHJvbGxlcjo6cnVuVGVzdE5hbWVkKGNvbnN0IHN0
ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIENyZWF0ZVRlc3RGdW5jdGlvbiBjcmVhdGVU
ZXN0RnVuY3Rpb24gPSBtX2NyZWF0ZVRlc3RGdW5jdGlvbnNbaWRlbnRpZmllcl07CisgICAgaWYg
KCFjcmVhdGVUZXN0RnVuY3Rpb24pIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogVGVzdCBub3Qg
Zm91bmQgLSAlc1xuIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1fY3VycmVudFRlc3QgPSBjcmVhdGVUZXN0RnVuY3Rpb24oaWRlbnRp
Zmllcik7CisgICAgbV9jdXJyZW50VGVzdC0+cnVuKCk7CisKKyAgICBpZiAoIW1fdGVzdEZhaWxl
ZCkKKyAgICAgICAgcHJpbnRmKCJQQVNTOiAlc1xuIiwgbV9jdXJyZW50VGVzdC0+bmFtZSgpLmNf
c3RyKCkpOworCisgICAgZGVsZXRlIG1fY3VycmVudFRlc3Q7CisgICAgbV9jdXJyZW50VGVzdCA9
IDA7CisKKyAgICByZXR1cm4gIW1fdGVzdEZhaWxlZDsKK30KKwordm9pZCBUZXN0c0NvbnRyb2xs
ZXI6OnRlc3RGYWlsZWQoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpCit7CisgICAgbV90ZXN0RmFpbGVkID0gdHJ1ZTsKKyAgICBwcmludGYoIkZBSUw6ICVz
XG5cdCVzICglczolZClcbiIsIG1fY3VycmVudFRlc3QtPm5hbWUoKS5jX3N0cigpLCBtZXNzYWdl
LCBmaWxlLCBsaW5lKTsKK30KKwordm9pZCBUZXN0c0NvbnRyb2xsZXI6OnJlZ2lzdGVyQ3JlYXRl
VGVzdEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyLCBDcmVhdGVUZXN0RnVu
Y3Rpb24gY3JlYXRlVGVzdEZ1bmN0aW9uKQoreworICAgIG1fY3JlYXRlVGVzdEZ1bmN0aW9uc1tp
ZGVudGlmaWVyXSA9IGNyZWF0ZVRlc3RGdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0c0NvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzQ29udHJv
bGxlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0c0Nv
bnRyb2xsZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVGVzdHNDb250cm9sbGVyX2gKKyNkZWZpbmUgVGVzdHNDb250cm9sbGVyX2gKKworI2lu
Y2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworY2xhc3MgVGVzdDsKKworY2xhc3MgVGVzdHNDb250cm9sbGVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgVGVzdHNDb250cm9sbGVyJiBzaGFyZWQoKTsKKworICAgIGJvb2wgcnVuVGVzdE5h
bWVkKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisKKyAgICAvLyBDYWxsZWQgYnkgdGhlIHRlc3RzIHRo
ZW1zZWx2ZXMuCisgICAgdm9pZCB0ZXN0RmFpbGVkKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKKworICAgIHR5cGVkZWYgVGVzdCogKCpDcmVhdGVUZXN0
RnVuY3Rpb24pKGNvbnN0IHN0ZDo6c3RyaW5nJik7CisgICAgdm9pZCByZWdpc3RlckNyZWF0ZVRl
c3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyYsIENyZWF0ZVRlc3RGdW5jdGlvbik7CisKK3By
aXZhdGU6CisgICAgVGVzdHNDb250cm9sbGVyKCk7CisgICAgflRlc3RzQ29udHJvbGxlcigpOwor
CisgICAgYm9vbCBtX3Rlc3RGYWlsZWQ7CisgICAgVGVzdCogbV9jdXJyZW50VGVzdDsKKworICAg
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDcmVhdGVUZXN0RnVuY3Rpb24+IG1fY3JlYXRlVGVzdEZ1
bmN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8v
IFRlc3RzQ29udHJvbGxlcl9oCkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisv
LyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8v
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVyczsKK0ZSQU1FV09S
S19TRUFSQ0hfUEFUSFMgPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHou
ZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKFNZU1RFTV9MSUJSQVJZX0RJ
UikvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL0ZyYW1ld29ya3M7CitHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TID0gRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUIFdFQktJVF9W
RVJTSU9OX01JTl9SRVFVSVJFRD1XRUJLSVRfVkVSU0lPTl9MQVRFU1Q7CitERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSBkd2FyZgorUFJFQklORElORyA9IE5PCitHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTCitHQ0NfVFJF
QVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTCitHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZ
RVMKK0dDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUworR0NDX1dBUk5fQUJPVVRfREVQUkVD
QVRFRF9GVU5DVElPTlMgPSBOTworV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtVyAtV25vLXVudXNl
ZC1wYXJhbWV0ZXIKK0xJTktFUl9ESVNQTEFZU19NQU5HTEVEX05BTUVTID0gWUVTOworCisKK1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJTSU9OX01BSk9SKTsK
KworCisvLyBVc2UgR0NDIDQuMiB3aXRoIFhjb2RlIDMuMSwgd2hpY2ggaW5jbHVkZXMgR0NDIDQu
MiBidXQgZGVmYXVsdHMgdG8gR0NDIDQuMC4KKy8vIE5vdGUgdGhhdCBYY29kZSB2ZXJzaW9ucyBh
cyBuZXcgYXMgMy4xLjIgdXNlIFhDT0RFX1ZFUlNJT05fQUNUVUFMIGZvciB0aGUgbWlub3IgdmVy
c2lvbgorLy8gbnVtYmVyLiAgTmV3ZXIgdmVyc2lvbnMgb2YgWGNvZGUgdXNlIFhDT0RFX1ZFUlNJ
T05fTUlOT1IgZm9yIHRoZSBtaW5vciB2ZXJzaW9uLCBhbmQKKy8vIFhDT0RFX1ZFUlNJT05fQUNU
VUFMIGZvciB0aGUgZnVsbCB2ZXJzaW9uIG51bWJlci4KK1RBUkdFVF9HQ0NfVkVSU0lPTiA9ICQo
VEFSR0VUX0dDQ19WRVJTSU9OXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK1RB
UkdFVF9HQ0NfVkVSU0lPTl8gPSAkKFRBUkdFVF9HQ0NfVkVSU0lPTl8xMDQwKTsKK1RBUkdFVF9H
Q0NfVkVSU0lPTl8xMDQwID0gR0NDXzQwOworVEFSR0VUX0dDQ19WRVJTSU9OXzEwNTAgPSAkKFRB
UkdFVF9HQ0NfVkVSU0lPTl8xMDUwXyQoWENPREVfVkVSU0lPTl9NSU5PUikpOworVEFSR0VUX0dD
Q19WRVJTSU9OXzEwNTBfID0gJChUQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8kKFhDT0RFX1ZFUlNJ
T05fQUNUVUFMKSk7CitUQVJHRVRfR0NDX1ZFUlNJT05fMTA1MF8wMzEwID0gR0NDXzQyOworVEFS
R0VUX0dDQ19WRVJTSU9OXzEwNTBfMDMyMCA9IEdDQ180MjsKK1RBUkdFVF9HQ0NfVkVSU0lPTl8x
MDYwID0gR0NDXzQyOworVEFSR0VUX0dDQ19WRVJTSU9OXzEwNzAgPSBMTFZNX0dDQ180MjsKKwor
R0NDX1ZFUlNJT04gPSAkKEdDQ19WRVJTSU9OXyQoVEFSR0VUX0dDQ19WRVJTSU9OKSk7CitHQ0Nf
VkVSU0lPTl9HQ0NfNDAgPSA0LjA7CitHQ0NfVkVSU0lPTl9HQ0NfNDIgPSA0LjI7CitHQ0NfVkVS
U0lPTl9MTFZNX0dDQ180MiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bWdjYzQyOworCisvLyBJ
ZiB0aGUgdGFyZ2V0IE1hYyBPUyBYIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQg
TWFjIE9TIFggdmVyc2lvbiB0aGVuIHdlJ2xsIHdhbnQgdG8gYnVpbGQgdXNpbmcgdGhlIHRhcmdl
dCB2ZXJzaW9uJ3MgU0RLLgorU0RLUk9PVCA9ICQoU0RLUk9PVF8kKE1BQ19PU19YX1ZFUlNJT05f
TUFKT1IpXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK1NES1JPT1RfMTA1MF8x
MDQwID0gbWFjb3N4MTAuNDsKK1NES1JPT1RfMTA2MF8xMDQwID0gbWFjb3N4MTAuNDsKK1NES1JP
T1RfMTA2MF8xMDUwID0gbWFjb3N4MTAuNTsKK1NES1JPT1RfMTA3MF8xMDQwID0gbWFjb3N4MTAu
NDsKK1NES1JPT1RfMTA3MF8xMDUwID0gbWFjb3N4MTAuNTsKK1NES1JPT1RfMTA3MF8xMDYwID0g
bWFjb3N4MTAuNjsKKworV0VCS0lUX1VNQlJFTExBX0ZSQU1FV09SS1NfRElSID0gJChORVhUX1JP
T1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3M7CitXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgPSAkKFdFQktJ
VF9VTUJSRUxMQV9GUkFNRVdPUktTX0RJUikvV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRl
cnM7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0RlYnVn
UmVsZWFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwkocmV2aXNpb24gMCkKKysrIFdl
YktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
Ly8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitBUkNIUyA9ICQoQVJD
SFNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworQVJDSFNfID0gJChBUkNIU18x
MDQwKTsKK0FSQ0hTXzEwNDAgPSAkKE5BVElWRV9BUkNIKTsKK0FSQ0hTXzEwNTAgPSAkKE5BVElW
RV9BUkNIKTsKK0FSQ0hTXzEwNjAgPSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CitBUkNI
U18xMDcwID0gJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpOworCitPTkxZX0FDVElWRV9BUkNI
ID0gWUVTOworCitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK01BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVF8gPSAxMC40OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXzEwNDAgPSAxMC40
OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXzEwNTAgPSAxMC41OworTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUXzEwNjAgPSAxMC42OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXzEwNzAgPSAx
MC43OworCitXRUJLSVRfVU1CUkVMTEFfRlJBTUVXT1JLU19ESVIgPSAkKEJVSUxUX1BST0RVQ1RT
X0RJUik7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LnhjY29uZmlnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
Ly8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisKK1BST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRBUEkKK0dDQ19F
TkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTCitHQ0NfUFJFRklYX0hFQURFUiA9IFRlc3RXZWJL
aXRBUElQcmVmaXguaApJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvQVNDSUlDVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0FTQ0lJQ1R5cGUuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0FTQ0lJ
Q1R5cGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FTQ0lJQ1R5cGUuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Bc3NlcnRpb25zLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9B
c3NlcnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Bc3NlcnRpb25zLmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9BdG9taWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXRvbWljcy5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQXRv
bWljcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXRvbWljcy5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvRmFzdE1hbGxvYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Zhc3RN
YWxsb2MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Zhc3RNYWxsb2MuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL0dldFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0dldFB0ci5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvR2V0UHRyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXRQ
dHIuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoTWFwLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoTWFwLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYXNoTWFwLmg+Cklu
ZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNo
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvSGFzaFNldC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFNldC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFzaFNldC5oPgpJbmRleDogV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFRyYWl0cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhc2hUcmFpdHMuaD4KSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0xvY2tlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0xvY2tlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTG9ja2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEg
QEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb2NrZXIuaD4KSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL01haW5UaHJlYWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9N
YWluVGhyZWFkLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEg
QEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYWluVGhyZWFkLmg+CkluZGV4OiBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9NYXRoRXh0cmFzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWF0aEV4dHJhcy5oPgpJbmRleDogV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uY29weWFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9Ob25jb3B5YWJsZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uY29weWFibGUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05vbmNvcHlhYmxlLmg+Cklu
ZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25Q
dHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Pd25QdHIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093blB0ci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3duUHRyLmg+CkluZGV4OiBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25QdHJDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9Pd25QdHJDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093blB0ckNvbW1vbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFzc093blB0ci5oPgpJbmRl
eDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc093
blB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1Bhc3NPd25QdHIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bhc3NPd25QdHIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NPd25QdHIuaD4K
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Bh
c3NSZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9QYXNzUmVmUHRyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzUmVmUHRyLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYXNzUmVmUHRy
Lmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGxhdGZvcm0uaD4K
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1Jl
ZkNvdW50ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZWZDb3VudGVkLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWZDb3VudGVk
Lmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9SZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JlZlB0ci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVmUHRyLmg+CkluZGV4OiBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SZXRhaW5QdHIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9SZXRhaW5QdHIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JldGFpblB0ci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmV0YWluUHRyLmg+CkluZGV4OiBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdFeHRy
YXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9TdHJpbmdFeHRyYXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0V4dHJhcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nRXh0cmFz
Lmg+CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9UaHJlYWRTYWZlU2hhcmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkU2FmZVNoYXJlZC5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhy
ZWFkU2FmZVNoYXJlZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVGhyZWFkU2FmZVNoYXJlZC5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5n
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZGluZy5oPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVmVjdG9yLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WZWN0b3Iu
aD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjk2IEBACisvLyAhJCpVVEY4KiQh
Cit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJz
aW9uID0gNDU7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJQkMxMzE4ODUxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMzE4ODQx
MTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tICovOyB9OworCQlCQzEz
MUE5QjExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxQTlBMTE3MTMxNjkwMEI2OTcyNyAvKiBtYWluLm1t
ICovOyB9OworCQlCQzEzMUFBOTExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxQUE4
MTE3MTMxRkMwMEI2OTcyNyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwICovOyB9OworCQlCQzkwOTU1
RDEyNTU0OEFBMDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDk1NUMxMjU1NDhBQTAwMDgzNzU2
IC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSAqLzsgfTsKKwkJQkM5MDk2NEMxMjU1NjFCRjAwMDgz
NzU2IC8qIFZlY3RvcjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5MDk2NEIxMjU1NjFCRjAwMDgzNzU2IC8qIFZlY3RvcjEuY3BwICovOyB9Owor
CQlCQzkwOTY0RTEyNTU2MjBDMDAwODM3NTYgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDk2NEQx
MjU1NjIwQzAwMDgzNzU2IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJQkM5
MDk3N0ExMjU1NzFBQjAwMDgzNzU2IC8qIEJhc2ljVGVzdDEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8q
IEJhc2ljVGVzdDEuY3BwICovOyB9OworCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogYmFz
aWMtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDOTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAvKiBiYXNpYy0xLmh0bWwgKi87IH07CisJ
CUJDQTYxREI1MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTYxREI0MTE3MDBFRkQw
MDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKKwkJQkNCOUU5RjExMTIzNUJERTAw
QTEzN0UwIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjlFOUYwMTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFt
ZXdvcmsgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThERDc2RjlFMDQ4NkFBNzYwMEQ5
NkI1RSAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9t
YW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CisJCUJDQjlGNEZC
MTEyMzg0QzAwMEExMzdFMCAvKiBDb3B5IFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENv
cHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZHN0UGF0aCA9ICIiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogYmFzaWMtMS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBSZXNvdXJjZXMiOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLworCQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogVGVzdFdlYktpdEFQSSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gVGVzdFdlYktpdEFQSTsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQkMxMzE4ODMxMTcxMTRBODAw
QjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMTMxODg0MTE3MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzEzMUE5QTExNzEzMTY5MDBCNjk3
MjcgLyogbWFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG1h
aW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTMxQTlFMTE3MTMxN0MwMEI2
OTcyNyAvKiBUZXN0V2ViS2l0QVBJUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlc3RXZWJLaXRBUElQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMxMzFBQTgxMTcxMzFGQzAwQjY5NzI3IC8qIFRlc3RzQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFRlc3RzQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA5NTFCMTI1NTMzRDcwMDA4Mzc1NiAvKiBQbGF0
Zm9ybVdlYlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1X
ZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA5NTVDMTI1NTQ4QUEw
MDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVdlYlZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDOTA5NTdFMTI1NTRDRjkwMDA4Mzc1NiAvKiBCYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDOTA5NTdGMTI1NTRDRjkwMDA4Mzc1NiAvKiBEZWJ1Z1JlbGVh
c2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzkwOTU4MDEyNTU0Q0Y5
MDAwODM3NTYgLyogVGVzdFdlYktpdEFQSS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBUZXN0V2ViS2l0QVBJLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzkwOTY0QjEyNTU2MUJGMDAwODM3NTYgLyogVmVjdG9yMS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBWZWN0b3IxLmNwcDsgcGF0aCA9IFdURi9WZWN0
b3IxLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5MDk2NEQxMjU1NjIwQzAw
MDgzNzU2IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vV2ViS2l0QnVpbGQvRGVidWcvSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUJD
OTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAvKiBiYXNpYy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiYmFzaWMtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM5MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8qIEJhc2ljVGVzdDEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNUZXN0MS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDQTYxREI0MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0Mi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCUJDQjlFN0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0c0Nv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdHNDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQjlFN0ZBMTEyMzU5QTMwMEEx
MzdFMCAvKiBUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNCOUU5RjAxMTIzNUJERTAwQTEzN0UwIC8q
IENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRo
ID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThERDc2RjlCMDQ4NkFB
NzYwMEQ5NkI1RSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkJQkNCOUU5RjExMTIzNUJERTAwQTEzN0UwIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAorCQkJCUJDQTYxREI1MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCUJDOTA5NjRFMTI1NTYyMEMwMDA4Mzc1NiAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24g
Ki8KKwkJMDhGQjc3OTRGRTg0MTU1REMwMkFBQzA3IC8qIFRlc3RXZWJLaXRBUEkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA4RkI3Nzk1RkU4NDE1NURD
MDJBQUMwNyAvKiBTb3VyY2UgKi8sCisJCQkJQkNCOUVCNjYxMTIzNjZEODAwQTEzN0UwIC8qIFRl
c3RzICovLAorCQkJCUJDOTA5NTdEMTI1NTRDRUEwMDA4Mzc1NiAvKiBDb25maWd1cmF0aW9ucyAq
LywKKwkJCQkwOEZCNzc5REZFODQxNTVEQzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBh
bmQgTGlicmFyaWVzICovLAorCQkJCTFBQjY3NEFERkU5RDU0QjUxMUNBMkNCQiAvKiBQcm9kdWN0
cyAqLywKKwkJCSk7CisJCQluYW1lID0gVGVzdFdlYktpdEFQSTsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCTA4RkI3Nzk1RkU4NDE1NURDMDJBQUMwNyAvKiBTb3VyY2UgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDQTYxQzNBMTE3
MDBCOTQwMDQ2MEQxRSAvKiBtYWMgKi8sCisJCQkJQkMxMzFBOUUxMTcxMzE3QzAwQjY5NzI3IC8q
IFRlc3RXZWJLaXRBUElQcmVmaXguaCAqLywKKwkJCQlCQzEzMTg4MzExNzExNEE4MDBCNjk3Mjcg
LyogUGxhdGZvcm1VdGlsaXRpZXMuaCAqLywKKwkJCQlCQzkwOTUxQjEyNTUzM0Q3MDAwODM3NTYg
LyogUGxhdGZvcm1XZWJWaWV3LmggKi8sCisJCQkJQkNCOUU3RkExMTIzNTlBMzAwQTEzN0UwIC8q
IFRlc3QuaCAqLywKKwkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9s
bGVyLmNwcCAqLywKKwkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9s
bGVyLmggKi8sCisJCQkpOworCQkJbmFtZSA9IFNvdXJjZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTA4RkI3NzlERkU4NDE1NURDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFt
ZXdvcmtzIGFuZCBMaWJyYXJpZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUJDQjlFOUYwMTEyMzVCREUwMEExMzdFMCAvKiBDb2NvYS5mcmFtZXdvcmsg
Ki8sCisJCQkJQkM5MDk2NEQxMjU1NjIwQzAwMDgzNzU2IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayAqLywKKwkJCQlCQ0E2MURCNDExNzAwRUZEMDA0NjBEMUUgLyogV2ViS2l0Mi5mcmFtZXdv
cmsgKi8sCisJCQkpOworCQkJbmFtZSA9ICJFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJp
ZXMiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUFCNjc0QURGRTlENTRC
NTExQ0EyQ0JCIC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogVGVzdFdlYktpdEFQSSAq
LywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQlCQzkwOTU3RDEyNTU0Q0VBMDAwODM3NTYgLyogQ29uZmlndXJhdGlvbnMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDOTA5NTdFMTI1
NTRDRjkwMDA4Mzc1NiAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJCUJDOTA5NTdGMTI1NTRDRjkw
MDA4Mzc1NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJCQkJQkM5MDk1ODAxMjU1NENG
OTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9
IENvbmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkM5
MDk2NDExMjU1NjE2MDAwMDgzNzU2IC8qIFdlYktpdDIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDOTA5NzdCMTI1NTcxQUUwMDA4Mzc1NiAvKiBSZXNv
dXJjZXMgKi8sCisJCQkJQkM5MDk3NzkxMjU1NzFBQjAwMDgzNzU2IC8qIEJhc2ljVGVzdDEuY3Bw
ICovLAorCQkJKTsKKwkJCXBhdGggPSBXZWJLaXQyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkM5MDk2NEIxMjU1NjFCRjAwMDgz
NzU2IC8qIFZlY3RvcjEuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBXVEY7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3NTYgLyogUmVz
b3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlC
QzkwOTc3ODEyNTU3MUFCMDAwODM3NTYgLyogYmFzaWMtMS5odG1sICovLAorCQkJKTsKKwkJCW5h
bWUgPSBSZXNvdXJjZXM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQ0E2
MUMzQTExNzAwQjk0MDA0NjBEMUUgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCQzEzMUE5QTExNzEzMTY5MDBCNjk3MjcgLyogbWFpbi5tbSAq
LywKKwkJCQlCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMu
bW0gKi8sCisJCQkJQkM5MDk1NUMxMjU1NDhBQTAwMDgzNzU2IC8qIFBsYXRmb3JtV2ViVmlld01h
Yy5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJQkNCOUVCNjYxMTIzNjZEODAwQTEzN0UwIC8qIFRlc3RzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzkwOTY0MTEyNTU2MTYwMDAw
ODM3NTYgLyogV2ViS2l0MiAqLywKKwkJCQlCQzkwOTY0NjEyNTU2MTg5MDAwODM3NTYgLyogV1RG
ICovLAorCQkJKTsKKwkJCXBhdGggPSBUZXN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCQk4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUgLyogVGVzdFdlYktp
dEFQSSAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAxREVCOTI3NDA4NzMzREQ0MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlRlc3RXZWJLaXRBUEkiICovOworCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJOERENzZGOTkwNDg2QUE3NjAwRDk2QjVFIC8qIFNvdXJjZXMgKi8sCisJ
CQkJOERENzZGOUIwNDg2QUE3NjAwRDk2QjVFIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJOERENzZG
OUUwNDg2QUE3NjAwRDk2QjVFIC8qIENvcHlGaWxlcyAqLywKKwkJCQlCQ0I5RjRGQjExMjM4NEMw
MDBBMTM3RTAgLyogQ29weSBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgK
KwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IFRlc3RXZWJLaXRB
UEk7CisJCQlwcm9kdWN0SW5zdGFsbFBhdGggPSAiJChIT01FKS9iaW4iOworCQkJcHJvZHVjdE5h
bWUgPSBUZXN0V2ViS2l0QVBJOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhERDc2RkExMDQ4NkFB
NzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMDhGQjc3OTNGRTg0
MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVj
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0Qg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJUZXN0V2ViS2l0QVBJ
IiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMSI7CisJCQloYXNTY2Fu
bmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCW1haW5Hcm91cCA9IDA4RkI3Nzk0RkU4NDE1NURDMDJB
QUMwNyAvKiBUZXN0V2ViS2l0QVBJICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXBy
b2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCThERDc2Rjk2MDQ4NkFBNzYwMEQ5
NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQk4REQ3NkY5OTA0ODZBQTc2MDBEOTZCNUUgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJCUJDMTMxODg1MTE3MTE0QjYwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxp
dGllc01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDMTMxQTlCMTE3MTMxNjkwMEI2OTcyNyAv
KiBtYWluLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkMxMzFBQTkxMTcxMzFGQzAwQjY5NzI3IC8q
IFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzkwOTU1RDEyNTU0OEFB
MDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkM5
MDk2NEMxMjU1NjFCRjAwMDgzNzU2IC8qIFZlY3RvcjEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM5MDk3N0ExMjU1NzFBQjAwMDgzNzU2IC8qIEJhc2ljVGVzdDEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTFERUI5Mjc1MDg3MzNERDQwMDEwRTlDRCAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdl
YktpdEFQSS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JL
X1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJcIiQoU1JDUk9P
VCkvLi4vLi4vV2ViS2l0QnVpbGQvRGVidWdcIiIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTFERUI5Mjc2MDg3MzNERDQwMDEwRTlDRCAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29u
ZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhT
ID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIlwiJChTUkNST09UKS8uLi8uLi9XZWJL
aXRCdWlsZC9EZWJ1Z1wiIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkxREVCOTI3OTA4NzMzREQ0MDAxMEU5Q0QgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5
MDk1N0YxMjU1NENGOTAwMDgzNzU2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxREVCOTI3QTA4NzMzREQ0MDAxMEU5Q0QgLyogUmVs
ZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU3RjEyNTU0Q0Y5MDAwODM3NTYgLyogRGVidWdSZWxl
YXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0g
UmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxREVCOTI3NDA4NzMz
REQ0MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIlRlc3RXZWJLaXRBUEkiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMURFQjkyNzUwODczM0RENDAwMTBFOUNE
IC8qIERlYnVnICovLAorCQkJCTFERUI5Mjc2MDg3MzNERDQwMDEwRTlDRCAvKiBSZWxlYXNlICov
LAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFERUI5Mjc4MDg3MzNERDQw
MDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlRlc3RX
ZWJLaXRBUEkiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJMURFQjkyNzkwODczM0RENDAwMTBFOUNEIC8qIERlYnVn
ICovLAorCQkJCTFERUI5MjdBMDg3MzNERDQwMDEwRTlDRCAvKiBSZWxlYXNlICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVmVjdG9yMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVmVjdG9yMS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IxLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJUZXN0LmgiCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFZlY3RvcjEpCit7CisgICAgVmVjdG9yPGludD4gaW50VmVjdG9yOworICAgIFRFU1RfQVNTRVJU
KGludFZlY3Rvci5pc0VtcHR5KCkpOworICAgIFRFU1RfQVNTRVJUKGludFZlY3Rvci5zaXplKCkg
PT0gMCk7CisgICAgVEVTVF9BU1NFUlQoaW50VmVjdG9yLmNhcGFjaXR5KCkgPT0gMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9CYXNpY1Rlc3QxLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQmFzaWNUZXN0MS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQmFzaWNUZXN0
MS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIlRlc3QuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3N0YXRpYyBib29sIHRlc3QxRG9uZTsKKworc3RydWN0IFN0YXRlIHsKKyAgICBTdGF0ZSgpCisg
ICAgICAgIDogZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihmYWxzZSkKKyAgICAg
ICAgLCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKGZhbHNlKQorICAgICAgICAsIGRp
ZENvbW1pdExvYWRGb3JGcmFtZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBkaWRE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIGJvb2wgZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKKyAgICBib29sIGRpZENvbW1pdExvYWRGb3JGcmFtZTsKK307CisK
K3N0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBTdGF0ZSogc3RhdGUgPSAoKFN0YXRlKiljbGllbnRJbmZvKTsKKwor
ICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KTsKKyAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CisKKyAg
ICBzdGF0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IHRydWU7Cit9CisKK3N0
YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIFN0YXRlKiBzdGF0ZSA9ICgoU3RhdGUqKWNsaWVudEluZm8pOworICAgIFRFU1RfQVNTRVJU
KHN0YXRlLT5kaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICBURVNUX0FT
U0VSVChzdGF0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisKKyAgICBzdGF0
ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgU3RhdGUqIHN0YXRl
ID0gKChTdGF0ZSopY2xpZW50SW5mbyk7CisgICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOworICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICBURVNUX0FTU0VSVChzdGF0ZS0+ZGlk
Q29tbWl0TG9hZEZvckZyYW1lKTsKKworICAgIHRlc3QxRG9uZSA9IHRydWU7Cit9CisKK3N0YXRp
YyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZWYgdXJsLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgU3RhdGUqIHN0YXRlID0gKChTdGF0ZSopY2xpZW50SW5m
byk7CisgICAgVEVTVF9BU1NFUlQoIXN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKTsKKyAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CisK
KyAgICBzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IHRydWU7CisK
KyAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOworfQorCitzdGF0aWMgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVO
YXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZWYgdXJsLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGxpc3RlbmVyKTsKK30K
Kworc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV0tQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIE1JTUVUeXBlLCBXS1VSTFJlZiB1cmwsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOworfQorCitURVNUKEJhc2lj
VGVzdDEpCit7CisgICAgU3RhdGUgc3RhdGU7CisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFdLUmV0YWluUHRy
PFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3Bh
Y2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOworIAorICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNs
aWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkp
OworCisgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5jbGll
bnRJbmZvID0gJnN0YXRlOworICAgIGxvYWRlckNsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBsb2FkZXJD
bGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lID0gZGlkQ29tbWl0TG9hZEZvckZyYW1lOworICAg
IGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWU7CisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRl
ckNsaWVudCk7CisKKyAgICBXS1BhZ2VQb2xpY3lDbGllbnQgcG9saWN5Q2xpZW50OworICAgIG1l
bXNldCgmcG9saWN5Q2xpZW50LCAwLCBzaXplb2YocG9saWN5Q2xpZW50KSk7CisKKyAgICBwb2xp
Y3lDbGllbnQudmVyc2lvbiA9IDA7CisgICAgcG9saWN5Q2xpZW50LmNsaWVudEluZm8gPSAmc3Rh
dGU7CisgICAgcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIHBvbGljeUNsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24gPSBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb247
CisgICAgcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck1JTUVUeXBlID0gZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGU7CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2Uo
KSwgJnBvbGljeUNsaWVudCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0
V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJiYXNpYy0xIikpOworICAgIFdLUGFnZUxv
YWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3Qx
RG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9iYXNpYy0xLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2Jhc2ljLTEuaHRtbAko
cmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9i
YXNpYy0xLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4K
KyAgQmFzaWMgdGVzdCAxLgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0JKHJldmlz
aW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVV0aWxpdGll
c01hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZ0NG
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTENGLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBydW4oYm9vbCogZG9uZSkKK3sKKyAgICB3
aGlsZSAoISpkb25lKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9k
ZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudEZ1dHVyZV1d
OworfQorCitXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShjb25zdCBjaGFyKiBmaWxlKQor
eworICAgIE5TVVJMKiBuc1VSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmZpbGVdIHdpdGhFeHRlbnNpb246QCJo
dG1sIl07CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aENGVVJMKChDRlVSTFJlZiluc1VSTCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21h
Yy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFt
ZXNwYWNlUmVmIG5hbWVzcGFjZVJlZikKK3sKKyAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApOworICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpuYW1lc3BhY2VSZWZdOworCisgICAgTlNSZWN0IHdp
bmRvd1JlY3QgPSBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbW1tOU1NjcmVlbiBzY3JlZW5z
XSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQg
KyAxMDAwMCk7CisgICAgbV93aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2lu
ZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107CisgICAgW21fd2luZG93IHNldENv
bG9yU3BhY2U6W1tOU1NjcmVlbiBtYWluU2NyZWVuXSBjb2xvclNwYWNlXV07CisgICAgW1ttX3dp
bmRvdyBjb250ZW50Vmlld10gYWRkU3VidmlldzptX3ZpZXddOworICAgIFttX3dpbmRvdyBvcmRl
ckJhY2s6bmlsXTsKKyAgICBbbV93aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgIFttX3dp
bmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmll
dzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3sKKyAgICBbbV92
aWV3IHNldEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCldOworfQorCitQbGF0
Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQoreworICAgIFttX3dpbmRvdyBjbG9zZV07
CisgICAgW21fd2luZG93IHJlbGVhc2VdOworICAgIFttX3ZpZXcgcmVsZWFzZV07Cit9CisKK1dL
UGFnZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UoKQoreworICAgIHJldHVybiBbbV92aWV3IHBh
Z2VSZWZdOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQoreworICAgIC8vIElt
cGxlbWVudC4KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL21hYy9tYWluLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvbWFpbi5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29s
ID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisKKyAgICBbTlNBcHBsaWNhdGlv
biBzaGFyZWRBcHBsaWNhdGlvbl07CisKKyAgICBib29sIHBhc3NlZCA9IFRlc3RXZWJLaXRBUEk6
OlRlc3RzQ29udHJvbGxlcjo6c2hhcmVkKCkucnVuVGVzdE5hbWVkKHN0ZDo6c3RyaW5nKGFyZ3Zb
MV0pKTsKKworICAgIFtwb29sIGRyYWluXTsKKworICAgIHJldHVybiBwYXNzZWQgPyBFWElUX1NV
Q0NFU1MgOiBFWElUX0ZBSUxVUkU7Cit9Cg==
</data>
<flag name="review"
          id="59110"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>