<?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>227279</bug_id>
          
          <creation_ts>2021-06-22 22:36:46 -0700</creation_ts>
          <short_desc>Add ID and versioning support for AppHighlights</short_desc>
          <delta_ts>2021-06-30 16:54:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771859</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-22 22:36:46 -0700</bug_when>
    <thetext>Add ID and versioning support for AppHighlights</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772154</commentid>
    <comment_count>1</comment_count>
      <attachid>432124</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-23 19:03:46 -0700</bug_when>
    <thetext>Created attachment 432124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772158</commentid>
    <comment_count>2</comment_count>
      <attachid>432124</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-23 19:10:03 -0700</bug_when>
    <thetext>Comment on attachment 432124
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:110
&gt; +    constexpr unsigned maxSupportedAppHighlighVersion = 1;

Nit - maxSupportedAppHighlightVersion

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:127
&gt; +    

Nit - extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772163</commentid>
    <comment_count>3</comment_count>
      <attachid>432124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-23 19:30:41 -0700</bug_when>
    <thetext>Comment on attachment 432124
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:44
&gt; +static constexpr uint64_t highlightFileSignature = 0x3132303248504141;

static is not needed.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:112
&gt; +    std::optional&lt;uint64_t&gt; decodedHighlightFileSignature;

I am a little unclear why we need both a version and a signature. Both are constants that we can bump at any point. Why isn&apos;t the version sufficient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772172</commentid>
    <comment_count>4</comment_count>
      <attachid>432124</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-23 20:55:42 -0700</bug_when>
    <thetext>Comment on attachment 432124
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:119
&gt; +    if (!version || *version &gt; maxSupportedAppHighlighVersion)

I think forward compatibility is likely a P1 for this code, so we might need to think about this some more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772278</commentid>
    <comment_count>5</comment_count>
      <attachid>432124</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-24 08:19:12 -0700</bug_when>
    <thetext>Comment on attachment 432124
Patch

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

&gt;&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:44
&gt;&gt; +static constexpr uint64_t highlightFileSignature = 0x3132303248504141;
&gt; 
&gt; static is not needed.

Probably worth explaining how this value was derived, even if that is just say it is a random value or something.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:98
&gt; +    encoder &lt;&lt; highlightFileSignature;

Is this encoder/decoder used for both persisten and IPC encoding? If so, perhaps we only need to encode/decode this when doing persistent encoding/decoding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772424</commentid>
    <comment_count>6</comment_count>
      <attachid>432124</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-24 12:58:10 -0700</bug_when>
    <thetext>Comment on attachment 432124
Patch

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

&gt;&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:98
&gt;&gt; +    encoder &lt;&lt; highlightFileSignature;
&gt; 
&gt; Is this encoder/decoder used for both persisten and IPC encoding? If so, perhaps we only need to encode/decode this when doing persistent encoding/decoding?

This is only used for persistent encoding. Technically the blob is passed via IPC with other data, but it is not decoded by any process other than WebKit, only stored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772773</commentid>
    <comment_count>7</comment_count>
      <attachid>432296</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-25 15:21:34 -0700</bug_when>
    <thetext>Created attachment 432296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772782</commentid>
    <comment_count>8</comment_count>
      <attachid>432296</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-25 15:46:20 -0700</bug_when>
    <thetext>Comment on attachment 432296
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:116
&gt; +    std::optional&lt;unsigned&gt; version;

I think you want to use an explicitly-sized datatype here (uint64_t also?)

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7616
&gt; -        document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const uint8_t*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), i == index ? ScrollToHighlight::Yes : ScrollToHighlight::No);
&gt; +        document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const uint8_t*&gt;(sharedMemory-&gt;data()), ipcHandle.dataSize), i == index ? ScrollToHighlight::Yes : ScrollToHighlight::No);

If something takes us a whole day to figure out, you should probably call it out in the changelog :)

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:147
&gt; +TEST(AppHighlights, AppHighlightCreateAndRestoreWithExtraBytes)

Each of these could use a reason why they are important properties to uphold (for this one: &quot;It is important that extra data at the end of the highlight blob is ignored, so that future versions of the blob format can add additional data but still be decoded successfully by versions of WebKit that only know about the v1 format&quot; or something).

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:149
&gt; +    WKWebViewConfiguration *configuration = [WKWebViewConfiguration _test_configurationWithTestPlugInClassName:@&quot;WebProcessPlugInWithInternals&quot; configureJSCForTesting:YES];

This whole file would hugely benefit from some helper functions. You could imagine this test just looking like:

TEST(AppHighlights, AppHighlightCreateAndRestoreWithExtraBytes)
{
    const char *html = &quot;Test&quot;;
    _WKAppHighlight *highlight = createAppHighlightWithHTML(html, &quot;document.execCommand(&apos;SelectAll&apos;)&quot;);

    NSMutableData *modifiedHighlightData = [NSMutableData dataWithData:highlight.highlight];
    [modifiedHighlightData appendData:[@&quot;TestGarbageData&quot; dataUsingEncoding:NSUTF8StringEncoding]];

    WKWebView *webViewRestore = createWebViewForAppHighlightsWithHTML(html);
    [webViewRestore _restoreAppHighlights:@[ modifiedHighlightData ]];

    TestWebKitAPI::Util::waitForConditionWithLogging([&amp;] () -&gt; bool {
        return [webViewRestore stringByEvaluatingJavaScript:@&quot;internals.numberOfAppHighlights()&quot;].intValue == 1;
    }, 2, @&quot;Expected Highlights to be populated.&quot;);
}

and then most of the other tests could also ues createAppHighlightWithHTML and createWebViewForAppHighlightsWithHTML, and adding tests would be cheaper and the interesting parts would be more central and easier to read.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:195
&gt; +        unsigned maxversion = 100; // increase this if we ever go past version 100 in AppHighlightRangeData for the most accurate tests

You could infer this instead of hardcoding it by making a blob and looking at the version field :) But this is fine.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:196
&gt; +        NSData* versionData = [NSData dataWithBytes:&amp;maxversion length:sizeof(maxversion)];

A lot of your objc stars are on the wrong side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772783</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-25 15:46:51 -0700</bug_when>
    <thetext>(In reply to Megan Gardner from comment #6)
&gt; Comment on attachment 432124 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432124&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:98
&gt; &gt;&gt; +    encoder &lt;&lt; highlightFileSignature;
&gt; &gt; 
&gt; &gt; Is this encoder/decoder used for both persisten and IPC encoding? If so, perhaps we only need to encode/decode this when doing persistent encoding/decoding?
&gt; 
&gt; This is only used for persistent encoding. Technically the blob is passed
&gt; via IPC with other data, but it is not decoded by any process other than
&gt; WebKit, only stored.

Some other encoders assert that they&apos;re only used for IPC or only used for Persistence; you could do the same!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773223</commentid>
    <comment_count>10</comment_count>
      <attachid>432429</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-28 15:16:16 -0700</bug_when>
    <thetext>Created attachment 432429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773229</commentid>
    <comment_count>11</comment_count>
      <attachid>432429</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-28 15:25:58 -0700</bug_when>
    <thetext>Comment on attachment 432429
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:166
&gt; +    finished = YES;
&gt; +
&gt; +    TestWebKitAPI::Util::run(&amp;finished);

This makes no sense, you can get rid of the finished bit entirely, it is doing nothing

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:192
&gt; +    finished = YES;
&gt; +
&gt; +    TestWebKitAPI::Util::run(&amp;finished);

Ditto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:214
&gt; +    finished = YES;
&gt; +
&gt; +    TestWebKitAPI::Util::run(&amp;finished);

Etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773257</commentid>
    <comment_count>12</comment_count>
      <attachid>432438</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-28 16:08:08 -0700</bug_when>
    <thetext>Created attachment 432438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773262</commentid>
    <comment_count>13</comment_count>
      <attachid>432438</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-28 16:26:03 -0700</bug_when>
    <thetext>Comment on attachment 432438
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:128
&gt; +// Ensure that future versions of the blog format can add additional data and still be decoded successfully by version of WebKit that only know about the current format.

&quot;blog&quot;?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:145
&gt; +// Ensure that we don&apos;t block against later versions with an explicite version check.

&quot;explicite&quot;?

I would say something more like &quot;Older versions of WebKit need to be able to decode blobs encoded on newer versions of WebKit, so ensure that &lt;blah blah&gt;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773555</commentid>
    <comment_count>14</comment_count>
      <attachid>432534</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-29 14:40:13 -0700</bug_when>
    <thetext>Created attachment 432534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773559</commentid>
    <comment_count>15</comment_count>
      <attachid>432534</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-29 14:48:42 -0700</bug_when>
    <thetext>Comment on attachment 432534
Patch

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

&gt; Source/WTF/wtf/persistence/PersistentDecoder.cpp:38
&gt; +    , m_bufferBegin(buffer)

How does this differ from m_buffer?? (I don&apos;t think it is, I think you don&apos;t need to add anything)

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:113
&gt; +    bool v0 = false;

I would go with `isVersion0` or something slightly less terse. Or maybe just move `std::optional&lt;uint64_t&gt; version` up here and just set that directly??

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:121
&gt; +        if (!decoder.rewind(sizeof(highlightFileSignature)))
&gt; +            return std::nullopt;

Nice

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:122
&gt; +        v0 = 1;

`true`?

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:129
&gt; +        identifier = &quot;NULL&quot;;

Maybe just an empty (or null?) string? Then other folks looking at this can just check isEmpty instead of having to spread == &quot;NULL&quot; checks around. This is fine, too, though.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:128
&gt; +// Ensure that future versions of the blog format can add additional data and still be decoded successfully by version of WebKit that only know about the current format.

Please go back and re-read my old comments about this comment and the next one (and any other previous review comments you might have missed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773601</commentid>
    <comment_count>16</comment_count>
      <attachid>432547</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-29 16:00:35 -0700</bug_when>
    <thetext>Created attachment 432547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773636</commentid>
    <comment_count>17</comment_count>
      <attachid>432547</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-29 17:11:18 -0700</bug_when>
    <thetext>Comment on attachment 432547
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:96
&gt; +    static_assert(!Encoder::isIPCEncoder, &quot;AppHighlightRangeData should not be used by WTF::IPC::Encoder&quot;);

Drop the WTF:: (IPC::Encoder is not in WTF namespace).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773661</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-29 22:37:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/79950614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773868</commentid>
    <comment_count>19</comment_count>
      <attachid>432620</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-30 13:19:43 -0700</bug_when>
    <thetext>Created attachment 432620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773880</commentid>
    <comment_count>20</comment_count>
      <attachid>432620</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-30 14:22:15 -0700</bug_when>
    <thetext>Comment on attachment 432620
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:151
&gt; +    uint64_t maxversion = std::numeric_limits&lt;uint64_t&gt;::max();

maximumVersion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773892</commentid>
    <comment_count>21</comment_count>
      <attachid>432628</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-06-30 14:52:08 -0700</bug_when>
    <thetext>Created attachment 432628
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773945</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-30 16:54:48 -0700</bug_when>
    <thetext>Committed r279444 (239300@main): &lt;https://commits.webkit.org/239300@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432628.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432124</attachid>
            <date>2021-06-23 19:03:46 -0700</date>
            <delta_ts>2021-06-25 15:21:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210623190345.patch</filename>
            <type>text/plain</type>
            <size>7368</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhODM2MTBkNWUyMjk0
MjllMDU4M2YyNWNhMGNjODhkM2MxMjkzNy4uZDcxODg3ZWNkOTkwOWU0YWNiNTE3ZWI4NTdiMmQ0
MjRmNDBjZTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTIyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFu
ZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhp
Z2hsaWdodCBEYXRhIHRvIGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAg
ICAgICAgaGlnaGxpZ2h0cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQg
ZnV0dXJlLXByb29mLgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
YXBwSGlnaGxpZ2h0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorCiAyMDIxLTA2LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKFNhZmFyaSAxNCk6IFN1Ym1l
bnVzIG9uIGh0dHBzOi8vY29kZWxlYXJuLmNhdCBkb24ndCBzaG93CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRkZTk3
MDI2YTZmMGI1NTk3MDE3ZWExYmUwNjg2OGUzM2NiYjViMGIuLmY4NWI3YjFjOTM4MmY1NDE0NjQ1
YWZkYjZlMDhmOTA5ZmIzZjBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDYt
MjIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgSUQgYW5kIHZlcnNpb25pbmcgc3VwcG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmb3JtYXQgdGhlIHN0b3Jh
Z2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3VyYXRlIGRlbGV0aW9uIG9mIGFj
dGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGVtIG1vcmUgcm9i
dXN0IGFuZCBmdXR1cmUtcHJvb2YuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZSk6CisKIDIwMjEtMDYtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBHcm91cEFjdGl2aXRpZXNDb29yZGlu
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggNGY0Yzg2YTU3MWU2MTliYmY4NTgwODk1M2I1
ZWJjNWI5ZjkxNDU1Mi4uM2I4NzExNzYxMDllNDBhYmViMGE2MGU4MDA5OGNlNWY4ZTUwNmVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJl
ID0gMHgzMTMyMzAzMjQ4NTA0MTQxOworCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKQEAgLTkxLDYg
KzkzLDExIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudD4KIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogeworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50QXBwSGlnaGxpZ2h0VmVyc2lv
biA9IDE7CisgICAgCisgICAgZW5jb2RlciA8PCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAg
IGVuY29kZXIgPDwgY3VycmVudEFwcEhpZ2hsaWdodFZlcnNpb247CisgICAgZW5jb2RlciA8PCBt
X2lkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBtX3RleHQ7CiAgICAgZW5jb2RlciA8PCBtX3N0
YXJ0Q29udGFpbmVyOwogICAgIGVuY29kZXIgPDwgbV9zdGFydE9mZnNldDsKQEAgLTEwMCw2ICsx
MDcsMjQgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CisgICAgY29uc3RleHByIHVuc2lnbmVk
IG1heFN1cHBvcnRlZEFwcEhpZ2hsaWdoVmVyc2lvbiA9IDE7CisgICAgCisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgZGVjb2Rl
ciA+PiBkZWNvZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVyZTsKKyAgICBpZiAoIWRlY29kZWRIaWdo
bGlnaHRGaWxlU2lnbmF0dXJlIHx8IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlICE9IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmVyc2lvbjsKKyAgICBkZWNvZGVyID4+IHZl
cnNpb247CisgICAgaWYgKCF2ZXJzaW9uIHx8ICp2ZXJzaW9uID4gbWF4U3VwcG9ydGVkQXBwSGln
aGxpZ2hWZXJzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRl
eHQ7CiAgICAgaWYgKCF0ZXh0KQpAQCAtMTI2LDcgKzE1MSw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRS
YW5nZURhCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKIAotICAgIHJldHVybiB7eyBX
VEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLCAqc3RhcnRPZmZzZXQsIFdU
Rk1vdmUoKmVuZENvbnRhaW5lciksICplbmRPZmZzZXQgfX07CisgICAgcmV0dXJuIHt7IFdURk1v
dmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc3RhcnRDb250YWluZXIp
LCAqc3RhcnRPZmZzZXQsIFdURk1vdmUoKmVuZENvbnRhaW5lciksICplbmRPZmZzZXQgfX07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggMTgzNDAzNzY2
M2E3NDVjNTFlMWE5MDc1YjQ1YzgxNGRmYTMzNDJkMC4uNzNmMDVhYTk0OTcwMjFlNzc0ODhiYjA2
MjRkNDllMjVlZjIyMDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTc5LDggKzc5LDkgQEAgcHVi
bGljOgogCiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YSYpID0gZGVmYXVsdDsKICAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRleHQsIE5vZGVQYXRoJiYgc3Rh
cnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2RlUGF0aCYmIGVuZENvbnRhaW5l
ciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dChXVEZNb3ZlKHRleHQpKQor
ICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiBpZGVudGlmaWVyLCBTdHJpbmcmJiB0
ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9k
ZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBtX2lk
ZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgLCBtX3RleHQoV1RGTW92ZSh0
ZXh0KSkKICAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIp
KQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgICAgICwgbV9lbmRD
b250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQpAQCAtODgsOCArODksOSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBtX3RleHQodGV4dCkKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFy
dENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250
YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICAgICAgLCBtX3RleHQodGV4dCkKICAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KHN0YXJ0Q29udGFpbmVyKQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAg
ICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFpbmVyKQpAQCAtOTcsNiArOTksNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KICAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KQEAgLTEwOSw2ICsxMTIs
NyBAQCBwdWJsaWM6CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25z
dDsKIAogcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3Rl
eHQ7CiAgICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5lcjsKICAgICB1bnNpZ25lZCBtX3N0YXJ0
T2Zmc2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCA2ZmJlMGIxNWI4OThkNjE4MjRlMWU3
MmM1NDYyZjQzZWQwMzU3MmE3Li4yYmY0OWM2ZjVlZmRmYmEzNWRiZjdiOWFhODcwYmVjOTA0OTQ1
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlN0YXRp
Y1JhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMjAzLDcgKzIwNCw5IEBAIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nCiB7CiAgICAgYXV0byB0
ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKICAgICB0ZXh0LnRydW5jYXRlKHRleHRQcmV2aWV3TGVu
Z3RoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7
CiAgICAgcmV0dXJuIHsKKyAgICAgICAgaWRlbnRpZmllciwKICAgICAgICAgdGV4dCwKICAgICAg
ICAgbWFrZU5vZGVQYXRoKCZyYW5nZS5zdGFydENvbnRhaW5lcigpKSwKICAgICAgICAgcmFuZ2Uu
c3RhcnRPZmZzZXQoKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432296</attachid>
            <date>2021-06-25 15:21:34 -0700</date>
            <delta_ts>2021-06-29 14:40:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210625152133.patch</filename>
            <type>text/plain</type>
            <size>17593</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhODM2MTBkNWUyMjk0
MjllMDU4M2YyNWNhMGNjODhkM2MxMjkzNy4uMWFkZDIyODZmZWVhMGUyNjJkZTY1NTIyZTg0MjM1
MGE1OWIwNzA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA2LTI1ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFu
ZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0
UmVzdG9yZUZyb21TdG9yYWdlCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3Jl
YXRlQW5kUmVzdG9yZUFuZERyb3BCeXRlcworICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVXaXRoTGF0ZXJWZXJzaW9uCisgICAgICAgIEFwcEhpZ2hsaWdo
dHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVzCisKKyAgICAgICAg
UmVmb3JtYXQgdGhlIHN0b3JhZ2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3Vy
YXRlIGRlbGV0aW9uIG9mIGFjdGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1h
a2luZyB0aGVtIG1vcmUgcm9idXN0IGFuZCBmdXR1cmUtcHJvb2YuCisKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjpBcHBIaWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisKIDIwMjEtMDYtMjIgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2Fm
YXJpIDE0KTogU3VibWVudXMgb24gaHR0cHM6Ly9jb2RlbGVhcm4uY2F0IGRvbid0IHNob3cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggZGRlOTcwMjZhNmYwYjU1OTcwMTdlYTFiZTA2ODY4ZTMzY2JiNWIwYi4uMzgyMGEw
MGNiZTg3YzM2YWE4OTg5YjY0NDZjZTY2ZTMxMGQwZmUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0wNi0yNSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZvciBBcHBIaWdobGln
aHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcy
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZv
cm1hdCB0aGUgc3RvcmFnZSBvZiBIaWdobGlnaHQgRGF0YSB0byBhbGxvdyBmb3IgYWNjdXJhdGUg
ZGVsZXRpb24gb2YgYWN0aXZlCisgICAgICAgIGhpZ2hsaWdodHMsIGFzIHdlbGwgYXMgbWFraW5n
IHRoZW0gbW9yZSByb2J1c3QgYW5kIGZ1dHVyZS1wcm9vZi4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkpOgorCiAyMDIxLTA2LTA3ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gR3JvdXBB
Y3Rpdml0aWVzQ29vcmRpbmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDRmNGM4NmE1NzFl
NjE5YmJmODU4MDg5NTNiNWViYzViOWY5MTQ1NTIuLjYxMGVkNjQ5YzMzZDYzZDM0OGY3YThjY2Uy
MjkzZTUxZjk1YWUyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDEsNiArNDEsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBs
ZShBUClwbGljYXRpb24oSClpZ2hsaWdodHMoMjAyMSkKKwogc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7
CkBAIC05MSw2ICs5MywxMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEFwcEhpZ2hs
aWdodFZlcnNpb24gPSAxOworICAgIAorICAgIGVuY29kZXIgPDwgaGlnaGxpZ2h0RmlsZVNpZ25h
dHVyZTsKKyAgICBlbmNvZGVyIDw8IGN1cnJlbnRBcHBIaWdobGlnaHRWZXJzaW9uOworICAgIGVu
Y29kZXIgPDwgbV9pZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgbV90ZXh0OwogICAgIGVuY29k
ZXIgPDwgbV9zdGFydENvbnRhaW5lcjsKICAgICBlbmNvZGVyIDw8IG1fc3RhcnRPZmZzZXQ7CkBA
IC0xMDAsNiArMTA3LDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uCiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogeworICAgIAorICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAg
IGRlY29kZXIgPj4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNv
ZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSB8fCBkZWNvZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZSAhPSBoaWdobGlnaHRGaWxlU2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZlcnNpb247CisgICAgZGVjb2Rl
ciA+PiB2ZXJzaW9uOworICAgIGlmICghdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAg
ZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKQEAgLTEyNSw4ICsxNDgsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
QXBwSGlnaGxpZ2h0UmFuZ2VEYQogICAgIGlmICghZW5kT2Zmc2V0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUo
KnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAq
ZW5kT2Zmc2V0IH19OworICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92
ZSgqdGV4dCksIFdURk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3Zl
KCplbmRDb250YWluZXIpLCAqZW5kT2Zmc2V0IH19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IDE4MzQwMzc2NjNhNzQ1YzUxZTFhOTA3NWI0NWM4MTRk
ZmEzMzQyZDAuLjczZjA1YWE5NDk3MDIxZTc3NDg4YmIwNjI0ZDQ5ZTI1ZWYyMjA5NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oCkBAIC03OSw4ICs3OSw5IEBAIHB1YmxpYzoKIAogICAgIEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7CiAgICAg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICBBcHBIaWdobGlnaHRSYW5nZURh
dGEoU3RyaW5nJiYgaWRlbnRpZmllciwgU3RyaW5nJiYgdGV4dCwgTm9kZVBhdGgmJiBzdGFydENv
bnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5kQ29udGFpbmVyLCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRp
ZmllcikpCisgICAgICAgICwgbV90ZXh0KFdURk1vdmUodGV4dCkpCiAgICAgICAgICwgbV9zdGFy
dENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkKICAgICAgICAgLCBtX3N0YXJ0T2Zm
c2V0KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29u
dGFpbmVyKSkKQEAgLTg4LDggKzg5LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBB
cHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYg
c3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5k
Q29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogbV90ZXh0KHRleHQpCisg
ICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV90ZXh0
KHRleHQpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFydENvbnRhaW5lcikKICAgICAg
ICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29udGFpbmVy
KGVuZENvbnRhaW5lcikKQEAgLTk3LDYgKzk5LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
KyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0K
ICAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29udGFpbmVyOyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0T2Zmc2V0OyB9CkBAIC0xMDksNiArMTEyLDcgQEAgcHVibGljOgogICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV90ZXh0OwogICAgIE5vZGVQYXRoIG1fc3Rh
cnRDb250YWluZXI7CiAgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKaW5kZXggNmZiZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0M2VkMDM1NzJhNy4uMmJm
NDljNmY1ZWZkZmJhMzVkYmY3YjlhYTg3MGJlYzkwNDk0NTBmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgogI2luY2x1ZGUgIlRl
eHRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
VVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3ICsyMDQsOSBAQCBzdGF0
aWMgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25z
dCBTdGF0aWNSYW5nZSYgcmFuZwogewogICAgIGF1dG8gdGV4dCA9IHBsYWluVGV4dChyYW5nZSk7
CiAgICAgdGV4dC50cnVuY2F0ZSh0ZXh0UHJldmlld0xlbmd0aCk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgIHJldHVybiB7CisgICAgICAg
IGlkZW50aWZpZXIsCiAgICAgICAgIHRleHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uu
c3RhcnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM3YjQzZTljN2M1
ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjM0NDk0MDJlY2MzYjJkYjA4OTk2OGMyOThi
NDUzMDNjNDc3ZThmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03NjEzLDcgKzc2MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBI
aWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAog
ICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9PSBpbmRl
eCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAg
ICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0Fw
cEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4
ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAg
ICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggODU2ZDFhZGM2NzYyYWI4NGU4MDc3NjZlMzg3ZWU4YzQwM2Y2MTM0YS4u
ZjJhOTBkYTIwMGRhYTMzNjZiZjJlN2NkMDk2YmRmYWI3ZmRlZDhiNCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTA2LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZm9ybWF0IHRoZSBz
dG9yYWdlIG9mIEhpZ2hsaWdodCBEYXRhIHRvIGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBv
ZiBhY3RpdmUKKyAgICAgICAgaGlnaGxpZ2h0cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3Jl
IHJvYnVzdCBhbmQgZnV0dXJlLXByb29mLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRy
dWUgd2hlbiB3ZSBmYWlsIHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggY2ZlNzlkMmZl
NzVhZjVjNzhhOTViZjk5OTMxMmQ5MzdjYTIzZDQxMi4uMjlkMzY0MGVlOTE4ODZkOWQxZjhlZWEw
YWExZGQzZmM0ZTk5ZjNiZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KQEAgLTE0NCw2ICsxNDQsMTI1IEBA
IFRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CiAKK1RFU1QoQXBwSGlnaGxpZ2h0
cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVzKQoreworICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXdDcmVhdGUg
X3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlld0Ny
ZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAgW3dlYlZpZXdD
cmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5k
KCdTZWxlY3RBbGwnKSJdOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POworICAgIFtk
ZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0
ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJP
T0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVX
ZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhp
Z2hsaWdodCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0
Iik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKKyAgICAg
ICAgCisgICAgICAgIE5TTXV0YWJsZURhdGEqIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011
dGFibGVEYXRhIGRhdGFXaXRoRGF0YTpoaWdobGlnaHQuaGlnaGxpZ2h0XTsKKyAgICAgICAgW21v
ZGlmaWVkSGlnaGxpZ2h0RGF0YSBhcHBlbmREYXRhOltAIlRlc3RHYXJiYWdlRGF0YSIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgCisgICAgICAgIFt3
ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAg
ICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdo
bGlnaHREYXRhIF1dOworICAgICAgICAKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2Fp
dEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJl
dHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVy
bmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgICAgIH0s
IDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CisgICAgICAgIAor
ICAgICAgICBmaW5pc2hlZCA9IFlFUzsKKyAgICB9XTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfYWRk
QXBwSGlnaGxpZ2h0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsK
K30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlV2l0
aExhdGVyVmVyc2lvbikKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhp
Z2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3
ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisgICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiVGVzdCJdOworICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiXTsKKyAgICBfX2Jsb2NrIGJv
b2wgZmluaXNoZWQgPSBOTzsKKyAgICBbZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxs
YmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hs
aWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGln
aGxpZ2h0LmhpZ2hsaWdodCk7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBtYXh2ZXJzaW9u
ID0gMTAwOyAvLyBpbmNyZWFzZSB0aGlzIGlmIHdlIGV2ZXIgZ28gcGFzdCB2ZXJzaW9uIDEwMCBp
biBBcHBIaWdobGlnaHRSYW5nZURhdGEgZm9yIHRoZSBtb3N0IGFjY3VyYXRlIHRlc3RzCisgICAg
ICAgIE5TRGF0YSogdmVyc2lvbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Jm1heHZlcnNp
b24gbGVuZ3RoOnNpemVvZihtYXh2ZXJzaW9uKV07CisgICAgICAgIE5TTXV0YWJsZURhdGEqIG1v
ZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRoRGF0YTpoaWdobGln
aHQuaGlnaGxpZ2h0XTsKKworICAgICAgICBbbW9kaWZpZWRIaWdobGlnaHREYXRhIHJlcGxhY2VC
eXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2Uoc2l6ZW9mKHVpbnQ2NF90KSwgc2l6ZW9mKG1heHZlcnNp
b24pKSB3aXRoQnl0ZXM6dmVyc2lvbkRhdGFdOworCisgICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAgICAgIFt3ZWJWaWV3UmVz
dG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOwor
ICAgICAgICAKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldp
dGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBbd2ViVmlld1Jl
c3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFw
cEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgICAgIH0sIDIsIEAiRXhwZWN0ZWQg
SGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CisgICAgICAgIAorICAgICAgICBmaW5pc2hl
ZCA9IFlFUzsKKyAgICB9XTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfYWRkQXBwSGlnaGxpZ2h0XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKworVEVTVChBcHBI
aWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5kRHJvcEJ5dGVzKQorewor
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXdD
cmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2Vi
Vmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAgW3dl
YlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWND
b21tYW5kKCdTZWxlY3RBbGwnKSJdOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwor
ICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpk
ZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3Jv
dXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVs
ZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGhpZ2hsaWdodCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwg
QCJUZXN0Iik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsK
KyAgICAgICAgCisgICAgICAgIE5TTXV0YWJsZURhdGEqIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9
IFtOU011dGFibGVEYXRhIGRhdGFXaXRoQnl0ZXM6aGlnaGxpZ2h0LmhpZ2hsaWdodC5ieXRlcyBs
ZW5ndGg6aGlnaGxpZ2h0LmhpZ2hsaWdodC5sZW5ndGggLyAyXTsKKworICAgICAgICBbd2ViVmll
d1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgICAgICBb
d2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0
RGF0YSBdXTsKKyAgICAgICAgCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JD
b25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4g
IVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWU7CisgICAgICAgIH0sIDIsIEAiRXhw
ZWN0ZWQgSGlnaGxpZ2h0cyBub3QgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgICAgICAKKyAgICAg
ICAgZmluaXNoZWQgPSBZRVM7CisgICAgfV07CisgICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFwcEhp
Z2hsaWdodF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisK
K1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZyb21TdG9yYWdlKQorewor
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZXNbXSA9IHsweDMxLCAweDMyLCAweDMwLCAw
eDMyLCAweDQ4LCAweDUwLCAweDQxLCAweDQxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDI0
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDY2LCAweDMwLCAweDM0LCAweDM5LCAweDM5LCAw
eDMwLCAweDYyLCAweDM4LCAweDJkLCAweDYyLCAweDMwLCAweDM0LCAweDMxLCAweDJkLCAweDM0
LCAweDY1LCAweDM5LCAweDYxLCAweDJkLCAweDYxLCAweDM0LCAweDM4LCAweDM2LCAweDJkLCAw
eDYzLCAweDMyLCAweDMyLCAweDMzLCAweDYxLCAweDM4LCAweDY1LCAweDM1LCAweDY0LCAweDM5
LCAweDMwLCAweDM5LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAw
eDczLCAweDc0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw
eDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAw
eDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAweDA0LCAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDA0LCAweDAwLCAweDAwLCAweDAwfTsKKyAgICBOU0RhdGEgKnN0b3JlZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6JmJ5dGVzIGxlbmd0aDoxNDBdOworCisgICAgYXV0byB3ZWJWaWV3UmVz
dG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
IGJvb2wgZmluaXNoZWQgPSBOTzsKKworICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBw
SGlnaGxpZ2h0czpAWyBzdG9yZWREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAg
IHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
dGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwg
MiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKKyAgICAKKyAgICBm
aW5pc2hlZCA9IFlFUzsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQp
OworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogVEVTVChBcHBIaWdobGlnaHRzLCBB
dm9pZEZvcmNpbmdDYWxsb3V0QmFySW5pdGlhbGl6YXRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432429</attachid>
            <date>2021-06-28 15:16:16 -0700</date>
            <delta_ts>2021-06-29 14:40:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210628151615.patch</filename>
            <type>text/plain</type>
            <size>25734</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhODM2MTBkNWUyMjk0
MjllMDU4M2YyNWNhMGNjODhkM2MxMjkzNy4uNDEzMjNmZDY0ZmM0NWExMzhmNjBiYjEyNzZmMDlj
MzAyYjk3ZDkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA2LTI4ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFu
ZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0
UmVzdG9yZUZyb21TdG9yYWdlCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3Jl
YXRlQW5kUmVzdG9yZUFuZERyb3BCeXRlcworICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVXaXRoTGF0ZXJWZXJzaW9uCisgICAgICAgIEFwcEhpZ2hsaWdo
dHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVzCisKKyAgICAgICAg
UmVmb3JtYXQgdGhlIHN0b3JhZ2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3Vy
YXRlIGRlbGV0aW9uIG9mIGFjdGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1h
a2luZyB0aGVtIG1vcmUgcm9idXN0IGFuZCBmdXR1cmUtcHJvb2YuCisKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6Ok5vZGVQYXRo
Q29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRS
YW5nZURhdGE6OnN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6ZW5kT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFw
cEhpZ2hsaWdodFJhbmdlRGF0YSk6CisKIDIwMjEtMDYtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDE0KTogU3Vi
bWVudXMgb24gaHR0cHM6Ly9jb2RlbGVhcm4uY2F0IGRvbid0IHNob3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGRl
OTcwMjZhNmYwYjU1OTcwMTdlYTFiZTA2ODY4ZTMzY2JiNWIwYi4uNDRiOGQ4ZDY3ZWU3NGJiYTg0
MmUyYzZkMjIwYjIyYzQ5YmFhOGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0w
Ni0yOCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZvcm1hdCB0aGUgc3Rv
cmFnZSBvZiBIaWdobGlnaHQgRGF0YSB0byBhbGxvdyBmb3IgYWNjdXJhdGUgZGVsZXRpb24gb2Yg
YWN0aXZlCisgICAgICAgIGhpZ2hsaWdodHMsIGFzIHdlbGwgYXMgbWFraW5nIHRoZW0gbW9yZSBy
b2J1c3QgYW5kIGZ1dHVyZS1wcm9vZi4KKworICAgICAgICBBbHNvIGZvdW5kIGFuIGlzc3VlIHdp
dGggY3JlYXRpbmcgU2hhcmVkQnVmZmVycyBmcm9tIHRoZSBtZW1vcnkgbWFwLCBpbiB0aGF0IHRo
ZSBpcGNIYW5kbGUgc2l6ZQorICAgICAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBz
aGFyZWRNZW1vcnktPnNpemUoKS4gCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleCk6CisKIDIwMjEtMDYtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBHcm91cEFjdGl2aXRpZXNDb29y
ZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggNGY0Yzg2YTU3MWU2MTliYmY4NTgwODk1
M2I1ZWJjNWI5ZjkxNDU1Mi4uNDJmZmVmYTg2YmY2OTAzMTI0ZDNkNDdkNmUzYTE4ODA3N2RlZmNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlv
bihIKWlnaGxpZ2h0cygyMDIxKQorCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKQEAgLTgxLDcgKzgz
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PgogICAgIGlmICghdGV4dERhdGEpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXRo
SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGF0aEluZGV4OwogICAgIGRlY29k
ZXIgPj4gcGF0aEluZGV4OwogICAgIGlmICghcGF0aEluZGV4KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtOTEsNiArOTMsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PgogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CisgICAgc3RhdGljX2Fzc2VydCghRW5jb2Rlcjo6
aXNJUENFbmNvZGVyLCAiQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHNob3VsZCBub3QgYmUgdXNlZCBi
eSBXVEY6OklQQzo6RW5jb2RlciIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBjdXJyZW50QXBw
SGlnaGxpZ2h0VmVyc2lvbiA9IDE7CisgICAgCisgICAgZW5jb2RlciA8PCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlOworICAgIGVuY29kZXIgPDwgY3VycmVudEFwcEhpZ2hsaWdodFZlcnNpb247Cisg
ICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBtX3RleHQ7CiAgICAg
ZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOwogICAgIGVuY29kZXIgPDwgbV9zdGFydE9mZnNl
dDsKQEAgLTEwMCw2ICsxMDgsMjMgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBI
aWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CisgICAgc3Rh
dGljX2Fzc2VydCghRGVjb2Rlcjo6aXNJUENEZWNvZGVyLCAiQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
IHNob3VsZCBub3QgYmUgdXNlZCBieSBXVEY6OklQQzo6RGVjb2RlciIpOworICAgIAorICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAg
IGRlY29kZXIgPj4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNv
ZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSB8fCBkZWNvZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZSAhPSBoaWdobGlnaHRGaWxlU2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgZGVjb2Rl
ciA+PiB2ZXJzaW9uOworICAgIGlmICghdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAg
ZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKQEAgLTExMCw3ICsxMzUsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
QXBwSGlnaGxpZ2h0UmFuZ2VEYQogICAgIGlmICghc3RhcnRDb250YWluZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9m
ZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydE9mZnNldDsKICAgICBkZWNv
ZGVyID4+IHN0YXJ0T2Zmc2V0OwogICAgIGlmICghc3RhcnRPZmZzZXQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xMjAsMTMgKzE0NSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYQogICAgIGlmICghZW5kQ29udGFpbmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAg
ICBpZiAoIWVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksICpzdGFy
dE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9mZnNldCB9fTsKKyAgICByZXR1
cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFy
dENvbnRhaW5lciksICpzdGFydE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9m
ZnNldCB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAppbmRl
eCAxODM0MDM3NjYzYTc0NWM1MWUxYTkwNzViNDVjODE0ZGZhMzM0MmQwLi5mYzM4YzkzYWY5ZTM1
ZDE2M2IzMDdmZGRiOTU0Y2NjYWFmYTRiYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAtNDMsOSAr
NDMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJp
bmcgbm9kZU5hbWU7CiAgICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQg
cGF0aEluZGV4IHsgMCB9OworICAgICAgICB1aW50NjRfdCBwYXRoSW5kZXggeyAwIH07CiAKLSAg
ICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0
aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgZGF0YSwgdWludDY0X3QgaW5kZXgpCiAgICAgICAgICAgICA6IGlkZW50aWZpZXIoV1RG
TW92ZShlbGVtZW50SWRlbnRpZmllcikpCiAgICAgICAgICAgICAsIG5vZGVOYW1lKFdURk1vdmUo
bmFtZSkpCiAgICAgICAgICAgICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm9kZVBhdGhD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0
aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdWludDY0X3QgaW5kZXgpCiAgICAgICAgICAgICA6
IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICAsIG5vZGVOYW1lKG5h
bWUpCiAgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCkBAIC03OSw4ICs3OSw5IEBAIHB1Ymxp
YzoKIAogICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURh
dGEmKSA9IGRlZmF1bHQ7CiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0Owot
ICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0
Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAg
ICBBcHBIaWdobGlnaHRSYW5nZURhdGEoU3RyaW5nJiYgaWRlbnRpZmllciwgU3RyaW5nJiYgdGV4
dCwgTm9kZVBhdGgmJiBzdGFydENvbnRhaW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIE5vZGVQ
YXRoJiYgZW5kQ29udGFpbmVyLCB1aW50NjRfdCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikpCisgICAgICAgICwgbV90ZXh0KFdURk1vdmUodGV4
dCkpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkK
ICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29u
dGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVyKSkKQEAgLTg4LDggKzg5LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAg
ICAgIDogbV90ZXh0KHRleHQpCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRD
b250YWluZXIsIHVpbnQ2NF90IHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFp
bmVyLCB1aW50NjRfdCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgICAgICwgbV90ZXh0KHRleHQpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihz
dGFydENvbnRhaW5lcikKICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAg
ICAgICAsIG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5lcikKQEAgLTk3LDExICs5OSwxMiBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KKyAgICB1aW50NjRfdCBz
dGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KICAgICBjb25zdCBO
b2RlUGF0aCYgZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0K
LSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQor
ICAgIHVpbnQ2NF90IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMTA5LDExICsxMTIsMTIgQEAg
cHVibGljOgogICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAK
IHByaXZhdGU6CisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNl
dCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGVQYXRo
IG1fZW5kQ29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fZW5kT2Zmc2V0IHsgMCB9OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmlu
ZGV4IDZmYmUwYjE1Yjg5OGQ2MTgyNGUxZTcyYzU0NjJmNDNlZDAzNTcyYTcuLjc4MGZjNTE2ZGZl
NTY5MDUwNjA2NmQyYWE5MmYzZDgzZTA1NWFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDMsNyArMjA0LDEwIEBAIHN0YXRpYyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRp
Y1JhbmdlJiByYW5nCiB7CiAgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKICAgICB0
ZXh0LnRydW5jYXRlKHRleHRQcmV2aWV3TGVuZ3RoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKICAgICByZXR1cm4geworICAgICAgICBpZGVu
dGlmaWVyLAogICAgICAgICB0ZXh0LAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdlLnN0YXJ0
Q29udGFpbmVyKCkpLAogICAgICAgICByYW5nZS5zdGFydE9mZnNldCgpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzN2I0M2U5YzdjNWYyZDdj
MDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4Li4zNDQ5NDAyZWNjM2IyZGIwODk5NjhjMjk4YjQ1MzAz
YzQ3N2U4ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNzYxMyw3ICs3NjEzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBk
b2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hs
aWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hh
cmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBT
Y3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAg
ZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdo
bGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNo
YXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNj
cm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBp
Kys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDg1NmQxYWRjNjc2MmFiODRlODA3NzY2ZTM4N2VlOGM0MDNmNjEzNGEuLjgzMDRl
MGIyYmU0NmJmYjg5OTgwODExNzJhZGI2OWMzZjQ3ODQ4MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0y
OCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAyMS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0
dXJuIHRydWUgd2hlbiB3ZSBmYWlsIHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggY2Zl
NzlkMmZlNzVhZjVjNzhhOTViZjk5OTMxMmQ5MzdjYTIzZDQxMi4uMzY0NzJkNmRkZDdhOTQyNGJh
Y2I1YTZlNmI3YjkzNzE2Y2Q1YTY3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KQEAgLTU2LDkxICs1Niwx
ODUgQEAgQGVuZAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1QoQXBwSGlnaGxp
Z2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKK1JldGFpblB0cjxfV0tBcHBIaWdo
bGlnaHQ+IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKE5TU3RyaW5nICpIVE1MU3RyaW5nLCBO
U1N0cmluZyAqamF2YVNjcmlwdCwgTlNTdHJpbmcgKmhpZ2hsaWdodFRleHQpCiB7CiAgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwogICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOwotICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlld0NyZWF0ZSBf
c2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3Q3Jl
YXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKLSAgICBbd2ViVmlld0Ny
ZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J1NlbGVjdEFsbCcpIl07Ci0gICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87CisgICAgW3dl
YlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmddOworICAg
IFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6amF2YVNjcmlwdF07
CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLQXBwSGlnaGxpZ2h0PiByZXN1bHRIaWdobGlnaHQ7
CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBbZGVsZWdhdGUgc2V0U3RvcmVB
cHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBI
aWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJlcXVlc3RPcmlnaW5h
dGVkSW5BcHApIHsKICAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmlldywgd2ViVmlld0Ny
ZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQpOwotICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIGhpZ2hsaWdodFRleHQpOwogICAgICAgICBFWFBF
Q1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7Ci0gICAgICAgIAotICAgICAgICBbd2Vi
Vmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwotICAgICAg
ICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIGhpZ2hsaWdodC5oaWdo
bGlnaHQgXV07Ci0gICAgICAgIAotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9y
Q29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJu
IFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKLSAgICAgICAgfSwgMiwg
QCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAgCi0gICAg
ICAgIGZpbmlzaGVkID0gWUVTOworICAgICAgICByZXN1bHRIaWdobGlnaHQgPSBoaWdobGlnaHQ7
CisgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRB
cHBIaWdobGlnaHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgcmV0dXJuIHJlc3VsdEhp
Z2hsaWdodDsKIH0KIAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRS
ZXN0b3JlQW5kU2Nyb2xsKQorUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld0ZvckFw
cEhpZ2hsaWdodHNXaXRoSFRNTChOU1N0cmluZyAqSFRNTFN0cmluZykKIHsKICAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhpZ2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Ci0gICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CiAgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRB
cHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwcHgn
PjwvZGl2PlRlc3QiXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07Ci0gICAgX19ibG9j
ayBib29sIGZpbmlzaGVkID0gTk87Ci0gICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0
Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpo
aWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwgQk9PTCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSB7
Ci0gICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUuZ2V0KCkp
OwotICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsKLSAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGhpZ2hsaWdodC5oaWdobGlnaHQpOwotICAgICAgICAKLSAgICAgICAgW3dlYlZpZXdSZXN0b3Jl
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9J2hlaWdodDogMTAwMHB4
Jz48L2Rpdj5UZXN0Il07Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFuZFNjcm9s
bFRvQXBwSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHRdOwotICAgICAgICAKLSAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAt
PiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmlu
dFZhbHVlID09IDE7Ci0gICAgICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBw
b3B1bGF0ZWQuIik7Ci0gICAgICAgIEVYUEVDVF9ORSgwLCBbW3dlYlZpZXdSZXN0b3JlIG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNldCJdIGZsb2F0VmFsdWVdKTsKKyAg
ICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmdd
OworICAgIAorICAgIHJldHVybiB3ZWJWaWV3UmVzdG9yZTsKK30KKworVEVTVChBcHBIaWdobGln
aHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlKQoreworICAgIGJvb2wgZmluaXNoZWQg
PSBOTzsKKyAgICAKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhI
VE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0
Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGln
aHRzV2l0aEhUTUwoQCJUZXN0Iik7CisgICAgCisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3Jl
QXBwSGlnaGxpZ2h0czpAW1toaWdobGlnaHQgaGlnaGxpZ2h0XV1dOworICAgIAorICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9v
bCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09
IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsK
ICAgICAgICAgCi0gICAgICAgIGZpbmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3
Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRdOworICAgIGZpbmlzaGVkID0gWUVTOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKK1RFU1QoQXBwSGlnaGxpZ2h0
cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZFNjcm9sbCkKK3sKKyAgICBib29sIGZp
bmlzaGVkID0gTk87CisKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdp
dGhIVE1MKEAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwMHB4Jz48L2Rpdj5UZXN0IiwgQCJkb2N1
bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZp
ZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIjxkaXYg
c3R5bGU9J2hlaWdodDogMTAwMDBweCc+PC9kaXY+VGVzdCIpOworCisgICAgW3dlYlZpZXdSZXN0
b3JlIF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6W2hpZ2hsaWdodCBoaWdobGlnaHRd
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2lu
ZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMo
KSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJl
IHBvcHVsYXRlZC4iKTsKKyAgICBFWFBFQ1RfTkUoMCwgW1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFnZVlPZmZzZXQiXSBmbG9hdFZhbHVlXSk7CisKKyAg
ICBmaW5pc2hlZCA9IFlFUzsKKwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNo
ZWQpOwogfQogCiBURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodFJlc3RvcmVGYWlsdXJl
KQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGlu
ZzpZRVNdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBhdXRvIHdlYlZpZXdSZXN0b3Jl
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dl
YlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAg
ICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07Ci0g
ICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJdOwotICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9
IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJW
aWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGlu
TmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgewotICAgICAgICBFWFBFQ1Rf
RVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKLSAgICAgICAgRVhQRUNU
X05PVF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQu
dGV4dCwgQCJUZXN0Iik7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxp
Z2h0KTsKKyAgICBib29sIGZpbmlzaGVkID0gTk87CisgICAgCisgICAgYXV0byBoaWdobGlnaHQg
PSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21t
YW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBj
cmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiTm90IFRoZSBTYW1lIik7Cisg
ICAgCisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAW1toaWdobGln
aHQgaGlnaGxpZ2h0XV1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JD
b25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiAhW3dl
YlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVt
YmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhp
Z2hsaWdodHMgbm90IHRvIGJlIHBvcHVsYXRlZC4iKTsKICAgICAgICAgCi0gICAgICAgIFt3ZWJW
aWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJOb3QgdGhlIHNhbWUiXTsK
LSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdobGln
aHQuaGlnaGxpZ2h0IF1dOworICAgIGZpbmlzaGVkID0gWUVTOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKKy8vIEVuc3VyZSB0aGF0IGZ1dHVyZSB2ZXJz
aW9ucyBvZiB0aGUgYmxvZyBmb3JtYXQgY2FuIGFkZCBhZGRpdGlvbmFsIGRhdGEgYW5kIHN0aWxs
IGJlIGRlY29kZWQgc3VjY2Vzc2Z1bGx5IGJ5IHZlcnNpb24gb2YgV2ViS2l0IHRoYXQgb25seSBr
bm93IGFib3V0IHRoZSBjdXJyZW50IGZvcm1hdC4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGln
aGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVzKQoreworICAgIGJvb2wgZmluaXNo
ZWQgPSBOTzsKKyAgICAKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdp
dGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJU
ZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdo
bGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAotICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewotICAg
ICAgICAgICAgcmV0dXJuICFbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlOwotICAg
ICAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAg
IE5TTXV0YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRh
dGFXaXRoRGF0YTogW2hpZ2hsaWdodCBoaWdobGlnaHRdIF07CisgICAgW21vZGlmaWVkSGlnaGxp
Z2h0RGF0YSBhcHBlbmREYXRhOltAIlRlc3RWMkRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXV07CisgICAgCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVB
cHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJv
b2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9
PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7
CisgICAgCisgICAgZmluaXNoZWQgPSBZRVM7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmZpbmlzaGVkKTsKK30KKworLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgYmxvY2sgYWdhaW5z
dCBsYXRlciB2ZXJzaW9ucyB3aXRoIGFuIGV4cGxpY2l0ZSB2ZXJzaW9uIGNoZWNrLgorVEVTVChB
cHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlV2l0aExhdGVyVmVyc2lv
bikKK3sKKyAgICBib29sIGZpbmlzaGVkID0gTk87CisgICAgCisgICAgYXV0byBoaWdobGlnaHQg
PSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21t
YW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBj
cmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOwogICAgICAgICAK
LSAgICAgICAgZmluaXNoZWQgPSBZRVM7Ci0gICAgfV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgX2Fk
ZEFwcEhpZ2hsaWdodF07CisgICAgdWludDY0X3QgbWF4dmVyc2lvbiA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKyAgICBOU0RhdGEgKnZlcnNpb25EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiZtYXh2ZXJzaW9uIGxlbmd0aDpzaXplb2YobWF4dmVyc2lvbildOwor
ICAgIE5TTXV0YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRh
IGRhdGFXaXRoRGF0YTpbaGlnaGxpZ2h0IGhpZ2hsaWdodF1dOworCisgICAgW21vZGlmaWVkSGln
aGxpZ2h0RGF0YSByZXBsYWNlQnl0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKHNpemVvZih1aW50NjRf
dCksIHNpemVvZihtYXh2ZXJzaW9uKSkgd2l0aEJ5dGVzOnZlcnNpb25EYXRhXTsKKworICAgIFt3
ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAg
W3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBtb2RpZmllZEhpZ2hsaWdo
dERhdGEgXV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlv
bldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVz
dG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBw
SGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hs
aWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgIAorICAgIGZpbmlzaGVkID0gWUVTOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKKy8vIEVuc3VyZSB0
aGF0IHNob3J0ZXIgZGF0YSBibG9icyB3aWxsIGNvcnJlY3RseSBmYWlsIHRvIGRlY29kZS4KK1RF
U1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZERyb3BCeXRl
cykKK3sKKyAgICBib29sIGZpbmlzaGVkID0gTk87CisgICAgCisgICAgYXV0byBoaWdobGlnaHQg
PSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21t
YW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBj
cmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOworICAgICAgICAK
KyAgICBOU011dGFibGVEYXRhICptb2RpZmllZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhV2l0aEJ5dGVzOltoaWdobGlnaHQgaGlnaGxpZ2h0XS5ieXRlcyBsZW5ndGg6W2hpZ2hs
aWdodCBoaWdobGlnaHRdLmxlbmd0aCAvIDJdOworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jl
c3RvcmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgp
IC0+IGJvb2wgeworICAgICAgICByZXR1cm4gIVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50
VmFsdWU7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIG5vdCB0byBiZSBwb3B1bGF0
ZWQuIik7CisgICAgCisgICAgZmluaXNoZWQgPSBZRVM7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKworLy8gRW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFsIGRh
dGEgZm9ybWF0IHdpbGwgYWx3YXlzIGJlIGFibGUgdG8gYmUgZGVjb2RlZCBpbiB0aGUgZnV0dXJl
LgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRnJvbVN0b3JhZ2UpCit7
CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllF
U107CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBieXRlc1tdID0gezB4MzEsIDB4MzIsIDB4MzAs
IDB4MzIsIDB4NDgsIDB4NTAsIDB4NDEsIDB4NDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjIs
IDB4MzIsIDB4NjYsIDB4NjQsIDB4MzUsIDB4MzQsIDB4NjMsIDB4MzAsIDB4MmQsIDB4MzksIDB4
MzQsIDB4NjIsIDB4MzMsIDB4MmQsIDB4MzQsIDB4MzcsIDB4MzgsIDB4MzQsIDB4MmQsIDB4NjIs
IDB4MzMsIDB4NjQsIDB4NjUsIDB4MmQsIDB4NjEsIDB4MzksIDB4MzQsIDB4MzMsIDB4MzIsIDB4
NjYsIDB4MzQsIDB4MzQsIDB4MzEsIDB4MzUsIDB4MzMsIDB4NjMsIDB4MDQsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDUs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQsIDB4
MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDUsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQsIDB4MDQs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9OworICAgIAorICAgIAorICAgIE5TRGF0YSAq
c3RvcmVkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczomYnl0ZXMgbGVuZ3RoOjE2MF07CisK
KyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYm9vbCBmaW5pc2hlZCA9IE5POworCisgICAgW3dlYlZpZXdS
ZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmll
d1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIHN0b3JlZERhdGEgXV07CisgICAgCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAo
KSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50
VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxh
dGVkLiIpOworICAgIAorICAgIGZpbmlzaGVkID0gWUVTOworCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432438</attachid>
            <date>2021-06-28 16:08:08 -0700</date>
            <delta_ts>2021-06-29 14:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210628160808.patch</filename>
            <type>text/plain</type>
            <size>24885</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhODM2MTBkNWUyMjk0
MjllMDU4M2YyNWNhMGNjODhkM2MxMjkzNy4uNDEzMjNmZDY0ZmM0NWExMzhmNjBiYjEyNzZmMDlj
MzAyYjk3ZDkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA2LTI4ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFu
ZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0
UmVzdG9yZUZyb21TdG9yYWdlCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3Jl
YXRlQW5kUmVzdG9yZUFuZERyb3BCeXRlcworICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVXaXRoTGF0ZXJWZXJzaW9uCisgICAgICAgIEFwcEhpZ2hsaWdo
dHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVzCisKKyAgICAgICAg
UmVmb3JtYXQgdGhlIHN0b3JhZ2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3Vy
YXRlIGRlbGV0aW9uIG9mIGFjdGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1h
a2luZyB0aGVtIG1vcmUgcm9idXN0IGFuZCBmdXR1cmUtcHJvb2YuCisKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6Ok5vZGVQYXRo
Q29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRS
YW5nZURhdGE6OnN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6ZW5kT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFw
cEhpZ2hsaWdodFJhbmdlRGF0YSk6CisKIDIwMjEtMDYtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDE0KTogU3Vi
bWVudXMgb24gaHR0cHM6Ly9jb2RlbGVhcm4uY2F0IGRvbid0IHNob3cKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGRl
OTcwMjZhNmYwYjU1OTcwMTdlYTFiZTA2ODY4ZTMzY2JiNWIwYi4uNDRiOGQ4ZDY3ZWU3NGJiYTg0
MmUyYzZkMjIwYjIyYzQ5YmFhOGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0w
Ni0yOCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZvcm1hdCB0aGUgc3Rv
cmFnZSBvZiBIaWdobGlnaHQgRGF0YSB0byBhbGxvdyBmb3IgYWNjdXJhdGUgZGVsZXRpb24gb2Yg
YWN0aXZlCisgICAgICAgIGhpZ2hsaWdodHMsIGFzIHdlbGwgYXMgbWFraW5nIHRoZW0gbW9yZSBy
b2J1c3QgYW5kIGZ1dHVyZS1wcm9vZi4KKworICAgICAgICBBbHNvIGZvdW5kIGFuIGlzc3VlIHdp
dGggY3JlYXRpbmcgU2hhcmVkQnVmZmVycyBmcm9tIHRoZSBtZW1vcnkgbWFwLCBpbiB0aGF0IHRo
ZSBpcGNIYW5kbGUgc2l6ZQorICAgICAgICBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBz
aGFyZWRNZW1vcnktPnNpemUoKS4gCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleCk6CisKIDIwMjEtMDYtMDcgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVcHN0cmVhbSBHcm91cEFjdGl2aXRpZXNDb29y
ZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggNGY0Yzg2YTU3MWU2MTliYmY4NTgwODk1
M2I1ZWJjNWI5ZjkxNDU1Mi4uNDJmZmVmYTg2YmY2OTAzMTI0ZDNkNDdkNmUzYTE4ODA3N2RlZmNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlv
bihIKWlnaGxpZ2h0cygyMDIxKQorCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKQEAgLTgxLDcgKzgz
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PgogICAgIGlmICghdGV4dERhdGEpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXRo
SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGF0aEluZGV4OwogICAgIGRlY29k
ZXIgPj4gcGF0aEluZGV4OwogICAgIGlmICghcGF0aEluZGV4KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtOTEsNiArOTMsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PgogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CisgICAgc3RhdGljX2Fzc2VydCghRW5jb2Rlcjo6
aXNJUENFbmNvZGVyLCAiQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHNob3VsZCBub3QgYmUgdXNlZCBi
eSBXVEY6OklQQzo6RW5jb2RlciIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBjdXJyZW50QXBw
SGlnaGxpZ2h0VmVyc2lvbiA9IDE7CisgICAgCisgICAgZW5jb2RlciA8PCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlOworICAgIGVuY29kZXIgPDwgY3VycmVudEFwcEhpZ2hsaWdodFZlcnNpb247Cisg
ICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBtX3RleHQ7CiAgICAg
ZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOwogICAgIGVuY29kZXIgPDwgbV9zdGFydE9mZnNl
dDsKQEAgLTEwMCw2ICsxMDgsMjMgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBI
aWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CisgICAgc3Rh
dGljX2Fzc2VydCghRGVjb2Rlcjo6aXNJUENEZWNvZGVyLCAiQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
IHNob3VsZCBub3QgYmUgdXNlZCBieSBXVEY6OklQQzo6RGVjb2RlciIpOworICAgIAorICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAg
IGRlY29kZXIgPj4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNv
ZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSB8fCBkZWNvZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZSAhPSBoaWdobGlnaHRGaWxlU2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb247CisgICAgZGVjb2Rl
ciA+PiB2ZXJzaW9uOworICAgIGlmICghdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAg
ZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKQEAgLTExMCw3ICsxMzUsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
QXBwSGlnaGxpZ2h0UmFuZ2VEYQogICAgIGlmICghc3RhcnRDb250YWluZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9m
ZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydE9mZnNldDsKICAgICBkZWNv
ZGVyID4+IHN0YXJ0T2Zmc2V0OwogICAgIGlmICghc3RhcnRPZmZzZXQpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC0xMjAsMTMgKzE0NSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYQogICAgIGlmICghZW5kQ29udGFpbmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAg
ICBpZiAoIWVuZE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksICpzdGFy
dE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9mZnNldCB9fTsKKyAgICByZXR1
cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFy
dENvbnRhaW5lciksICpzdGFydE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9m
ZnNldCB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAppbmRl
eCAxODM0MDM3NjYzYTc0NWM1MWUxYTkwNzViNDVjODE0ZGZhMzM0MmQwLi5mYzM4YzkzYWY5ZTM1
ZDE2M2IzMDdmZGRiOTU0Y2NjYWFmYTRiYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAtNDMsOSAr
NDMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJp
bmcgbm9kZU5hbWU7CiAgICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQg
cGF0aEluZGV4IHsgMCB9OworICAgICAgICB1aW50NjRfdCBwYXRoSW5kZXggeyAwIH07CiAKLSAg
ICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0
aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgZGF0YSwgdWludDY0X3QgaW5kZXgpCiAgICAgICAgICAgICA6IGlkZW50aWZpZXIoV1RG
TW92ZShlbGVtZW50SWRlbnRpZmllcikpCiAgICAgICAgICAgICAsIG5vZGVOYW1lKFdURk1vdmUo
bmFtZSkpCiAgICAgICAgICAgICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTm9kZVBhdGhD
b21wb25lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0
aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdWludDY0X3QgaW5kZXgpCiAgICAgICAgICAgICA6
IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICAsIG5vZGVOYW1lKG5h
bWUpCiAgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCkBAIC03OSw4ICs3OSw5IEBAIHB1Ymxp
YzoKIAogICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURh
dGEmKSA9IGRlZmF1bHQ7CiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0Owot
ICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0
Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAg
ICBBcHBIaWdobGlnaHRSYW5nZURhdGEoU3RyaW5nJiYgaWRlbnRpZmllciwgU3RyaW5nJiYgdGV4
dCwgTm9kZVBhdGgmJiBzdGFydENvbnRhaW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIE5vZGVQ
YXRoJiYgZW5kQ29udGFpbmVyLCB1aW50NjRfdCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikpCisgICAgICAgICwgbV90ZXh0KFdURk1vdmUodGV4
dCkpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkK
ICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29u
dGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVyKSkKQEAgLTg4LDggKzg5LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAg
ICAgIDogbV90ZXh0KHRleHQpCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRD
b250YWluZXIsIHVpbnQ2NF90IHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFp
bmVyLCB1aW50NjRfdCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgICAgICwgbV90ZXh0KHRleHQpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihz
dGFydENvbnRhaW5lcikKICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAg
ICAgICAsIG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5lcikKQEAgLTk3LDExICs5OSwxMiBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KKyAgICB1aW50NjRfdCBz
dGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KICAgICBjb25zdCBO
b2RlUGF0aCYgZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0K
LSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQor
ICAgIHVpbnQ2NF90IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMTA5LDExICsxMTIsMTIgQEAg
cHVibGljOgogICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAK
IHByaXZhdGU6CisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNl
dCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGVQYXRo
IG1fZW5kQ29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fZW5kT2Zmc2V0IHsgMCB9OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmlu
ZGV4IDZmYmUwYjE1Yjg5OGQ2MTgyNGUxZTcyYzU0NjJmNDNlZDAzNTcyYTcuLjc4MGZjNTE2ZGZl
NTY5MDUwNjA2NmQyYWE5MmYzZDgzZTA1NWFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDMsNyArMjA0LDEwIEBAIHN0YXRpYyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRp
Y1JhbmdlJiByYW5nCiB7CiAgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKICAgICB0
ZXh0LnRydW5jYXRlKHRleHRQcmV2aWV3TGVuZ3RoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKICAgICByZXR1cm4geworICAgICAgICBpZGVu
dGlmaWVyLAogICAgICAgICB0ZXh0LAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdlLnN0YXJ0
Q29udGFpbmVyKCkpLAogICAgICAgICByYW5nZS5zdGFydE9mZnNldCgpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzN2I0M2U5YzdjNWYyZDdj
MDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4Li4zNDQ5NDAyZWNjM2IyZGIwODk5NjhjMjk4YjQ1MzAz
YzQ3N2U4ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNzYxMyw3ICs3NjEzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBk
b2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hs
aWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hh
cmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBT
Y3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAg
ZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdo
bGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNo
YXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNj
cm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBp
Kys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDg1NmQxYWRjNjc2MmFiODRlODA3NzY2ZTM4N2VlOGM0MDNmNjEzNGEuLjgzMDRl
MGIyYmU0NmJmYjg5OTgwODExNzJhZGI2OWMzZjQ3ODQ4MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0y
OCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAyMS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0
dXJuIHRydWUgd2hlbiB3ZSBmYWlsIHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggY2Zl
NzlkMmZlNzVhZjVjNzhhOTViZjk5OTMxMmQ5MzdjYTIzZDQxMi4uNThiZTI2NTA4MmEyNDFlZTgz
M2NhZTNlYWNiNGM1OGFhZjc2NzcyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KQEAgLTU2LDkyICs1Niwx
NDQgQEAgQGVuZAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1QoQXBwSGlnaGxp
Z2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKK1JldGFpblB0cjxfV0tBcHBIaWdo
bGlnaHQ+IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKE5TU3RyaW5nICpIVE1MU3RyaW5nLCBO
U1N0cmluZyAqamF2YVNjcmlwdCwgTlNTdHJpbmcgKmhpZ2hsaWdodFRleHQpCiB7CiAgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwogICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOwotICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlld0NyZWF0ZSBf
c2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3Q3Jl
YXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKLSAgICBbd2ViVmlld0Ny
ZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J1NlbGVjdEFsbCcpIl07Ci0gICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87CisgICAgW3dl
YlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmddOworICAg
IFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6amF2YVNjcmlwdF07
CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLQXBwSGlnaGxpZ2h0PiByZXN1bHRIaWdobGlnaHQ7
CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBbZGVsZWdhdGUgc2V0U3RvcmVB
cHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBI
aWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJlcXVlc3RPcmlnaW5h
dGVkSW5BcHApIHsKICAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmlldywgd2ViVmlld0Ny
ZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQpOwotICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIGhpZ2hsaWdodFRleHQpOwogICAgICAgICBFWFBF
Q1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7Ci0gICAgICAgIAotICAgICAgICBbd2Vi
Vmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwotICAgICAg
ICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIGhpZ2hsaWdodC5oaWdo
bGlnaHQgXV07Ci0gICAgICAgIAotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9y
Q29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJu
IFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKLSAgICAgICAgfSwgMiwg
QCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAgCi0gICAg
ICAgIGZpbmlzaGVkID0gWUVTOworICAgICAgICByZXN1bHRIaWdobGlnaHQgPSBoaWdobGlnaHQ7
CisgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRB
cHBIaWdobGlnaHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgcmV0dXJuIHJlc3VsdEhp
Z2hsaWdodDsKIH0KIAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRS
ZXN0b3JlQW5kU2Nyb2xsKQorUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld0ZvckFw
cEhpZ2hsaWdodHNXaXRoSFRNTChOU1N0cmluZyAqSFRNTFN0cmluZykKIHsKICAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhpZ2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Ci0gICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CiAgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRB
cHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwcHgn
PjwvZGl2PlRlc3QiXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07Ci0gICAgX19ibG9j
ayBib29sIGZpbmlzaGVkID0gTk87Ci0gICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0
Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpo
aWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwgQk9PTCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSB7
Ci0gICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUuZ2V0KCkp
OwotICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsKLSAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGhpZ2hsaWdodC5oaWdobGlnaHQpOworICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6SFRNTFN0cmluZ107CisgICAgCisgICAgcmV0dXJuIHdlYlZpZXdSZXN0
b3JlOworfQorCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3Rv
cmUpCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChA
IlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOwor
ICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dp
dGhIVE1MKEAiVGVzdCIpOworICAgIAorICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFtbaGlnaGxpZ2h0IGhpZ2hsaWdodF1dXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewor
ICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOwor
ICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Cit9CisK
K1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZFNjcm9s
bCkKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAi
PGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwMHB4Jz48L2Rpdj5UZXN0IiwgQCJkb2N1bWVudC5leGVj
Q29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3Jl
ID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIjxkaXYgc3R5bGU9J2hl
aWdodDogMTAwMDBweCc+PC9kaXY+VGVzdCIpOworCisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0
b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6W2hpZ2hsaWdodCBoaWdobGlnaHRdXTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkg
LT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZh
bHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRl
ZC4iKTsKKyAgICBFWFBFQ1RfTkUoMCwgW1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAicGFnZVlPZmZzZXQiXSBmbG9hdFZhbHVlXSk7Cit9CisKK1RFU1QoQXBw
SGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCit7CisgICAgYXV0byBoaWdo
bGlnaHQgPSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4
ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3Rv
cmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiTm90IFRoZSBTYW1l
Iik7CisgICAgCisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAW1to
aWdobGlnaHQgaGlnaGxpZ2h0XV1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6Ondh
aXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVy
biAhW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5h
bHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKKyAgICB9LCAyLCBAIkV4cGVj
dGVkIEhpZ2hsaWdodHMgbm90IHRvIGJlIHBvcHVsYXRlZC4iKTsKK30KKworLy8gRW5zdXJlIHRo
YXQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBibG9nIGZvcm1hdCBjYW4gYWRkIGFkZGl0aW9uYWwg
ZGF0YSBhbmQgc3RpbGwgYmUgZGVjb2RlZCBzdWNjZXNzZnVsbHkgYnkgdmVyc2lvbiBvZiBXZWJL
aXQgdGhhdCBvbmx5IGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgZm9ybWF0LgorVEVTVChBcHBIaWdo
bGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlV2l0aEV4dHJhQnl0ZXMpCit7Cisg
ICAgYXV0byBoaWdobGlnaHQgPSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBA
ImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8g
d2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAi
VGVzdCIpOwogICAgICAgICAKLSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9J2hlaWdodDogMTAwMHB4Jz48L2Rpdj5UZXN0Il07
Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
OmhpZ2hsaWdodC5oaWdobGlnaHRdOworICAgIE5TTXV0YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxp
Z2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRoRGF0YTogW2hpZ2hsaWdodCBoaWdobGln
aHRdIF07CisgICAgW21vZGlmaWVkSGlnaGxpZ2h0RGF0YSBhcHBlbmREYXRhOltAIlRlc3RWMkRh
dGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgCisgICAg
W3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAg
ICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxp
Z2h0RGF0YSBdXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0
aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdS
ZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZB
cHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGln
aGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Cit9CisKKy8vIEVuc3VyZSB0aGF0IHdlIGRvbid0
IGJsb2NrIGFnYWluc3QgbGF0ZXIgdmVyc2lvbnMgd2l0aCBhbiBleHBsaWNpdGUgdmVyc2lvbiBj
aGVjay4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdp
dGhMYXRlclZlcnNpb24pCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBjcmVhdGVBcHBIaWdobGln
aHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIs
IEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBw
SGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOwogICAgICAgICAKLSAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsK
LSAgICAgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09
IDE7Ci0gICAgICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQu
Iik7Ci0gICAgICAgIEVYUEVDVF9ORSgwLCBbW3dlYlZpZXdSZXN0b3JlIG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNldCJdIGZsb2F0VmFsdWVdKTsKKyAgICB1aW50NjRf
dCBtYXh2ZXJzaW9uID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworICAg
IE5TRGF0YSAqdmVyc2lvbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Jm1heHZlcnNpb24g
bGVuZ3RoOnNpemVvZihtYXh2ZXJzaW9uKV07CisgICAgTlNNdXRhYmxlRGF0YSAqbW9kaWZpZWRI
aWdobGlnaHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YVdpdGhEYXRhOltoaWdobGlnaHQgaGln
aGxpZ2h0XV07CisKKyAgICBbbW9kaWZpZWRIaWdobGlnaHREYXRhIHJlcGxhY2VCeXRlc0luUmFu
Z2U6TlNNYWtlUmFuZ2Uoc2l6ZW9mKHVpbnQ2NF90KSwgc2l6ZW9mKG1heHZlcnNpb24pKSB3aXRo
Qnl0ZXM6dmVyc2lvbkRhdGFdOworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBI
aWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wg
eworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAx
OworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Cit9
CisKKy8vIEVuc3VyZSB0aGF0IHNob3J0ZXIgZGF0YSBibG9icyB3aWxsIGNvcnJlY3RseSBmYWls
IHRvIGRlY29kZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVz
dG9yZUFuZERyb3BCeXRlcykKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hs
aWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcp
IiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JB
cHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAotICAgICAgICBmaW5pc2hl
ZCA9IFlFUzsKLSAgICB9XTsKLSAgICBbd2ViVmlld0NyZWF0ZSBfYWRkQXBwSGlnaGxpZ2h0XTsK
LSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBOU011dGFibGVE
YXRhICptb2RpZmllZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhV2l0aEJ5dGVz
OltoaWdobGlnaHQgaGlnaGxpZ2h0XS5ieXRlcyBsZW5ndGg6W2hpZ2hsaWdodCBoaWdobGlnaHRd
Lmxlbmd0aCAvIDJdOworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGln
aHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgeworICAg
ICAgICByZXR1cm4gIVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWU7CisgICAgfSwg
MiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIG5vdCB0byBiZSBwb3B1bGF0ZWQuIik7CiB9CiAKLVRF
U1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCisvLyBFbnN1cmUg
dGhhdCB0aGUgb3JpZ2luYWwgZGF0YSBmb3JtYXQgd2lsbCBhbHdheXMgYmUgYWJsZSB0byBiZSBk
ZWNvZGVkIGluIHRoZSBmdXR1cmUuCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodFJl
c3RvcmVGcm9tU3RvcmFnZSkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0Fw
cEhpZ2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byB3ZWJWaWV3Q3JlYXRl
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgY29u
c3QgdW5zaWduZWQgY2hhciBieXRlc1tdID0gezB4MzEsIDB4MzIsIDB4MzAsIDB4MzIsIDB4NDgs
IDB4NTAsIDB4NDEsIDB4NDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjIsIDB4MzIsIDB4NjYs
IDB4NjQsIDB4MzUsIDB4MzQsIDB4NjMsIDB4MzAsIDB4MmQsIDB4MzksIDB4MzQsIDB4NjIsIDB4
MzMsIDB4MmQsIDB4MzQsIDB4MzcsIDB4MzgsIDB4MzQsIDB4MmQsIDB4NjIsIDB4MzMsIDB4NjQs
IDB4NjUsIDB4MmQsIDB4NjEsIDB4MzksIDB4MzQsIDB4MzMsIDB4MzIsIDB4NjYsIDB4MzQsIDB4
MzQsIDB4MzEsIDB4MzUsIDB4MzMsIDB4NjMsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDUsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQsIDB4MDQsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4MDUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQsIDB4MDQsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDB9OworICAgIAorICAgIE5TRGF0YSAqc3RvcmVkRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczomYnl0ZXMgbGVuZ3RoOjE2MF07CisKICAgICBhdXRvIHdlYlZpZXdS
ZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0g
ICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0
Il07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJdOwotICAgIF9fYmxvY2sgYm9vbCBmaW5p
c2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4o
V0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBC
T09MIGluTmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgewotICAgICAgICBF
WFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKLSAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdo
bGlnaHQudGV4dCwgQCJUZXN0Iik7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQu
aGlnaGxpZ2h0KTsKLSAgICAgICAgCi0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJOb3QgdGhlIHNhbWUiXTsKLSAgICAgICAgW3dlYlZpZXdSZXN0
b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdobGlnaHQuaGlnaGxpZ2h0IF1dOwotICAg
ICAgICAKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhM
b2dnaW5nKFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhW3dlYlZpZXdSZXN0
b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBI
aWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKLSAgICAgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGln
aHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAgCi0gICAgICAgIGZpbmlzaGVkID0gWUVT
OwotICAgIH1dOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRdOwotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworCisgICAgW3dlYlZpZXdSZXN0b3Jl
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3Rv
cmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIHN0b3JlZERhdGEgXV07CisgICAgCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBi
b29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUg
PT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIp
OwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432534</attachid>
            <date>2021-06-29 14:40:13 -0700</date>
            <delta_ts>2021-06-29 16:00:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210629144012.patch</filename>
            <type>text/plain</type>
            <size>29427</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiYWZlNWRiNTdkMDAyMzMwODI3M2Ex
OGI4NTVlYWYzNGYwZTk2MGQuLjA2M2M1ZjY2YjRlMjMzODNhMjExYzU1ZjlkYTU3MDhlNTM3ZTA3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsb3cgUGVyc2lzdGVudERlY29kZXJzIHRvIHJld2luZCwgdG8gaGVs
cCBzdXBwb3J0IHYwIGhpZ2hsaWdodCBkYXRhLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXI6OkRlY29kZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6cmV3aW5k
KToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKwogMjAy
MS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRydWUgd2hlbiB3ZSBmYWls
IHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZWE4MzYxMGQ1ZTIyOTQyOWUwNTgzZjI1Y2EwY2M4
OGQzYzEyOTM3Li45NTFhN2YyZDhmY2JjNDkzMjdkOWUwODMwMjg1NTQ3ZDhmNzU5ZjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRSZXN0b3JlRnJvbVN0b3Jh
Z2UKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5k
RHJvcEJ5dGVzCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVz
dG9yZVdpdGhMYXRlclZlcnNpb24KKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlV2l0aEV4dHJhQnl0ZXMKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBI
aWdobGlnaHRSZXN0b3JlRnJvbVN0b3JhZ2VWMAorICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhp
Z2hsaWdodFJlc3RvcmVGcm9tU3RvcmFnZVYxCisKKyAgICAgICAgUmVmb3JtYXQgdGhlIHN0b3Jh
Z2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3VyYXRlIGRlbGV0aW9uIG9mIGFj
dGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGVtIG1vcmUgcm9i
dXN0IGFuZCBmdXR1cmUtcHJvb2YuIFN1cHBvcnQgZGVjb2RpbmcgdjAgCisgICAgICAgIGhpZ2hs
aWdodHMgYXMgd2VsbC4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6
Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhOjpOb2RlUGF0aENvbXBvbmVudDo6Tm9kZVBhdGhDb21wb25lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpBcHBIaWdobGlnaHRSYW5nZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6c3RhcnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmRPZmZzZXQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKToKKwog
MjAyMS0wNi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTQpOiBTdWJtZW51cyBvbiBodHRwczovL2NvZGVsZWFy
bi5jYXQgZG9uJ3Qgc2hvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGU5NzAyNmE2ZjBiNTU5NzAxN2VhMWJlMDY4
NjhlMzNjYmI1YjBiLi4yOTBjNWVkOTYxMGI3NmJmZDE5ZWRmMTViMjVkY2UyYmUwMzVlMzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1
cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhpZ2hsaWdodCBEYXRhIHRv
IGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAgICAgICAgaGlnaGxpZ2h0
cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQgZnV0dXJlLXByb29mLgor
CisgICAgICAgIEFsc28gZm91bmQgYW4gaXNzdWUgd2l0aCBjcmVhdGluZyBTaGFyZWRCdWZmZXJz
IGZyb20gdGhlIG1lbW9yeSBtYXAsIGluIHRoYXQgdGhlIGlwY0hhbmRsZSBzaXplCisgICAgICAg
IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNoYXJlZE1lbW9yeS0+c2l6ZSgpLiAKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAy
MS0wNi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIFVwc3RyZWFtIEdyb3VwQWN0aXZpdGllc0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKaW5kZXggYzA0YmEzZjJhYzFj
YjE2MjI1ZmI4Nzg0Yjk5ZDUwYTc1MjU5MzExNi4uNTI0YWI5Y2M3ZmFiOTA3OWY0Mzk2NmQxYjZl
NzI2ZTRlMDIyY2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCiAgICAgLCBtX2J1ZmZlclBvc2l0aW9uKGJ1ZmZlcikKICAgICAsIG1fYnVmZmVyRW5kKGJ1
ZmZlciArIGJ1ZmZlclNpemUpCisgICAgLCBtX2J1ZmZlckJlZ2luKGJ1ZmZlcikKIHsKIH0KIApA
QCAtNjgsNiArNjksMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGVj
b2Rlcjo6cmV3aW5kKHNpemVfdCBzaXplKQoreworICAgIGlmIChtX2J1ZmZlclBvc2l0aW9uIC0g
c2l6ZSA+PSBtX2J1ZmZlckJlZ2luKSB7CisgICAgICAgIG1fYnVmZmVyUG9zaXRpb24gLT0gc2l6
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIERlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihzdGQ6
Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5oCmluZGV4IDg3NjA2MmQzNDAxYjRiZDMyOTc2ZWMxYzExY2Qz
MjliOTFmYjM3Y2YuLmM5OTg1ZmM4NmJiMjQzODk0OGZkMmJlMWIxNWFjODQ4OWYxOWEwN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAt
NDAsNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXJFbmQgLSBtX2J1ZmZlcjsgfQogICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlvbiAtIG1fYnVmZmVyOyB9CisgICAgCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHJld2luZChzaXplX3Qp
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHZlcmlm
eUNoZWNrc3VtKCk7CiAKQEAgLTk1LDYgKzk3LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCB1aW50
OF90KiBtX2J1ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwogICAg
IGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOworICAgIAorICAgIGNvbnN0IHVpbnQ4X3QqIG1f
YnVmZmVyQmVnaW47CiAKICAgICBTSEExIG1fc2hhMTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApp
bmRleCA0ZjRjODZhNTcxZTYxOWJiZjg1ODA4OTUzYjVlYmM1YjlmOTE0NTUyLi5jMmIzNGIwNjdk
YTUzNDQ3ZTRmYzgxZmZiM2U3NmQzNmQxMTI4MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAg
LTQxLDYgKzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdWludDY0
X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBT
aWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCisKIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOwpAQCAtODEsNyArODMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+
CiAgICAgaWYgKCF0ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFw
YXRoSW5kZXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05MSw2ICs5MywxMiBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
KyAgICBzdGF0aWNfYXNzZXJ0KCFFbmNvZGVyOjppc0lQQ0VuY29kZXIsICJBcHBIaWdobGlnaHRS
YW5nZURhdGEgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IFdURjo6SVBDOjpFbmNvZGVyIik7CisgICAg
Y29uc3RleHByIHVpbnQ2NF90IGN1cnJlbnRBcHBIaWdobGlnaHRWZXJzaW9uID0gMTsKKyAgICAK
KyAgICBlbmNvZGVyIDw8IGhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgZW5jb2RlciA8PCBj
dXJyZW50QXBwSGlnaGxpZ2h0VmVyc2lvbjsKKyAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsK
ICAgICBlbmNvZGVyIDw8IG1fdGV4dDsKICAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7
CiAgICAgZW5jb2RlciA8PCBtX3N0YXJ0T2Zmc2V0OwpAQCAtMTAwLDYgKzEwOCwzNiBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlv
bmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKKyAgICBzdGF0aWNfYXNzZXJ0KCFEZWNvZGVyOjppc0lQQ0Rl
Y29kZXIsICJBcHBIaWdobGlnaHRSYW5nZURhdGEgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IFdURjo6
SVBDOjpEZWNvZGVyIik7CisgICAgCisgICAgYm9vbCB2MCA9IGZhbHNlOworICAgIAorICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAg
IGRlY29kZXIgPj4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNv
ZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBpZiAoZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmUgIT0gaGlnaGxpZ2h0RmlsZVNp
Z25hdHVyZSkgeworICAgICAgICBpZiAoIWRlY29kZXIucmV3aW5kKHNpemVvZihoaWdobGlnaHRG
aWxlU2lnbmF0dXJlKSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICB2MCA9IDE7CisgICAgfQorICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNp
b247CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgaWYgKHYwKSB7
CisgICAgICAgIHZlcnNpb24gPSAwOworICAgICAgICBpZGVudGlmaWVyID0gIk5VTEwiOworICAg
IH0KKyAgICBpZiAoIXYwKSB7CisgICAgICAgIGRlY29kZXIgPj4gdmVyc2lvbjsKKyAgICAgICAg
aWYgKCF2ZXJzaW9uKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
CisgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0
KQpAQCAtMTEwLDcgKzE0OCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFz
dGFydENvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFz
dGFydE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMCwxMyArMTU4
LDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBlbmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZW5kT2Zmc2V0OwogICAg
IGRlY29kZXIgPj4gZW5kT2Zmc2V0OwogICAgIGlmICghZW5kT2Zmc2V0KQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1v
dmUoKnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIp
LCAqZW5kT2Zmc2V0IH19OworICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RG
TW92ZSgqdGV4dCksIFdURk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZN
b3ZlKCplbmRDb250YWluZXIpLCAqZW5kT2Zmc2V0IH19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IDE4MzQwMzc2NjNhNzQ1YzUxZTFhOTA3NWI0NWM4
MTRkZmEzMzQyZDAuLmZjMzhjOTNhZjllMzVkMTYzYjMwN2ZkZGI5NTRjY2NhYWZhNGJiMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oCkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5n
IGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKICAgICAgICAgU3RyaW5nIHRl
eHREYXRhOwotICAgICAgICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07CisgICAgICAgIHVpbnQ2
NF90IHBhdGhJbmRleCB7IDAgfTsKIAotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcm
JiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1aW50NjRfdCBpbmRleCkKICAg
ICAgICAgICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKICAgICAg
ICAgICAgICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgICAgICwgdGV4dERhdGEo
V1RGTW92ZShkYXRhKSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1aW50
NjRfdCBpbmRleCkKICAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikK
ICAgICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkKICAgICAgICAgICAgICwgdGV4dERhdGEoZGF0
YSkKQEAgLTc5LDggKzc5LDkgQEAgcHVibGljOgogCiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
KGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYpID0gZGVmYXVsdDsKICAgICBBcHBIaWdobGln
aHRSYW5nZURhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmlu
ZyYmIHRleHQsIE5vZGVQYXRoJiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBOb2RlUGF0aCYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6
IG1fdGV4dChXVEZNb3ZlKHRleHQpKQorICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcm
JiBpZGVudGlmaWVyLCBTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1
aW50NjRfdCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVu
ZE9mZnNldCkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKKyAg
ICAgICAgLCBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKICAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KFdURk1vdmUoc3RhcnRDb250YWluZXIpKQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCiAgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQpA
QCAtODgsOCArODksOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRh
aW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQodGV4dCkKKyAgICBBcHBIaWdo
bGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQs
IGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVuZE9mZnNldCkKKyAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3RleHQodGV4dCkKICAg
ICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVyKQogICAgICAgICAsIG1fc3Rh
cnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFp
bmVyKQpAQCAtOTcsMTEgKzk5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAgICAgY29u
c3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbnRh
aW5lcjsgfQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dE9mZnNldDsgfQorICAgIHVpbnQ2NF90IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydE9mZnNldDsgfQogICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7
IHJldHVybiBtX2VuZENvbnRhaW5lcjsgfQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisgICAgdWludDY0X3QgZW5kT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVy
Jik7CkBAIC0xMDksMTEgKzExMiwxMiBAQCBwdWJsaWM6CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
dG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9pZGVudGlm
aWVyOwogICAgIFN0cmluZyBtX3RleHQ7CiAgICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5lcjsK
LSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fc3RhcnRP
ZmZzZXQgeyAwIH07CiAgICAgTm9kZVBhdGggbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQg
bV9lbmRPZmZzZXQgeyAwIH07CisgICAgdWludDY0X3QgbV9lbmRPZmZzZXQgeyAwIH07CiB9Owog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggNmZiZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2
MmY0M2VkMDM1NzJhNy4uNzgwZmM1MTZkZmU1NjkwNTA2MDY2ZDJhYTkyZjNkODNlMDU1YWU3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTdGF0aWNSYW5n
ZS5oIgogI2luY2x1ZGUgIlRleHRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIw
Myw3ICsyMDQsMTAgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVhdGVBcHBIaWdo
bGlnaHRSYW5nZURhdGEoY29uc3QgU3RhdGljUmFuZ2UmIHJhbmcKIHsKICAgICBhdXRvIHRleHQg
PSBwbGFpblRleHQocmFuZ2UpOwogICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdMZW5ndGgp
OworICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKwog
ICAgIHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIsCiAgICAgICAgIHRleHQsCiAgICAgICAg
IG1ha2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0
YXJ0T2Zmc2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDM3YjQzZTljN2M1ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjM0NDk0
MDJlY2MzYjJkYjA4OTk2OGMyOThiNDUzMDNjNDc3ZThmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NjEzLDcgKzc2MTMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0
b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCku
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9y
eS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxU
b0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgp
LnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUu
ZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRv
SGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODU2ZDFhZGM2NzYyYWI4NGU4MDc3
NjZlMzg3ZWU4YzQwM2Y2MTM0YS4uZDAwZDAyNjhjMmEyZDllNTNlOTgzMDAyMjY0NzkzZDQ3MDcw
NGQzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5l
ckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9y
IEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dp
dGhIVE1MKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA2LTIyICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGppdENvbXBpbGVBbmRT
ZXRIZXVyaXN0aWNzIHNob3VsZG4ndCByZXR1cm4gdHJ1ZSB3aGVuIHdlIGZhaWwgdG8gY29tcGls
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0Fw
cEhpZ2hsaWdodHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXBwSGlnaGxpZ2h0cy5tbQppbmRleCBjZmU3OWQyZmU3NWFmNWM3OGE5NWJmOTk5MzEyZDkzN2Nh
MjNkNDEyLi45OWQxMjM3NGE4NzVkMGIzMWZlNGM0M2M1Mzc1ZTdlMTkzOWQxYWE5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGln
aGxpZ2h0cy5tbQpAQCAtNTYsOTIgKzU2LDE2MyBAQCBAZW5kCiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0
b3JlKQorUmV0YWluUHRyPF9XS0FwcEhpZ2hsaWdodD4gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhU
TUwoTlNTdHJpbmcgKkhUTUxTdHJpbmcsIE5TU3RyaW5nICpqYXZhU2NyaXB0LCBOU1N0cmluZyAq
aGlnaGxpZ2h0VGV4dCkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhp
Z2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgYXV0byB3
ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOwogICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiVGVzdCJdOwotICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiXTsKLSAgICBfX2Jsb2NrIGJv
b2wgZmluaXNoZWQgPSBOTzsKKyAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6SFRNTFN0cmluZ107CisgICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpqYXZhU2NyaXB0XTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tBcHBI
aWdobGlnaHQ+IHJlc3VsdEhpZ2hsaWdodDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwogICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3
ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3
R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgewogICAgICAgICBFWFBFQ1RfRVEo
ZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX05P
VF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4
dCwgQCJUZXN0Iik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgaGln
aGxpZ2h0VGV4dCk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0
KTsKLSAgICAgICAgCi0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCJUZXN0Il07Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFsgaGlnaGxpZ2h0LmhpZ2hsaWdodCBdXTsKLSAgICAgICAgCi0gICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4g
Ym9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRW
YWx1ZSA9PSAxOwotICAgICAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9w
dWxhdGVkLiIpOwotICAgICAgICAKLSAgICAgICAgZmluaXNoZWQgPSBZRVM7CisgICAgICAgIHJl
c3VsdEhpZ2hsaWdodCA9IGhpZ2hsaWdodDsKKyAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07
CiAgICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFwcEhpZ2hsaWdodF07Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICByZXR1cm4gcmVzdWx0SGlnaGxpZ2h0OwogfQogCi1URVNUKEFwcEhpZ2hsaWdo
dHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwpCitSZXRhaW5QdHI8V0tX
ZWJWaWV3PiBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKE5TU3RyaW5nICpI
VE1MU3RyaW5nKQogewogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVn
SW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlND
Rm9yVGVzdGluZzpZRVNdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxp
Z2h0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBhdXRvIHdlYlZp
ZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
Ci0gICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMDBweCc+PC9kaXY+VGVzdCJdOwotICAgIFt3ZWJWaWV3Q3Jl
YXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgn
U2VsZWN0QWxsJykiXTsKLSAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBOTzsKLSAgICBbZGVs
ZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVX
ZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09M
IHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKLSAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2Vi
Vmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdo
bGlnaHQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIp
OwotICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7CisgICAgW3dl
YlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpIVE1MU3RyaW5nXTsKKyAg
ICAKKyAgICByZXR1cm4gd2ViVmlld1Jlc3RvcmU7Cit9CisKK1RFU1QoQXBwSGlnaGxpZ2h0cywg
QXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNy
ZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J1NlbGVjdEFsbCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0
ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CisgICAgCisgICAgW3dl
YlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAW1toaWdobGlnaHQgaGlnaGxpZ2h0
XV1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRo
TG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hs
aWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRz
IHRvIGJlIHBvcHVsYXRlZC4iKTsKK30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGln
aHRDcmVhdGVBbmRSZXN0b3JlQW5kU2Nyb2xsKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3Jl
YXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwoQCI8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMDAwcHgnPjwv
ZGl2PlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIp
OworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0
c1dpdGhIVE1MKEAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwMHB4Jz48L2Rpdj5UZXN0Iik7CisK
KyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDpbaGln
aGxpZ2h0IGhpZ2hsaWdodF1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNv
bmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJW
aWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJl
ck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVk
IEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgIEVYUEVDVF9ORSgwLCBbW3dlYlZp
ZXdSZXN0b3JlIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNldCJdIGZs
b2F0VmFsdWVdKTsKK30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3Jl
RmFpbHVyZSkKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhI
VE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0
Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGln
aHRzV2l0aEhUTUwoQCJOb3QgVGhlIFNhbWUiKTsKKyAgICAKKyAgICBbd2ViVmlld1Jlc3RvcmUg
X3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbW2hpZ2hsaWdodCBoaWdobGlnaHRdXV07CisgICAgCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAo
KSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuICFbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmlu
dFZhbHVlOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyBub3QgdG8gYmUgcG9wdWxh
dGVkLiIpOworfQorCisvLyBFbnN1cmUgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIGJsb2cg
Zm9ybWF0IGNhbiBhZGQgYWRkaXRpb25hbCBkYXRhIGFuZCBzdGlsbCBiZSBkZWNvZGVkIHN1Y2Nl
c3NmdWxseSBieSB2ZXJzaW9uIG9mIFdlYktpdCB0aGF0IG9ubHkga25vdyBhYm91dCB0aGUgY3Vy
cmVudCBmb3JtYXQuCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJl
c3RvcmVXaXRoRXh0cmFCeXRlcykKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhp
Z2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFs
bCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdG
b3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAotICAgICAgICBbd2Vi
Vmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT0naGVp
Z2h0OiAxMDAwcHgnPjwvZGl2PlRlc3QiXTsKLSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0
b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodF07CisgICAgTlNN
dXRhYmxlRGF0YSAqbW9kaWZpZWRIaWdobGlnaHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YVdp
dGhEYXRhOiBbaGlnaGxpZ2h0IGhpZ2hsaWdodF0gXTsKKyAgICBbbW9kaWZpZWRIaWdobGlnaHRE
YXRhIGFwcGVuZERhdGE6W0AiVGVzdFYyRGF0YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddXTsKKyAgICAKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7
CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7
CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKK30K
KworLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgYmxvY2sgYWdhaW5zdCBsYXRlciB2ZXJzaW9ucyB3
aXRoIGFuIGV4cGxpY2l0ZSB2ZXJzaW9uIGNoZWNrLgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBI
aWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlV2l0aExhdGVyVmVyc2lvbikKK3sKKyAgICBhdXRvIGhp
Z2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVz
dG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAg
ICAgICAgIAotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0
aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVz
dG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBw
SGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKLSAgICAgICAgfSwgMiwgQCJFeHBlY3RlZCBI
aWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAgRVhQRUNUX05FKDAsIFtbd2Vi
Vmlld1Jlc3RvcmUgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhZ2VZT2Zmc2V0Il0g
ZmxvYXRWYWx1ZV0pOworICAgIHVpbnQ2NF90IG1heHZlcnNpb24gPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgTlNEYXRhICp2ZXJzaW9uRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczombWF4dmVyc2lvbiBsZW5ndGg6c2l6ZW9mKG1heHZlcnNpb24pXTsKKyAg
ICBOU011dGFibGVEYXRhICptb2RpZmllZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0YSBk
YXRhV2l0aERhdGE6W2hpZ2hsaWdodCBoaWdobGlnaHRdXTsKKworICAgIFttb2RpZmllZEhpZ2hs
aWdodERhdGEgcmVwbGFjZUJ5dGVzSW5SYW5nZTpOU01ha2VSYW5nZShzaXplb2YodWludDY0X3Qp
LCBzaXplb2YobWF4dmVyc2lvbikpIHdpdGhCeXRlczp2ZXJzaW9uRGF0YV07CisKKyAgICBbd2Vi
Vmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3
ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHRE
YXRhIF1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25X
aXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3Rv
cmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhp
Z2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGln
aHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKK30KKworLy8gRW5zdXJlIHRoYXQgc2hvcnRlciBkYXRh
IGJsb2JzIHdpbGwgY29ycmVjdGx5IGZhaWwgdG8gZGVjb2RlLgorVEVTVChBcHBIaWdobGlnaHRz
LCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5kRHJvcEJ5dGVzKQoreworICAgIGF1dG8g
aGlnaGxpZ2h0ID0gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwoQCJUZXN0IiwgQCJkb2N1bWVu
dC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZpZXdS
ZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIlRlc3QiKTsK
ICAgICAgICAgCi0gICAgICAgIGZpbmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3
Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWQpOworICAgIE5TTXV0YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtO
U011dGFibGVEYXRhIGRhdGFXaXRoQnl0ZXM6W2hpZ2hsaWdodCBoaWdobGlnaHRdLmJ5dGVzIGxl
bmd0aDpbaGlnaGxpZ2h0IGhpZ2hsaWdodF0ubGVuZ3RoIC8gMl07CisKKyAgICBbd2ViVmlld1Jl
c3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3
UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1d
OworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9n
Z2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGln
aHRzKCkiXS5pbnRWYWx1ZTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgbm90IHRv
IGJlIHBvcHVsYXRlZC4iKTsKIH0KIAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRS
ZXN0b3JlRmFpbHVyZSkKKy8vIEVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbCBkYXRhIGZvcm1hdCB3
aWxsIGFsd2F5cyBiZSBhYmxlIHRvIGJlIGRlY29kZWQgaW4gdGhlIGZ1dHVyZS4KK1RFU1QoQXBw
SGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZyb21TdG9yYWdlVjApCiB7CiAgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZXNbXSA9IHsw
eDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAx
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1
LCAweDc4LCAweDc0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAw
eDczLCAweDc0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAw
eDc4LCAweDc0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDcz
LCAweDc0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfTsKKyAgICAKKyAg
ICBOU0RhdGEgKnN0b3JlZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6JmJ5dGVzIGxlbmd0
aDoxMDNdOworCiAgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdo
bGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwotICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxs
JykiXTsKLSAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBOTzsKLSAgICBbZGVsZWdhdGUgc2V0
U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBf
V0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJlcXVlc3RP
cmlnaW5hdGVkSW5BcHApIHsKLSAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmlldywgd2Vi
Vmlld0NyZWF0ZS5nZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQpOwot
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOwotICAgICAg
ICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7Ci0gICAgICAgIAotICAgICAg
ICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiTm90IHRoZSBz
YW1lIl07Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsg
aGlnaGxpZ2h0LmhpZ2hsaWdodCBdXTsKLSAgICAgICAgCi0gICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7Ci0gICAg
ICAgICAgICByZXR1cm4gIVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWU7Ci0gICAg
ICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Ci0gICAg
ICAgIAotICAgICAgICBmaW5pc2hlZCA9IFlFUzsKLSAgICB9XTsKLSAgICBbd2ViVmlld0NyZWF0
ZSBfYWRkQXBwSGlnaGxpZ2h0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlz
aGVkKTsKKworICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCJUZXN0Il07CisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBz
dG9yZWREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25k
aXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmll
d1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJP
ZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBI
aWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKK30KKworCisvLyBFbnN1cmUgdGhhdCB0aGUg
VjEgZGF0YSBmb3JtYXQgd2lsbCBhbHdheXMgYmUgYWJsZSB0byBiZSBkZWNvZGVkIGluIHRoZSBm
dXR1cmUuCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodFJlc3RvcmVGcm9tU3RvcmFn
ZVYxKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVz
dGluZzpZRVNdOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZXNbXSA9IHsweDMxLCAweDMy
LCAweDMwLCAweDMyLCAweDQ4LCAweDUwLCAweDQxLCAweDQxLCAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDI0LCAweDAwLCAweDAwLCAweDAwLCAweDAx
LCAweDYyLCAweDMyLCAweDY2LCAweDY0LCAweDM1LCAweDM0LCAweDYzLCAweDMwLCAweDJkLCAw
eDM5LCAweDM0LCAweDYyLCAweDMzLCAweDJkLCAweDM0LCAweDM3LCAweDM4LCAweDM0LCAweDJk
LCAweDYyLCAweDMzLCAweDY0LCAweDY1LCAweDJkLCAweDYxLCAweDM5LCAweDM0LCAweDMzLCAw
eDMyLCAweDY2LCAweDM0LCAweDM0LCAweDMxLCAweDM1LCAweDMzLCAweDYzLCAweDA0LCAweDAw
LCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAxLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAw
eDc0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eDA1LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0
LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfTsKKyAgICAKKyAgICBOU0RhdGEg
KnN0b3JlZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6JmJ5dGVzIGxlbmd0aDoxNjBdOwor
CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdo
bGlnaHRzOkBbIHN0b3JlZERhdGEgXV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0
dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJu
YWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBA
IkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOwogfQogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432547</attachid>
            <date>2021-06-29 16:00:35 -0700</date>
            <delta_ts>2021-06-30 14:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210629160034.patch</filename>
            <type>text/plain</type>
            <size>29017</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiYWZlNWRiNTdkMDAyMzMwODI3M2Ex
OGI4NTVlYWYzNGYwZTk2MGQuLjA2M2M1ZjY2YjRlMjMzODNhMjExYzU1ZjlkYTU3MDhlNTM3ZTA3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsb3cgUGVyc2lzdGVudERlY29kZXJzIHRvIHJld2luZCwgdG8gaGVs
cCBzdXBwb3J0IHYwIGhpZ2hsaWdodCBkYXRhLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXI6OkRlY29kZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6cmV3aW5k
KToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKwogMjAy
MS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRydWUgd2hlbiB3ZSBmYWls
IHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZWE4MzYxMGQ1ZTIyOTQyOWUwNTgzZjI1Y2EwY2M4
OGQzYzEyOTM3Li45NTFhN2YyZDhmY2JjNDkzMjdkOWUwODMwMjg1NTQ3ZDhmNzU5ZjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRSZXN0b3JlRnJvbVN0b3Jh
Z2UKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5k
RHJvcEJ5dGVzCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVz
dG9yZVdpdGhMYXRlclZlcnNpb24KKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlV2l0aEV4dHJhQnl0ZXMKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBI
aWdobGlnaHRSZXN0b3JlRnJvbVN0b3JhZ2VWMAorICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhp
Z2hsaWdodFJlc3RvcmVGcm9tU3RvcmFnZVYxCisKKyAgICAgICAgUmVmb3JtYXQgdGhlIHN0b3Jh
Z2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3VyYXRlIGRlbGV0aW9uIG9mIGFj
dGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGVtIG1vcmUgcm9i
dXN0IGFuZCBmdXR1cmUtcHJvb2YuIFN1cHBvcnQgZGVjb2RpbmcgdjAgCisgICAgICAgIGhpZ2hs
aWdodHMgYXMgd2VsbC4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6
Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhOjpOb2RlUGF0aENvbXBvbmVudDo6Tm9kZVBhdGhDb21wb25lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpBcHBIaWdobGlnaHRSYW5nZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6c3RhcnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmRPZmZzZXQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKToKKwog
MjAyMS0wNi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTQpOiBTdWJtZW51cyBvbiBodHRwczovL2NvZGVsZWFy
bi5jYXQgZG9uJ3Qgc2hvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGU5NzAyNmE2ZjBiNTU5NzAxN2VhMWJlMDY4
NjhlMzNjYmI1YjBiLi4yOTBjNWVkOTYxMGI3NmJmZDE5ZWRmMTViMjVkY2UyYmUwMzVlMzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1
cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhpZ2hsaWdodCBEYXRhIHRv
IGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAgICAgICAgaGlnaGxpZ2h0
cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQgZnV0dXJlLXByb29mLgor
CisgICAgICAgIEFsc28gZm91bmQgYW4gaXNzdWUgd2l0aCBjcmVhdGluZyBTaGFyZWRCdWZmZXJz
IGZyb20gdGhlIG1lbW9yeSBtYXAsIGluIHRoYXQgdGhlIGlwY0hhbmRsZSBzaXplCisgICAgICAg
IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNoYXJlZE1lbW9yeS0+c2l6ZSgpLiAKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAy
MS0wNi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIFVwc3RyZWFtIEdyb3VwQWN0aXZpdGllc0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKaW5kZXggYzA0YmEzZjJhYzFj
YjE2MjI1ZmI4Nzg0Yjk5ZDUwYTc1MjU5MzExNi4uZjYxYTIwOThhOTBiOGQ5OWYzMGUxMzI1OGY5
ZTM2NDU4ZmNkMWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcApAQCAtNjgsNiArNjgsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVG
aXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgRGVjb2Rlcjo6cmV3aW5kKHNpemVfdCBzaXplKQoreworICAgIGlmICht
X2J1ZmZlclBvc2l0aW9uIC0gc2l6ZSA+PSBtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlclBv
c2l0aW9uIC09IHNpemU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBEZWNvZGVyJiBEZWNvZGVyOjpkZWNv
ZGVOdW1iZXIoc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA4NzYwNjJkMzQwMWI0YmQz
Mjk3NmVjMWMxMWNkMzI5YjkxZmIzN2NmLi4yYTYzN2I4YTcyNzE2MDUzYTY2MjhmYTNhZTRjZDZh
N2MwNzFhMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyRW5kIC0gbV9idWZmZXI7IH0KICAgICBzaXplX3QgY3Vy
cmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlcjsg
fQorICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBy
ZXdpbmQoc2l6ZV90KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCA0ZjRj
ODZhNTcxZTYxOWJiZjg1ODA4OTUzYjVlYmM1YjlmOTE0NTUyLi40ZDM5NTAyZGVjNjIyY2NhZjhh
ZGQ3MTU3OTM1NDNkMDZhNTQ1YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQxLDYgKzQx
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdWludDY0X3QgaGlnaGxp
Z2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUg
IChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCisKIHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVj
b2RlcigpOwpAQCAtODEsNyArODMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+CiAgICAgaWYg
KCF0ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05MSw2ICs5MywxMiBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9k
ZVBhdGhDb21wb25lbnQ+CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBzdGF0
aWNfYXNzZXJ0KCFFbmNvZGVyOjppc0lQQ0VuY29kZXIsICJBcHBIaWdobGlnaHRSYW5nZURhdGEg
c2hvdWxkIG5vdCBiZSB1c2VkIGJ5IFdURjo6SVBDOjpFbmNvZGVyIik7CisgICAgY29uc3RleHBy
IHVpbnQ2NF90IGN1cnJlbnRBcHBIaWdobGlnaHRWZXJzaW9uID0gMTsKKyAgICAKKyAgICBlbmNv
ZGVyIDw8IGhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgZW5jb2RlciA8PCBjdXJyZW50QXBw
SGlnaGxpZ2h0VmVyc2lvbjsKKyAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKICAgICBlbmNv
ZGVyIDw8IG1fdGV4dDsKICAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7CiAgICAgZW5j
b2RlciA8PCBtX3N0YXJ0T2Zmc2V0OwpAQCAtMTAwLDYgKzEwOCwzMyBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKKyAgICBzdGF0aWNfYXNzZXJ0KCFEZWNvZGVyOjppc0lQQ0RlY29kZXIsICJB
cHBIaWdobGlnaHRSYW5nZURhdGEgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IFdURjo6SVBDOjpEZWNv
ZGVyIik7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbjsKKyAgICAK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkSGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZTsKKyAgICBkZWNvZGVyID4+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAgIGlm
ICghZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlICE9IGhpZ2hsaWdo
dEZpbGVTaWduYXR1cmUpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLnJld2luZChzaXplb2YoaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSkpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgdmVyc2lvbiA9IDA7CisgICAgfQorICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpZGVudGlmaWVyOworICAgIGlmICh2ZXJzaW9uKQorICAgICAgICBpZGVudGlmaWVyID0g
bnVsbFN0cmluZygpOworICAgIGVsc2UgeworICAgICAgICBkZWNvZGVyID4+IHZlcnNpb247Cisg
ICAgICAgIGlmICghdmVyc2lvbikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIAorICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgICAgIGlmICghaWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCiAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlm
ICghdGV4dCkKQEAgLTExMCw3ICsxNDUsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYQogICAg
IGlmICghc3RhcnRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBzdGFydE9mZnNldDsKICAgICBkZWNvZGVyID4+IHN0YXJ0T2Zmc2V0OwogICAg
IGlmICghc3RhcnRPZmZzZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMjAs
MTMgKzE1NSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYQogICAgIGlmICghZW5kQ29udGFp
bmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGVuZE9mZnNl
dDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVuZE9mZnNldCkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnRleHQp
LCBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksICpzdGFydE9mZnNldCwgV1RGTW92ZSgqZW5kQ29u
dGFpbmVyKSwgKmVuZE9mZnNldCB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksICpzdGFydE9mZnNl
dCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9mZnNldCB9fTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAppbmRleCAxODM0MDM3NjYzYTc0NWM1MWUxYTkw
NzViNDVjODE0ZGZhMzM0MmQwLi5mYzM4YzkzYWY5ZTM1ZDE2M2IzMDdmZGRiOTU0Y2NjYWFmYTRi
YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAtNDMsOSArNDMsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CiAgICAgICAgIFN0
cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OworICAgICAg
ICB1aW50NjRfdCBwYXRoSW5kZXggeyAwIH07CiAKLSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQo
U3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEs
IHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBlbGVt
ZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdWludDY0X3QgaW5k
ZXgpCiAgICAgICAgICAgICA6IGlkZW50aWZpZXIoV1RGTW92ZShlbGVtZW50SWRlbnRpZmllcikp
CiAgICAgICAgICAgICAsIG5vZGVOYW1lKFdURk1vdmUobmFtZSkpCiAgICAgICAgICAgICAsIHRl
eHREYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoY29uc3QgU3RyaW5nJiBl
bGVtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRhdGEs
IHVuc2lnbmVkIGluZGV4KQorICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcm
IGVsZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0
YSwgdWludDY0X3QgaW5kZXgpCiAgICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50
aWZpZXIpCiAgICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCiAgICAgICAgICAgICAsIHRleHRE
YXRhKGRhdGEpCkBAIC03OSw4ICs3OSw5IEBAIHB1YmxpYzoKIAogICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7CiAgICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEo
U3RyaW5nJiYgaWRlbnRpZmllciwgU3RyaW5nJiYgdGV4dCwgTm9kZVBhdGgmJiBzdGFydENvbnRh
aW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5kQ29udGFpbmVyLCB1aW50
NjRfdCBlbmRPZmZzZXQpCisgICAgICAgIDogbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmll
cikpCisgICAgICAgICwgbV90ZXh0KFdURk1vdmUodGV4dCkpCiAgICAgICAgICwgbV9zdGFydENv
bnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkKICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0
KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFp
bmVyKSkKQEAgLTg4LDggKzg5LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBBcHBI
aWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3Rh
cnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29u
dGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogbV90ZXh0KHRleHQpCisgICAg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVpbnQ2NF90IHN0YXJ0
T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1aW50NjRfdCBlbmRPZmZzZXQp
CisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwgbV90ZXh0KHRl
eHQpCiAgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFydENvbnRhaW5lcikKICAgICAgICAg
LCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgICAgICAsIG1fZW5kQ29udGFpbmVyKGVu
ZENvbnRhaW5lcikKQEAgLTk3LDExICs5OSwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAor
ICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQog
ICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRPZmZzZXQ7IH0KKyAgICB1aW50NjRfdCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRPZmZzZXQ7IH0KICAgICBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQorICAgIHVpbnQ2NF90IGVuZE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOwpAQCAtMTA5LDExICsxMTIsMTIgQEAgcHVibGljOgogICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV90ZXh0OwogICAgIE5vZGVQYXRoIG1fc3RhcnRDb250
YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICB1aW50NjRfdCBt
X3N0YXJ0T2Zmc2V0IHsgMCB9OwogICAgIE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOwotICAgIHVu
c2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fZW5kT2Zmc2V0IHsgMCB9
OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IDZmYmUwYjE1Yjg5OGQ2MTgyNGUx
ZTcyYzU0NjJmNDNlZDAzNTcyYTcuLjc4MGZjNTE2ZGZlNTY5MDUwNjA2NmQyYWE5MmYzZDgzZTA1
NWFlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU3Rh
dGljUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yMDMsNyArMjA0LDEwIEBAIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGEgY3JlYXRl
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nCiB7CiAgICAgYXV0
byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKICAgICB0ZXh0LnRydW5jYXRlKHRleHRQcmV2aWV3
TGVuZ3RoKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisKICAgICByZXR1cm4geworICAgICAgICBpZGVudGlmaWVyLAogICAgICAgICB0ZXh0LAog
ICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpLAogICAgICAgICBy
YW5nZS5zdGFydE9mZnNldCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAzN2I0M2U5YzdjNWYyZDdjMDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4
Li4zNDQ5NDAyZWNjM2IyZGIwODk5NjhjMjk4YjQ1MzAzYzQ3N2U4ZmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzYxMyw3ICs3NjEzLDcg
QEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29u
c3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFy
ZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDog
U2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0
b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBj
SGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBT
Y3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg1NmQxYWRjNjc2MmFi
ODRlODA3NzY2ZTM4N2VlOGM0MDNmNjEzNGEuLmQwMGQwMjY4YzJhMmQ5ZTUzZTk4MzAwMjI2NDc5
M2Q0NzA3MDRkMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0yOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBw
b3J0IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdo
bGlnaHRzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlQXBwSGlnaGxpZ2h0V2l0
aEhUTUwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hs
aWdodHNXaXRoSFRNTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0w
Ni0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBqaXRDb21w
aWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRydWUgd2hlbiB3ZSBmYWlsIHRv
IGNvbXBpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggY2ZlNzlkMmZlNzVhZjVjNzhhOTViZjk5OTMx
MmQ5MzdjYTIzZDQxMi4uNzgzMDYzZjU2MzE2NzlkNGUyOWNiMzc5Y2M1ZGU3NjRkZGEyOGQxYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhp
Z2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0FwcEhpZ2hsaWdodHMubW0KQEAgLTU2LDkyICs1NiwxNjMgQEAgQGVuZAogCiBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiAKLVRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRl
QW5kUmVzdG9yZSkKK1JldGFpblB0cjxfV0tBcHBIaWdobGlnaHQ+IGNyZWF0ZUFwcEhpZ2hsaWdo
dFdpdGhIVE1MKE5TU3RyaW5nICpIVE1MU3RyaW5nLCBOU1N0cmluZyAqamF2YVNjcmlwdCwgTlNT
dHJpbmcgKmhpZ2hsaWdodFRleHQpCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlld0Ny
ZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAg
IGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKICAgICBbd2ViVmlld0NyZWF0ZSBfc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIlRlc3QiXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07Ci0gICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gTk87CisgICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmddOworICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6amF2YVNjcmlwdF07CisgICAgX19ibG9jayBSZXRhaW5QdHI8
X1dLQXBwSGlnaGxpZ2h0PiByZXN1bHRIaWdobGlnaHQ7CisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKICAgICBbZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdL
V2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9P
TCBpbk5ld0dyb3VwLCBCT09MIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKICAgICAgICAgRVhQ
RUNUX0VRKGRlbGVnYXRlV2ViVmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChoaWdobGlnaHQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxp
Z2h0LnRleHQsIEAiVGVzdCIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRl
eHQsIGhpZ2hsaWdodFRleHQpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0Lmhp
Z2hsaWdodCk7Ci0gICAgICAgIAotICAgICAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwotICAgICAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOkBbIGhpZ2hsaWdodC5oaWdobGlnaHQgXV07Ci0gICAgICAgIAotICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZd
ICgpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygp
Il0uaW50VmFsdWUgPT0gMTsKLSAgICAgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRv
IGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAgCi0gICAgICAgIGZpbmlzaGVkID0gWUVTOworICAg
ICAgICByZXN1bHRIaWdobGlnaHQgPSBoaWdobGlnaHQ7CisgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRdOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgcmV0dXJuIHJlc3VsdEhpZ2hsaWdodDsKIH0KIAotVEVTVChBcHBI
aWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5kU2Nyb2xsKQorUmV0YWlu
UHRyPFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChOU1N0
cmluZyAqSFRNTFN0cmluZykKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0Fw
cEhpZ2hsaWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgYXV0byB3ZWJWaWV3Q3JlYXRl
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgYXV0
byB3ZWJWaWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwcHgnPjwvZGl2PlRlc3QiXTsKLSAgICBbd2Vi
Vmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ1NlbGVjdEFsbCcpIl07Ci0gICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87Ci0g
ICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRl
bGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91
cCwgQk9PTCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSB7Ci0gICAgICAgIEVYUEVDVF9FUShkZWxl
Z2F0ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUuZ2V0KCkpOwotICAgICAgICBFWFBFQ1RfTk9UX05V
TEwoaGlnaGxpZ2h0KTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBA
IlRlc3QiKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodC5oaWdobGlnaHQpOwor
ICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6SFRNTFN0cmlu
Z107CisgICAgCisgICAgcmV0dXJuIHdlYlZpZXdSZXN0b3JlOworfQorCitURVNUKEFwcEhpZ2hs
aWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmUpCit7CisgICAgYXV0byBoaWdobGln
aHQgPSBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWND
b21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUg
PSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOworICAgIAor
ICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFtbaGlnaGxpZ2h0IGhp
Z2hsaWdodF1dXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0
aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdS
ZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZB
cHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGln
aGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Cit9CisKK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBw
SGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZFNjcm9sbCkKK3sKKyAgICBhdXRvIGhpZ2hsaWdo
dCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAw
MHB4Jz48L2Rpdj5UZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBA
IlRlc3QiKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhp
Z2hsaWdodHNXaXRoSFRNTChAIjxkaXYgc3R5bGU9J2hlaWdodDogMTAwMDBweCc+PC9kaXY+VGVz
dCIpOworCisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGln
aHQ6W2hpZ2hsaWdodCBoaWdobGlnaHRdXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6Ondh
aXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVy
biBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFs
cy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJF
eHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKKyAgICBFWFBFQ1RfTkUoMCwg
W1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFnZVlPZmZz
ZXQiXSBmbG9hdFZhbHVlXSk7Cit9CisKK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0
UmVzdG9yZUZhaWx1cmUpCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBjcmVhdGVBcHBIaWdobGln
aHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIs
IEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBw
SGlnaGxpZ2h0c1dpdGhIVE1MKEAiTm90IFRoZSBTYW1lIik7CisgICAgCisgICAgW3dlYlZpZXdS
ZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAW1toaWdobGlnaHQgaGlnaGxpZ2h0XV1dOwor
ICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2lu
ZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRz
KCkiXS5pbnRWYWx1ZTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgbm90IHRvIGJl
IHBvcHVsYXRlZC4iKTsKK30KKworLy8gRW5zdXJlIHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIHRo
ZSBibG9iIGZvcm1hdCBjYW4gYWRkIGFkZGl0aW9uYWwgZGF0YSBhbmQgc3RpbGwgYmUgZGVjb2Rl
ZCBzdWNjZXNzZnVsbHkgYnkgdmVyc2lvbiBvZiBXZWJLaXQgdGhhdCBvbmx5IGtub3cgYWJvdXQg
dGhlIGN1cnJlbnQgZm9ybWF0LgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVh
dGVBbmRSZXN0b3JlV2l0aEV4dHJhQnl0ZXMpCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBjcmVh
dGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdT
ZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVX
ZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOwogICAgICAgICAKLSAgICAg
ICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5
bGU9J2hlaWdodDogMTAwMHB4Jz48L2Rpdj5UZXN0Il07Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9y
ZSBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHRdOwor
ICAgIE5TTXV0YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRh
IGRhdGFXaXRoRGF0YTogW2hpZ2hsaWdodCBoaWdobGlnaHRdIF07CisgICAgW21vZGlmaWVkSGln
aGxpZ2h0RGF0YSBhcHBlbmREYXRhOltAIlRlc3RWMkRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+
IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1
ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQu
Iik7Cit9CisKKy8vIE9sZGVyIHZlcnNpb25zIG9mIFdlYktpdCBuZWVkIHRvIGJlIGFibGUgdG8g
ZGVjb2RlIGJsb2JzIGVuY29kZWQgb24gbmV3ZXIgdmVyc2lvbnMgb2YgV2ViS2l0LCBzbyBlbnN1
cmUgdGhhdCBpcyBwb3NzaWJsZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3Jl
YXRlQW5kUmVzdG9yZVdpdGhMYXRlclZlcnNpb24pCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBj
cmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChAIlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5k
KCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVh
dGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKEAiVGVzdCIpOwogICAgICAgICAKLSAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsm
XSAoKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMo
KSJdLmludFZhbHVlID09IDE7Ci0gICAgICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0
byBiZSBwb3B1bGF0ZWQuIik7Ci0gICAgICAgIEVYUEVDVF9ORSgwLCBbW3dlYlZpZXdSZXN0b3Jl
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNldCJdIGZsb2F0VmFsdWVd
KTsKKyAgICB1aW50NjRfdCBtYXh2ZXJzaW9uID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpOworICAgIE5TRGF0YSAqdmVyc2lvbkRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Jm1heHZlcnNpb24gbGVuZ3RoOnNpemVvZihtYXh2ZXJzaW9uKV07CisgICAgTlNNdXRhYmxl
RGF0YSAqbW9kaWZpZWRIaWdobGlnaHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YVdpdGhEYXRh
OltoaWdobGlnaHQgaGlnaGxpZ2h0XV07CisKKyAgICBbbW9kaWZpZWRIaWdobGlnaHREYXRhIHJl
cGxhY2VCeXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2Uoc2l6ZW9mKHVpbnQ2NF90KSwgc2l6ZW9mKG1h
eHZlcnNpb24pKSB3aXRoQnl0ZXM6dmVyc2lvbkRhdGFdOworCisgICAgW3dlYlZpZXdSZXN0b3Jl
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3Rv
cmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAg
ICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmco
WyZdICgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCki
XS5pbnRWYWx1ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBw
b3B1bGF0ZWQuIik7Cit9CisKKy8vIEVuc3VyZSB0aGF0IHNob3J0ZXIgZGF0YSBibG9icyB3aWxs
IGNvcnJlY3RseSBmYWlsIHRvIGRlY29kZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxp
Z2h0Q3JlYXRlQW5kUmVzdG9yZUFuZERyb3BCeXRlcykKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9
IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1h
bmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNy
ZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAot
ICAgICAgICBmaW5pc2hlZCA9IFlFUzsKLSAgICB9XTsKLSAgICBbd2ViVmlld0NyZWF0ZSBfYWRk
QXBwSGlnaGxpZ2h0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsK
KyAgICBOU011dGFibGVEYXRhICptb2RpZmllZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhV2l0aEJ5dGVzOltoaWdobGlnaHQgaGlnaGxpZ2h0XS5ieXRlcyBsZW5ndGg6W2hpZ2hs
aWdodCBoaWdobGlnaHRdLmxlbmd0aCAvIDJdOworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jl
c3RvcmVBcHBIaWdobGlnaHRzOkBbIG1vZGlmaWVkSGlnaGxpZ2h0RGF0YSBdXTsKKyAgICAKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgp
IC0+IGJvb2wgeworICAgICAgICByZXR1cm4gIVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50
VmFsdWU7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIG5vdCB0byBiZSBwb3B1bGF0
ZWQuIik7CiB9CiAKLVRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1
cmUpCisvLyBFbnN1cmUgdGhhdCB0aGUgb3JpZ2luYWwgZGF0YSBmb3JtYXQgd2lsbCBhbHdheXMg
YmUgYWJsZSB0byBiZSBkZWNvZGVkIGluIHRoZSBmdXR1cmUuCitURVNUKEFwcEhpZ2hsaWdodHMs
IEFwcEhpZ2hsaWdodFJlc3RvcmVGcm9tU3RvcmFnZVYwKQogewogICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwotICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBh
dXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGJ5dGVzW10gPSB7MHgwNCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgwMSwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwg
MHgwNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMywgMHg3NCwgMHg2NSwgMHg3OCwgMHg3
NCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgw
NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMywgMHg3NCwgMHg2NSwgMHg3OCwgMHg3NCwg
MHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CisgICAgCisgICAgTlNEYXRhICpz
dG9yZWREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiZieXRlcyBsZW5ndGg6MTAzXTsKKwog
ICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlld0NyZWF0ZSBfc2V0QXBwSGlnaGxpZ2h0RGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIlRlc3QiXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07Ci0gICAg
X19ibG9jayBib29sIGZpbmlzaGVkID0gTk87Ci0gICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGln
aGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxp
Z2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwgQk9PTCByZXF1ZXN0T3JpZ2luYXRlZElu
QXBwKSB7Ci0gICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUu
Z2V0KCkpOwotICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsKLSAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKLSAgICAgICAgRVhQRUNUX05P
VF9OVUxMKGhpZ2hsaWdodC5oaWdobGlnaHQpOwotICAgICAgICAKLSAgICAgICAgW3dlYlZpZXdS
ZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIk5vdCB0aGUgc2FtZSJdOwotICAg
ICAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIGhpZ2hsaWdodC5o
aWdobGlnaHQgXV07Ci0gICAgICAgIAotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0
Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0
dXJuICFbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVy
bmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlOwotICAgICAgICB9LCAyLCBA
IkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOwotICAgICAgICAKLSAgICAg
ICAgZmluaXNoZWQgPSBZRVM7Ci0gICAgfV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFwcEhp
Z2hsaWdodF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisKKyAg
ICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwor
ICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgc3RvcmVkRGF0YSBd
XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExv
Z2dpbmcoWyZdICgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGln
aHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0
byBiZSBwb3B1bGF0ZWQuIik7Cit9CisKKworLy8gRW5zdXJlIHRoYXQgdGhlIFYxIGRhdGEgZm9y
bWF0IHdpbGwgYWx3YXlzIGJlIGFibGUgdG8gYmUgZGVjb2RlZCBpbiB0aGUgZnV0dXJlLgorVEVT
VChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRnJvbVN0b3JhZ2VWMSkKK3sKKyAg
ICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2Vi
UHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
KyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGJ5dGVzW10gPSB7MHgzMSwgMHgzMiwgMHgzMCwgMHgz
MiwgMHg0OCwgMHg1MCwgMHg0MSwgMHg0MSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2MiwgMHgz
MiwgMHg2NiwgMHg2NCwgMHgzNSwgMHgzNCwgMHg2MywgMHgzMCwgMHgyZCwgMHgzOSwgMHgzNCwg
MHg2MiwgMHgzMywgMHgyZCwgMHgzNCwgMHgzNywgMHgzOCwgMHgzNCwgMHgyZCwgMHg2MiwgMHgz
MywgMHg2NCwgMHg2NSwgMHgyZCwgMHg2MSwgMHgzOSwgMHgzNCwgMHgzMywgMHgzMiwgMHg2Niwg
MHgzNCwgMHgzNCwgMHgzMSwgMHgzNSwgMHgzMywgMHg2MywgMHgwNCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwNSwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgyMywgMHg3NCwgMHg2NSwgMHg3OCwgMHg3NCwgMHgwNCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgwNSwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMSwgMHgyMywgMHg3NCwgMHg2NSwgMHg3OCwgMHg3NCwgMHgwNCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH07CisgICAgCisgICAgTlNEYXRhICpzdG9yZWREYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiZieXRlcyBsZW5ndGg6MTYwXTsKKworICAgIGF1dG8g
d2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKworICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCJUZXN0Il07CisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBz
dG9yZWREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25k
aXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmll
d1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJP
ZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBI
aWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432620</attachid>
            <date>2021-06-30 13:19:43 -0700</date>
            <delta_ts>2021-06-30 14:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227279-20210630131943.patch</filename>
            <type>text/plain</type>
            <size>28814</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiYWZlNWRiNTdkMDAyMzMwODI3M2Ex
OGI4NTVlYWYzNGYwZTk2MGQuLjA2M2M1ZjY2YjRlMjMzODNhMjExYzU1ZjlkYTU3MDhlNTM3ZTA3
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsb3cgUGVyc2lzdGVudERlY29kZXJzIHRvIHJld2luZCwgdG8gaGVs
cCBzdXBwb3J0IHYwIGhpZ2hsaWdodCBkYXRhLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXI6OkRlY29kZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6cmV3aW5k
KToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKwogMjAy
MS0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyBzaG91bGRuJ3QgcmV0dXJuIHRydWUgd2hlbiB3ZSBmYWls
IHRvIGNvbXBpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZWE4MzYxMGQ1ZTIyOTQyOWUwNTgzZjI1Y2EwY2M4
OGQzYzEyOTM3Li45NTFhN2YyZDhmY2JjNDkzMjdkOWUwODMwMjg1NTQ3ZDhmNzU5ZjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRSZXN0b3JlRnJvbVN0b3Jh
Z2UKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5k
RHJvcEJ5dGVzCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVz
dG9yZVdpdGhMYXRlclZlcnNpb24KKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlV2l0aEV4dHJhQnl0ZXMKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBI
aWdobGlnaHRSZXN0b3JlRnJvbVN0b3JhZ2VWMAorICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhp
Z2hsaWdodFJlc3RvcmVGcm9tU3RvcmFnZVYxCisKKyAgICAgICAgUmVmb3JtYXQgdGhlIHN0b3Jh
Z2Ugb2YgSGlnaGxpZ2h0IERhdGEgdG8gYWxsb3cgZm9yIGFjY3VyYXRlIGRlbGV0aW9uIG9mIGFj
dGl2ZQorICAgICAgICBoaWdobGlnaHRzLCBhcyB3ZWxsIGFzIG1ha2luZyB0aGVtIG1vcmUgcm9i
dXN0IGFuZCBmdXR1cmUtcHJvb2YuIFN1cHBvcnQgZGVjb2RpbmcgdjAgCisgICAgICAgIGhpZ2hs
aWdodHMgYXMgd2VsbC4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6
Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhOjpOb2RlUGF0aENvbXBvbmVudDo6Tm9kZVBhdGhDb21wb25lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpBcHBIaWdobGlnaHRSYW5nZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6c3RhcnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmRPZmZzZXQg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKToKKwog
MjAyMS0wNi0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTQpOiBTdWJtZW51cyBvbiBodHRwczovL2NvZGVsZWFy
bi5jYXQgZG9uJ3Qgc2hvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZGU5NzAyNmE2ZjBiNTU5NzAxN2VhMWJlMDY4
NjhlMzNjYmI1YjBiLi4yOTBjNWVkOTYxMGI3NmJmZDE5ZWRmMTViMjVkY2UyYmUwMzVlMzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1
cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhpZ2hsaWdodCBEYXRhIHRv
IGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAgICAgICAgaGlnaGxpZ2h0
cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQgZnV0dXJlLXByb29mLgor
CisgICAgICAgIEFsc28gZm91bmQgYW4gaXNzdWUgd2l0aCBjcmVhdGluZyBTaGFyZWRCdWZmZXJz
IGZyb20gdGhlIG1lbW9yeSBtYXAsIGluIHRoYXQgdGhlIGlwY0hhbmRsZSBzaXplCisgICAgICAg
IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHNoYXJlZE1lbW9yeS0+c2l6ZSgpLiAKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAy
MS0wNi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIFVwc3RyZWFtIEdyb3VwQWN0aXZpdGllc0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKaW5kZXggYzA0YmEzZjJhYzFj
YjE2MjI1ZmI4Nzg0Yjk5ZDUwYTc1MjU5MzExNi4uZjYxYTIwOThhOTBiOGQ5OWYzMGUxMzI1OGY5
ZTM2NDU4ZmNkMWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcApAQCAtNjgsNiArNjgsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVG
aXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgRGVjb2Rlcjo6cmV3aW5kKHNpemVfdCBzaXplKQoreworICAgIGlmICht
X2J1ZmZlclBvc2l0aW9uIC0gc2l6ZSA+PSBtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlclBv
c2l0aW9uIC09IHNpemU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBEZWNvZGVyJiBEZWNvZGVyOjpkZWNv
ZGVOdW1iZXIoc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA4NzYwNjJkMzQwMWI0YmQz
Mjk3NmVjMWMxMWNkMzI5YjkxZmIzN2NmLi4yYTYzN2I4YTcyNzE2MDUzYTY2MjhmYTNhZTRjZDZh
N2MwNzFhMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyRW5kIC0gbV9idWZmZXI7IH0KICAgICBzaXplX3QgY3Vy
cmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlcjsg
fQorICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBy
ZXdpbmQoc2l6ZV90KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCA0ZjRj
ODZhNTcxZTYxOWJiZjg1ODA4OTUzYjVlYmM1YjlmOTE0NTUyLi43MjRjMzRiMzA3MGVhYmI1NTBj
MzIxMGJhMjc2ZGY0OTYxODk1OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQxLDYgKzQx
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdWludDY0X3QgaGlnaGxp
Z2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUg
IChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCisKIHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVj
b2RlcigpOwpAQCAtODEsNyArODMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+CiAgICAgaWYg
KCF0ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05MSw2ICs5MywxMiBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9k
ZVBhdGhDb21wb25lbnQ+CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBzdGF0
aWNfYXNzZXJ0KCFFbmNvZGVyOjppc0lQQ0VuY29kZXIsICJBcHBIaWdobGlnaHRSYW5nZURhdGEg
c2hvdWxkIG5vdCBiZSB1c2VkIGJ5IElQQzo6RW5jb2RlciIpOworICAgIGNvbnN0ZXhwciB1aW50
NjRfdCBjdXJyZW50QXBwSGlnaGxpZ2h0VmVyc2lvbiA9IDE7CisgICAgCisgICAgZW5jb2RlciA8
PCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAgIGVuY29kZXIgPDwgY3VycmVudEFwcEhpZ2hs
aWdodFZlcnNpb247CisgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8
PCBtX3RleHQ7CiAgICAgZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOwogICAgIGVuY29kZXIg
PDwgbV9zdGFydE9mZnNldDsKQEAgLTEwMCw2ICsxMDgsMzMgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb24KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CisgICAgc3RhdGljX2Fzc2VydCghRGVjb2Rlcjo6aXNJUENEZWNvZGVyLCAiQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhIHNob3VsZCBub3QgYmUgdXNlZCBieSBJUEM6OkRlY29kZXIiKTsKKyAg
ICAKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgIAorICAgIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAgIGRl
Y29kZXIgPj4gZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNvZGVk
SGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBpZiAoZGVjb2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmUgIT0gaGlnaGxpZ2h0RmlsZVNpZ25h
dHVyZSkgeworICAgICAgICBpZiAoIWRlY29kZXIucmV3aW5kKHNpemVvZihoaWdobGlnaHRGaWxl
U2lnbmF0dXJlKSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2
ZXJzaW9uID0gMDsKKyAgICB9CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50
aWZpZXI7CisgICAgaWYgKHZlcnNpb24pCisgICAgICAgIGlkZW50aWZpZXIgPSBudWxsU3RyaW5n
KCk7CisgICAgZWxzZSB7CisgICAgICAgIGRlY29kZXIgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYg
KCF2ZXJzaW9uKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgCisg
ICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQpA
QCAtMTEwLDcgKzE0NSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFzdGFy
dENvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFy
dE9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMCwxMyArMTU1LDEy
IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBl
bmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZW5kT2Zmc2V0OwogICAgIGRl
Y29kZXIgPj4gZW5kT2Zmc2V0OwogICAgIGlmICghZW5kT2Zmc2V0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUo
KnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAq
ZW5kT2Zmc2V0IH19OworICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92
ZSgqdGV4dCksIFdURk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3Zl
KCplbmRDb250YWluZXIpLCAqZW5kT2Zmc2V0IH19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IDE4MzQwMzc2NjNhNzQ1YzUxZTFhOTA3NWI0NWM4MTRk
ZmEzMzQyZDAuLmYxZmE1MjRmYzE4YjE4MjQ0OTc3NzJhZmEzYmI5ZGIzYzYzMWZjMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oCkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGlk
ZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKICAgICAgICAgU3RyaW5nIHRleHRE
YXRhOwotICAgICAgICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07CisgICAgICAgIHVpbnQzMl90
IHBhdGhJbmRleCB7IDAgfTsKIAotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBl
bGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWduZWQg
aW5kZXgpCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlm
aWVyLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1aW50MzJfdCBpbmRleCkKICAgICAg
ICAgICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKICAgICAgICAg
ICAgICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgICAgICwgdGV4dERhdGEoV1RG
TW92ZShkYXRhKSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQg
aW5kZXgpCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1aW50MzJf
dCBpbmRleCkKICAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKICAg
ICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkKICAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkK
QEAgLTc5LDggKzc5LDkgQEAgcHVibGljOgogCiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNv
bnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYpID0gZGVmYXVsdDsKICAgICBBcHBIaWdobGlnaHRS
YW5nZURhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYm
IHRleHQsIE5vZGVQYXRoJiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBO
b2RlUGF0aCYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1f
dGV4dChXVEZNb3ZlKHRleHQpKQorICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiBp
ZGVudGlmaWVyLCBTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1aW50
NjRfdCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVuZE9m
ZnNldCkKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKKyAgICAg
ICAgLCBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKICAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKFdU
Rk1vdmUoc3RhcnRDb250YWluZXIpKQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZz
ZXQpCiAgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQpAQCAt
ODgsOCArODksOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5l
ciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQodGV4dCkKKyAgICBBcHBIaWdobGln
aHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIGNv
bnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVuZE9mZnNldCkKKyAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3RleHQodGV4dCkKICAgICAg
ICAgLCBtX3N0YXJ0Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVyKQogICAgICAgICAsIG1fc3RhcnRP
ZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFpbmVy
KQpAQCAtOTcsMTEgKzk5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAgICAgY29uc3Qg
Tm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbnRhaW5l
cjsgfQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9m
ZnNldDsgfQorICAgIHVpbnQzMl90IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dE9mZnNldDsgfQogICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJl
dHVybiBtX2VuZENvbnRhaW5lcjsgfQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisgICAgdWludDMyX3QgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CkBAIC0xMDksMTEgKzExMiwxMiBAQCBwdWJsaWM6CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9T
aGFyZWRCdWZmZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwogICAgIFN0cmluZyBtX3RleHQ7CiAgICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5lcjsKLSAg
ICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVpbnQzMl90IG1fc3RhcnRPZmZz
ZXQgeyAwIH07CiAgICAgTm9kZVBhdGggbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9l
bmRPZmZzZXQgeyAwIH07CisgICAgdWludDMyX3QgbV9lbmRPZmZzZXQgeyAwIH07CiB9OwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggNmZiZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0
M2VkMDM1NzJhNy4uNzgwZmM1MTZkZmU1NjkwNTA2MDY2ZDJhYTkyZjNkODNlMDU1YWU3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5o
IgogI2luY2x1ZGUgIlRleHRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
KyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3
ICsyMDQsMTAgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVhdGVBcHBIaWdobGln
aHRSYW5nZURhdGEoY29uc3QgU3RhdGljUmFuZ2UmIHJhbmcKIHsKICAgICBhdXRvIHRleHQgPSBw
bGFpblRleHQocmFuZ2UpOwogICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdMZW5ndGgpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKwogICAg
IHJldHVybiB7CisgICAgICAgIGlkZW50aWZpZXIsCiAgICAgICAgIHRleHQsCiAgICAgICAgIG1h
a2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0YXJ0
T2Zmc2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDM3YjQzZTljN2M1ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjM0NDk0MDJl
Y2MzYjJkYjA4OTk2OGMyOThiNDUzMDNjNDc3ZThmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NjEzLDcgKzc2MTMsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8
U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVz
dG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+
c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hp
Z2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJl
c3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0
YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGln
aGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODU2ZDFhZGM2NzYyYWI4NGU4MDc3NjZl
Mzg3ZWU4YzQwM2Y2MTM0YS4uZDAwZDAyNjhjMmEyZDllNTNlOTgzMDAyMjY0NzkzZDQ3MDcwNGQz
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFw
cEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhI
VE1MKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA2LTIyICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGppdENvbXBpbGVBbmRTZXRI
ZXVyaXN0aWNzIHNob3VsZG4ndCByZXR1cm4gdHJ1ZSB3aGVuIHdlIGZhaWwgdG8gY29tcGlsZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhp
Z2hsaWdodHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBw
SGlnaGxpZ2h0cy5tbQppbmRleCBjZmU3OWQyZmU3NWFmNWM3OGE5NWJmOTk5MzEyZDkzN2NhMjNk
NDEyLi4yMGExNWMyMjRjMWVlOGNkNjA2N2QzN2NkMGJlM2UyZTc2YWYxZDZkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxp
Z2h0cy5tbQpAQCAtNTYsOTIgKzU2LDE2MyBAQCBAZW5kCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3Jl
KQorUmV0YWluUHRyPF9XS0FwcEhpZ2hsaWdodD4gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwo
TlNTdHJpbmcgKkhUTUxTdHJpbmcsIE5TU3RyaW5nICpqYXZhU2NyaXB0LCBOU1N0cmluZyAqaGln
aGxpZ2h0VGV4dCkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhpZ2hs
aWdodERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgYXV0byB3ZWJW
aWV3UmVzdG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OwogICAgIFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
VGVzdCJdOwotICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiXTsKLSAgICBfX2Jsb2NrIGJvb2wg
ZmluaXNoZWQgPSBOTzsKKyAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6SFRNTFN0cmluZ107CisgICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpqYXZhU2NyaXB0XTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tBcHBIaWdo
bGlnaHQ+IHJlc3VsdEhpZ2hsaWdodDsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwog
ICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpk
ZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3Jv
dXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgewogICAgICAgICBFWFBFQ1RfRVEoZGVs
ZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGhpZ2hsaWdodCk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwg
QCJUZXN0Iik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgaGlnaGxp
Z2h0VGV4dCk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsK
LSAgICAgICAgCi0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCJUZXN0Il07Ci0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hs
aWdodHM6QFsgaGlnaGxpZ2h0LmhpZ2hsaWdodCBdXTsKLSAgICAgICAgCi0gICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9v
bCB7Ci0gICAgICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1
ZSA9PSAxOwotICAgICAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxh
dGVkLiIpOwotICAgICAgICAKLSAgICAgICAgZmluaXNoZWQgPSBZRVM7CisgICAgICAgIHJlc3Vs
dEhpZ2hsaWdodCA9IGhpZ2hsaWdodDsKKyAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAg
ICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFwcEhpZ2hsaWdodF07Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICByZXR1cm4gcmVzdWx0SGlnaGxpZ2h0OwogfQogCi1URVNUKEFwcEhpZ2hsaWdodHMs
IEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwpCitSZXRhaW5QdHI8V0tXZWJW
aWV3PiBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dpdGhIVE1MKE5TU3RyaW5nICpIVE1M
U3RyaW5nKQogewogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBhdXRvIHdlYlZpZXdS
ZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0g
ICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2
IHN0eWxlPSdoZWlnaHQ6IDEwMDBweCc+PC9kaXY+VGVzdCJdOwotICAgIFt3ZWJWaWV3Q3JlYXRl
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2Vs
ZWN0QWxsJykiXTsKLSAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBOTzsKLSAgICBbZGVsZWdh
dGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJW
aWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJl
cXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKLSAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmll
dywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGln
aHQpOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOwot
ICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7CisgICAgW3dlYlZp
ZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpIVE1MU3RyaW5nXTsKKyAgICAK
KyAgICByZXR1cm4gd2ViVmlld1Jlc3RvcmU7Cit9CisKK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBw
SGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0
ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1Nl
bGVjdEFsbCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdl
YlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CisgICAgCisgICAgW3dlYlZp
ZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAW1toaWdobGlnaHQgaGlnaGxpZ2h0XV1d
OworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9n
Z2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdo
dHMoKSJdLmludFZhbHVlID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRv
IGJlIHBvcHVsYXRlZC4iKTsKK30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlQW5kU2Nyb2xsKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRl
QXBwSGlnaGxpZ2h0V2l0aEhUTUwoQCI8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMDAwcHgnPjwvZGl2
PlRlc3QiLCBAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSIsIEAiVGVzdCIpOwor
ICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBjcmVhdGVXZWJWaWV3Rm9yQXBwSGlnaGxpZ2h0c1dp
dGhIVE1MKEAiPGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAwMHB4Jz48L2Rpdj5UZXN0Iik7CisKKyAg
ICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDpbaGlnaGxp
Z2h0IGhpZ2hsaWdodF1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRp
dGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3
UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9m
QXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhp
Z2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgIEVYUEVDVF9ORSgwLCBbW3dlYlZpZXdS
ZXN0b3JlIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNldCJdIGZsb2F0
VmFsdWVdKTsKK30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRmFp
bHVyZSkKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1M
KEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0Iik7
CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRz
V2l0aEhUTUwoQCJOb3QgVGhlIFNhbWUiKTsKKyAgICAKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jl
c3RvcmVBcHBIaWdobGlnaHRzOkBbW2hpZ2hsaWdodCBoaWdobGlnaHRdXV07CisgICAgCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAt
PiBib29sIHsKKyAgICAgICAgcmV0dXJuICFbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZh
bHVlOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyBub3QgdG8gYmUgcG9wdWxhdGVk
LiIpOworfQorCisvLyBFbnN1cmUgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIGJsb2IgZm9y
bWF0IGNhbiBhZGQgYWRkaXRpb25hbCBkYXRhIGFuZCBzdGlsbCBiZSBkZWNvZGVkIHN1Y2Nlc3Nm
dWxseSBieSB2ZXJzaW9uIG9mIFdlYktpdCB0aGF0IG9ubHkga25vdyBhYm91dCB0aGUgY3VycmVu
dCBmb3JtYXQuCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3Rv
cmVXaXRoRXh0cmFCeXRlcykKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhpZ2hs
aWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcp
IiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JB
cHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAotICAgICAgICBbd2ViVmll
d1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT0naGVpZ2h0
OiAxMDAwcHgnPjwvZGl2PlRlc3QiXTsKLSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodF07CisgICAgTlNNdXRh
YmxlRGF0YSAqbW9kaWZpZWRIaWdobGlnaHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YVdpdGhE
YXRhOiBbaGlnaGxpZ2h0IGhpZ2hsaWdodF0gXTsKKyAgICBbbW9kaWZpZWRIaWdobGlnaHREYXRh
IGFwcGVuZERhdGE6W0AiVGVzdFYyRGF0YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddXTsKKyAgICAKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hs
aWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7Cisg
ICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7Cisg
ICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKK30KKwor
Ly8gT2xkZXIgdmVyc2lvbnMgb2YgV2ViS2l0IG5lZWQgdG8gYmUgYWJsZSB0byBkZWNvZGUgYmxv
YnMgZW5jb2RlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBXZWJLaXQsIHNvIGVuc3VyZSB0aGF0IGlz
IHBvc3NpYmxlLgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0
b3JlV2l0aExhdGVyVmVyc2lvbikKK3sKKyAgICBhdXRvIGhpZ2hsaWdodCA9IGNyZWF0ZUFwcEhp
Z2hsaWdodFdpdGhIVE1MKEAiVGVzdCIsIEAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFs
bCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdG
b3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCJUZXN0Iik7CiAgICAgICAgIAotICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJv
b2wgewotICAgICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFs
dWUgPT0gMTsKLSAgICAgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVs
YXRlZC4iKTsKLSAgICAgICAgRVhQRUNUX05FKDAsIFtbd2ViVmlld1Jlc3RvcmUgb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhZ2VZT2Zmc2V0Il0gZmxvYXRWYWx1ZV0pOworICAgIHVp
bnQ2NF90IG1heHZlcnNpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7
CisgICAgTlNEYXRhICp2ZXJzaW9uRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczombWF4dmVy
c2lvbiBsZW5ndGg6c2l6ZW9mKG1heHZlcnNpb24pXTsKKyAgICBOU011dGFibGVEYXRhICptb2Rp
ZmllZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhV2l0aERhdGE6W2hpZ2hsaWdo
dCBoaWdobGlnaHRdXTsKKworICAgIFttb2RpZmllZEhpZ2hsaWdodERhdGEgcmVwbGFjZUJ5dGVz
SW5SYW5nZTpOU01ha2VSYW5nZShzaXplb2YodWludDY0X3QpLCBzaXplb2YobWF4dmVyc2lvbikp
IHdpdGhCeXRlczp2ZXJzaW9uRGF0YV07CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9y
ZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4g
Ym9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVl
ID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4i
KTsKK30KKworLy8gRW5zdXJlIHRoYXQgc2hvcnRlciBkYXRhIGJsb2JzIHdpbGwgY29ycmVjdGx5
IGZhaWwgdG8gZGVjb2RlLgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVB
bmRSZXN0b3JlQW5kRHJvcEJ5dGVzKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBw
SGlnaGxpZ2h0V2l0aEhUTUwoQCJUZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0
QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmll
d0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIlRlc3QiKTsKICAgICAgICAgCi0gICAgICAgIGZp
bmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGln
aHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIE5TTXV0
YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRo
Qnl0ZXM6W2hpZ2hsaWdodCBoaWdobGlnaHRdLmJ5dGVzIGxlbmd0aDpbaGlnaGxpZ2h0IGhpZ2hs
aWdodF0ubGVuZ3RoIC8gMl07CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7
CisgICAgICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKKyAg
ICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgbm90IHRvIGJlIHBvcHVsYXRlZC4iKTsKIH0K
IAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRmFpbHVyZSkKKy8vIEVu
c3VyZSB0aGF0IHRoZSBvcmlnaW5hbCBkYXRhIGZvcm1hdCB3aWxsIGFsd2F5cyBiZSBhYmxlIHRv
IGJlIGRlY29kZWQgaW4gdGhlIGZ1dHVyZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxp
Z2h0UmVzdG9yZUZyb21TdG9yYWdlVjApCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gd2ViVmll
d0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZXNbXSA9IHsweDA0LCAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1LCAweDAw
LCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAweDA0LCAw
eDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAw
eDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwfTsKKyAgICAKKyAgICBO
U0RhdGEgKnN0b3JlZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6JmJ5dGVzIGxlbmd0aDo4
N107CisKICAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdo
dERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJd
OwotICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9y
ZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0Fw
cEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCkgewotICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3
Q3JlYXRlLmdldCgpKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAg
ICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7Ci0gICAgICAgIEVY
UEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKLSAgICAgICAgCi0gICAgICAgIFt3
ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJOb3QgdGhlIHNhbWUi
XTsKLSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdo
bGlnaHQuaGlnaGxpZ2h0IF1dOwotICAgICAgICAKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKLSAgICAgICAg
fSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAg
Ci0gICAgICAgIGZpbmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9h
ZGRBcHBIaWdobGlnaHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQp
OworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRl
c3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIHN0b3Jl
ZERhdGEgXV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlv
bldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVz
dG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBw
SGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hs
aWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworfQorCisKKy8vIEVuc3VyZSB0aGF0IHRoZSBWMSBk
YXRhIGZvcm1hdCB3aWxsIGFsd2F5cyBiZSBhYmxlIHRvIGJlIGRlY29kZWQgaW4gdGhlIGZ1dHVy
ZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZyb21TdG9yYWdlVjEp
Cit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBieXRlc1tdID0gezB4MzEsIDB4MzIsIDB4
MzAsIDB4MzIsIDB4NDgsIDB4NTAsIDB4NDEsIDB4NDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MzEsIDB4MzYsIDB4MzAsIDB4NjEsIDB4MzYsIDB4MzAsIDB4MzEsIDB4NjIsIDB4MmQsIDB4MzEs
IDB4NjIsIDB4MzcsIDB4MzIsIDB4MmQsIDB4MzQsIDB4MzEsIDB4MzEsIDB4MzgsIDB4MmQsIDB4
NjIsIDB4MzYsIDB4NjQsIDB4MzEsIDB4MmQsIDB4MzksIDB4MzAsIDB4MzIsIDB4NjIsIDB4Mzcs
IDB4MzQsIDB4NjYsIDB4NjUsIDB4NjEsIDB4MzYsIDB4MzYsIDB4MzEsIDB4MDQsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDEsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQs
IDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4Nzgs
IDB4NzQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4
NzQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDB9OworICAg
IAorICAgIE5TRGF0YSAqc3RvcmVkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczomYnl0ZXMg
bGVuZ3RoOjE0NF07CisKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgc3RvcmVkRGF0YSBdXTsKKyAgICAKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wg
eworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAx
OworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432628</attachid>
            <date>2021-06-30 14:52:08 -0700</date>
            <delta_ts>2021-06-30 16:54:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227279-20210630145207.patch</filename>
            <type>text/plain</type>
            <size>28814</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNiYWZlNWRiNTdkMDAyMzMwODI3M2Ex
OGI4NTVlYWYzNGYwZTk2MGQuLmRjMjgxMGJlNjBkODg5ZTQyYjU3NTliMjE3MDc3MDE4ZTg5YWEx
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMjkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdh
bl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSUQgYW5kIHZlcnNpb25pbmcgc3Vw
cG9ydCBmb3IgQXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBBbGxvdyBQZXJzaXN0ZW50RGVjb2RlcnMgdG8gcmV3aW5kLCB0byBoZWxwIHN1
cHBvcnQgdjAgaGlnaGxpZ2h0IGRhdGEuCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6
RGVjb2Rlcik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpyZXdpbmQpOgor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgorCiAyMDIxLTA2
LTIyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGppdENvbXBp
bGVBbmRTZXRIZXVyaXN0aWNzIHNob3VsZG4ndCByZXR1cm4gdHJ1ZSB3aGVuIHdlIGZhaWwgdG8g
Y29tcGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhlYTgzNjEwZDVlMjI5NDI5ZTA1ODNmMjVjYTBjYzg4ZDNj
MTI5MzcuLmEzMTYyYjA0ZGM4MjY2ODczMjg3NTQ0ZjE1NTVmODY1Y2U4ZjMzYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMS0wNi0yOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dh
cmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0
IGZvciBBcHBIaWdobGlnaHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjcyNzkKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0UmVzdG9yZUZyb21TdG9yYWdlCisgICAg
ICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZERyb3BCeXRl
cworICAgICAgICBBcHBIaWdobGlnaHRzLkFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVXaXRo
TGF0ZXJWZXJzaW9uCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0Q3JlYXRlQW5k
UmVzdG9yZVdpdGhFeHRyYUJ5dGVzCisgICAgICAgIEFwcEhpZ2hsaWdodHMuQXBwSGlnaGxpZ2h0
UmVzdG9yZUZyb21TdG9yYWdlVjAKKyAgICAgICAgQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRS
ZXN0b3JlRnJvbVN0b3JhZ2VWMQorCisgICAgICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhp
Z2hsaWdodCBEYXRhIHRvIGFsbG93IGZvciBhY2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAg
ICAgICAgaGlnaGxpZ2h0cywgYXMgd2VsbCBhcyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQg
ZnV0dXJlLXByb29mLiBTdXBwb3J0IGRlY29kaW5nIHYwIAorICAgICAgICBoaWdobGlnaHRzIGFz
IHdlbGwuCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0
aENvbXBvbmVudDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9k
ZVBhdGhDb21wb25lbnQ6Ok5vZGVQYXRoQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OnN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5kT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisKIDIwMjEtMDYt
MjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAoU2FmYXJpIDE0KTogU3VibWVudXMgb24gaHR0cHM6Ly9jb2RlbGVhcm4uY2F0IGRv
bid0IHNob3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZGRlOTcwMjZhNmYwYjU1OTcwMTdlYTFiZTA2ODY4ZTMzY2Ji
NWIwYi4uMzdmNGZiYjczNTdmNjJkNjhmZDUxZjgyNmRkYzY0MTZmNWM3ZGI3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNi0yOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRu
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBJRCBhbmQgdmVyc2lvbmluZyBzdXBwb3J0IGZv
ciBBcHBIaWdobGlnaHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjcyNzkKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFJlZm9ybWF0IHRoZSBzdG9yYWdlIG9mIEhpZ2hsaWdodCBEYXRhIHRvIGFsbG93IGZvciBh
Y2N1cmF0ZSBkZWxldGlvbiBvZiBhY3RpdmUKKyAgICAgICAgaGlnaGxpZ2h0cywgYXMgd2VsbCBh
cyBtYWtpbmcgdGhlbSBtb3JlIHJvYnVzdCBhbmQgZnV0dXJlLXByb29mLgorCisgICAgICAgIEFs
c28gZm91bmQgYW4gaXNzdWUgd2l0aCBjcmVhdGluZyBTaGFyZWRCdWZmZXJzIGZyb20gdGhlIG1l
bW9yeSBtYXAsIGluIHRoYXQgdGhlIGlwY0hhbmRsZSBzaXplCisgICAgICAgIHNob3VsZCBiZSB1
c2VkIGluc3RlYWQgb2YgdGhlIHNoYXJlZE1lbW9yeS0+c2l6ZSgpLiAKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0wNi0wNyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVwc3RyZWFt
IEdyb3VwQWN0aXZpdGllc0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKaW5kZXggYzA0YmEzZjJhYzFjYjE2MjI1ZmI4Nzg0
Yjk5ZDUwYTc1MjU5MzExNi4uZjYxYTIwOThhOTBiOGQ5OWYzMGUxMzI1OGY5ZTM2NDU4ZmNkMWI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVy
LmNwcApAQCAtNjgsNiArNjgsMTUgQEAgYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERh
dGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgRGVjb2Rlcjo6cmV3aW5kKHNpemVfdCBzaXplKQoreworICAgIGlmIChtX2J1ZmZlclBvc2l0
aW9uIC0gc2l6ZSA+PSBtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlclBvc2l0aW9uIC09IHNp
emU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBEZWNvZGVyJiBEZWNvZGVyOjpkZWNvZGVOdW1iZXIoc3Rk
OjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCA4NzYwNjJkMzQwMWI0YmQzMjk3NmVjMWMxMWNk
MzI5YjkxZmIzN2NmLi4yYTYzN2I4YTcyNzE2MDUzYTY2MjhmYTNhZTRjZDZhN2MwNzFhMTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKQEAg
LTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyRW5kIC0gbV9idWZmZXI7IH0KICAgICBzaXplX3QgY3VycmVudE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlcjsgfQorICAgIAorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCByZXdpbmQoc2l6ZV90
KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJp
ZnlDaGVja3N1bSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCA0ZjRjODZhNTcxZTYxOWJi
Zjg1ODA4OTUzYjVlYmM1YjlmOTE0NTUyLi43MjRjMzRiMzA3MGVhYmI1NTBjMzIxMGJhMjc2ZGY0
OTYxODk1OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25h
dHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVAp
cGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCisKIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwpAQCAt
ODEsNyArODMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+CiAgICAgaWYgKCF0ZXh0RGF0YSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHBhdGhJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXRoSW5kZXg7CiAg
ICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC05MSw2ICs5MywxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25l
bnQ+CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBzdGF0aWNfYXNzZXJ0KCFF
bmNvZGVyOjppc0lQQ0VuY29kZXIsICJBcHBIaWdobGlnaHRSYW5nZURhdGEgc2hvdWxkIG5vdCBi
ZSB1c2VkIGJ5IElQQzo6RW5jb2RlciIpOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBjdXJyZW50
QXBwSGlnaGxpZ2h0VmVyc2lvbiA9IDE7CisgICAgCisgICAgZW5jb2RlciA8PCBoaWdobGlnaHRG
aWxlU2lnbmF0dXJlOworICAgIGVuY29kZXIgPDwgY3VycmVudEFwcEhpZ2hsaWdodFZlcnNpb247
CisgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBtX3RleHQ7CiAg
ICAgZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOwogICAgIGVuY29kZXIgPDwgbV9zdGFydE9m
ZnNldDsKQEAgLTEwMCw2ICsxMDgsMzMgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CisgICAg
c3RhdGljX2Fzc2VydCghRGVjb2Rlcjo6aXNJUENEZWNvZGVyLCAiQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhIHNob3VsZCBub3QgYmUgdXNlZCBieSBJUEM6OkRlY29kZXIiKTsKKyAgICAKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uOworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGRlY29kZWRIaWdobGlnaHRGaWxlU2lnbmF0dXJlOworICAgIGRlY29kZXIgPj4gZGVj
b2RlZEhpZ2hsaWdodEZpbGVTaWduYXR1cmU7CisgICAgaWYgKCFkZWNvZGVkSGlnaGxpZ2h0Rmls
ZVNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoZGVjb2Rl
ZEhpZ2hsaWdodEZpbGVTaWduYXR1cmUgIT0gaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSkgeworICAg
ICAgICBpZiAoIWRlY29kZXIucmV3aW5kKHNpemVvZihoaWdobGlnaHRGaWxlU2lnbmF0dXJlKSkp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB2ZXJzaW9uID0gMDsK
KyAgICB9CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAg
aWYgKHZlcnNpb24pCisgICAgICAgIGlkZW50aWZpZXIgPSBudWxsU3RyaW5nKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIGRlY29kZXIgPj4gdmVyc2lvbjsKKyAgICAgICAgaWYgKCF2ZXJzaW9uKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIGRlY29k
ZXIgPj4gaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
dGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQpAQCAtMTEwLDcgKzE0
NSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFzdGFydENvbnRhaW5lcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHN0YXJ0T2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0T2Zmc2V0
OwogICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFydE9mZnNldCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTEyMCwxMyArMTU1LDEyIEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBI
aWdobGlnaHRSYW5nZURhCiAgICAgaWYgKCFlbmRDb250YWluZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZW5kT2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZW5k
T2Zmc2V0OwogICAgIGlmICghZW5kT2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUoKnN0YXJ0Q29udGFp
bmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAqZW5kT2Zmc2V0IH19
OworICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdGV4dCksIFdU
Rk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWlu
ZXIpLCAqZW5kT2Zmc2V0IH19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oCmluZGV4IDE4MzQwMzc2NjNhNzQ1YzUxZTFhOTA3NWI0NWM4MTRkZmEzMzQyZDAuLmYx
ZmE1MjRmYzE4YjE4MjQ0OTc3NzJhZmEzYmI5ZGIzYzYzMWZjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
CkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAg
ICAgICAgIFN0cmluZyBub2RlTmFtZTsKICAgICAgICAgU3RyaW5nIHRleHREYXRhOwotICAgICAg
ICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07CisgICAgICAgIHVpbnQzMl90IHBhdGhJbmRleCB7
IDAgfTsKIAotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAg
ICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1aW50MzJfdCBpbmRleCkKICAgICAgICAgICAgIDogaWRl
bnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKICAgICAgICAgICAgICwgbm9kZU5h
bWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAg
ICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1aW50MzJfdCBpbmRleCkKICAg
ICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKICAgICAgICAgICAgICwg
bm9kZU5hbWUobmFtZSkKICAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkKQEAgLTc5LDggKzc5
LDkgQEAgcHVibGljOgogCiAgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YSYpID0gZGVmYXVsdDsKICAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoKSA9
IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRleHQsIE5vZGVQ
YXRoJiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2RlUGF0aCYmIGVu
ZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dChXVEZNb3Zl
KHRleHQpKQorICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiBpZGVudGlmaWVyLCBT
dHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1aW50NjRfdCBzdGFydE9m
ZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVuZE9mZnNldCkKKyAgICAg
ICAgOiBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKKyAgICAgICAgLCBtX3RleHQo
V1RGTW92ZSh0ZXh0KSkKICAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRD
b250YWluZXIpKQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgICAg
ICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQpAQCAtODgsOCArODksOSBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBtX3RleHQodGV4dCkKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQ
YXRoJiBzdGFydENvbnRhaW5lciwgdWludDY0X3Qgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRo
JiBlbmRDb250YWluZXIsIHVpbnQ2NF90IGVuZE9mZnNldCkKKyAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3RleHQodGV4dCkKICAgICAgICAgLCBtX3N0YXJ0
Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVyKQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCiAgICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFpbmVyKQpAQCAtOTcsMTEg
Kzk5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5n
JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAgICAgY29uc3QgTm9kZVBhdGgmIHN0
YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbnRhaW5lcjsgfQotICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQorICAg
IHVpbnQzMl90IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQog
ICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2VuZENv
bnRhaW5lcjsgfQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5k
T2Zmc2V0OyB9CisgICAgdWludDMyX3QgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRP
ZmZzZXQ7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CkBAIC0xMDksMTEg
KzExMiwxMiBAQCBwdWJsaWM6CiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtX3RleHQ7CiAgICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBt
X3N0YXJ0T2Zmc2V0IHsgMCB9OworICAgIHVpbnQzMl90IG1fc3RhcnRPZmZzZXQgeyAwIH07CiAg
ICAgTm9kZVBhdGggbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgeyAw
IH07CisgICAgdWludDMyX3QgbV9lbmRPZmZzZXQgeyAwIH07CiB9OwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKaW5kZXggNmZiZTBiMTViODk4ZDYxODI0ZTFlNzJjNTQ2MmY0M2VkMDM1NzJhNy4u
NzgwZmM1MTZkZmU1NjkwNTA2MDY2ZDJhYTkyZjNkODNlMDU1YWU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgogI2luY2x1ZGUg
IlRleHRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3ICsyMDQsMTAgQEAg
c3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURhdGEo
Y29uc3QgU3RhdGljUmFuZ2UmIHJhbmcKIHsKICAgICBhdXRvIHRleHQgPSBwbGFpblRleHQocmFu
Z2UpOwogICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdMZW5ndGgpOworICAgIGF1dG8gaWRl
bnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKwogICAgIHJldHVybiB7Cisg
ICAgICAgIGlkZW50aWZpZXIsCiAgICAgICAgIHRleHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgm
cmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM3YjQz
ZTljN2M1ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjM0NDk0MDJlY2MzYjJkYjA4OTk2
OGMyOThiNDUzMDNjNDc3ZThmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC03NjEzLDcgKzc2MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5
OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9s
bFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9
PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8p
OworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09
IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7
CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODU2ZDFhZGM2NzYyYWI4NGU4MDc3NjZlMzg3ZWU4YzQwM2Y2
MTM0YS4uMjhlYjEzZWZlNzE4YTc2NzQ4OTgwNmRmOWI0MjJiMmY3Yzc1NGE3MyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA2LTI5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIElEIGFuZCB2ZXJzaW9uaW5nIHN1cHBvcnQgZm9yIEFwcEhpZ2hsaWdodHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzI3OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNyZWF0ZUFwcEhpZ2hsaWdodFdpdGhIVE1MKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDYtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3Mgc2hvdWxk
bid0IHJldHVybiB0cnVlIHdoZW4gd2UgZmFpbCB0byBjb21waWxlCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCmlu
ZGV4IGNmZTc5ZDJmZTc1YWY1Yzc4YTk1YmY5OTkzMTJkOTM3Y2EyM2Q0MTIuLjgxMWVmMTJiYmUy
MGU3OWVmYWEzNTUyY2EzOTcwZDM3Njg5OWI0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCkBAIC01Niw5
MiArNTYsMTYzIEBAIEBlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUKEFw
cEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmUpCitSZXRhaW5QdHI8X1dL
QXBwSGlnaGxpZ2h0PiBjcmVhdGVBcHBIaWdobGlnaHRXaXRoSFRNTChOU1N0cmluZyAqSFRNTFN0
cmluZywgTlNTdHJpbmcgKmphdmFTY3JpcHQsIE5TU3RyaW5nICpoaWdobGlnaHRUZXh0KQogewog
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXdD
cmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2Vi
Vmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07Ci0gICAgW3dl
YlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWND
b21tYW5kKCdTZWxlY3RBbGwnKSJdOwotICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwor
ICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpIVE1MU3RyaW5n
XTsKKyAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OmphdmFT
Y3JpcHRdOworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0FwcEhpZ2hsaWdodD4gcmVzdWx0SGln
aGxpZ2h0OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAgW2RlbGVnYXRlIHNl
dFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywg
X1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwgQk9PTCByZXF1ZXN0
T3JpZ2luYXRlZEluQXBwKSB7CiAgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdl
YlZpZXdDcmVhdGUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsK
LSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBoaWdobGlnaHRUZXh0KTsKICAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodC5oaWdobGlnaHQpOwotICAgICAgICAKLSAgICAg
ICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsK
LSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdobGln
aHQuaGlnaGxpZ2h0IF1dOwotICAgICAgICAKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAgICAg
IHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
dGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7Ci0gICAgICAg
IH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7Ci0gICAgICAg
IAotICAgICAgICBmaW5pc2hlZCA9IFlFUzsKKyAgICAgICAgcmVzdWx0SGlnaGxpZ2h0ID0gaGln
aGxpZ2h0OworICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBbd2ViVmlld0NyZWF0
ZSBfYWRkQXBwSGlnaGxpZ2h0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlz
aGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIHJldHVybiBy
ZXN1bHRIaWdobGlnaHQ7CiB9CiAKLVRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3Jl
YXRlQW5kUmVzdG9yZUFuZFNjcm9sbCkKK1JldGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZVdlYlZp
ZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoTlNTdHJpbmcgKkhUTUxTdHJpbmcpCiB7CiAgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlld0NyZWF0
ZSBfc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3
Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9J2hlaWdodDog
MTAwMHB4Jz48L2Rpdj5UZXN0Il07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJdOwotICAg
IF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhp
Z2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hs
aWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcCkgewotICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRl
LmdldCgpKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAgICAgIEVY
UEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7Ci0gICAgICAgIEVYUEVDVF9O
T1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkhUTUxTdHJpbmddOworICAgIAorICAgIHJldHVybiB3ZWJW
aWV3UmVzdG9yZTsKK30KKworVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVB
bmRSZXN0b3JlKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0
aEhUTUwoQCJUZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRl
c3QiKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hs
aWdodHNXaXRoSFRNTChAIlRlc3QiKTsKKyAgICAKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOkBbW2hpZ2hsaWdodCBoaWdobGlnaHRdXV07CisgICAgCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBi
b29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUg
PT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIp
OworfQorCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVB
bmRTY3JvbGwpCit7CisgICAgYXV0byBoaWdobGlnaHQgPSBjcmVhdGVBcHBIaWdobGlnaHRXaXRo
SFRNTChAIjxkaXYgc3R5bGU9J2hlaWdodDogMTAwMDBweCc+PC9kaXY+VGVzdCIsIEAiZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIiwgQCJUZXN0Iik7CisgICAgYXV0byB3ZWJWaWV3
UmVzdG9yZSA9IGNyZWF0ZVdlYlZpZXdGb3JBcHBIaWdobGlnaHRzV2l0aEhUTUwoQCI8ZGl2IHN0
eWxlPSdoZWlnaHQ6IDEwMDAwcHgnPjwvZGl2PlRlc3QiKTsKKworICAgIFt3ZWJWaWV3UmVzdG9y
ZSBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OltoaWdobGlnaHQgaGlnaGxpZ2h0XV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmco
WyZdICgpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCki
XS5pbnRWYWx1ZSA9PSAxOworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBw
b3B1bGF0ZWQuIik7CisgICAgRVhQRUNUX05FKDAsIFtbd2ViVmlld1Jlc3RvcmUgb2JqZWN0QnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInBhZ2VZT2Zmc2V0Il0gZmxvYXRWYWx1ZV0pOworfQorCitU
RVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodFJlc3RvcmVGYWlsdXJlKQoreworICAgIGF1
dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwoQCJUZXN0IiwgQCJkb2N1
bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZp
ZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIk5vdCBU
aGUgU2FtZSIpOworICAgIAorICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdo
dHM6QFtbaGlnaGxpZ2h0IGhpZ2hsaWdodF1dXTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgeworICAgICAg
ICByZXR1cm4gIVt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
aW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWU7CisgICAgfSwgMiwg
QCJFeHBlY3RlZCBIaWdobGlnaHRzIG5vdCB0byBiZSBwb3B1bGF0ZWQuIik7Cit9CisKKy8vIEVu
c3VyZSB0aGF0IGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgYmxvYiBmb3JtYXQgY2FuIGFkZCBhZGRp
dGlvbmFsIGRhdGEgYW5kIHN0aWxsIGJlIGRlY29kZWQgc3VjY2Vzc2Z1bGx5IGJ5IHZlcnNpb24g
b2YgV2ViS2l0IHRoYXQgb25seSBrbm93IGFib3V0IHRoZSBjdXJyZW50IGZvcm1hdC4KK1RFU1Qo
QXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZVdpdGhFeHRyYUJ5dGVz
KQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwoQCJU
ZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsKKyAg
ICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNXaXRo
SFRNTChAIlRlc3QiKTsKICAgICAgICAgCi0gICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMDBweCc+PC9kaXY+
VGVzdCJdOwotICAgICAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhp
Z2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0XTsKKyAgICBOU011dGFibGVEYXRhICptb2RpZmll
ZEhpZ2hsaWdodERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhV2l0aERhdGE6IFtoaWdobGlnaHQg
aGlnaGxpZ2h0XSBdOworICAgIFttb2RpZmllZEhpZ2hsaWdodERhdGEgYXBwZW5kRGF0YTpbQCJU
ZXN0VjJEYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAg
IAorICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0
Il07CisgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBtb2RpZmll
ZEhpZ2hsaWdodERhdGEgXV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZv
ckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3
ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51
bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVj
dGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworfQorCisvLyBPbGRlciB2ZXJzaW9u
cyBvZiBXZWJLaXQgbmVlZCB0byBiZSBhYmxlIHRvIGRlY29kZSBibG9icyBlbmNvZGVkIG9uIG5l
d2VyIHZlcnNpb25zIG9mIFdlYktpdCwgc28gZW5zdXJlIHRoYXQgaXMgcG9zc2libGUuCitURVNU
KEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVXaXRoTGF0ZXJWZXJz
aW9uKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBwSGlnaGxpZ2h0V2l0aEhUTUwo
QCJUZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiLCBAIlRlc3QiKTsK
KyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmlld0ZvckFwcEhpZ2hsaWdodHNX
aXRoSFRNTChAIlRlc3QiKTsKICAgICAgICAgCi0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJp
bnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOwotICAgICAg
ICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOwotICAgICAg
ICBFWFBFQ1RfTkUoMCwgW1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAicGFnZVlPZmZzZXQiXSBmbG9hdFZhbHVlXSk7CisgICAgdWludDY0X3QgbWF4aW11bVZl
cnNpb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CisgICAgTlNEYXRh
ICp2ZXJzaW9uRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczombWF4aW11bVZlcnNpb24gbGVu
Z3RoOnNpemVvZihtYXhpbXVtVmVyc2lvbildOworICAgIE5TTXV0YWJsZURhdGEgKm1vZGlmaWVk
SGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRoRGF0YTpbaGlnaGxpZ2h0IGhp
Z2hsaWdodF1dOworCisgICAgW21vZGlmaWVkSGlnaGxpZ2h0RGF0YSByZXBsYWNlQnl0ZXNJblJh
bmdlOk5TTWFrZVJhbmdlKHNpemVvZih1aW50NjRfdCksIHNpemVvZihtYXhpbXVtVmVyc2lvbikp
IHdpdGhCeXRlczp2ZXJzaW9uRGF0YV07CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9y
ZUFwcEhpZ2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4g
Ym9vbCB7CisgICAgICAgIHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVl
ID09IDE7CisgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4i
KTsKK30KKworLy8gRW5zdXJlIHRoYXQgc2hvcnRlciBkYXRhIGJsb2JzIHdpbGwgY29ycmVjdGx5
IGZhaWwgdG8gZGVjb2RlLgorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVB
bmRSZXN0b3JlQW5kRHJvcEJ5dGVzKQoreworICAgIGF1dG8gaGlnaGxpZ2h0ID0gY3JlYXRlQXBw
SGlnaGxpZ2h0V2l0aEhUTUwoQCJUZXN0IiwgQCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0
QWxsJykiLCBAIlRlc3QiKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gY3JlYXRlV2ViVmll
d0ZvckFwcEhpZ2hsaWdodHNXaXRoSFRNTChAIlRlc3QiKTsKICAgICAgICAgCi0gICAgICAgIGZp
bmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGln
aHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIE5TTXV0
YWJsZURhdGEgKm1vZGlmaWVkSGlnaGxpZ2h0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFXaXRo
Qnl0ZXM6W2hpZ2hsaWdodCBoaWdobGlnaHRdLmJ5dGVzIGxlbmd0aDpbaGlnaGxpZ2h0IGhpZ2hs
aWdodF0ubGVuZ3RoIC8gMl07CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFsgbW9kaWZpZWRIaWdobGlnaHREYXRhIF1dOworICAgIAorICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7
CisgICAgICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKKyAg
ICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgbm90IHRvIGJlIHBvcHVsYXRlZC4iKTsKIH0K
IAotVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRmFpbHVyZSkKKy8vIEVu
c3VyZSB0aGF0IHRoZSBvcmlnaW5hbCBkYXRhIGZvcm1hdCB3aWxsIGFsd2F5cyBiZSBhYmxlIHRv
IGJlIGRlY29kZWQgaW4gdGhlIGZ1dHVyZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxp
Z2h0UmVzdG9yZUZyb21TdG9yYWdlVjApCiB7CiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gd2ViVmll
d0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZXNbXSA9IHsweDA0LCAweDAwLCAweDAwLCAweDAw
LCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1LCAweDAw
LCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAweDA0LCAw
eDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDA1
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDIzLCAweDc0LCAweDY1LCAweDc4LCAweDc0LCAw
eDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDU0LCAweDY1LCAweDczLCAweDc0LCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwfTsKKyAgICAKKyAgICBO
U0RhdGEgKnN0b3JlZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6JmJ5dGVzIGxlbmd0aDo4
N107CisKICAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdo
dERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07Ci0gICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJd
OwotICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9y
ZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0Fw
cEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCkgewotICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3
Q3JlYXRlLmdldCgpKTsKLSAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7Ci0gICAg
ICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7Ci0gICAgICAgIEVY
UEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKLSAgICAgICAgCi0gICAgICAgIFt3
ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJOb3QgdGhlIHNhbWUi
XTsKLSAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdo
bGlnaHQuaGlnaGxpZ2h0IF1dOwotICAgICAgICAKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKLSAgICAgICAg
ICAgIHJldHVybiAhW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZTsKLSAgICAgICAg
fSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4iKTsKLSAgICAgICAg
Ci0gICAgICAgIGZpbmlzaGVkID0gWUVTOwotICAgIH1dOwotICAgIFt3ZWJWaWV3Q3JlYXRlIF9h
ZGRBcHBIaWdobGlnaHRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQp
OworCisgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRl
c3QiXTsKKyAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOkBbIHN0b3Jl
ZERhdGEgXV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlv
bldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVz
dG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBw
SGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0gMTsKKyAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hs
aWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworfQorCisKKy8vIEVuc3VyZSB0aGF0IHRoZSBWMSBk
YXRhIGZvcm1hdCB3aWxsIGFsd2F5cyBiZSBhYmxlIHRvIGJlIGRlY29kZWQgaW4gdGhlIGZ1dHVy
ZS4KK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZyb21TdG9yYWdlVjEp
Cit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBieXRlc1tdID0gezB4MzEsIDB4MzIsIDB4
MzAsIDB4MzIsIDB4NDgsIDB4NTAsIDB4NDEsIDB4NDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4
MzEsIDB4MzYsIDB4MzAsIDB4NjEsIDB4MzYsIDB4MzAsIDB4MzEsIDB4NjIsIDB4MmQsIDB4MzEs
IDB4NjIsIDB4MzcsIDB4MzIsIDB4MmQsIDB4MzQsIDB4MzEsIDB4MzEsIDB4MzgsIDB4MmQsIDB4
NjIsIDB4MzYsIDB4NjQsIDB4MzEsIDB4MmQsIDB4MzksIDB4MzAsIDB4MzIsIDB4NjIsIDB4Mzcs
IDB4MzQsIDB4NjYsIDB4NjUsIDB4NjEsIDB4MzYsIDB4MzYsIDB4MzEsIDB4MDQsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4MDEsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4NzgsIDB4NzQs
IDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4NzQsIDB4
MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4
ZmYsIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MjMsIDB4NzQsIDB4NjUsIDB4Nzgs
IDB4NzQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NTQsIDB4NjUsIDB4NzMsIDB4
NzQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDB9OworICAg
IAorICAgIE5TRGF0YSAqc3RvcmVkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczomYnl0ZXMg
bGVuZ3RoOjE0NF07CisKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBbd2ViVmlld1Jlc3RvcmUgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOworICAgIFt3ZWJWaWV3UmVzdG9yZSBf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgc3RvcmVkRGF0YSBdXTsKKyAgICAKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wg
eworICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAx
OworICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>