<?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>157274</bug_id>
          
          <creation_ts>2016-05-02 13:13:45 -0700</creation_ts>
          <short_desc>Add the ability to accumulate logs for specific logging channels to help diagnose test timeouts</short_desc>
          <delta_ts>2019-10-15 21:16:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154968</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fujii</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189485</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 13:13:45 -0700</bug_when>
    <thetext>Add the ability to accumulate logs for specific logging channels to help diagnose test timeouts

This is the current strategy going forward to explore https://bugs.webkit.org/show_bug.cgi?id=154968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189488</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 13:15:23 -0700</bug_when>
    <thetext>This will add the WTF code as well as implement it in DRT.

WK2 (including getting it to all the processes) will come shortly after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189496</commentid>
    <comment_count>2</comment_count>
      <attachid>277929</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 13:40:44 -0700</bug_when>
    <thetext>Created attachment 277929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189503</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:00:41 -0700</bug_when>
    <thetext>Okay, apparently my attempt at exporting some WebCore symbols fails in release builds. Dang.
Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189514</commentid>
    <comment_count>4</comment_count>
      <attachid>277935</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:23:23 -0700</bug_when>
    <thetext>Created attachment 277935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189515</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:23:49 -0700</bug_when>
    <thetext>Relying on EWS for this because it will be faster than me building release locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189517</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:31:40 -0700</bug_when>
    <thetext>The GTK build failure:

Last 500 characters of output:
./Source/WebCore/testing/js/WebCoreTestSupport.cpp:108:5: error: &apos;initializeLoggingChannelsIfNecessary&apos; is not a member of &apos;WebCore&apos;
../../Source/WebCore/testing/js/WebCoreTestSupport.cpp:108:5: note: suggested alternative:
../../Source/WebCore/testing/js/WebCoreTestSupport.cpp:106:6: note:   &apos;WebCoreTestSupport::initializeLoggingChannelsIfNecessary&apos;

Except... that&apos;s obviously bull, because initializeLoggingChannelsIfNecessary is clearly a member of WebCore in the included header &quot;Logging.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189520</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:43:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The GTK build failure:
&gt; 
&gt; Last 500 characters of output:
&gt; ./Source/WebCore/testing/js/WebCoreTestSupport.cpp:108:5: error:
&gt; &apos;initializeLoggingChannelsIfNecessary&apos; is not a member of &apos;WebCore&apos;
&gt; ../../Source/WebCore/testing/js/WebCoreTestSupport.cpp:108:5: note:
&gt; suggested alternative:
&gt; ../../Source/WebCore/testing/js/WebCoreTestSupport.cpp:106:6: note:  
&gt; &apos;WebCoreTestSupport::initializeLoggingChannelsIfNecessary&apos;
&gt; 
&gt; Except... that&apos;s obviously bull, because
&gt; initializeLoggingChannelsIfNecessary is clearly a member of WebCore in the
&gt; included header &quot;Logging.h&quot;

I get the same error on Mac in a release build.
Odd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189524</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 14:51:28 -0700</bug_when>
    <thetext>It&apos;s a compiled ifdef for logging. Of course!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189528</commentid>
    <comment_count>9</comment_count>
      <attachid>277939</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 15:05:57 -0700</bug_when>
    <thetext>Created attachment 277939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189534</commentid>
    <comment_count>10</comment_count>
      <attachid>277939</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-02 15:17:33 -0700</bug_when>
    <thetext>Comment on attachment 277939
Patch

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

&gt; Source/WTF/wtf/Assertions.cpp:593
&gt;  } // extern &quot;C&quot;
&gt; +
&gt; +namespace WTF {

Everything else in this file has the WTF prefix on its name.  Is there a reason you didn&apos;t want to put this in its own file?  LoggingAccumulator.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189536</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 15:20:42 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 277939 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277939&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Assertions.cpp:593
&gt; &gt;  } // extern &quot;C&quot;
&gt; &gt; +
&gt; &gt; +namespace WTF {
&gt; 
&gt; Everything else in this file has the WTF prefix on its name.  Is there a
&gt; reason you didn&apos;t want to put this in its own file?  LoggingAccumulator.cpp

The only reason everything in this file is prefixed with WTF and not in the WTF namespace is because Assertions.h has to be includible from C or Obj-C code.

LoggingAccumulator.h exposes two convenience methods for the mechanism with C++ concepts, but there&apos;s no need for a .cpp. In fact adding a .cpp would separate the implementation details from where they are actively used, inside of Assertions.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189548</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 16:10:54 -0700</bug_when>
    <thetext>As I work on the WK2 part of this, I realize, this approach really only works for WK1.

In WK2 we have to message around to each process to enable the accumulation, and then message to each process for the accumulated logs.

The result is we have multiple &quot;chunks&quot; of logs, such as one chunk from the web process and one from the database process.

Unlike how the logging information comes to stderr, those chunks are not intertwined.

I&apos;m going to go ahead with this patch as-is for WK1, as there will still be benefit from doing so, but revisit WK2 later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189549</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-02 16:13:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/200346</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579960</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-14 20:21:00 -0700</bug_when>
    <thetext>If a test case calls testRunner.accummulateLogsForChannel(&quot;IndexedDB&quot;),
all subsequent IndexedDB tests dumps the log.
This is bloating DumpRenderTree log because DumpRenderTree is run with --debug-rwt-logging switch.
For example,
https://build.webkit.org/builders/Apple-Catalina-Debug-WK1-Tests/builds/70/steps/layout-test/logs/stdio

Brady, do you still need this logging function?
Can I remove this?
Or, should I add a function to turn off WTFLogChannelOnWithAccumulation flag and call it after test execution like getAndResetAccumulatedLogs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580445</commentid>
    <comment_count>15</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-10-15 21:16:07 -0700</bug_when>
    <thetext>Filed: Bug 203024 – DumpRenderTree should clear WTFLogChannelState::OnWithAccumulation state set by testRunner.accummulateLogsForChannel</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277929</attachid>
            <date>2016-05-02 13:40:44 -0700</date>
            <delta_ts>2016-05-02 14:23:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157274-20160502134121.patch</filename>
            <type>text/plain</type>
            <size>28736</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNkY2YwYWQ2MzQ4NzYyNTU4Y2JmOGQx
NDM5MTA3ZGU2YTFiZTJmZDkuLmIyNDYxY2E4Y2E5ZDRmZThhMTg3ZjVhNWE0N2I3NGQ1M2YzMjFi
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBhY2N1bXVsYXRlIGxv
Z3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8gaGVscCBkaWFnbm9zZSB0ZXN0IHRp
bWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIFdURkxvZyB0byBhZGQgdGhlIGxvZ2dpbmcgc3RyaW5nIHRvIHRo
ZSBsb2dnaW5nIGFjY3VtdWxhdG9yIGlmIHRoZSBsb2dnaW5nIGNoYW5uZWwgc2F5cyBzby4KKyAg
ICAgICAgSXQgYWxzbyBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoaXMgbmV3IGFjY3VtdWxhdGlv
biBtZWNoYW5pc20uCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKFdURjo6cmVzZXRBY2N1
bXVsYXRlZExvZ3MpOgorICAgICAgICAoV1RGOjpnZXRBbmRSZXNldEFjY3VtdWxhdGVkTG9ncyk6
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKworICAgICAgICAqIHd0Zi9Mb2dnaW5nQWNj
dW11bGF0b3IuaDogQWRkZWQuIEV4cG9zZSBmdW5jdGlvbnMgdG8gZ2V0IGFjY3VtdWxhdGVkIGxv
Z3MgYW5kIHRvIHJlc2V0IHRoZSBhY2N1bXVsYXRpb24uCisKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZvcm1hdCk6IFVwZGF0ZSB0byBo
YW5kbGUgJUAgb24gQ0YgKFdlbGwsIHJlYWxseSBPYmpDKSBwbGF0Zm9ybXMuCisKIDIwMTYtMDQt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJ
REI6IEltcGxlbWVudCBuYXRpdmUgSURCRmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBX
ZWJJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMyYjQwYWE2YTYxNGU4ODNi
MmQwYTg2N2QyNC4uOTgyMDJkNTg2N2VmNTAxZTFiNDUxNDgyNzQwMGY2Zjc5NDg3NDFmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWNjdW11bGF0ZSBs
b2dzIGZvciBzcGVjaWZpYyBsb2dnaW5nIGNoYW5uZWxzIHRvIGhlbHAgZGlhZ25vc2UgdGVzdCB0
aW1lb3V0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NzI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vTG9nZ2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dDaGFubmVs
VG9BY2N1bXVsYXRlKTogU2V0IHRoZSBnaXZlbiBsb2cgY2hhbm5lbCB0byBhY2N1bXVsYXRlIGxv
Z2dpbmcsCisgICAgICAgICAgYW5kIGRpcnR5IHRoZSBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxz
SWZOZWNlc3NhcnkgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hh
bm5lbHNJZk5lY2Vzc2FyeSk6IENoYW5nZSBmcm9tIGJlaW5nIGEgb25lLXRpbWUtb25seSBjYWxs
IHRvIGEgCisgICAgICAgICAgb25lLXRpbWUtZm9yLWVhY2gtdGltZS1zb21lYm9keS1jYWxscy1z
ZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlIGNhbGwuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2lu
Zy5oOgorCiAyMDE2LTA1LTAyICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAg
IE1vdmUgUmVzb3VyY2VUaW1pbmcgYmVoaW5kIGEgcnVudGltZSBmbGFnCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NDMzOWE1ZGNlYmQ4MDcxNDhlZGU3ZGVl
ODQwMWI4NWQ5NDE5ZDg5Li5lMDBlNGZhMDM3NTgxMGE2YmQ1YjQ1YWRkMTk5MmQxY2QwYTk3YWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMCw2ICsx
MDAsNyBAQAogCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1
MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBC
NDc4OTFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyog
U3RyaW5nQ29tbW9uLmggKi87IH07CisJCTUxM0UxNzBCMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dn
aW5nQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCAq
LzsgfTsKIAkJNTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUzMDcxQzkxQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBG
QTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lz
dHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5
OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTQxMSw2
ICs0MTIsNyBAQAogCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3Au
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyog
TG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Z2dpbmdBY2N1bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTMwNzFD
OTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1LDYg
KzgzNyw3IEBACiAJCQkJMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovLAog
CQkJCTBGRTE2NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmggKi8sCiAJCQkJQThBNDcyQzMx
NTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovLAorCQkJCTUxM0UxNzBBMUNEN0Q1QkYwMEUz
NjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCAqLywKIAkJCQlBOEE0NzJDNjE1MUE4MjVBMDA0
MTIzRkYgLyogTWFpblRocmVhZC5jcHAgKi8sCiAJCQkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZG
IC8qIE1haW5UaHJlYWQuaCAqLywKIAkJCQkxQTIzM0M3QzE3REFBNkUzMDBBOTNBQ0YgLyogTWFs
bG9jUHRyLmggKi8sCkBAIC0xMjQ5LDYgKzEyNTIsNyBAQAogCQkJCUE4QTQ3NDE1MTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDE2MTUx
QTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxM0UxNzBCMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQxNzE1MUE4MjVCMDA0MTIzRkYgLyogUmVkQmxhY2tUcmVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjI5OUI2RTE3QTlFNUI4MDBBREVCRTUgLyogUmVmLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
IGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggOTA1NGU5YzI0M2I3NTAzODU2
MDUyN2U3MTU4Mjc4MTVlN2JiODhmZC4uZGJhNGFjMDNlYWE1MmNlMGNhNmQyYjM4YjMwZDBmYzFl
MzczNjJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTM1LDE0ICszNSwxOCBAQAogI2luY2x1
ZGUgIkFzc2VydGlvbnMuaCIKIAogI2luY2x1ZGUgIkNvbXBpbGVyLmgiCisjaW5jbHVkZSA8bXV0
ZXg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2lu
Z0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2lm
IEhBVkUoU0lHTkFMX0gpCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjZW5kaWYKQEAgLTc2LDYgKzgw
LDE0IEBACiAKIGV4dGVybiAiQyIgewogCitzdGF0aWMgdm9pZCBsb2dUb1N0ZGVycihjb25zdCBj
aGFyKiBidWZmZXIpCit7CisjaWYgVVNFKEFQUExFX1NZU1RFTV9MT0cpCisgICAgYXNsX2xvZygw
LCAwLCBBU0xfTEVWRUxfTk9USUNFLCAiJXMiLCBidWZmZXIpOworI2VuZGlmCisgICAgZnB1dHMo
YnVmZmVyLCBzdGRlcnIpOworfQorCiBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAwKQogc3RhdGlj
IHZvaWQgdnByaW50Zl9zdGRlcnJfY29tbW9uKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBh
cmdzKQogewpAQCAtOTYsMTAgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX2Nv
bW1vbihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogICAgICAgICBDRlN0cmlu
Z0dldENTdHJpbmcoc3RyLCBidWZmZXIsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsK
IAotI2lmIFVTRShBUFBMRV9TWVNURU1fTE9HKQotICAgICAgICBhc2xfbG9nKDAsIDAsIEFTTF9M
RVZFTF9OT1RJQ0UsICIlcyIsIGJ1ZmZlcik7Ci0jZW5kaWYKLSAgICAgICAgZnB1dHMoYnVmZmVy
LCBzdGRlcnIpOworICAgICAgICBsb2dUb1N0ZGVycihidWZmZXIpOwogCiAgICAgICAgIGZyZWUo
YnVmZmVyKTsKICAgICAgICAgQ0ZSZWxlYXNlKHN0cik7CkBAIC00MTIsMTUgKzQyMSw4MyBAQCB2
b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbiwgY29uc3QgY2hhcgogICAgIHByaW50Q2FsbFNpdGUoZmlsZSwgbGluZSwgZnVu
Y3Rpb24pOwogfQogCitjbGFzcyBXVEZMb2dnaW5nQWNjdW11bGF0b3IgeworcHVibGljOgorICAg
IHZvaWQgYWNjdW11bGF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlc2V0QWNjdW11bGF0
ZWRMb2dzKCk7CisgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7CisKK3By
aXZhdGU6CisgICAgTG9jayBhY2N1bXVsYXRvckxvY2s7CisgICAgU3RyaW5nQnVpbGRlciBsb2dn
aW5nQWNjdW11bGF0b3I7Cit9OworCit2b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6YWNjdW11
bGF0ZShjb25zdCBTdHJpbmcmIGxvZykKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3Vt
dWxhdG9yTG9jayk7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOworfQorCit2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQoreworICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBsb2dnaW5nQWNjdW11
bGF0b3IuY2xlYXIoKTsKK30KKworU3RyaW5nIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6Z2V0QW5k
UmVzZXRBY2N1bXVsYXRlZExvZ3MoKQoreworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11
bGF0b3JMb2NrKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbG9nZ2luZ0FjY3VtdWxhdG9yLnRvU3Ry
aW5nKCk7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RhdGljIFdURkxvZ2dpbmdBY2N1bXVsYXRvciYgbG9nZ2luZ0FjY3VtdWxhdG9y
KCkKK3sKKyAgICBzdGF0aWMgV1RGTG9nZ2luZ0FjY3VtdWxhdG9yKiBhY2N1bXVsYXRvcjsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUFjY3VtdWxhdG9yT25jZTsKKyAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplQWNjdW11bGF0b3JPbmNlLCBbXSB7CisgICAgICAgIGFj
Y3VtdWxhdG9yID0gbmV3IFdURkxvZ2dpbmdBY2N1bXVsYXRvcjsKKyAgICB9KTsKKworICAgIHJl
dHVybiAqYWNjdW11bGF0b3I7Cit9CisKIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5u
ZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQogewotICAgIGlmIChjaGFubmVsLT5zdGF0ZSAh
PSBXVEZMb2dDaGFubmVsT24pCisgICAgaWYgKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5u
ZWxPZmYpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChjaGFubmVsLT5zdGF0ZSA9PSBXVEZM
b2dDaGFubmVsT24pIHsKKyAgICAgICAgdmFfbGlzdCBhcmdzOworICAgICAgICB2YV9zdGFydChh
cmdzLCBmb3JtYXQpOworICAgICAgICB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xp
bmUoZm9ybWF0LCBhcmdzKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbldp
dGhBY2N1bXVsYXRpb24pOworCiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3Ms
IGZvcm1hdCk7Ci0gICAgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGZvcm1h
dCwgYXJncyk7CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0
ZXJhbCIKKyNlbmRpZgorICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQo
Zm9ybWF0LCBhcmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOworCisgICAgaWYgKCFsb2dnaW5n
U3RyaW5nLmVuZHNXaXRoKCdcbicpKQorICAgICAgICBsb2dnaW5nU3RyaW5nLmFwcGVuZCgnXG4n
KTsKKworICAgIGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7
CisKKyAgICBsb2dUb1N0ZGVycihsb2dnaW5nU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2
b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKQEAgLTQzMCw3ICs1MDcsMTYgQEAgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm4KIAogICAgIHZh
X2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIHZwcmludGZfc3Rk
ZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShmb3JtYXQsIGFyZ3MpOworCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICBXVEZMb2co
Y2hhbm5lbCwgZm9ybWF0LCBhcmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOwogCiAgICAgcHJp
bnRDYWxsU2l0ZShmaWxlLCBsaW5lLCBmdW5jdGlvbik7CkBAIC01MDMsMyArNTg5LDE3IEBAIHZv
aWQgV1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKFdURkxvZ0NoYW5uZWwq
IGNoYW5uZWxzW10sIHNpemVfdCBjCiB9CiAKIH0gLy8gZXh0ZXJuICJDIgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCByZXNldEFjY3VtdWxhdGVkTG9ncygpCit7CisgICAgbG9nZ2luZ0FjY3Vt
dWxhdG9yKCkucmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK30KKworU3RyaW5nIGdldEFuZFJlc2V0
QWNjdW11bGF0ZWRMb2dzKCkKK3sKKyAgICByZXR1cm4gbG9nZ2luZ0FjY3VtdWxhdG9yKCkuZ2V0
QW5kUmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmgKaW5kZXggYjQ4Yzg2MjNiN2Q1ZDRiYjQxZmRjN2FhNjY0NDQxMDE0NmU2MjQzMy4u
MGIzYjcxMjcxOGE5MmFmN2E5Yzg3YWNhZDhmYzY2NWZiNzM5NjUzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
aApAQCAtMTMwLDcgKzEzMCw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBOT19SRVRVUk5fRFVF
X1RPX0NSQVNICiAjZW5kaWYKIAotdHlwZWRlZiBlbnVtIHsgV1RGTG9nQ2hhbm5lbE9mZiwgV1RG
TG9nQ2hhbm5lbE9uIH0gV1RGTG9nQ2hhbm5lbFN0YXRlOwordHlwZWRlZiBlbnVtIHsgV1RGTG9n
Q2hhbm5lbE9mZiwgV1RGTG9nQ2hhbm5lbE9uLCBXVEZMb2dDaGFubmVsT25XaXRoQWNjdW11bGF0
aW9uIH0gV1RGTG9nQ2hhbm5lbFN0YXRlOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgV1RGTG9n
Q2hhbm5lbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnaW5nQWNjdW11bGF0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hOGUyMzIwNmRiZjhkMGUzNmIyNDRhNjQ1NmUzOGQ4ZmQyYjNhMmQ4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmgKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0QW5kUmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6cmVzZXRBY2N1bXVsYXRlZExvZ3M7
Cit1c2luZyBXVEY6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCmluZGV4IGNlMzc2ZTIzYTA5NTk5ZmRjNTVjZWQ1ZTliOTMwODY4NDRhNmVhMGIu
Ljc5OTFmNDcwZmExNzA3MGExYTJmNDc5ZDBmMjY3YjU1OWYyNTFlYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKQEAgLTQ2Myw2ICs0NjMsMjQgQEAgU3RyaW5nIFN0cmluZzo6Zm9ybWF0
KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogICAgIHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFy
dChhcmdzLCBmb3JtYXQpOwogCisjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyAgICBpZiAo
c3Ryc3RyKGZvcm1hdCwgIiVAIikpIHsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmb3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZv
cm1hdEFuZEFyZ3VtZW50cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBjZkZvcm1hdC5n
ZXQoKSwgYXJncykpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm4g
cmVzdWx0LmdldCgpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQor
CiAgICAgLy8gRG8gdGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJ
TEVSKE1TVkMpCiAgICAgaW50IHJlc3VsdCA9IF92c2NwcmludGYoZm9ybWF0LCBhcmdzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggMDAwM2I3OGZiNTZhOTFkYzM4NmZlNmZh
NDE5NGMxNzQyNTdmODc3ZS4uNWJhYzYwMzE5NTY0MGU3YjJkNDQxMDlmZTU5ZWM2ZjJhZDk4MzM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTU3LDEyICs1NywyNCBAQCBi
b29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBj
aGFubmVsLT5zdGF0ZSAhPSBXVEZMb2dDaGFubmVsT2ZmOwogfQogCitzdGF0aWMgYm9vbCBsb2dD
aGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CisKK3ZvaWQgc2V0TG9nQ2hhbm5lbFRv
QWNjdW11bGF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgV1RGTG9nQ2hhbm5lbCogY2hh
bm5lbCA9IFdURkxvZ0NoYW5uZWxCeU5hbWUobG9nQ2hhbm5lbHMsIGxvZ0NoYW5uZWxDb3VudCwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgIHJldHVybjsK
KworICAgIGNoYW5uZWwtPnN0YXRlID0gV1RGTG9nQ2hhbm5lbE9uV2l0aEFjY3VtdWxhdGlvbjsK
KyAgICBsb2dDaGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7Cit9CisKIHZvaWQgaW5p
dGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBo
YXZlSW5pdGlhbGl6ZWRMb2dnaW5nQ2hhbm5lbHMgPSBmYWxzZTsKLSAgICBpZiAoaGF2ZUluaXRp
YWxpemVkTG9nZ2luZ0NoYW5uZWxzKQorICAgIGlmICghbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6
YXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBoYXZlSW5pdGlhbGl6ZWRMb2dnaW5nQ2hhbm5l
bHMgPSB0cnVlOworCisgICAgbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsK
IAogICAgIFdURkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyhsb2dDaGFubmVs
cywgbG9nQ2hhbm5lbENvdW50LCBsb2dMZXZlbFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGFmYTE1MTk1MmE1M2I4NzY0NjViNDMyZGQ1
MGIwMjQ2ZWRkODI4YjUuLmM2OTA2ZWM1MDE1MTU2YzczODQ3OTdlODE1OTBkZmMzYjRjMWY4MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgV0VCQ09SRV9M
T0dfQ0hBTk5FTFMoREVDTEFSRV9MT0dfQ0hBTk5FTCkKIAogU3RyaW5nIGxvZ0xldmVsU3RyaW5n
KCk7CiBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJpbmcmIG5h
bWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKTsKICNpZm5kZWYgTkRFQlVHCiB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29u
c3QgU3RyaW5nJiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZjA4N2U5
ZTMwMzdiOGNlOTcwNTY3YjdkZTg1ZGIwZjY5OWU1NTI3Li44MWZiOWQ3YmZlZmMyZjNhYTA2NDJm
OTE3MGRjYmUzMTUyZmYwZTg3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDUtMDIgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBhY2N1bXVs
YXRlIGxvZ3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8gaGVscCBkaWFnbm9zZSB0
ZXN0IHRpbWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgYWNjdW11bGF0ZSBtZXRob2QgdG8gRFJUJ3MgVGVzdFJ1bm5lciwg
ZHVtcCB0aGUgYWNjdW11bGF0ZWQgbG9ncyBpZiB0aGVyZSdzIGEgdGltZW91dCwKKyAgICAgICAg
YW5kIHJlc2V0IHRoZW0gaW4gYmV0d2VlbiB0ZXN0czoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKGFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
Zyk6CisKKyAgICAgICAgQWxzbyBhZGQgdGhlIG5ldyBtZXRob2QgdG8gV0tUUidzIFRlc3RSdW5u
ZXIsIGJ1dCBqdXN0IHN0dWJiZWQgZm9yIG5vdzoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorCiAyMDE2LTA0LTMwICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJlYW1saW5lIGFuZCBy
ZW1vdmUgdW51c2VkIGJpbmRpbmdzIGdlbmVyYXRpb24gY29kZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcAppbmRleCBhNjljMGYxNDU0YTY5NmMwZjZhMjdjZWIwZDRiN2JiMDFkZjdiMmMz
Li43ZTk1OWQ2MGFkY2Q5ZTgwNmExZjIzN2NiZTdiYjI4OTU3MWE0MWJlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ1Rlc3RSdW5uZXJVdGlscy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
T2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUg
PGxvY2FsZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CkBAIC00NSw5
ICs0NiwxMSBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQog
I2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KQEAgLTEyNTMsNiArMTI1Niw5IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjCiB9CiAjZW5kaWYKIAordm9pZCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFu
bmVsKEpTU3RyaW5nUmVmIHVybCk7CisKKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlRGFzaGJv
YXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMTk2OCw2ICsxOTc0LDIwIEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIG5ldmVySW5saW5lRnVuY3Rpb24oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTQzo6c2V0TmV2ZXJJbmxpbmUo
Y29udGV4dCwgYXJndW1lbnRzWzBdKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYWNjdW1tdWxh
dGVMb2dzRm9yQ2hhbm5lbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY2hhbm5lbChBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwor
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CisgICAgY29udHJvbGxlci0+c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChjaGFubmVsLmdl
dCgpKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwog
c3RhdGljIHZvaWQgdGVzdFJ1bm5lck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkK
IHsKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+
KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKQEAgLTIxNzIsNiArMjE5Miw3IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImZh
aWxOZXh0TmV3Q29kZUJsb2NrIiwgZmFpbE5leHROZXdDb2RlQmxvY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAibnVtYmVyT2ZERkdDb21waWxlcyIsIG51bWJlck9mREZHQ29tcGlsZXMsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAibmV2ZXJJbmxpbmVGdW5jdGlvbiIsIG5ldmVySW5saW5lRnVuY3Rpb24sIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAiYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCIsIGFjY3VtbXVsYXRl
TG9nc0ZvckNoYW5uZWwsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCkBA
IC0yMjIyLDYgKzIyNDMsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lckZpcmVkKCkKIHsKICAgICBjb25zdCBjaGFyKiBtZXNzYWdlID0gIkZBSUw6IFRpbWVkIG91
dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuIjsKICAgICBmcHJpbnRmKHN0
ZG91dCwgIiVzIiwgbWVzc2FnZSk7CisKKyAgICBhdXRvIGFjY3VtdWxhdGVkTG9ncyA9IGdldEFu
ZFJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7CisgICAgaWYgKCFhY2N1bXVsYXRlZExvZ3MuaXNFbXB0
eSgpKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UgPSAiTG9ncyBhY2N1bXVsYXRlZCBk
dXJpbmcgdGVzdCBydW46XG4iOworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzJXNcbiIsIG1l
c3NhZ2UsIGFjY3VtdWxhdGVkTG9ncy51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKICAgICBub3Rp
ZnlEb25lKCk7CiB9CiAKQEAgLTIyNTIsMyArMjI4MCwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFNob3VsZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogewog
ICAgIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA9IHNob3VsZFBhaW50QnJva2VuSW1hZ2U7CiB9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmlu
Z1JlZiBjaGFubmVsKQoreworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5lbCk7CisgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOworCisgICAgV2ViQ29yZTo6
c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaAppbmRleCA3MzFjOGQxZmJmMTVmYjcyNGIwZTE3YzRjZTRkOGY4ZGQ3
YTU0MzYwLi5mMWI3YmVhZTg3OWQzZjVkYzZmMmE4ZThhNWZjNjM2NjI4ODJmNTQ2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKGJvb2wpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNl
dEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdSZWYpOworCiAgICAgLy8gTGVnYWN5
IGhlcmUgcmVmZXJzIHRvIHRoZSBvbGQgVGVzdFJ1bm5lciBBUEkgZm9yIGhhbmRsaW5nIHdlYiBu
b3RpZmljYXRpb25zLCBub3QgdGhlIGxlZ2FjeSB3ZWIgbm90aWZpY2F0aW9uIEFQSS4KICAgICB2
b2lkIGlnbm9yZUxlZ2FjeVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpOwogICAg
IC8vIExlZ2FjeSBoZXJlIHJlZmVycyB0byB0aGUgb2xkIFRlc3RSdW5uZXIgQVBJIGZvciBoYW5k
bGluZyB3ZWIgbm90aWZpY2F0aW9ucywgbm90IHRoZSBsZWdhY3kgd2ViIG5vdGlmaWNhdGlvbiBB
UEkuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggYzZk
ODUwZjZiMzE2YWRlMmY4MjYwNGI1ZmYwMWU4ZmVkMWVlZGFlZi4uMTZjN2UyODY3MzFjMmZhMmI4
YWM1OWRkMjg5OTM4OTUxMzY5MzU1OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0hlYXBTdGF0aXN0aWNz
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0xvZ2dpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJL
aXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTVJhbmdlLmg+CkBAIC04Niw2
ICs4Nyw3IEBACiAjaW1wb3J0IDxnZXRvcHQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8d3RmL0xvZ2dpbmdBY2N1bXVs
YXRvci5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CkBAIC0xODk0LDYgKzE4OTYs
OSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcoKQogI2VuZGlmCiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CisKKyAgICByZXNl
dEFjY3VtdWxhdGVkTG9ncygpOworICAgIFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5l
bHNJZk5lY2Vzc2FyeSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggYTQzMDM3ZDVkOGM2ZDA5OTNjOWU4YTMyYTk5ZTE2ODRjNzljNWY1Zi4u
M2ZlMTg2ZjU4Yzg4ODUzMmE5YjAwZDcyMzY0YmZmOWYyM2YzNmUxMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0yMjMsNSArMjIzLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewog
ICAgIHZvaWQgcnVuVUlTY3JpcHQoRE9NU3RyaW5nIHNjcmlwdCwgb2JqZWN0IGNhbGxiYWNrKTsK
IAogICAgIHZvaWQgY2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCk7CisKKyAgICB2b2lkIGFjY3Vt
bXVsYXRlTG9nc0ZvckNoYW5uZWwoRE9NU3RyaW5nIGNoYW5uZWwpOwogfTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggZTdkNmY1Zjg0NWExM2E1ZTQyM2I1MmJjOTM2NTk0MGU4NjQ4YTA4Yi4uMDE1MjQxNzE2ODMy
MTk2ZGY2NjJiNGY3M2IxMzNjYjYzMzY3N2Y3OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02MDEsNiArNjAxLDEx
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCkKICAgICBjYWxs
YmFja01hcCgpLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6YWNjdW1tdWxhdGVMb2dz
Rm9yQ2hhbm5lbChKU1N0cmluZ1JlZikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGdldHRp
bmcgdGhlIGNhbGwgdG8gYWxsIHByb2Nlc3Nlcy4KK30KKwogdm9pZCBUZXN0UnVubmVyOjphZGRD
aHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgY2FjaGVUZXN0UnVu
bmVyQ2FsbGJhY2soQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrSUQsIGNhbGxiYWNrKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
aW5kZXggNzEwOTQ1MzI3NWE1MTk1NmM5MTY5MDcxMjU2NTg0NThjZjk0NzJhYy4uZDA4YzkzM2Rk
ZTY4NjY4MzcwZDdlYjg4ODA4ODdhYThiMDViMDZjYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTMyMCw2ICszMjAsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyVGVzdFJ1bm5lckNhbGxiYWNrcygpOwogCisgICAg
dm9pZCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpOworCiBw
cml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMWMyYzRhZDY1OWQxM2I5ZDZl
ZWYxMTliZmExOWJlMDM4ZmZhMjYuLjEwMzM2ZjRiMjg5ZDk3NmVhNzQ1MjdkMmE0OTU0Y2M2NTgw
MDVlMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wNS0wMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGFjY3VtdWxh
dGUgbG9ncyBmb3Igc3BlY2lmaWMgbG9nZ2luZyBjaGFubmVscyB0byBoZWxwIGRpYWdub3NlIHRl
c3QgdGltZW91dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTcyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIEZvciB0aGUgdGVzdHMgdGhhdCBhcmUga25vd24gZmxha2VzIHRoYXQgYXJl
IG5vdCBpbXBvcnRlZCwgYWRkIHRoZSAiYWNjdW11bGF0ZSBJbmRleGVkREIgbG9ncyIgY29tbWFu
ZC4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9w
ZW4tZGF0YWJhc2VzLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1hYm9ydC5qczoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVu
ZWVkZWQuanM6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJp
bmdzLmpzOgorCiAyMDE2LTA1LTAxICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21h
aWwuY29tPgogCiAgICAgICAgIENsYXNzIGNvbnRydWN0b3IgYW5kIG1ldGhvZHMgc2hvdWxkbid0
IGhhdmUgImFyZ3VtZW50cyIgYW5kICJjYWxsZXIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9wZW4t
ZGF0YWJhc2VzLmpzCmluZGV4IGQ1ODUxYTdmODg2OGI4ZmJlYTZmN2JiN2E5YzMzZmQyNjQ1NWNh
MWMuLmRlMWNjODI1NWYwODNmYjAzYjcyN2IyYjczY2I2NDRhNmQyNGQzOWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9wZW4t
ZGF0YWJhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXNvdXJjZXMvMjU2LW9wZW4tZGF0YWJhc2VzLmpzCkBAIC0xLDUgKzEsOCBAQAogZGVzY3JpcHRp
b24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgaWYgeW91IG9wZW4gMTI4IHVuaXF1ZSBkYXRh
YmFzZXMsIGNsb3NlIHlvdXIgY29ubmVjdGlvbnMgdG8gdGhlbSwgYW5kIHRoZW4gb3BlbiAxMjgg
b3RoZXIgdW5pcXVlIGRhdGFiYXNlcywgdGhhdCBpdCB3b3Jrcy4iKTsKIAoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCgiSW5k
ZXhlZERCIik7CisKIHZhciBkYXRhYmFzZUNvbm5lY3Rpb25zID0gbmV3IEFycmF5OwogCiBmb3Ig
KHZhciBpID0gMDsgaSA8IDEyODsgKytpKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnQt
cmVxdWVzdHMtY2FuY2VsbGVkLmpzCmluZGV4IDc3OTUyZmUzODdiYzgwMmEzYjg4YTQyZTFlOGI4
Njk5Y2U2OGY3YjIuLjY0ODhjMzNlYjQ1YTI2ODljNjA0OTNmMWQ0NjkwNTgxN2U3OTA1NTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
YWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzCkBAIC0x
LDggKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHVuLWhh
bmRsZWQgcmVxdWVzdHMgaW4gYSB0cmFuc2FjdGlvbiByZWNlaXZlIG9uZXJyb3IgY2FsbGJhY2tz
IHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuIik7CiAKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoIkluZGV4ZWRE
QiIpOworICAgIAogaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UpOwogCi0KIGZ1bmN0aW9u
IGRvbmUoKQogewogICAgIGZpbmlzaEpTVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWFib3J0Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5j
cmVtZW50LWFib3J0LmpzCmluZGV4IDU5NGI5ZmRiMTI1NDc4ODg0MjVmMTVkNTZiYmIxOTY0NDlj
Y2QwYmQuLjVkYjRiNDExNjg5YjAzMTdkNDVlMDViZTNmOTI1MDJlNjUyNmE5YjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYXV0b2lu
Y3JlbWVudC1hYm9ydC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtYWJvcnQuanMKQEAgLTMsOSArMywxMSBAQCBJdCB0
aGVuIHB1dHMgc29tZSB0aGluZ3MgaW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNoZWNraW5nIHRoZSBr
ZXlzIHRoYXQgd2VyZSB1c2VkLgogQnV0IGl0IHRoZW4gYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24u
IFwKIFRoZW4gaXQgb3BlbnMgYSBuZXcgb25lIGFuZCBwdXRzIHNvbWV0aGluZyBpbiBpdCwgZG91
YmxlIGNoZWNraW5nIHRoYXQgdGhlIGtleSBnZW5lcmF0b3Igd2FzIHJldmVydGVkIHdoZW4gdGhl
IGFib3ZlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOwogCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKCJJbmRleGVkREIi
KTsKKyAgICAKIGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlKTsKIAotCiBmdW5jdGlvbiBk
b25lKCkKIHsKICAgICBmaW5pc2hKU1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLW9wZW4taW4tdXBncmFkZW5lZWRl
ZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9u
LW9wZW4taW4tdXBncmFkZW5lZWRlZC5qcwppbmRleCAwZGQ5MWU5NTVkM2RkMTMzOTYzM2Q3ZDY3
NTA5NWE0NTgzNDJkNjFjLi4yYzIzODBmMjdhNWUzNDhhN2EyYTAzZWJiYTBkN2E3NmZiYTUyN2Ey
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50
dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVkZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tb3Blbi1pbi11cGdyYWRlbmVlZGVkLmpz
CkBAIC01LDYgKzUsOSBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0aW9u
KCJUZXN0IGNhbGxpbmcgZGIub3BlbiBpbiB1cGdyYWRlbmVlZGVkLiIpOwogCitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKCJJ
bmRleGVkREIiKTsKKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vZGQtc3RyaW5ncy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vZGQtc3RyaW5ncy5qcwppbmRleCAyNTM5M2E2ZTY3ZmNiNTI1ZDkwYWJkZTk0NDUyZmUwMmQ3
MzU2ZjhmLi4zNTE0MmUzZWNhMTFlZTU0ZDVlZDgwNmNhYzQwZTk5MWY2Mjg4ZGMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3Mu
anMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJp
bmdzLmpzCkBAIC01LDYgKzUsOSBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CiAKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwo
IkluZGV4ZWREQiIpOworCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277935</attachid>
            <date>2016-05-02 14:23:23 -0700</date>
            <delta_ts>2016-05-02 15:05:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157274-20160502142400.patch</filename>
            <type>text/plain</type>
            <size>30956</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNkY2YwYWQ2MzQ4NzYyNTU4Y2JmOGQx
NDM5MTA3ZGU2YTFiZTJmZDkuLmIyNDYxY2E4Y2E5ZDRmZThhMTg3ZjVhNWE0N2I3NGQ1M2YzMjFi
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBhY2N1bXVsYXRlIGxv
Z3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8gaGVscCBkaWFnbm9zZSB0ZXN0IHRp
bWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIFdURkxvZyB0byBhZGQgdGhlIGxvZ2dpbmcgc3RyaW5nIHRvIHRo
ZSBsb2dnaW5nIGFjY3VtdWxhdG9yIGlmIHRoZSBsb2dnaW5nIGNoYW5uZWwgc2F5cyBzby4KKyAg
ICAgICAgSXQgYWxzbyBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoaXMgbmV3IGFjY3VtdWxhdGlv
biBtZWNoYW5pc20uCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKFdURjo6cmVzZXRBY2N1
bXVsYXRlZExvZ3MpOgorICAgICAgICAoV1RGOjpnZXRBbmRSZXNldEFjY3VtdWxhdGVkTG9ncyk6
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKworICAgICAgICAqIHd0Zi9Mb2dnaW5nQWNj
dW11bGF0b3IuaDogQWRkZWQuIEV4cG9zZSBmdW5jdGlvbnMgdG8gZ2V0IGFjY3VtdWxhdGVkIGxv
Z3MgYW5kIHRvIHJlc2V0IHRoZSBhY2N1bXVsYXRpb24uCisKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZvcm1hdCk6IFVwZGF0ZSB0byBo
YW5kbGUgJUAgb24gQ0YgKFdlbGwsIHJlYWxseSBPYmpDKSBwbGF0Zm9ybXMuCisKIDIwMTYtMDQt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJ
REI6IEltcGxlbWVudCBuYXRpdmUgSURCRmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBX
ZWJJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMyYjQwYWE2YTYxNGU4ODNi
MmQwYTg2N2QyNC4uMTgxY2U5Yjg2MzBmZDY5M2RiZTkzMTIzNDYwNWJlNTkwYWRmNDE2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWNjdW11bGF0ZSBs
b2dzIGZvciBzcGVjaWZpYyBsb2dnaW5nIGNoYW5uZWxzIHRvIGhlbHAgZGlhZ25vc2UgdGVzdCB0
aW1lb3V0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NzI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vTG9nZ2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dDaGFubmVs
VG9BY2N1bXVsYXRlKTogU2V0IHRoZSBnaXZlbiBsb2cgY2hhbm5lbCB0byBhY2N1bXVsYXRlIGxv
Z2dpbmcsCisgICAgICAgICAgYW5kIGRpcnR5IHRoZSBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxz
SWZOZWNlc3NhcnkgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hh
bm5lbHNJZk5lY2Vzc2FyeSk6IENoYW5nZSBmcm9tIGJlaW5nIGEgb25lLXRpbWUtb25seSBjYWxs
IHRvIGEgCisgICAgICAgICAgb25lLXRpbWUtZm9yLWVhY2gtdGltZS1zb21lYm9keS1jYWxscy1z
ZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlIGNhbGwuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2lu
Zy5oOgorCisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oOgorCiAy
MDE2LTA1LTAyICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIE1vdmUgUmVz
b3VyY2VUaW1pbmcgYmVoaW5kIGEgcnVudGltZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1NDMzOWE1ZGNlYmQ4MDcxNDhlZGU3ZGVlODQwMWI4NWQ5
NDE5ZDg5Li5lMDBlNGZhMDM3NTgxMGE2YmQ1YjQ1YWRkMTk5MmQxY2QwYTk3YWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMCw2ICsxMDAsNyBAQAog
CQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5M
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RF
RDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBCNDc4OTFBQUFB
QzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29t
bW9uLmggKi87IH07CisJCTUxM0UxNzBCMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11
bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
M0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCAqLzsgfTsKIAkJ
NTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4
IC8qIFRpbnlMUlVDYWNoZS5oICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAq
LzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcx
NTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTQxMSw2ICs0MTIsNyBA
QAogCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1
bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTMwNzFDOTFDNDA0Mjcy
MDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2
MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0
aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0
N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1LDYgKzgzNyw3IEBA
CiAJCQkJMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovLAogCQkJCTBGRTE2
NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmggKi8sCiAJCQkJQThBNDcyQzMxNTFBODI1QTAw
NDEyM0ZGIC8qIExvY2tlci5oICovLAorCQkJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBM
b2dnaW5nQWNjdW11bGF0b3IuaCAqLywKIAkJCQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyog
TWFpblRocmVhZC5jcHAgKi8sCiAJCQkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5U
aHJlYWQuaCAqLywKIAkJCQkxQTIzM0M3QzE3REFBNkUzMDBBOTNBQ0YgLyogTWFsbG9jUHRyLmgg
Ki8sCkBAIC0xMjQ5LDYgKzEyNTIsNyBAQAogCQkJCUE4QTQ3NDE1MTUxQTgyNUIwMDQxMjNGRiAv
KiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDE2MTUxQTgyNUIwMDQx
MjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQzFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxM0UxNzBC
MUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQxNzE1MUE4MjVCMDA0MTIzRkYgLyogUmVkQmxhY2tUcmVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyNjI5OUI2RTE3QTlFNUI4MDBBREVCRTUgLyogUmVmLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggOTA1NGU5YzI0M2I3NTAzODU2MDUyN2U3MTU4
Mjc4MTVlN2JiODhmZC4uZGJhNGFjMDNlYWE1MmNlMGNhNmQyYjM4YjMwZDBmYzFlMzczNjJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTM1LDE0ICszNSwxOCBAQAogI2luY2x1ZGUgIkFzc2Vy
dGlvbnMuaCIKIAogI2luY2x1ZGUgIkNvbXBpbGVyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2luZ0FjY3VtdWxh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2lmIEhBVkUoU0lH
TkFMX0gpCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjZW5kaWYKQEAgLTc2LDYgKzgwLDE0IEBACiAK
IGV4dGVybiAiQyIgewogCitzdGF0aWMgdm9pZCBsb2dUb1N0ZGVycihjb25zdCBjaGFyKiBidWZm
ZXIpCit7CisjaWYgVVNFKEFQUExFX1NZU1RFTV9MT0cpCisgICAgYXNsX2xvZygwLCAwLCBBU0xf
TEVWRUxfTk9USUNFLCAiJXMiLCBidWZmZXIpOworI2VuZGlmCisgICAgZnB1dHMoYnVmZmVyLCBz
dGRlcnIpOworfQorCiBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAwKQogc3RhdGljIHZvaWQgdnBy
aW50Zl9zdGRlcnJfY29tbW9uKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpA
QCAtOTYsMTAgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX2NvbW1vbihjb25z
dCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogICAgICAgICBDRlN0cmluZ0dldENTdHJp
bmcoc3RyLCBidWZmZXIsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKIAotI2lmIFVT
RShBUFBMRV9TWVNURU1fTE9HKQotICAgICAgICBhc2xfbG9nKDAsIDAsIEFTTF9MRVZFTF9OT1RJ
Q0UsICIlcyIsIGJ1ZmZlcik7Ci0jZW5kaWYKLSAgICAgICAgZnB1dHMoYnVmZmVyLCBzdGRlcnIp
OworICAgICAgICBsb2dUb1N0ZGVycihidWZmZXIpOwogCiAgICAgICAgIGZyZWUoYnVmZmVyKTsK
ICAgICAgICAgQ0ZSZWxlYXNlKHN0cik7CkBAIC00MTIsMTUgKzQyMSw4MyBAQCB2b2lkIFdURlJl
cG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlv
biwgY29uc3QgY2hhcgogICAgIHByaW50Q2FsbFNpdGUoZmlsZSwgbGluZSwgZnVuY3Rpb24pOwog
fQogCitjbGFzcyBXVEZMb2dnaW5nQWNjdW11bGF0b3IgeworcHVibGljOgorICAgIHZvaWQgYWNj
dW11bGF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7
CisgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7CisKK3ByaXZhdGU6Cisg
ICAgTG9jayBhY2N1bXVsYXRvckxvY2s7CisgICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11
bGF0b3I7Cit9OworCit2b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6YWNjdW11bGF0ZShjb25z
dCBTdHJpbmcmIGxvZykKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9j
ayk7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOworfQorCit2b2lkIFdURkxv
Z2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQoreworICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKK30KKworU3RyaW5nIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6Z2V0QW5kUmVzZXRBY2N1
bXVsYXRlZExvZ3MoKQoreworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2Nr
KTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbG9nZ2luZ0FjY3VtdWxhdG9yLnRvU3RyaW5nKCk7Cisg
ICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIFdURkxvZ2dpbmdBY2N1bXVsYXRvciYgbG9nZ2luZ0FjY3VtdWxhdG9yKCkKK3sKKyAg
ICBzdGF0aWMgV1RGTG9nZ2luZ0FjY3VtdWxhdG9yKiBhY2N1bXVsYXRvcjsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUFjY3VtdWxhdG9yT25jZTsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplQWNjdW11bGF0b3JPbmNlLCBbXSB7CisgICAgICAgIGFjY3VtdWxhdG9y
ID0gbmV3IFdURkxvZ2dpbmdBY2N1bXVsYXRvcjsKKyAgICB9KTsKKworICAgIHJldHVybiAqYWNj
dW11bGF0b3I7Cit9CisKIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKQogewotICAgIGlmIChjaGFubmVsLT5zdGF0ZSAhPSBXVEZMb2dD
aGFubmVsT24pCisgICAgaWYgKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5uZWxPZmYpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChjaGFubmVsLT5zdGF0ZSA9PSBXVEZMb2dDaGFubmVs
T24pIHsKKyAgICAgICAgdmFfbGlzdCBhcmdzOworICAgICAgICB2YV9zdGFydChhcmdzLCBmb3Jt
YXQpOworICAgICAgICB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xpbmUoZm9ybWF0
LCBhcmdzKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbldpdGhBY2N1bXVs
YXRpb24pOworCiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7
Ci0gICAgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGZvcm1hdCwgYXJncyk7
CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKKyNl
bmRpZgorICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoZm9ybWF0LCBh
cmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOworCisgICAgaWYgKCFsb2dnaW5nU3RyaW5nLmVu
ZHNXaXRoKCdcbicpKQorICAgICAgICBsb2dnaW5nU3RyaW5nLmFwcGVuZCgnXG4nKTsKKworICAg
IGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7CisKKyAgICBs
b2dUb1N0ZGVycihsb2dnaW5nU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIFdURkxv
Z1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTQz
MCw3ICs1MDcsMTYgQEAgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm4KIAogICAgIHZhX2xpc3QgYXJn
czsKICAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIHZwcmludGZfc3RkZXJyX3dpdGhf
dHJhaWxpbmdfbmV3bGluZShmb3JtYXQsIGFyZ3MpOworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICBXVEZMb2coY2hhbm5lbCwg
Zm9ybWF0LCBhcmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOwogCiAgICAgcHJpbnRDYWxsU2l0
ZShmaWxlLCBsaW5lLCBmdW5jdGlvbik7CkBAIC01MDMsMyArNTg5LDE3IEBAIHZvaWQgV1RGSW5p
dGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWxz
W10sIHNpemVfdCBjCiB9CiAKIH0gLy8gZXh0ZXJuICJDIgorCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCByZXNldEFjY3VtdWxhdGVkTG9ncygpCit7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yKCku
cmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK30KKworU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0
ZWRMb2dzKCkKK3sKKyAgICByZXR1cm4gbG9nZ2luZ0FjY3VtdWxhdG9yKCkuZ2V0QW5kUmVzZXRB
Y2N1bXVsYXRlZExvZ3MoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgK
aW5kZXggYjQ4Yzg2MjNiN2Q1ZDRiYjQxZmRjN2FhNjY0NDQxMDE0NmU2MjQzMy4uMGIzYjcxMjcx
OGE5MmFmN2E5Yzg3YWNhZDhmYzY2NWZiNzM5NjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMTMw
LDcgKzEzMCw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
CiAjZW5kaWYKIAotdHlwZWRlZiBlbnVtIHsgV1RGTG9nQ2hhbm5lbE9mZiwgV1RGTG9nQ2hhbm5l
bE9uIH0gV1RGTG9nQ2hhbm5lbFN0YXRlOwordHlwZWRlZiBlbnVtIHsgV1RGTG9nQ2hhbm5lbE9m
ZiwgV1RGTG9nQ2hhbm5lbE9uLCBXVEZMb2dDaGFubmVsT25XaXRoQWNjdW11bGF0aW9uIH0gV1RG
TG9nQ2hhbm5lbFN0YXRlOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgV1RGTG9nQ2hhbm5lbFN0
YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0FjY3VtdWxhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnaW5nQWNjdW11bGF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGUy
MzIwNmRiZjhkMGUzNmIyNDRhNjQ1NmUzOGQ4ZmQyYjNhMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgZ2V0QW5kUmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6cmVzZXRBY2N1bXVsYXRlZExvZ3M7Cit1c2luZyBX
VEY6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CmluZGV4IGNlMzc2ZTIzYTA5NTk5ZmRjNTVjZWQ1ZTliOTMwODY4NDRhNmVhMGIuLjc5OTFmNDcw
ZmExNzA3MGExYTJmNDc5ZDBmMjY3YjU1OWYyNTFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKQEAgLTQ2Myw2ICs0NjMsMjQgQEAgU3RyaW5nIFN0cmluZzo6Zm9ybWF0KGNvbnN0IGNo
YXIgKmZvcm1hdCwgLi4uKQogICAgIHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBm
b3JtYXQpOwogCisjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyAgICBpZiAoc3Ryc3RyKGZv
cm1hdCwgIiVAIikpIHsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkZvcm1hdCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
b3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFy
Z3VtZW50cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBjZkZvcm1hdC5nZXQoKSwgYXJn
cykpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAor
I2VuZGlmCisKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm4gcmVzdWx0Lmdl
dCgpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQorCiAgICAgLy8g
RG8gdGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJTEVSKE1TVkMp
CiAgICAgaW50IHJlc3VsdCA9IF92c2NwcmludGYoZm9ybWF0LCBhcmdzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggMDAwM2I3OGZiNTZhOTFkYzM4NmZlNmZhNDE5NGMxNzQy
NTdmODc3ZS4uNWJhYzYwMzE5NTY0MGU3YjJkNDQxMDlmZTU5ZWM2ZjJhZDk4MzM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTU3LDEyICs1NywyNCBAQCBib29sIGlzTG9n
Q2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBjaGFubmVsLT5z
dGF0ZSAhPSBXVEZMb2dDaGFubmVsT2ZmOwogfQogCitzdGF0aWMgYm9vbCBsb2dDaGFubmVsc05l
ZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CisKK3ZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCA9IFdU
RkxvZ0NoYW5uZWxCeU5hbWUobG9nQ2hhbm5lbHMsIGxvZ0NoYW5uZWxDb3VudCwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgIHJldHVybjsKKworICAgIGNo
YW5uZWwtPnN0YXRlID0gV1RGTG9nQ2hhbm5lbE9uV2l0aEFjY3VtdWxhdGlvbjsKKyAgICBsb2dD
aGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7Cit9CisKIHZvaWQgaW5pdGlhbGl6ZUxv
Z2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBoYXZlSW5pdGlh
bGl6ZWRMb2dnaW5nQ2hhbm5lbHMgPSBmYWxzZTsKLSAgICBpZiAoaGF2ZUluaXRpYWxpemVkTG9n
Z2luZ0NoYW5uZWxzKQorICAgIGlmICghbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6YXRpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBoYXZlSW5pdGlhbGl6ZWRMb2dnaW5nQ2hhbm5lbHMgPSB0cnVl
OworCisgICAgbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIAogICAgIFdU
RkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyhsb2dDaGFubmVscywgbG9nQ2hh
bm5lbENvdW50LCBsb2dMZXZlbFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCmluZGV4IGFmYTE1MTk1MmE1M2I4NzY0NjViNDMyZGQ1MGIwMjQ2ZWRk
ODI4YjUuLmY0NzNiYzAwMGUzZGQ4NmQ3MDBmYTMzYjE2OWJkM2ZiZmRmOTZlNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgV0VCQ09SRV9MT0dfQ0hBTk5F
TFMoREVDTEFSRV9MT0dfQ0hBTk5FTCkKIAogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCk7CiBib29s
IGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpOwogI2lmbmRlZiBOREVCVUcKIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBT
dHJpbmcmIG5vdGlmeUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IDdm
NWE1ODUzODE3ZTFlNWUxZjFjMGY2NzllM2ZiOGQ1ZDQxMWZiNDYuLjRjNjMwZWI4N2I2OGE2NmIx
YWU3YmY1OWM2NTM3N2IyMzU3MjA2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJ
bnRlcm5hbHMuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bHMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KQEAgLTk3LDQgKzk4LDE0IEBAIHZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIo
V2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogICAgIHBhZ2UtPmNsZWFyVHJpZ2dlcigpOwogfQogCit2
b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCit7
CisgICAgV2ViQ29yZTo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShuYW1lKTsKK30KKwordm9p
ZCBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKQoreworICAgIFdlYkNvcmU6
OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAppbmRleCAxZGM4MzMz
Y2UwM2U0OTI3YjdiZjgyZTQwYjZlOWRmOTUzYjcxMDJiLi42NDg5NjJjZWViZTliNjY4ZjQzYjky
NGQ2YmZkYmI5YTJmNTNhNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0LmgKQEAgLTM1LDYgKzM1LDEwIEBAIHR5cGVkZWYgc3RydWN0IE9wYXF1
ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogI2RlZmluZSBURVNUX1NVUFBPUlRfRVhQT1JUCiAjZW5k
aWYKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEZyYW1lOwogfQpAQCAtNDcsNiArNTEsOSBAQCB2b2lkIG1vbml0b3JXaGVl
bEV2ZW50cyhXZWJDb3JlOjpGcmFtZSYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIHNldFRl
c3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoV2ViQ29yZTo6RnJhbWUmLCBKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBjbGVhcldo
ZWVsRXZlbnRUZXN0VHJpZ2dlcihXZWJDb3JlOjpGcmFtZSYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7
CiAKK3ZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBXVEY6OlN0cmluZyYgbmFt
ZSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKK3ZvaWQgaW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lm
TmVjZXNzYXJ5KCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZjA4N2U5ZTMwMzdiOGNlOTcwNTY3YjdkZTg1ZGIwZjY5OWU1NTI3Li44MWZiOWQ3
YmZlZmMyZjNhYTA2NDJmOTE3MGRjYmUzMTUyZmYwZTg3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDUtMDIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJp
bGl0eSB0byBhY2N1bXVsYXRlIGxvZ3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8g
aGVscCBkaWFnbm9zZSB0ZXN0IHRpbWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgYWNjdW11bGF0ZSBtZXRob2QgdG8gRFJU
J3MgVGVzdFJ1bm5lciwgZHVtcCB0aGUgYWNjdW11bGF0ZWQgbG9ncyBpZiB0aGVyZSdzIGEgdGlt
ZW91dCwKKyAgICAgICAgYW5kIHJlc2V0IHRoZW0gaW4gYmV0d2VlbiB0ZXN0czoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKGFjY3VtbXVsYXRlTG9n
c0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZyk6CisKKyAgICAgICAgQWxzbyBhZGQgdGhlIG5ldyBtZXRob2QgdG8g
V0tUUidzIFRlc3RSdW5uZXIsIGJ1dCBqdXN0IHN0dWJiZWQgZm9yIG5vdzoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgor
CiAyMDE2LTA0LTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dHJlYW1saW5lIGFuZCByZW1vdmUgdW51c2VkIGJpbmRpbmdzIGdlbmVyYXRpb24gY29kZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBhNjljMGYxNDU0YTY5NmMwZjZhMjdjZWIw
ZDRiN2JiMDFkZjdiMmMzLi5jYzQ2ZTkzNzI3YzdhMDljNTFiZDNjN2E3MjFjYjA4YmJjMjc1ZmRh
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIAorI2luY2x1ZGUgIldl
YkNvcmVUZXN0U3VwcG9ydC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgIldv
cmtRdWV1ZUl0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC0z
Nyw2ICszOCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDVGVzdFJ1bm5lclV0aWxz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5o
PgogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KQEAgLTQ1LDkgKzQ3LDExIEBACiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnaW5nQWNjdW11bGF0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5o
PgpAQCAtMTI1Myw2ICsxMjU3LDkgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VGV4dEF1dG9zaXpp
bmdFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWMKIH0KICNlbmRp
ZgogCit2b2lkIGFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdSZWYgdXJsKTsKKwor
CiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjIGltcGxl
bWVudGF0aW9uCkBAIC0xOTY4LDYgKzE5NzUsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgbmV2ZXJJ
bmxpbmVGdW5jdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24K
ICAgICByZXR1cm4gSlNDOjpzZXROZXZlcklubGluZShjb250ZXh0LCBhcmd1bWVudHNbMF0pOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBjaGFubmVsKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsK
KworICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRBY2N1
bW11bGF0ZUxvZ3NGb3JDaGFubmVsKGNoYW5uZWwuZ2V0KCkpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0UnVubmVyT2Jq
ZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIFRlc3RSdW5uZXIqIGNvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVj
dCkpOwpAQCAtMjE3Miw2ICsyMTkzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6
c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiZmFpbE5leHROZXdDb2RlQmxvY2siLCBmYWls
TmV4dE5ld0NvZGVCbG9jaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkRGR0NvbXBpbGVz
IiwgbnVtYmVyT2ZERkdDb21waWxlcywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJuZXZlcklubGluZUZ1
bmN0aW9uIiwgbmV2ZXJJbmxpbmVGdW5jdGlvbiwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJhY2N1bW11
bGF0ZUxvZ3NGb3JDaGFubmVsIiwgYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKQEAgLTIyMjIsNiArMjI0NCwxMyBAQCB2b2lk
IFRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKQogewogICAgIGNvbnN0
IGNoYXIqIG1lc3NhZ2UgPSAiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUg
dG8gYmUgY2FsbGVkXG4iOwogICAgIGZwcmludGYoc3Rkb3V0LCAiJXMiLCBtZXNzYWdlKTsKKwor
ICAgIGF1dG8gYWNjdW11bGF0ZWRMb2dzID0gZ2V0QW5kUmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsK
KyAgICBpZiAoIWFjY3VtdWxhdGVkTG9ncy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgY2hh
ciogbWVzc2FnZSA9ICJMb2dzIGFjY3VtdWxhdGVkIGR1cmluZyB0ZXN0IHJ1bjpcbiI7CisgICAg
ICAgIGZwcmludGYoc3Rkb3V0LCAiJXMlc1xuIiwgbWVzc2FnZSwgYWNjdW11bGF0ZWRMb2dzLnV0
ZjgoKS5kYXRhKCkpOworICAgIH0KKwogICAgIG5vdGlmeURvbmUoKTsKIH0KIApAQCAtMjI1Miwz
ICsyMjgxLDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShi
b29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UpCiB7CiAgICAgbV9zaG91bGRQYWludEJyb2tlbklt
YWdlID0gc2hvdWxkUGFpbnRCcm9rZW5JbWFnZTsKIH0KKwordm9pZCBUZXN0UnVubmVyOjpzZXRB
Y2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCit7CisgICAgc2l6
ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjaGFubmVs
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGgg
KyAxKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwg
bWF4TGVuZ3RoICsgMSk7CisKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxU
b0FjY3VtdWxhdGUoeyBidWZmZXIuZ2V0KCkgfSk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmgKaW5kZXggNzMxYzhkMWZiZjE1ZmI3MjRiMGUxN2M0Y2U0ZDhmOGRkN2E1NDM2MC4uZjFiN2Jl
YWU4NzlkM2Y1ZGM2ZjJhOGU4YTVmYzYzNjYyODgyZjU0NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaApAQCAtMTM1LDYgKzEzNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHRBdXRv
c2l6aW5nRW5hYmxlZChib29sKTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRBY2N1bW11bGF0ZUxv
Z3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmKTsKKwogICAgIC8vIExlZ2FjeSBoZXJlIHJlZmVycyB0
byB0aGUgb2xkIFRlc3RSdW5uZXIgQVBJIGZvciBoYW5kbGluZyB3ZWIgbm90aWZpY2F0aW9ucywg
bm90IHRoZSBsZWdhY3kgd2ViIG5vdGlmaWNhdGlvbiBBUEkuCiAgICAgdm9pZCBpZ25vcmVMZWdh
Y3lXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKICAgICAvLyBMZWdhY3kgaGVy
ZSByZWZlcnMgdG8gdGhlIG9sZCBUZXN0UnVubmVyIEFQSSBmb3IgaGFuZGxpbmcgd2ViIG5vdGlm
aWNhdGlvbnMsIG5vdCB0aGUgbGVnYWN5IHdlYiBub3RpZmljYXRpb24gQVBJLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGM2ZDg1MGY2YjMxNmFkZTJm
ODI2MDRiNWZmMDFlOGZlZDFlZWRhZWYuLjliNDJlMzY5NjkyMzRhMDdiYzUyZTJkYTNiMjY0NGM4
ZjE3YmYxY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
QEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9IZWFwU3RhdGlzdGljcy5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2dnaW5nLmg+CiAj
aW1wb3J0IDxXZWJLaXQvRE9NRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lv
bnMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01SYW5nZS5oPgpAQCAtODYsNiArODcsNyBAQAogI2lt
cG9ydCA8Z2V0b3B0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9Mb2dnaW5nQWNjdW11bGF0b3IuaD4KICNpbXBv
cnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTg5NCw2ICsxODk2LDkgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKICNlbmRpZgog
CiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOworCisgICAgcmVzZXRBY2N1bXVsYXRlZExv
Z3MoKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJ
Zk5lY2Vzc2FyeSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKaW5kZXggYTQzMDM3ZDVkOGM2ZDA5OTNjOWU4YTMyYTk5ZTE2ODRjNzljNWY1Zi4uM2Zl
MTg2ZjU4Yzg4ODUzMmE5YjAwZDcyMzY0YmZmOWYyM2YzNmUxMyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCkBAIC0yMjMsNSArMjIzLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAg
IHZvaWQgcnVuVUlTY3JpcHQoRE9NU3RyaW5nIHNjcmlwdCwgb2JqZWN0IGNhbGxiYWNrKTsKIAog
ICAgIHZvaWQgY2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCk7CisKKyAgICB2b2lkIGFjY3VtbXVs
YXRlTG9nc0ZvckNoYW5uZWwoRE9NU3RyaW5nIGNoYW5uZWwpOwogfTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXgg
ZTdkNmY1Zjg0NWExM2E1ZTQyM2I1MmJjOTM2NTk0MGU4NjQ4YTA4Yi4uMDE1MjQxNzE2ODMyMTk2
ZGY2NjJiNGY3M2IxMzNjYjYzMzY3N2Y3OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02MDEsNiArNjAxLDExIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCkKICAgICBjYWxsYmFj
a01hcCgpLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6YWNjdW1tdWxhdGVMb2dzRm9y
Q2hhbm5lbChKU1N0cmluZ1JlZikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGdldHRpbmcg
dGhlIGNhbGwgdG8gYWxsIHByb2Nlc3Nlcy4KK30KKwogdm9pZCBUZXN0UnVubmVyOjphZGRDaHJv
bWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgY2FjaGVUZXN0UnVubmVy
Q2FsbGJhY2soQWRkQ2hyb21lSW5wdXRGaWVsZENhbGxiYWNrSUQsIGNhbGxiYWNrKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggNzEwOTQ1MzI3NWE1MTk1NmM5MTY5MDcxMjU2NTg0NThjZjk0NzJhYy4uZDA4YzkzM2RkZTY4
NjY4MzcwZDdlYjg4ODA4ODdhYThiMDViMDZjYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTMyMCw2ICszMjAsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyVGVzdFJ1bm5lckNhbGxiYWNrcygpOwogCisgICAgdm9p
ZCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpOworCiBwcml2
YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMWMyYzRhZDY1OWQxM2I5ZDZlZWYx
MTliZmExOWJlMDM4ZmZhMjYuLjEwMzM2ZjRiMjg5ZDk3NmVhNzQ1MjdkMmE0OTU0Y2M2NTgwMDVl
MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wNS0wMiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGFjY3VtdWxhdGUg
bG9ncyBmb3Igc3BlY2lmaWMgbG9nZ2luZyBjaGFubmVscyB0byBoZWxwIGRpYWdub3NlIHRlc3Qg
dGltZW91dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTcyNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEZvciB0aGUgdGVzdHMgdGhhdCBhcmUga25vd24gZmxha2VzIHRoYXQgYXJlIG5v
dCBpbXBvcnRlZCwgYWRkIHRoZSAiYWNjdW11bGF0ZSBJbmRleGVkREIgbG9ncyIgY29tbWFuZC4K
KworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9wZW4t
ZGF0YWJhc2VzLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJj
ZXMvYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1hYm9ydC5qczoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVk
ZWQuanM6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdz
LmpzOgorCiAyMDE2LTA1LTAxICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwu
Y29tPgogCiAgICAgICAgIENsYXNzIGNvbnRydWN0b3IgYW5kIG1ldGhvZHMgc2hvdWxkbid0IGhh
dmUgImFyZ3VtZW50cyIgYW5kICJjYWxsZXIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9wZW4tZGF0
YWJhc2VzLmpzCmluZGV4IGQ1ODUxYTdmODg2OGI4ZmJlYTZmN2JiN2E5YzMzZmQyNjQ1NWNhMWMu
LmRlMWNjODI1NWYwODNmYjAzYjcyN2IyYjczY2I2NDRhNmQyNGQzOWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvMjU2LW9wZW4tZGF0
YWJhc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNv
dXJjZXMvMjU2LW9wZW4tZGF0YWJhc2VzLmpzCkBAIC0xLDUgKzEsOCBAQAogZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgaWYgeW91IG9wZW4gMTI4IHVuaXF1ZSBkYXRhYmFz
ZXMsIGNsb3NlIHlvdXIgY29ubmVjdGlvbnMgdG8gdGhlbSwgYW5kIHRoZW4gb3BlbiAxMjggb3Ro
ZXIgdW5pcXVlIGRhdGFiYXNlcywgdGhhdCBpdCB3b3Jrcy4iKTsKIAoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCgiSW5kZXhl
ZERCIik7CisKIHZhciBkYXRhYmFzZUNvbm5lY3Rpb25zID0gbmV3IEFycmF5OwogCiBmb3IgKHZh
ciBpID0gMDsgaSA8IDEyODsgKytpKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnQtcmVx
dWVzdHMtY2FuY2VsbGVkLmpzCmluZGV4IDc3OTUyZmUzODdiYzgwMmEzYjg4YTQyZTFlOGI4Njk5
Y2U2OGY3YjIuLjY0ODhjMzNlYjQ1YTI2ODljNjA0OTNmMWQ0NjkwNTgxN2U3OTA1NTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYWJv
cnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmpzCkBAIC0xLDgg
KzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHVuLWhhbmRs
ZWQgcmVxdWVzdHMgaW4gYSB0cmFuc2FjdGlvbiByZWNlaXZlIG9uZXJyb3IgY2FsbGJhY2tzIHdo
ZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuIik7CiAKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoIkluZGV4ZWREQiIp
OworICAgIAogaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UpOwogCi0KIGZ1bmN0aW9uIGRv
bmUoKQogewogICAgIGZpbmlzaEpTVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWFib3J0LmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVt
ZW50LWFib3J0LmpzCmluZGV4IDU5NGI5ZmRiMTI1NDc4ODg0MjVmMTVkNTZiYmIxOTY0NDljY2Qw
YmQuLjVkYjRiNDExNjg5YjAzMTdkNDVlMDViZTNmOTI1MDJlNjUyNmE5YjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYXV0b2luY3Jl
bWVudC1hYm9ydC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtYWJvcnQuanMKQEAgLTMsOSArMywxMSBAQCBJdCB0aGVu
IHB1dHMgc29tZSB0aGluZ3MgaW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNoZWNraW5nIHRoZSBrZXlz
IHRoYXQgd2VyZSB1c2VkLgogQnV0IGl0IHRoZW4gYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uIFwK
IFRoZW4gaXQgb3BlbnMgYSBuZXcgb25lIGFuZCBwdXRzIHNvbWV0aGluZyBpbiBpdCwgZG91Ymxl
IGNoZWNraW5nIHRoYXQgdGhlIGtleSBnZW5lcmF0b3Igd2FzIHJldmVydGVkIHdoZW4gdGhlIGFi
b3ZlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOwogCitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKCJJbmRleGVkREIiKTsK
KyAgICAKIGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlKTsKIAotCiBmdW5jdGlvbiBkb25l
KCkKIHsKICAgICBmaW5pc2hKU1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLW9wZW4taW4tdXBncmFkZW5lZWRlZC5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLW9w
ZW4taW4tdXBncmFkZW5lZWRlZC5qcwppbmRleCAwZGQ5MWU5NTVkM2RkMTMzOTYzM2Q3ZDY3NTA5
NWE0NTgzNDJkNjFjLi4yYzIzODBmMjdhNWUzNDhhN2EyYTAzZWJiYTBkN2E3NmZiYTUyN2EyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVy
c2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVkZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tb3Blbi1pbi11cGdyYWRlbmVlZGVkLmpzCkBA
IC01LDYgKzUsOSBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0aW9uKCJU
ZXN0IGNhbGxpbmcgZGIub3BlbiBpbiB1cGdyYWRlbmVlZGVkLiIpOwogCitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKCJJbmRl
eGVkREIiKTsKKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
ZGQtc3RyaW5ncy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
ZGQtc3RyaW5ncy5qcwppbmRleCAyNTM5M2E2ZTY3ZmNiNTI1ZDkwYWJkZTk0NDUyZmUwMmQ3MzU2
ZjhmLi4zNTE0MmUzZWNhMTFlZTU0ZDVlZDgwNmNhYzQwZTk5MWY2Mjg4ZGMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdz
LmpzCkBAIC01LDYgKzUsOSBAQCBpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CiAKIGRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CiAKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoIklu
ZGV4ZWREQiIpOworCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277939</attachid>
            <date>2016-05-02 15:05:57 -0700</date>
            <delta_ts>2016-05-02 15:31:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157274-20160502150634.patch</filename>
            <type>text/plain</type>
            <size>31032</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNkY2YwYWQ2MzQ4NzYyNTU4Y2JmOGQx
NDM5MTA3ZGU2YTFiZTJmZDkuLmIyNDYxY2E4Y2E5ZDRmZThhMTg3ZjVhNWE0N2I3NGQ1M2YzMjFi
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBhY2N1bXVsYXRlIGxv
Z3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8gaGVscCBkaWFnbm9zZSB0ZXN0IHRp
bWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIFdURkxvZyB0byBhZGQgdGhlIGxvZ2dpbmcgc3RyaW5nIHRvIHRo
ZSBsb2dnaW5nIGFjY3VtdWxhdG9yIGlmIHRoZSBsb2dnaW5nIGNoYW5uZWwgc2F5cyBzby4KKyAg
ICAgICAgSXQgYWxzbyBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoaXMgbmV3IGFjY3VtdWxhdGlv
biBtZWNoYW5pc20uCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKFdURjo6cmVzZXRBY2N1
bXVsYXRlZExvZ3MpOgorICAgICAgICAoV1RGOjpnZXRBbmRSZXNldEFjY3VtdWxhdGVkTG9ncyk6
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKworICAgICAgICAqIHd0Zi9Mb2dnaW5nQWNj
dW11bGF0b3IuaDogQWRkZWQuIEV4cG9zZSBmdW5jdGlvbnMgdG8gZ2V0IGFjY3VtdWxhdGVkIGxv
Z3MgYW5kIHRvIHJlc2V0IHRoZSBhY2N1bXVsYXRpb24uCisKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZvcm1hdCk6IFVwZGF0ZSB0byBo
YW5kbGUgJUAgb24gQ0YgKFdlbGwsIHJlYWxseSBPYmpDKSBwbGF0Zm9ybXMuCisKIDIwMTYtMDQt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJ
REI6IEltcGxlbWVudCBuYXRpdmUgSURCRmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBX
ZWJJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMyYjQwYWE2YTYxNGU4ODNi
MmQwYTg2N2QyNC4uMTgxY2U5Yjg2MzBmZDY5M2RiZTkzMTIzNDYwNWJlNTkwYWRmNDE2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWNjdW11bGF0ZSBs
b2dzIGZvciBzcGVjaWZpYyBsb2dnaW5nIGNoYW5uZWxzIHRvIGhlbHAgZGlhZ25vc2UgdGVzdCB0
aW1lb3V0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NzI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vTG9nZ2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dDaGFubmVs
VG9BY2N1bXVsYXRlKTogU2V0IHRoZSBnaXZlbiBsb2cgY2hhbm5lbCB0byBhY2N1bXVsYXRlIGxv
Z2dpbmcsCisgICAgICAgICAgYW5kIGRpcnR5IHRoZSBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxz
SWZOZWNlc3NhcnkgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hh
bm5lbHNJZk5lY2Vzc2FyeSk6IENoYW5nZSBmcm9tIGJlaW5nIGEgb25lLXRpbWUtb25seSBjYWxs
IHRvIGEgCisgICAgICAgICAgb25lLXRpbWUtZm9yLWVhY2gtdGltZS1zb21lYm9keS1jYWxscy1z
ZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlIGNhbGwuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2lu
Zy5oOgorCisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oOgorCiAy
MDE2LTA1LTAyICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIE1vdmUgUmVz
b3VyY2VUaW1pbmcgYmVoaW5kIGEgcnVudGltZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1NDMzOWE1ZGNlYmQ4MDcxNDhlZGU3ZGVlODQwMWI4NWQ5
NDE5ZDg5Li5lMDBlNGZhMDM3NTgxMGE2YmQ1YjQ1YWRkMTk5MmQxY2QwYTk3YWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMCw2ICsxMDAsNyBAQAog
CQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5M
b29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RF
RDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBCNDc4OTFBQUFB
QzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29t
bW9uLmggKi87IH07CisJCTUxM0UxNzBCMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11
bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
M0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCAqLzsgfTsKIAkJ
NTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4
IC8qIFRpbnlMUlVDYWNoZS5oICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAq
LzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcx
NTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTQxMSw2ICs0MTIsNyBA
QAogCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1
bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTMwNzFDOTFDNDA0Mjcy
MDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2
MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0
aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0
N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1LDYgKzgzNyw3IEBA
CiAJCQkJMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovLAogCQkJCTBGRTE2
NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmggKi8sCiAJCQkJQThBNDcyQzMxNTFBODI1QTAw
NDEyM0ZGIC8qIExvY2tlci5oICovLAorCQkJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBM
b2dnaW5nQWNjdW11bGF0b3IuaCAqLywKIAkJCQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyog
TWFpblRocmVhZC5jcHAgKi8sCiAJCQkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5U
aHJlYWQuaCAqLywKIAkJCQkxQTIzM0M3QzE3REFBNkUzMDBBOTNBQ0YgLyogTWFsbG9jUHRyLmgg
Ki8sCkBAIC0xMjQ5LDYgKzEyNTIsNyBAQAogCQkJCUE4QTQ3NDE1MTUxQTgyNUIwMDQxMjNGRiAv
KiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDE2MTUxQTgyNUIwMDQx
MjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQzFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxM0UxNzBC
MUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGODcxMDVBMTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQxNzE1MUE4MjVCMDA0MTIzRkYgLyogUmVkQmxhY2tUcmVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyNjI5OUI2RTE3QTlFNUI4MDBBREVCRTUgLyogUmVmLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggOTA1NGU5YzI0M2I3NTAzODU2MDUyN2U3MTU4
Mjc4MTVlN2JiODhmZC4uZGJhNGFjMDNlYWE1MmNlMGNhNmQyYjM4YjMwZDBmYzFlMzczNjJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTM1LDE0ICszNSwxOCBAQAogI2luY2x1ZGUgIkFzc2Vy
dGlvbnMuaCIKIAogI2luY2x1ZGUgIkNvbXBpbGVyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2luZ0FjY3VtdWxh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQogI2lmIEhBVkUoU0lH
TkFMX0gpCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjZW5kaWYKQEAgLTc2LDYgKzgwLDE0IEBACiAK
IGV4dGVybiAiQyIgewogCitzdGF0aWMgdm9pZCBsb2dUb1N0ZGVycihjb25zdCBjaGFyKiBidWZm
ZXIpCit7CisjaWYgVVNFKEFQUExFX1NZU1RFTV9MT0cpCisgICAgYXNsX2xvZygwLCAwLCBBU0xf
TEVWRUxfTk9USUNFLCAiJXMiLCBidWZmZXIpOworI2VuZGlmCisgICAgZnB1dHMoYnVmZmVyLCBz
dGRlcnIpOworfQorCiBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAwKQogc3RhdGljIHZvaWQgdnBy
aW50Zl9zdGRlcnJfY29tbW9uKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpA
QCAtOTYsMTAgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX2NvbW1vbihjb25z
dCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKIAogICAgICAgICBDRlN0cmluZ0dldENTdHJp
bmcoc3RyLCBidWZmZXIsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKIAotI2lmIFVT
RShBUFBMRV9TWVNURU1fTE9HKQotICAgICAgICBhc2xfbG9nKDAsIDAsIEFTTF9MRVZFTF9OT1RJ
Q0UsICIlcyIsIGJ1ZmZlcik7Ci0jZW5kaWYKLSAgICAgICAgZnB1dHMoYnVmZmVyLCBzdGRlcnIp
OworICAgICAgICBsb2dUb1N0ZGVycihidWZmZXIpOwogCiAgICAgICAgIGZyZWUoYnVmZmVyKTsK
ICAgICAgICAgQ0ZSZWxlYXNlKHN0cik7CkBAIC00MTIsMTUgKzQyMSw4MyBAQCB2b2lkIFdURlJl
cG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlv
biwgY29uc3QgY2hhcgogICAgIHByaW50Q2FsbFNpdGUoZmlsZSwgbGluZSwgZnVuY3Rpb24pOwog
fQogCitjbGFzcyBXVEZMb2dnaW5nQWNjdW11bGF0b3IgeworcHVibGljOgorICAgIHZvaWQgYWNj
dW11bGF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7
CisgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7CisKK3ByaXZhdGU6Cisg
ICAgTG9jayBhY2N1bXVsYXRvckxvY2s7CisgICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11
bGF0b3I7Cit9OworCit2b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6YWNjdW11bGF0ZShjb25z
dCBTdHJpbmcmIGxvZykKK3sKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9j
ayk7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOworfQorCit2b2lkIFdURkxv
Z2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQoreworICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKK30KKworU3RyaW5nIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6Z2V0QW5kUmVzZXRBY2N1
bXVsYXRlZExvZ3MoKQoreworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2Nr
KTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gbG9nZ2luZ0FjY3VtdWxhdG9yLnRvU3RyaW5nKCk7Cisg
ICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIFdURkxvZ2dpbmdBY2N1bXVsYXRvciYgbG9nZ2luZ0FjY3VtdWxhdG9yKCkKK3sKKyAg
ICBzdGF0aWMgV1RGTG9nZ2luZ0FjY3VtdWxhdG9yKiBhY2N1bXVsYXRvcjsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUFjY3VtdWxhdG9yT25jZTsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplQWNjdW11bGF0b3JPbmNlLCBbXSB7CisgICAgICAgIGFjY3VtdWxhdG9y
ID0gbmV3IFdURkxvZ2dpbmdBY2N1bXVsYXRvcjsKKyAgICB9KTsKKworICAgIHJldHVybiAqYWNj
dW11bGF0b3I7Cit9CisKIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKQogewotICAgIGlmIChjaGFubmVsLT5zdGF0ZSAhPSBXVEZMb2dD
aGFubmVsT24pCisgICAgaWYgKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5uZWxPZmYpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChjaGFubmVsLT5zdGF0ZSA9PSBXVEZMb2dDaGFubmVs
T24pIHsKKyAgICAgICAgdmFfbGlzdCBhcmdzOworICAgICAgICB2YV9zdGFydChhcmdzLCBmb3Jt
YXQpOworICAgICAgICB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xpbmUoZm9ybWF0
LCBhcmdzKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUKGNoYW5uZWwtPnN0YXRlID09IFdURkxvZ0NoYW5uZWxPbldpdGhBY2N1bXVs
YXRpb24pOworCiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7
Ci0gICAgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGZvcm1hdCwgYXJncyk7
CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKKyNl
bmRpZgorICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoZm9ybWF0LCBh
cmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOworCisgICAgaWYgKCFsb2dnaW5nU3RyaW5nLmVu
ZHNXaXRoKCdcbicpKQorICAgICAgICBsb2dnaW5nU3RyaW5nLmFwcGVuZCgnXG4nKTsKKworICAg
IGxvZ2dpbmdBY2N1bXVsYXRvcigpLmFjY3VtdWxhdGUobG9nZ2luZ1N0cmluZyk7CisKKyAgICBs
b2dUb1N0ZGVycihsb2dnaW5nU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIFdURkxv
Z1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTQz
MCw3ICs1MDcsMTYgQEAgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm4KIAogICAgIHZhX2xpc3QgYXJn
czsKICAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIHZwcmludGZfc3RkZXJyX3dpdGhf
dHJhaWxpbmdfbmV3bGluZShmb3JtYXQsIGFyZ3MpOworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICBXVEZMb2coY2hhbm5lbCwg
Zm9ybWF0LCBhcmdzKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKyNlbmRpZgorCiAgICAgdmFfZW5kKGFyZ3MpOwogCiAgICAgcHJpbnRDYWxsU2l0
ZShmaWxlLCBsaW5lLCBmdW5jdGlvbik7CkBAIC01MDMsMyArNTg5LDE3IEBAIHZvaWQgV1RGSW5p
dGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWxz
W10sIHNpemVfdCBjCiB9CiAKIH0gLy8gZXh0ZXJuICJDIgorCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCByZXNldEFjY3VtdWxhdGVkTG9ncygpCit7CisgICAgbG9nZ2luZ0FjY3VtdWxhdG9yKCku
cmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK30KKworU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0
ZWRMb2dzKCkKK3sKKyAgICByZXR1cm4gbG9nZ2luZ0FjY3VtdWxhdG9yKCkuZ2V0QW5kUmVzZXRB
Y2N1bXVsYXRlZExvZ3MoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgK
aW5kZXggYjQ4Yzg2MjNiN2Q1ZDRiYjQxZmRjN2FhNjY0NDQxMDE0NmU2MjQzMy4uMGIzYjcxMjcx
OGE5MmFmN2E5Yzg3YWNhZDhmYzY2NWZiNzM5NjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMTMw
LDcgKzEzMCw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
CiAjZW5kaWYKIAotdHlwZWRlZiBlbnVtIHsgV1RGTG9nQ2hhbm5lbE9mZiwgV1RGTG9nQ2hhbm5l
bE9uIH0gV1RGTG9nQ2hhbm5lbFN0YXRlOwordHlwZWRlZiBlbnVtIHsgV1RGTG9nQ2hhbm5lbE9m
ZiwgV1RGTG9nQ2hhbm5lbE9uLCBXVEZMb2dDaGFubmVsT25XaXRoQWNjdW11bGF0aW9uIH0gV1RG
TG9nQ2hhbm5lbFN0YXRlOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgV1RGTG9nQ2hhbm5lbFN0
YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0FjY3VtdWxhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnaW5nQWNjdW11bGF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGUy
MzIwNmRiZjhkMGUzNmIyNDRhNjQ1NmUzOGQ4ZmQyYjNhMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgZ2V0QW5kUmVzZXRBY2N1bXVsYXRlZExvZ3MoKTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6cmVzZXRBY2N1bXVsYXRlZExvZ3M7Cit1c2luZyBX
VEY6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CmluZGV4IGNlMzc2ZTIzYTA5NTk5ZmRjNTVjZWQ1ZTliOTMwODY4NDRhNmVhMGIuLjc5OTFmNDcw
ZmExNzA3MGExYTJmNDc5ZDBmMjY3YjU1OWYyNTFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKQEAgLTQ2Myw2ICs0NjMsMjQgQEAgU3RyaW5nIFN0cmluZzo6Zm9ybWF0KGNvbnN0IGNo
YXIgKmZvcm1hdCwgLi4uKQogICAgIHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBm
b3JtYXQpOwogCisjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKKyAgICBpZiAoc3Ryc3RyKGZv
cm1hdCwgIiVAIikpIHsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkZvcm1hdCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
b3JtYXQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisjZW5kaWYKKyAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFy
Z3VtZW50cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBjZkZvcm1hdC5nZXQoKSwgYXJn
cykpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAor
I2VuZGlmCisKKyAgICAgICAgdmFfZW5kKGFyZ3MpOworICAgICAgICByZXR1cm4gcmVzdWx0Lmdl
dCgpOworICAgIH0KKyNlbmRpZiAvLyBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQorCiAgICAgLy8g
RG8gdGhlIGZvcm1hdCBvbmNlIHRvIGdldCB0aGUgbGVuZ3RoLgogI2lmIENPTVBJTEVSKE1TVkMp
CiAgICAgaW50IHJlc3VsdCA9IF92c2NwcmludGYoZm9ybWF0LCBhcmdzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggMDAwM2I3OGZiNTZhOTFkYzM4NmZlNmZhNDE5NGMxNzQy
NTdmODc3ZS4uNWJhYzYwMzE5NTY0MGU3YjJkNDQxMDlmZTU5ZWM2ZjJhZDk4MzM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTU3LDEyICs1NywyNCBAQCBib29sIGlzTG9n
Q2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBjaGFubmVsLT5z
dGF0ZSAhPSBXVEZMb2dDaGFubmVsT2ZmOwogfQogCitzdGF0aWMgYm9vbCBsb2dDaGFubmVsc05l
ZWRJbml0aWFsaXphdGlvbiA9IHRydWU7CisKK3ZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCA9IFdU
RkxvZ0NoYW5uZWxCeU5hbWUobG9nQ2hhbm5lbHMsIGxvZ0NoYW5uZWxDb3VudCwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgIHJldHVybjsKKworICAgIGNo
YW5uZWwtPnN0YXRlID0gV1RGTG9nQ2hhbm5lbE9uV2l0aEFjY3VtdWxhdGlvbjsKKyAgICBsb2dD
aGFubmVsc05lZWRJbml0aWFsaXphdGlvbiA9IHRydWU7Cit9CisKIHZvaWQgaW5pdGlhbGl6ZUxv
Z2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICBzdGF0aWMgYm9vbCBoYXZlSW5pdGlh
bGl6ZWRMb2dnaW5nQ2hhbm5lbHMgPSBmYWxzZTsKLSAgICBpZiAoaGF2ZUluaXRpYWxpemVkTG9n
Z2luZ0NoYW5uZWxzKQorICAgIGlmICghbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6YXRpb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBoYXZlSW5pdGlhbGl6ZWRMb2dnaW5nQ2hhbm5lbHMgPSB0cnVl
OworCisgICAgbG9nQ2hhbm5lbHNOZWVkSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIAogICAgIFdU
RkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyhsb2dDaGFubmVscywgbG9nQ2hh
bm5lbENvdW50LCBsb2dMZXZlbFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5oCmluZGV4IGFmYTE1MTk1MmE1M2I4NzY0NjViNDMyZGQ1MGIwMjQ2ZWRk
ODI4YjUuLmM2OTA2ZWM1MDE1MTU2YzczODQ3OTdlODE1OTBkZmMzYjRjMWY4MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk3LDYgKzk3LDcgQEAgV0VCQ09SRV9MT0dfQ0hBTk5F
TFMoREVDTEFSRV9MT0dfQ0hBTk5FTCkKIAogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCk7CiBib29s
IGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsK
ICNpZm5kZWYgTkRFQlVHCiB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBub3RpZnlJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCA3ZjVhNTg1
MzgxN2UxZTVlMWYxYzBmNjc5ZTNmYjhkNWQ0MTFmYjQ2Li40ODIxMDE0ZjNkMWU5MDM3MDhiYWFh
NzlkYjk2NmEyMDg5NDM2ZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW50ZXJu
YWxzLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxzLmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJXaGVl
bEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CkBAIC05Nyw0ICs5OCwyMCBAQCB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSkKICAgICBwYWdlLT5jbGVhclRyaWdnZXIoKTsKIH0KIAordm9pZCBz
ZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyNpZiAhTE9H
X0RJU0FCTEVECisgICAgV2ViQ29yZTo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShuYW1lKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworI2VuZGlmCit9CisKK3ZvaWQgaW5pdGlh
bGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisg
ICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CisjZW5k
aWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmgKaW5kZXggMWRjODMzM2NlMDNlNDkyN2I3YmY4MmU0MGI2ZTlkZjk1M2I3MTAyYi4uNjQ4
OTYyY2VlYmU5YjY2OGY0M2I5MjRkNmJmZGJiOWEyZjUzYTU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCkBAIC0zNSw2ICszNSwxMCBAQCB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKICNkZWZpbmUgVEVTVF9T
VVBQT1JUX0VYUE9SVAogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOwor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIH0KQEAgLTQ3LDYgKzUxLDkg
QEAgdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJhbWUmKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwogdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE5vdGlmaWNhdGlvblRpbWVyKFdl
YkNvcmU6OkZyYW1lJiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikgVEVTVF9TVVBQT1JUX0VY
UE9SVDsKIHZvaWQgY2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoV2ViQ29yZTo6RnJhbWUmKSBU
RVNUX1NVUFBPUlRfRVhQT1JUOwogCit2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7Cit2b2lkIGluaXRpYWxp
emVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWYwODdlOWUzMDM3YjhjZTk3MDU2N2I3ZGU4NWRi
MGY2OTllNTUyNy4uODFmYjlkN2JmZWZjMmYzYWEwNjQyZjkxNzBkY2JlMzE1MmZmMGU4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWNjdW11bGF0ZSBsb2dzIGZvciBzcGVjaWZpYyBs
b2dnaW5nIGNoYW5uZWxzIHRvIGhlbHAgZGlhZ25vc2UgdGVzdCB0aW1lb3V0cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzI3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgbmV3IGFjY3Vt
dWxhdGUgbWV0aG9kIHRvIERSVCdzIFRlc3RSdW5uZXIsIGR1bXAgdGhlIGFjY3VtdWxhdGVkIGxv
Z3MgaWYgdGhlcmUncyBhIHRpbWVvdXQsCisgICAgICAgIGFuZCByZXNldCB0aGVtIGluIGJldHdl
ZW4gdGVzdHM6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgIChUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lckZpcmVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNo
YW5uZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorCisgICAgICAgIEFsc28gYWRk
IHRoZSBuZXcgbWV0aG9kIHRvIFdLVFIncyBUZXN0UnVubmVyLCBidXQganVzdCBzdHViYmVkIGZv
ciBub3c6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphY2N1bW11bGF0
ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKwogMjAxNi0wNC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RyZWFtbGluZSBhbmQgcmVtb3ZlIHVudXNlZCBiaW5kaW5ncyBn
ZW5lcmF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTY5YzBm
MTQ1NGE2OTZjMGY2YTI3Y2ViMGQ0YjdiYjAxZGY3YjJjMy4uY2M0NmU5MzcyN2M3YTA5YzUxYmQz
YzdhNzIxY2IwOGJiYzI3NWZkYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0UnVubmVy
LmgiCiAKKyNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQVBJQ2FzdC5oPgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ1Rlc3RSdW5uZXJVdGlscy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0
UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0xvZ2dpbmcuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGxvY2Fs
ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CkBAIC00NSw5ICs0Nywx
MSBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2luZ0FjY3VtdWxh
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogI2luY2x1
ZGUgPENhcmJvbi9DYXJib24uaD4KQEAgLTEyNTMsNiArMTI1Nyw5IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjCiB9CiAjZW5kaWYKIAordm9pZCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpT
U3RyaW5nUmVmIHVybCk7CisKKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlRGFzaGJvYXJkQ29t
cGF0aWJpbGl0eU1vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAg
ICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMTk2OCw2ICsxOTc1LDIwIEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIG5ldmVySW5saW5lRnVuY3Rpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTQzo6c2V0TmV2ZXJJbmxpbmUoY29udGV4
dCwgYXJndW1lbnRzWzBdKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgYWNjdW1tdWxhdGVMb2dz
Rm9yQ2hhbm5lbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY2hhbm5lbChBZG9wdCwgSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFT
U0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGlj
X2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
Y29udHJvbGxlci0+c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChjaGFubmVsLmdldCgpKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IHZvaWQgdGVzdFJ1bm5lck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAg
ICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKQEAgLTIxNzIsNiArMjE5Myw3IEBAIEpTU3RhdGljRnVu
Y3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImZhaWxOZXh0
TmV3Q29kZUJsb2NrIiwgZmFpbE5leHROZXdDb2RlQmxvY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
bnVtYmVyT2ZERkdDb21waWxlcyIsIG51bWJlck9mREZHQ29tcGlsZXMsIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAibmV2ZXJJbmxpbmVGdW5jdGlvbiIsIG5ldmVySW5saW5lRnVuY3Rpb24sIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCIsIGFjY3VtbXVsYXRlTG9nc0Zv
ckNoYW5uZWwsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCkBAIC0yMjIy
LDYgKzIyNDQsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZp
cmVkKCkKIHsKICAgICBjb25zdCBjaGFyKiBtZXNzYWdlID0gIkZBSUw6IFRpbWVkIG91dCB3YWl0
aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuIjsKICAgICBmcHJpbnRmKHN0ZG91dCwg
IiVzIiwgbWVzc2FnZSk7CisKKyAgICBhdXRvIGFjY3VtdWxhdGVkTG9ncyA9IGdldEFuZFJlc2V0
QWNjdW11bGF0ZWRMb2dzKCk7CisgICAgaWYgKCFhY2N1bXVsYXRlZExvZ3MuaXNFbXB0eSgpKSB7
CisgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UgPSAiTG9ncyBhY2N1bXVsYXRlZCBkdXJpbmcg
dGVzdCBydW46XG4iOworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzJXNcbiIsIG1lc3NhZ2Us
IGFjY3VtdWxhdGVkTG9ncy51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKICAgICBub3RpZnlEb25l
KCk7CiB9CiAKQEAgLTIyNTIsMyArMjI4MSwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3Vs
ZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogewogICAgIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA9IHNob3VsZFBhaW50QnJva2VuSW1hZ2U7CiB9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZiBj
aGFubmVsKQoreworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUoY2hhbm5lbCk7CisgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjaGFu
bmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOworCisgICAgV2ViQ29yZVRlc3RTdXBw
b3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdldCgpIH0pOworfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDczMWM4ZDFmYmYxNWZiNzI0YjBlMTdjNGNlNGQ4
ZjhkZDdhNTQzNjAuLmYxYjdiZWFlODc5ZDNmNWRjNmYyYThlOGE1ZmM2MzY2Mjg4MmY1NDYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbCk7CiAjZW5kaWYKIAorICAgIHZv
aWQgc2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZik7CisKICAgICAvLyBM
ZWdhY3kgaGVyZSByZWZlcnMgdG8gdGhlIG9sZCBUZXN0UnVubmVyIEFQSSBmb3IgaGFuZGxpbmcg
d2ViIG5vdGlmaWNhdGlvbnMsIG5vdCB0aGUgbGVnYWN5IHdlYiBub3RpZmljYXRpb24gQVBJLgog
ICAgIHZvaWQgaWdub3JlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCk7
CiAgICAgLy8gTGVnYWN5IGhlcmUgcmVmZXJzIHRvIHRoZSBvbGQgVGVzdFJ1bm5lciBBUEkgZm9y
IGhhbmRsaW5nIHdlYiBub3RpZmljYXRpb25zLCBub3QgdGhlIGxlZ2FjeSB3ZWIgbm90aWZpY2F0
aW9uIEFQSS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRl
eCBjNmQ4NTBmNmIzMTZhZGUyZjgyNjA0YjVmZjAxZThmZWQxZWVkYWVmLi45YjQyZTM2OTY5MjM0
YTA3YmM1MmUyZGEzYjI2NDRjOGYxN2JmMWNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCkBAIC01OCw2ICs1OCw3IEBACiAjaW1wb3J0IDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSGVhcFN0YXRp
c3RpY3MuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTG9nZ2luZy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NUmFuZ2UuaD4KQEAg
LTg2LDYgKzg3LDcgQEAKICNpbXBvcnQgPGdldG9wdC5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmg+CiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTE4OTQsNiAr
MTg5Niw5IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZygpCiAjZW5kaWYKIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsKKworICAg
IHJlc2V0QWNjdW11bGF0ZWRMb2dzKCk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0Ojppbml0aWFs
aXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGE0MzAzN2Q1ZDhjNmQwOTkzYzllOGEzMmE5
OWUxNjg0Yzc5YzVmNWYuLjNmZTE4NmY1OGM4ODg1MzJhOWIwMGQ3MjM2NGJmZjlmMjNmMzZlMTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjIzLDUgKzIyMyw3IEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHJ1blVJU2NyaXB0KERPTVN0cmluZyBzY3JpcHQsIG9i
amVjdCBjYWxsYmFjayk7CiAKICAgICB2b2lkIGNsZWFyVGVzdFJ1bm5lckNhbGxiYWNrcygpOwor
CisgICAgdm9pZCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKERPTVN0cmluZyBjaGFubmVsKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IGU3ZDZmNWY4NDVhMTNhNWU0MjNiNTJiYzkzNjU5NDBlODY0OGEw
OGIuLjAxNTI0MTcxNjgzMjE5NmRmNjYyYjRmNzNiMTMzY2I2MzM2NzdmNzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtNjAxLDYgKzYwMSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsZWFyVGVzdFJ1bm5lckNhbGxi
YWNrcygpCiAgICAgY2FsbGJhY2tNYXAoKS5jbGVhcigpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6
OmFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdSZWYpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBnZXR0aW5nIHRoZSBjYWxsIHRvIGFsbCBwcm9jZXNzZXMuCit9CisKIHZvaWQg
VGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewog
ICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEFkZENocm9tZUlucHV0RmllbGRDYWxsYmFja0lE
LCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IDcxMDk0NTMyNzVhNTE5NTZjOTE2OTA3MTI1NjU4NDU4Y2Y5
NDcyYWMuLmQwOGM5MzNkZGU2ODY2ODM3MGQ3ZWI4ODgwODg3YWE4YjA1YjA2Y2IgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC0zMjAsNiArMzIwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhclRlc3RSdW5uZXJDYWxs
YmFja3MoKTsKIAorICAgIHZvaWQgYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1Jl
ZiBjaGFubmVsKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMjFj
MmM0YWQ2NTlkMTNiOWQ2ZWVmMTE5YmZhMTliZTAzOGZmYTI2Li4xMDMzNmY0YjI4OWQ5NzZlYTc0
NTI3ZDJhNDk1NGNjNjU4MDA1ZTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUtMDIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0aGUgYWJp
bGl0eSB0byBhY2N1bXVsYXRlIGxvZ3MgZm9yIHNwZWNpZmljIGxvZ2dpbmcgY2hhbm5lbHMgdG8g
aGVscCBkaWFnbm9zZSB0ZXN0IHRpbWVvdXRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBGb3IgdGhlIHRlc3RzIHRoYXQgYXJlIGtub3du
IGZsYWtlcyB0aGF0IGFyZSBub3QgaW1wb3J0ZWQsIGFkZCB0aGUgImFjY3VtdWxhdGUgSW5kZXhl
ZERCIGxvZ3MiIGNvbW1hbmQuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qczoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qczoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtYWJv
cnQuanM6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludHZlcnNpb24t
b3Blbi1pbi11cGdyYWRlbmVlZGVkLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vZGQtc3RyaW5ncy5qczoKKwogMjAxNi0wNS0wMSAgU2thY2hrb3YgT2xla3NhbmRy
ICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBDbGFzcyBjb250cnVjdG9yIGFuZCBt
ZXRob2RzIHNob3VsZG4ndCBoYXZlICJhcmd1bWVudHMiIGFuZCAiY2FsbGVyIgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy8yNTYtb3Bl
bi1kYXRhYmFzZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qcwppbmRleCBkNTg1MWE3Zjg4NjhiOGZiZWE2Zjdi
YjdhOWMzM2ZkMjY0NTVjYTFjLi5kZTFjYzgyNTVmMDgzZmIwM2I3MjdiMmI3M2NiNjQ0YTZkMjRk
MzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVz
b3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzLzI1Ni1vcGVuLWRhdGFiYXNlcy5qcwpAQCAtMSw1ICsx
LDggQEAKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGlmIHlvdSBvcGVu
IDEyOCB1bmlxdWUgZGF0YWJhc2VzLCBjbG9zZSB5b3VyIGNvbm5lY3Rpb25zIHRvIHRoZW0sIGFu
ZCB0aGVuIG9wZW4gMTI4IG90aGVyIHVuaXF1ZSBkYXRhYmFzZXMsIHRoYXQgaXQgd29ya3MuIik7
CiAKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmFjY3VtbXVsYXRlTG9n
c0ZvckNoYW5uZWwoIkluZGV4ZWREQiIpOworCiB2YXIgZGF0YWJhc2VDb25uZWN0aW9ucyA9IG5l
dyBBcnJheTsKIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMjg7ICsraSkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hYm9ydC1yZXF1
ZXN0cy1jYW5jZWxsZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qcwppbmRleCA3Nzk1MmZlMzg3YmM4
MDJhM2I4OGE0MmUxZThiODY5OWNlNjhmN2IyLi42NDg4YzMzZWI0NWEyNjg5YzYwNDkzZjFkNDY5
MDU4MTdlNzkwNTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vcmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2Fib3J0LXJlcXVlc3RzLWNh
bmNlbGxlZC5qcwpAQCAtMSw4ICsxLDEwIEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCB1bi1oYW5kbGVkIHJlcXVlc3RzIGluIGEgdHJhbnNhY3Rpb24gcmVjZWl2ZSBv
bmVycm9yIGNhbGxiYWNrcyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLiIpOwogCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0ZUxvZ3NGb3JD
aGFubmVsKCJJbmRleGVkREIiKTsKKyAgICAKIGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNl
KTsKIAotCiBmdW5jdGlvbiBkb25lKCkKIHsKICAgICBmaW5pc2hKU1Rlc3QoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvYXV0b2lu
Y3JlbWVudC1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXNvdXJjZXMvYXV0b2luY3JlbWVudC1hYm9ydC5qcwppbmRleCA1OTRiOWZkYjEyNTQ3ODg4NDI1
ZjE1ZDU2YmJiMTk2NDQ5Y2NkMGJkLi41ZGI0YjQxMTY4OWIwMzE3ZDQ1ZTA1YmUzZjkyNTAyZTY1
MjZhOWIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
cmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtYWJvcnQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWFib3J0LmpzCkBAIC0z
LDkgKzMsMTEgQEAgSXQgdGhlbiBwdXRzIHNvbWUgdGhpbmdzIGluIHRoYXQgb2JqZWN0IHN0b3Jl
LCBjaGVja2luZyB0aGUga2V5cyB0aGF0IHdlcmUgdXNlZC4KIEJ1dCBpdCB0aGVuIGFib3J0cyB0
aGF0IHRyYW5zYWN0aW9uLiBcCiBUaGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBhbmQgcHV0cyBzb21l
dGhpbmcgaW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIHdhcyBy
ZXZlcnRlZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKIAoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuYWNjdW1tdWxhdGVMb2dzRm9yQ2hh
bm5lbCgiSW5kZXhlZERCIik7CisgICAgCiBpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSk7
CiAKLQogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW50dmVyc2lvbi1vcGVu
LWluLXVwZ3JhZGVuZWVkZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW50dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVkZWQuanMKaW5kZXggMGRkOTFlOTU1
ZDNkZDEzMzk2MzNkN2Q2NzUwOTVhNDU4MzQyZDYxYy4uMmMyMzgwZjI3YTVlMzQ4YTdhMmEwM2Vi
YmEwZDdhNzZmYmE1MjdhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ludHZlcnNpb24tb3Blbi1pbi11cGdyYWRlbmVlZGVkLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnR2ZXJzaW9uLW9wZW4taW4t
dXBncmFkZW5lZWRlZC5qcwpAQCAtNSw2ICs1LDkgQEAgaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
ewogCiBkZXNjcmlwdGlvbigiVGVzdCBjYWxsaW5nIGRiLm9wZW4gaW4gdXBncmFkZW5lZWRlZC4i
KTsKIAoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuYWNjdW1tdWxhdGVM
b2dzRm9yQ2hhbm5lbCgiSW5kZXhlZERCIik7CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMKaW5kZXggMjUzOTNhNmU2N2ZjYjUyNWQ5
MGFiZGU5NDQ1MmZlMDJkNzM1NmY4Zi4uMzUxNDJlM2VjYTExZWU1NGQ1ZWQ4MDZjYWM0MGU5OTFm
NjI4OGRjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29kZC1zdHJpbmdzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vZGQtc3RyaW5ncy5qcwpAQCAtNSw2ICs1LDkgQEAgaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgewogCiBkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBl
cyIpOwogCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5hY2N1bW11bGF0
ZUxvZ3NGb3JDaGFubmVsKCJJbmRleGVkREIiKTsKKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
</data>
<flag name="review"
          id="302084"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>