<?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>176091</bug_id>
          
          <creation_ts>2017-08-29 22:19:19 -0700</creation_ts>
          <short_desc>Implement FileSystemDirectoryReader.readEntries()</short_desc>
          <delta_ts>2017-09-03 20:35:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343459</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-29 22:19:19 -0700</bug_when>
    <thetext>Implement FileSystemDirectoryReader.readEntries():
- https://wicg.github.io/entries-api/#dom-filesystemdirectoryreader-readentries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343461</commentid>
    <comment_count>1</comment_count>
      <attachid>319342</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-29 22:21:24 -0700</bug_when>
    <thetext>Created attachment 319342
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343463</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-29 22:22:45 -0700</bug_when>
    <thetext>Attachment 319342 did not pass style-queue:


ERROR: Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343467</commentid>
    <comment_count>3</comment_count>
      <attachid>319344</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-29 22:28:05 -0700</bug_when>
    <thetext>Created attachment 319344
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343468</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-29 22:29:49 -0700</bug_when>
    <thetext>Attachment 319344 did not pass style-queue:


ERROR: Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343560</commentid>
    <comment_count>5</comment_count>
      <attachid>319369</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 09:22:08 -0700</bug_when>
    <thetext>Created attachment 319369
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343615</commentid>
    <comment_count>6</comment_count>
      <attachid>319383</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 11:27:35 -0700</bug_when>
    <thetext>Created attachment 319383
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343626</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-30 11:51:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/34168015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343630</commentid>
    <comment_count>8</comment_count>
      <attachid>319385</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 12:04:13 -0700</bug_when>
    <thetext>Created attachment 319385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343692</commentid>
    <comment_count>9</comment_count>
      <attachid>319385</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-08-30 14:17:08 -0700</bug_when>
    <thetext>Comment on attachment 319385
Patch

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

r=me

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:53
&gt; +    Vector&lt;String&gt; childPaths = listDirectory(fullPath, &quot;*&quot;);

auto

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:119
&gt; +    Vector&lt;String&gt; components;
&gt; +    virtualPath.split(&apos;/&apos;, false /* allowEmpty */, components);

auto + overload of split() would look nice :)

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:157
&gt; +        callOnMainThread([this, completionHandler = WTFMove(completionHandler), listedChildren = CrossThreadCopier&lt;ExceptionOr&lt;Vector&lt;ListedChild&gt;&gt;&gt;::copy(listedChildren), directoryPtr]() mutable {

It would be cool to have a makeCrossThreadCopy() helper.

&gt; Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp:80
&gt; +    setPendingActivity(this);

I think it would be nice to use a RAII helper object for this so we don&apos;t have to unset in every possible code path.

&gt; LayoutTests/editing/pasteboard/datatransfer-items-drop-directoryReader-root.html:16
&gt; +function moveMouseToCenterOfElement(element) {
&gt; +    var centerX = element.offsetLeft + element.offsetWidth / 2;
&gt; +    var centerY = element.offsetTop + element.offsetHeight / 2;
&gt; +    eventSender.mouseMoveTo(centerX, centerY);
&gt; +}

This seems like a very useful function, maybe we could put it somewhere shared so other tests can use it too?

&gt; LayoutTests/editing/pasteboard/datatransfer-items-drop-directoryReader.html:16
&gt; +function moveMouseToCenterOfElement(element) {
&gt; +    var centerX = element.offsetLeft + element.offsetWidth / 2;
&gt; +    var centerY = element.offsetTop + element.offsetHeight / 2;
&gt; +    eventSender.mouseMoveTo(centerX, centerY);
&gt; +}

This seems like a very useful function, maybe we could put it somewhere shared so other tests can use it too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343768</commentid>
    <comment_count>10</comment_count>
      <attachid>319418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 16:01:59 -0700</bug_when>
    <thetext>Created attachment 319418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343801</commentid>
    <comment_count>11</comment_count>
      <attachid>319418</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-08-30 17:06:16 -0700</bug_when>
    <thetext>Comment on attachment 319418
Patch

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

&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:159
&gt; +    m_workQueue-&gt;dispatch([this, completionHandler = WTFMove(completionHandler), fullPath = fullPath.isolatedCopy(), directoryPtr = &amp;directory]() mutable {
&gt; +        auto listedChildren = listDirectoryWithMetadata(fullPath);
&gt; +        callOnMainThread([this, completionHandler = WTFMove(completionHandler), listedChildren = crossThreadCopy(listedChildren), directoryPtr]() mutable {
&gt; +            completionHandler(toFileSystemEntries(*this, WTFMove(listedChildren), directoryPtr-&gt;virtualPath()));
&gt; +        });
&gt; +    });

Since the directoryPtr is only used to retrieve the virtualPath() here, we can avoid the mysterious lifetime implications by simply capturing the virtual path instead of the directory.

&gt; Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp:39
&gt; +    : ActiveDOMObject(&amp;context)

The ActiveDOMObject constructor could probably take the ScriptExecutionContext by reference.

&gt; Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp:66
&gt; +    if (m_isReading) {
&gt; +        if (errorCallback)
&gt; +            errorCallback-&gt;scheduleCallback(context, DOMException::create(Exception { InvalidStateError, ASCIILiteral(&quot;Directory reader is already reading&quot;) }));
&gt; +        return;
&gt; +    }

This case is not covered in the layout tests.

&gt; Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp:72
&gt; +    if (m_error) {
&gt; +        if (errorCallback)
&gt; +            errorCallback-&gt;scheduleCallback(context, DOMException::create(*m_error));
&gt; +        return;
&gt; +    }

This is also not covered, although I don&apos;t know an easy way to trip an error condition here.

&gt; Source/WebCore/dom/ExceptionOr.h:192
&gt; +        return CrossThreadCopier&lt;T&gt;::copy(source.returnValue());

This could use crossThreadCopy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343832</commentid>
    <comment_count>12</comment_count>
      <attachid>319432</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 19:03:55 -0700</bug_when>
    <thetext>Created attachment 319432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343833</commentid>
    <comment_count>13</comment_count>
      <attachid>319433</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-30 19:18:43 -0700</bug_when>
    <thetext>Created attachment 319433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343849</commentid>
    <comment_count>14</comment_count>
      <attachid>319433</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 20:48:25 -0700</bug_when>
    <thetext>Comment on attachment 319433
Patch

Clearing flags on attachment: 319433

Committed r221414: &lt;http://trac.webkit.org/changeset/221414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343850</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 20:48:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345124</commentid>
    <comment_count>16</comment_count>
      <attachid>319385</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-03 20:35:36 -0700</bug_when>
    <thetext>Comment on attachment 319385
Patch

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

&gt;&gt; Source/WebCore/Modules/entriesapi/DOMFileSystem.cpp:119
&gt;&gt; +    virtualPath.split(&apos;/&apos;, false /* allowEmpty */, components);
&gt; 
&gt; auto + overload of split() would look nice :)

You should use StringView::split, which makes a lot of separate StringView. No need to allocate all these strings just to build up a single string at the end. Do it all with StringView.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319342</attachid>
            <date>2017-08-29 22:21:24 -0700</date>
            <delta_ts>2017-08-29 22:28:05 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>176091_FileSystemDirectoryReader_wip.patch</filename>
            <type>text/plain</type>
            <size>35369</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5ZWE2
YWEzYTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0RpcmVjdG9y
eSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMgNAorUEFT
UyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50cmll
c1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVsbFBhdGgg
aXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlzRGlyZWN0
b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRlcjIiCitQ
QVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyIgor
UEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxk
RW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJm
aWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0Zp
bGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFTUyBncmFu
ZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRy
aWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0IgorUEFT
UyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50
cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0u
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BBU1MgZ3Jh
bmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdyYW5kQ2hp
bGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFt
ZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRo
IGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0IgorUEFTUyBn
cmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJl
YWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxMzAwNWZkZDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LnJlYWRFbnRyaWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0
YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGVudHJ5MS5pc0ZpbGUgaXMgdHJ1ZQor
UEFTUyBlbnRyeTEubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5MS5mdWxsUGF0aCBpcyAi
L3Rlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91
bmQubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0
LnR4dCIKK1BBU1MgZW50cnkyLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnkyLm5hbWUg
aXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkyLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFT
UyBlbnRyeUZvdW5kLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1lIGlz
ICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODY5ZTVkMWJkMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApAQCAtMCwwICsxLDEwMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJv
cHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29s
b3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3Zl
cmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZWxlbWVudCkgeworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VsZW1lbnQoZWxl
bWVudCwgZmlsZXMpIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQg
cmVzdWx0ID0gW107CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIo
KTsKKyAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVh
ZEVudHJpZXMoZW50cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAw
KSB7CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkp
OworICAgICAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCBy
ZWplY3QpOworICAgIH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKworZnVuY3Rpb24gZmlu
ZEVudHJ5QnlOYW1lKGVudHJpZXMsIG5hbWUpCit7CisgICAgZm9yIChsZXQgY2hpbGRFbnRyeSBv
ZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChjaGlsZEVudHJ5Lm5hbWUgPT0gbmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGlsZEVudHJ5CisgICAgfQorICAgIHJldHVybiBudWxsOworfQorCit2
YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6
b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAg
ZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5z
ZmVyLml0ZW1zLmxlbmd0aCIsICIyIik7CisKKyAgICBlbnRyeTEgPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5MiA9IGRhdGFUcmFuc2Zlci5pdGVt
c1sxXS53ZWJraXRHZXRBc0VudHJ5KCk7CisKKyAgICBzaG91bGRCZVRydWUoImVudHJ5MS5pc0Zp
bGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5uYW1lIiwgInRlc3QudHh0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEuZnVsbFBhdGgiLCAiL3Rlc3Qu
dHh0Iik7CisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTEuZmlsZXN5c3RlbS5yb290KS50
aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5
TmFtZShlbnRyaWVzLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeUZv
dW5kLmlzRmlsZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQu
bmFtZSIsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5
Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3QudHh0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJl
bnRyeTIuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRy
eTIubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
bnRyeTIuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgICAgICBnZXRFbnRyaWVzQXNQcm9t
aXNlKGVudHJ5Mi5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAg
ICAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFtZShlbnRyaWVzLCAidGVzdEZpbGVz
Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNEaXJlY3RvcnkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5k
LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRF
bnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVu
dHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVu
dERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250
b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQn
LCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1k
aXJlY3RvcnlSZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uODZjNTQ4MzA3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKQEAg
LTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVu
dHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zm
c2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxl
c09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQcm9taXNl
KGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0gZGlyRW50
cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAgICAg
ICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+
IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9
CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwor
ZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRyYW5zZmVy
Lml0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVudHJ5Lmlz
RGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBhdGgiLCAi
L3Rlc3RGaWxlcyIpOworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAg
IHNob3VsZEJlKCJjaGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rl
c3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJp
ZXNbMV0ubmFtZSIsICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJmb2xkZXIx
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJdLmZ1bGxQ
YXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNo
aWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY2hpbGRFbnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVz
L3N1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbM10uaXNE
aXJlY3RvcnkiKTsKKworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1sy
XSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxkRW50cmll
cyA9IGVudHJpZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVu
Z3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGls
ZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9z
dWJmb2xkZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENo
aWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlz
ZShjaGlsZEVudHJpZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAg
ICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTQudHh0
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50
cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Iik7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUi
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVu
dHJpZXNbMV0ubmFtZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxl
cy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJncmFuZENoaWxkRW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAg
Z2V0RW50cmllc0FzUHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5jdGlvbihl
bnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMgPSBl
bnRyaWVzOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENoaWxkRW50
cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRF
bnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9m
aWxlNS50eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7Cisg
ICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jl
c291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4MWUxNTEu
LmZjZTc5NDc0ZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNTYzLDYgKzU2Myw4IEBAIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50
LWFwaS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggYTgzOWE1Mjg1MGYuLjFkOTY0NjhkMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6RE9N
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAs
IG1fcm9vdChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpKQorc3RydWN0IExpc3RlZENoaWxkIHsKKyAgICBTdHJpbmcgZmlsZW5hbWU7Cisg
ICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGU7CisKKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENv
cHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGZpbGVuYW1l
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgfTsKKyAgICB9Cit9
OworCitET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCisgICAg
OiBtX25hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9maWxlKFdURk1v
dmUoZmlsZSkpCisgICAgLCBtX3Jvb3RQYXRoKGRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkp
KQorICAgICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29y
ayBxdWV1ZSIpKQogeworICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKIH0K
IAogRE9NRmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewogfQogCitSZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsK
K30KKworUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoKQor
eworICAgIGlmIChtX2ZpbGUtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmls
ZS0+bmFtZSgpKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8j
ZXZhbHVhdGUtYS1wYXRoCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcv
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKKyAgICB2aXJ0dWFsUGF0aC5zcGxp
dCgnLycsIGZhbHNlIC8qIGFsbG93RW1wdHkgKi8sIGNvbXBvbmVudHMpOworCisgICAgVmVjdG9y
PFN0cmluZz4gcmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNv
bXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLiIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLi4iKSB7Cisg
ICAgICAgICAgICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmVzb2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoY29tcG9uZW50KTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQobV9yb290UGF0aCk7CisgICAgZm9yIChhdXRvJiByZXNvbHZlZENvbXBv
bmVudCA6IHJlc29sdmVkQ29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChwYXRo
U2VwYXJhdG9yKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvbHZlZENvbXBvbmVudCk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkIChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1F
bnRyeT4+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoJmRpcmVjdG9y
eS5maWxlc3lzdGVtKCkgPT0gdGhpcyk7CisKKyAgICBpZiAoZGlyZWN0b3J5LmlzUm9vdCgpKSB7
CisgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hpbGRyZW47CisgICAgICAg
IGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjaGlsZHJlbikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0aChkaXJlY3RvcnkudmlydHVhbFBhdGgoKSk7CisgICAg
bV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29weSgpLCBk
aXJlY3RvcnlQdHIgPSAmZGlyZWN0b3J5XSgpIG11dGFibGUgeworICAgICAgICBpZiAoIWZpbGVJ
c0RpcmVjdG9yeShmdWxsUGF0aCkpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0
aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjaGlsZFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwg
IioiKTsKKyAgICAgICAgVmVjdG9yPExpc3RlZENoaWxkPiBsaXN0ZWRDaGlsZHJlbjsKKyAgICAg
ICAgbGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZFBhdGhzLnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogY2hpbGRQYXRocykgeworICAgICAg
ICAgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgICAgICAgICAgaWYgKCFnZXRGaWxlTWV0
YWRhdGEoY2hpbGRQYXRoLCBtZXRhZGF0YSkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBsaXN0ZWRDaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoTGlzdGVkQ2hpbGQgeyBw
YXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKSwgbWV0YWRhdGEudHlwZSB9KTsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IENyb3NzVGhyZWFkQ29waWVy
PFZlY3RvcjxMaXN0ZWRDaGlsZD4+Ojpjb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5UHRy
XSgpIG11dGFibGUgeworICAgICAgICAgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBl
bnRyaWVzOworICAgICAgICAgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpc3Rl
ZENoaWxkcmVuLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbGlzdGVk
Q2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBkaXJlY3Rv
cnlQdHItPnZpcnR1YWxQYXRoKCkgKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbGVNZXRh
ZGF0YTo6VHlwZUZpbGU6CisgICAgICAgICAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBw
ZW5kKEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqdGhpcywgdmlydHVhbFBhdGgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGaWxlTWV0YWRh
dGE6OlR5cGVEaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2Vk
QXBwZW5kKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCB2aXJ0dWFsUGF0
aCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVudHJpZXMpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4
IGYzNjhjMGRmNDU4Li5kMWYxMmZiNTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCkBAIC0yNSwzMiArMjUsNDUgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGaWxlOwogY2xhc3Mg
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJ5OwogCiBjbGFz
cyBET01GaWxlU3lzdGVtIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8RE9NRmlsZVN5c3RlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NRmlsZVN5c3Rl
bT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPERPTUZpbGVTeXN0
ZW0+IGNyZWF0ZShSZWY8RmlsZT4mJiBmaWxlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShuYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERPTUZpbGVTeXN0ZW0oV1RGTW92ZShmaWxlKSkpOwogICAgIH0KIAogICAgIH5ET01GaWxl
U3lzdGVtKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KLSAgICBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIHJvb3QoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3Q7IH0KKyAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiByb290KCk7CisK
KyAgICB2b2lkIGxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgV1RGOjpG
dW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYp
PiYmKTsKKworICAgIFJlZjxGaWxlU3lzdGVtRW50cnk+IGZpbGVBc0VudHJ5KCk7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgRE9NRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IGV4cGxpY2l0IERPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOworCisgICAgU3RyaW5nIGV2YWx1
YXRlUGF0aChjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKIAogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9yb290OworICAgIFJlZjxGaWxl
PiBtX2ZpbGU7CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV93
b3JrUXVldWU7CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5jcHAKaW5kZXggZDcwZDJkMDU3YjIuLmRiNmMyMjVjZTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5LmNwcApAQCAtMjcsOCArMjcsMTEgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnkuaCIKIAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
RmlsZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCIKKyNpbmNsdWRl
ICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcs
OSArNDAsOSBAQCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjbwogewogfQogCi1SZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIo
KQorUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShjb250ZXh0LCAqdGhpcyk7CiB9
CiAKIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZp
bGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGY0NzRjNjk0NmRjLi41MTdkNzZk
ZTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaApAQCAtMzAsMjggKzMwLDMxIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVycm9yQ2FsbGJhY2s7CitjbGFzcyBGaWxlOwogY2xh
c3MgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjsKIGNsYXNzIEZpbGVTeXN0ZW1FbnRyeUNhbGxi
YWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5IGZpbmFsIDogcHVibGljIEZpbGVTeXN0ZW1FbnRyeSB7CitjbGFzcyBGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRmlsZVN5c3RlbUVudHJ5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gY3JlYXRlKERPTUZpbGVT
eXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkoZmlsZXN5
c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICB9CiAKLSAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBzdHJ1Y3Qg
RmxhZ3MgewogICAgICAgICBib29sIGNyZWF0ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZXhj
bHVzaXZlIHsgZmFsc2UgfTsKICAgICB9OwogCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJl
dHVybiB2aXJ0dWFsUGF0aCgpID09ICIvIjsgfQorCiAgICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZsYWdzJiBvcHRpb25z
LCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiYmKTsKICAgICB2b2lkIGdldERpcmVjdG9yeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGbGFncyYgb3B0aW9ucywgUmVmUHRyPEZpbGVTeXN0ZW1F
bnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtJiwgY29u
c3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsCmluZGV4
IDI4YmRmYzc5MjgwLi40MGY1YzVkMzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGwK
QEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1lPURpcmVjdG9yeVVwbG9h
ZCwKIF0gaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSA6IEZpbGVTeXN0ZW1FbnRy
eSB7Ci0gICAgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciBjcmVhdGVSZWFkZXIoKTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ciBjcmVhdGVSZWFkZXIoKTsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSB2b2lkIGdldEZpbGUob3B0aW9uYWwgVVNWU3RyaW5nPyBwYXRoLAogICAgICAgICBvcHRpb25h
bCBGaWxlU3lzdGVtRmxhZ3Mgb3B0aW9ucywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApp
bmRleCBlZDllZTYzYzM5Ny4uMzk4MjA3ZDRmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHAKQEAgLTI3LDI1ICsyNyw3MiBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIuaCIKIAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI6OkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiBk
aXJlY3RvcnkpCi0gICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCitGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQog
eworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
Ojp+RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcigpCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiYmIGVycm9yQ2FsbGJhY2spCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoZXJyb3JDYWxsYmFjaykK
LSAgICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNl
cHRpb246OmNyZWF0ZShOb3RTdXBwb3J0ZWRFcnJvcikpOworICAgIHJldHVybiAiRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlciI7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFo
YXNQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
OjpyZWFkRW50cmllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxFcnJvckNhbGxi
YWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKG1faXNSZWFkaW5nKSB7CisgICAgICAg
IGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVD
YWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJEaXJlY3RvcnkgcmVhZGVyIGlzIGFscmVhZHkgcmVh
ZGluZyIpIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2Vycm9yKSB7
CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgZXJyb3JDYWxsYmFjay0+
c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRpb246OmNyZWF0ZSgqbV9lcnJvcikp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNEb25lKSB7CisgICAgICAg
IHN1Y2Nlc3NDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCB7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pc1JlYWRpbmcgPSB0cnVlOworICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdWNjZXNzQ2Fs
bGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBtX2lzUmVhZGluZyA9IGZhbHNl
OworICAgICAgICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3REaXJlY3RvcnkobV9kaXJl
Y3RvcnksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayks
IGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShFeGNlcHRpb25PcjxWZWN0
b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmIHJlc3VsdCkgeworICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChET01FeGNlcHRp
b246OmNyZWF0ZSgqbV9lcnJvcikpOworICAgICAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG1faXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFu
ZGxlRXZlbnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHVuc2V0
UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgKaW5kZXggOGEwOTk0NGFk
OTUuLjRmYjY0Nzk2NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgKQEAgLTI1LDYgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtMzYsMTEgKzM4LDExIEBAIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTsKIGNsYXNz
IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi1jbGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4geworY2xh
c3MgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI+IGNyZWF0ZShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkK
KyAgICBzdGF0aWMgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIoZGlyZWN0b3J5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoY29udGV4dCwgZGlyZWN0b3J5KSk7CiAgICAgfQogCiAg
ICAgfkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoKTsKQEAgLTQ4LDkgKzUwLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8Rmls
ZVN5c3RlbUVudHJpZXNDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYpOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5Jik7CisgICAgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Jik7CisKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8Rmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5PiBtX2RpcmVjdG9yeTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4gbV9lcnJvcjsKKyAgICBib29sIG1faXNSZWFkaW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNEb25lIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LmlkbAppbmRleCBkZDBjYjA0ZGQ1NS4uNjVkMmM2MTUzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5pZGwKQEAgLTI1LDcgKzI1LDYgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9
RGlyZWN0b3J5VXBsb2FkLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gdm9pZCByZWFkRW50cmllcyhGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1FbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUVudHJ5LmNwcAppbmRleCBiMDQ5NjNjOWY4OC4uNmFhZTgyY2I1ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUVudHJ5LmgiCiAKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw0ICszOCwxNCBAQCBGaWxl
U3lzdGVtRW50cnk6OkZpbGVTeXN0ZW1FbnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBj
b25zdCBTdHJpbmcmIHZpcnR1YQogewogfQogCitGaWxlU3lzdGVtRW50cnk6On5GaWxlU3lzdGVt
RW50cnkoKQoreworfQorCitET01GaWxlU3lzdGVtJiBGaWxlU3lzdGVtRW50cnk6OmZpbGVzeXN0
ZW0oKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpbGVzeXN0ZW0uZ2V0KCk7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oCmluZGV4IDAzMWRjMjcyNDg2Li5hNzRkODdlNzg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1F
bnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RW50cnkuaApAQCAtMzUsMjAgKzM1LDIwIEBAIGNsYXNzIERPTUZpbGVTeXN0ZW07CiAKIGNsYXNz
IEZpbGVTeXN0ZW1FbnRyeSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbGVTeXN0ZW1FbnRyeT4gewogcHVibGljOgotICAgIHZpcnR1YWwgfkZpbGVTeXN0ZW1F
bnRyeSgpIHsgfQorICAgIHZpcnR1YWwgfkZpbGVTeXN0ZW1FbnRyeSgpOwogCiAgICAgdmlydHVh
bCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxQYXRoOyB9Ci0gICAgRE9NRmlsZVN5
c3RlbSYgZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbTsgfQorICAgIERP
TUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEZpbGVT
eXN0ZW1FbnRyeShET01GaWxlU3lzdGVtJiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CiAK
IHByaXZhdGU6Ci0gICAgRE9NRmlsZVN5c3RlbSYgbV9maWxlc3lzdGVtOworICAgIFJlZjxET01G
aWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV92aXJ0dWFsUGF0aDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhj
ZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCmluZGV4IGUy
OGIwZDE3Nzg3Li5jOThmZmMxMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAK
QEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01FeGNl
cHRpb24uaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIFRoaXMgYXJyYXkgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIEV4Y2Vw
dGlvbkNvZGUgZW51bWVyYXRpb24uCkBAIC05OSw2ICsxMDEsMTIgQEAgUmVmPERPTUV4Y2VwdGlv
bj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIG5hbWUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24obGVnYWN5Q29k
ZUZyb21OYW1lKG5hbWUpLCBuYW1lLCBtZXNzYWdlKSk7CiB9CiAKK1JlZjxET01FeGNlcHRpb24+
IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQoreworICAg
IGF1dG8mIGRlc2NyaXB0aW9uID0gRE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihleGNlcHRpb24u
Y29kZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRp
b24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFtZSwgZXhjZXB0aW9uLm1lc3NhZ2UoKS5pc0Vt
cHR5KCkgPyBkZXNjcmlwdGlvbi5tZXNzYWdlIDogZXhjZXB0aW9uLm1lc3NhZ2UoKSkpOworfQor
CiBET01FeGNlcHRpb246OkRPTUV4Y2VwdGlvbihMZWdhY3lDb2RlIGxlZ2FjeUNvZGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIDogbV9sZWdhY3lDb2Rl
KGxlZ2FjeUNvZGUpCiAgICAgLCBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24u
aAppbmRleCBjNTMzMmI5ODI5NS4uZGFiZTkzMDc1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01FeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0
aW9uLmgKQEAgLTMzLDkgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RXhjZXB0aW9uOworCiBjbGFzcyBET01FeGNlcHRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxET01F
eGNlcHRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRl
KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyogbWVzc2FnZSA9IG51bGxwdHIpOworICAgIHN0
YXRpYyBSZWY8RE9NRXhjZXB0aW9uPiBjcmVhdGUoY29uc3QgRXhjZXB0aW9uJik7CiAKICAgICAv
LyBGb3IgRE9NIGJpbmRpbmdzLgogICAgIHN0YXRpYyBSZWY8RE9NRXhjZXB0aW9uPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IDZiNWQ3YTU3OGJhLi4yNTkyNTk0MjZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcApAQCAtNDAsNyArNDAsNiBA
QAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiwxMyArMTExLDggQEAg
UmVmUHRyPEZpbGVTeXN0ZW1FbnRyeT4gRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeSgpIGNv
bnN0CiAgICAgaWYgKCFmaWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgh
bV9maWxlU3lzdGVtKQotICAgICAgICBtX2ZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVh
dGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLQotICAgIFN0cmluZyB2aXJ0dWFsUGF0
aCA9ICIvIiArIGZpbGUtPm5hbWUoKTsKLSAgICBpZiAoZmlsZS0+aXNEaXJlY3RvcnkoKSkKLSAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCptX2ZpbGVTeXN0
ZW0sIHZpcnR1YWxQYXRoKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRl
KCptX2ZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKTsKKyAgICBhdXRvIGZpbGVTeXN0ZW0gPSBET01G
aWxlU3lzdGVtOjpjcmVhdGUoKmZpbGUpOworICAgIHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNF
bnRyeSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uaAppbmRleCBiZWExY2YxZTRjMC4uNzEzMzA0MzFiOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAtNzIsNyArNzIsNiBAQCBwcml2YXRlOgogICAg
IFdlYWtQdHI8RGF0YVRyYW5zZmVySXRlbUxpc3Q+IG1fbGlzdDsKICAgICBjb25zdCBTdHJpbmcg
bV90eXBlOwogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7Ci0gICAgbXV0YWJsZSBSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gbV9maWxlU3lzdGVtOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oCmluZGV4IGZhZTVhZTM4OGI3Li4zZWYyN2M2YmJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTAxLDYgKzEwMSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8v
IE5vdCBhCiBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEm
KTsKIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29tcG9uZW50KTsKK2NoYXIgcGF0aFNlcGFyYXRvcigpOwogU3RyaW5nIGxhc3RD
b21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNWJlMzZlOWVkZGUuLjUwNjMwMmRl
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcApAQCAtMTgwLDYgKzE4MCwxMSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0dXJu
IHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKIH0KIAorY2hhciBwYXRoU2Vw
YXJhdG9yKCkKK3sKKyAgICByZXR1cm4gR19ESVJfU0VQQVJBVE9SX1M7Cit9CisKIGJvb2wgbWFr
ZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggMDUzMTkzMGIz
OTAuLjViOTdmNTgyZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI3MCw2ICsyNzAsMTEgQEAgU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQogICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwogfQogCitjaGFyIHBhdGhT
ZXBhcmF0b3IoKQoreworICAgIHJldHVybiAnLyc7Cit9CisKIGJvb2wgbWFrZUFsbERpcmVjdG9y
aWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDJkMTI3NzQ4NzZjLi40MGIxYmNiODk0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMjAxLDYg
KzIwMSwxMiBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQo
V1RGTW92ZShidWZmZXIpKTsKIH0KIAorY2hhciBwYXRoU2VwYXJhdG9yKCkKK3sKKyAgICByZXR1
cm4gJ1xcJzsKK30KKworCiAjaWYgIVVTRShDRikKIAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319344</attachid>
            <date>2017-08-29 22:28:05 -0700</date>
            <delta_ts>2017-08-30 09:22:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>176091_FileSystemDirectoryReader_wip.patch</filename>
            <type>text/plain</type>
            <size>34587</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5ZWE2
YWEzYTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0RpcmVjdG9y
eSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMgNAorUEFT
UyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50cmll
c1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVsbFBhdGgg
aXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlzRGlyZWN0
b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRlcjIiCitQ
QVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyIgor
UEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxk
RW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJm
aWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0Zp
bGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFTUyBncmFu
ZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRy
aWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0IgorUEFT
UyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50
cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0u
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BBU1MgZ3Jh
bmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdyYW5kQ2hp
bGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFt
ZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRo
IGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0IgorUEFTUyBn
cmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJl
YWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxMzAwNWZkZDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LnJlYWRFbnRyaWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0
YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGVudHJ5MS5pc0ZpbGUgaXMgdHJ1ZQor
UEFTUyBlbnRyeTEubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5MS5mdWxsUGF0aCBpcyAi
L3Rlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91
bmQubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0
LnR4dCIKK1BBU1MgZW50cnkyLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnkyLm5hbWUg
aXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkyLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFT
UyBlbnRyeUZvdW5kLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1lIGlz
ICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODY5ZTVkMWJkMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApAQCAtMCwwICsxLDEwMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJv
cHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29s
b3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3Zl
cmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZWxlbWVudCkgeworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VsZW1lbnQoZWxl
bWVudCwgZmlsZXMpIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQg
cmVzdWx0ID0gW107CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIo
KTsKKyAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVh
ZEVudHJpZXMoZW50cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAw
KSB7CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkp
OworICAgICAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCBy
ZWplY3QpOworICAgIH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKworZnVuY3Rpb24gZmlu
ZEVudHJ5QnlOYW1lKGVudHJpZXMsIG5hbWUpCit7CisgICAgZm9yIChsZXQgY2hpbGRFbnRyeSBv
ZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChjaGlsZEVudHJ5Lm5hbWUgPT0gbmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGlsZEVudHJ5CisgICAgfQorICAgIHJldHVybiBudWxsOworfQorCit2
YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6
b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAg
ZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5z
ZmVyLml0ZW1zLmxlbmd0aCIsICIyIik7CisKKyAgICBlbnRyeTEgPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5MiA9IGRhdGFUcmFuc2Zlci5pdGVt
c1sxXS53ZWJraXRHZXRBc0VudHJ5KCk7CisKKyAgICBzaG91bGRCZVRydWUoImVudHJ5MS5pc0Zp
bGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5uYW1lIiwgInRlc3QudHh0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEuZnVsbFBhdGgiLCAiL3Rlc3Qu
dHh0Iik7CisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTEuZmlsZXN5c3RlbS5yb290KS50
aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5
TmFtZShlbnRyaWVzLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeUZv
dW5kLmlzRmlsZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQu
bmFtZSIsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5
Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3QudHh0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJl
bnRyeTIuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRy
eTIubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
bnRyeTIuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgICAgICBnZXRFbnRyaWVzQXNQcm9t
aXNlKGVudHJ5Mi5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAg
ICAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFtZShlbnRyaWVzLCAidGVzdEZpbGVz
Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNEaXJlY3RvcnkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5k
LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRF
bnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVu
dHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVu
dERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250
b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQn
LCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1k
aXJlY3RvcnlSZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uODZjNTQ4MzA3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKQEAg
LTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVu
dHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zm
c2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxl
c09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQcm9taXNl
KGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0gZGlyRW50
cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAgICAg
ICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+
IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9
CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwor
ZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRyYW5zZmVy
Lml0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVudHJ5Lmlz
RGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBhdGgiLCAi
L3Rlc3RGaWxlcyIpOworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAg
IHNob3VsZEJlKCJjaGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rl
c3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJp
ZXNbMV0ubmFtZSIsICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJmb2xkZXIx
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJdLmZ1bGxQ
YXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNo
aWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY2hpbGRFbnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVz
L3N1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbM10uaXNE
aXJlY3RvcnkiKTsKKworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1sy
XSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxkRW50cmll
cyA9IGVudHJpZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVu
Z3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGls
ZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9z
dWJmb2xkZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENo
aWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlz
ZShjaGlsZEVudHJpZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAg
ICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTQudHh0
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50
cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Iik7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUi
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVu
dHJpZXNbMV0ubmFtZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxl
cy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJncmFuZENoaWxkRW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAg
Z2V0RW50cmllc0FzUHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5jdGlvbihl
bnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMgPSBl
bnRyaWVzOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENoaWxkRW50
cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRF
bnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9m
aWxlNS50eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7Cisg
ICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jl
c291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4MWUxNTEu
LmZjZTc5NDc0ZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNTYzLDYgKzU2Myw4IEBAIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50
LWFwaS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggYTgzOWE1Mjg1MGYuLjFkOTY0NjhkMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6RE9N
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAs
IG1fcm9vdChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpKQorc3RydWN0IExpc3RlZENoaWxkIHsKKyAgICBTdHJpbmcgZmlsZW5hbWU7Cisg
ICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGU7CisKKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENv
cHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGZpbGVuYW1l
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgfTsKKyAgICB9Cit9
OworCitET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCisgICAg
OiBtX25hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9maWxlKFdURk1v
dmUoZmlsZSkpCisgICAgLCBtX3Jvb3RQYXRoKGRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkp
KQorICAgICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29y
ayBxdWV1ZSIpKQogeworICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKIH0K
IAogRE9NRmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewogfQogCitSZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsK
K30KKworUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoKQor
eworICAgIGlmIChtX2ZpbGUtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmls
ZS0+bmFtZSgpKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8j
ZXZhbHVhdGUtYS1wYXRoCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcv
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKKyAgICB2aXJ0dWFsUGF0aC5zcGxp
dCgnLycsIGZhbHNlIC8qIGFsbG93RW1wdHkgKi8sIGNvbXBvbmVudHMpOworCisgICAgVmVjdG9y
PFN0cmluZz4gcmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNv
bXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLiIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLi4iKSB7Cisg
ICAgICAgICAgICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmVzb2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoY29tcG9uZW50KTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQobV9yb290UGF0aCk7CisgICAgZm9yIChhdXRvJiByZXNvbHZlZENvbXBv
bmVudCA6IHJlc29sdmVkQ29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChwYXRo
U2VwYXJhdG9yKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvbHZlZENvbXBvbmVudCk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkIChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1F
bnRyeT4+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoJmRpcmVjdG9y
eS5maWxlc3lzdGVtKCkgPT0gdGhpcyk7CisKKyAgICBpZiAoZGlyZWN0b3J5LmlzUm9vdCgpKSB7
CisgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hpbGRyZW47CisgICAgICAg
IGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjaGlsZHJlbikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0aChkaXJlY3RvcnkudmlydHVhbFBhdGgoKSk7CisgICAg
bV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29weSgpLCBk
aXJlY3RvcnlQdHIgPSAmZGlyZWN0b3J5XSgpIG11dGFibGUgeworICAgICAgICBpZiAoIWZpbGVJ
c0RpcmVjdG9yeShmdWxsUGF0aCkpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0
aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjaGlsZFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwg
IioiKTsKKyAgICAgICAgVmVjdG9yPExpc3RlZENoaWxkPiBsaXN0ZWRDaGlsZHJlbjsKKyAgICAg
ICAgbGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjaGlsZFBhdGhzLnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogY2hpbGRQYXRocykgeworICAgICAg
ICAgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgICAgICAgICAgaWYgKCFnZXRGaWxlTWV0
YWRhdGEoY2hpbGRQYXRoLCBtZXRhZGF0YSkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBsaXN0ZWRDaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoTGlzdGVkQ2hpbGQgeyBw
YXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKSwgbWV0YWRhdGEudHlwZSB9KTsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IENyb3NzVGhyZWFkQ29waWVy
PFZlY3RvcjxMaXN0ZWRDaGlsZD4+Ojpjb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5UHRy
XSgpIG11dGFibGUgeworICAgICAgICAgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBl
bnRyaWVzOworICAgICAgICAgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpc3Rl
ZENoaWxkcmVuLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogbGlzdGVk
Q2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBkaXJlY3Rv
cnlQdHItPnZpcnR1YWxQYXRoKCkgKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbGVNZXRh
ZGF0YTo6VHlwZUZpbGU6CisgICAgICAgICAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBw
ZW5kKEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqdGhpcywgdmlydHVhbFBhdGgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGaWxlTWV0YWRh
dGE6OlR5cGVEaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2Vk
QXBwZW5kKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCB2aXJ0dWFsUGF0
aCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVudHJpZXMpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4
IGYzNjhjMGRmNDU4Li44Mzc5OTE2ZTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCkBAIC0yNSwzMiArMjUsNDQgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEZpbGU7CiBjbGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk7
CiBjbGFzcyBGaWxlU3lzdGVtRW50cnk7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxET01GaWxlU3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIHN0YXRpYyBSZWY8RE9NRmlsZVN5c3RlbT4gY3JlYXRlKFJlZjxGaWxlPiYmIGZp
bGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01GaWxlU3lzdGVtKG5h
bWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShXVEZNb3Zl
KGZpbGUpKSk7CiAgICAgfQogCiAgICAgfkRPTUZpbGVTeXN0ZW0oKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeSYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQorICAgIFJlZjxGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnk+IHJvb3QoKTsKKworICAgIHZvaWQgbGlzdERpcmVjdG9yeShG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJik+JiYpOworCisgICAgUmVmPEZpbGVTeXN0
ZW1FbnRyeT4gZmlsZUFzRW50cnkoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01GaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgZXhwbGljaXQgRE9NRmlsZVN5c3RlbShS
ZWY8RmlsZT4mJik7CisKKyAgICBTdHJpbmcgZXZhbHVhdGVQYXRoKGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBSZWY8RmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5PiBtX3Jvb3Q7CisgICAgUmVmPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV9y
b290UGF0aDsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAppbmRleCBkNzBkMmQw
NTdiMi4uYzkxNWIwMGUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0zNyw5
ICszNyw5IEBAIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5KERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvCiB7CiB9CiAKLVJlZjxGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyPiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigp
CitSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
OjpjcmVhdGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQsICp0aGlzKTsKIH0K
IAogdm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgRmxhZ3MmLCBSZWZQdHI8Rmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2Fs
bGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKaW5kZXggZjQ3NGM2OTQ2ZGMuLmU1YzYxNjYz
MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCkBAIC00MSwxMyArNDEsMTUgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnko
ZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICB9CiAKLSAgICBSZWY8RmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBz
dHJ1Y3QgRmxhZ3MgewogICAgICAgICBib29sIGNyZWF0ZSB7IGZhbHNlIH07CiAgICAgICAgIGJv
b2wgZXhjbHVzaXZlIHsgZmFsc2UgfTsKICAgICB9OwogCisgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsUGF0aCgpID09ICIvIjsgfQorCiAgICAgdm9pZCBnZXRGaWxlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZsYWdzJiBv
cHRpb25zLCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiYmKTsKICAgICB2b2lkIGdldERpcmVjdG9yeShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGbGFncyYgb3B0aW9ucywgUmVmUHRyPEZpbGVT
eXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5pZGwKaW5kZXggMjhiZGZjNzkyODAuLjQwZjVjNWQzNDc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2FkLAogXSBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5IDogRmlsZVN5c3RlbUVudHJ5IHsKLSAgICBGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyIGNyZWF0ZVJlYWRlcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOwogCiAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgZ2V0RmlsZShvcHRpb25hbCBVU1ZTdHJp
bmc/IHBhdGgsCiAgICAgICAgIG9wdGlvbmFsIEZpbGVTeXN0ZW1GbGFncyBvcHRpb25zLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IGVkOWVlNjNjMzk3Li5iZDJlODBkZmU1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMjcsMjUgKzI3LDcyIEBACiAjaW5j
bHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0
aW9uLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5
KQotICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
cjo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKKyAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6fkZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxG
aWxlU3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJv
ckNhbGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAgICAg
IGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpj
cmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICByZXR1cm4gIkZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVuZGlu
Z0FjdGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkv
I2RvbS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVhZGVudHJpZXMKK3ZvaWQgRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmIChtX2lzUmVh
ZGluZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVycm9yQ2Fs
bGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRGlyZWN0b3J5IHJlYWRl
ciBpcyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAg
IGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpj
cmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2lz
RG9uZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4
dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNSZWFkaW5nID0gdHJ1
ZTsKKyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNh
bGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9p
c1JlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0ZW0oKS5saXN0
RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShz
dWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0o
RXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJiByZXN1bHQpIHsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBt
X2Vycm9yID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxl
RXZlbnQoRE9NRXhjZXB0aW9uOjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgICAgICAgICB1
bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtX2lzRG9uZSA9IHRydWU7CisgICAgICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5o
CmluZGV4IDhhMDk5NDRhZDk1Li40ZmI2NDc5NjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM2LDExICszOCwxMSBAQCBjbGFzcyBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciA6IHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI+IHsKK2NsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgZmluYWwgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUmVmQ291
bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5JiBkaXJlY3RvcnkpCisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5JiBkaXJlY3RvcnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGNvbnRleHQsIGRpcmVjdG9y
eSkpOwogICAgIH0KIAogICAgIH5GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKCk7CkBAIC00OCw5
ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkRW50cmllcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYpOworICAgIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFs
OwogCiAgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9kaXJlY3Rvcnk7CisgICAg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IG1fZXJyb3I7CisgICAgYm9vbCBtX2lzUmVhZGluZyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5pZGwKaW5kZXggZGQwY2IwNGRkNTUuLjY1ZDJjNjE1M2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsCkBAIC0yNSw3ICsyNSw2IEBACiAKIFsKICAgICBF
bmFibGVkQXRSdW50aW1lPURpcmVjdG9yeVVwbG9hZCwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciB7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmVhZEVudHJpZXMoRmlsZVN5c3Rl
bUVudHJpZXNDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2s/
IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggYjA0OTYzYzlmODguLjZhYWU4MmNi
NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcs
NCArMzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3Rl
bSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWEKIHsKIH0KIAorRmlsZVN5c3RlbUVu
dHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30KKworRE9NRmlsZVN5c3RlbSYgRmlsZVN5c3Rl
bUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxlc3lzdGVtLmdl
dCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCAwMzFkYzI3MjQ4
Ni4uYTc0ZDg3ZTc4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKQEAgLTM1LDIwICszNSwyMCBAQCBjbGFzcyBET01GaWxl
U3lzdGVtOwogCiBjbGFzcyBGaWxlU3lzdGVtRW50cnkgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
LCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRW50cnk+IHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5GaWxlU3lzdGVtRW50cnkoKSB7IH0KKyAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtRW50cnko
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBj
b25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUGF0aDsg
fQotICAgIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVz
eXN0ZW07IH0KKyAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKICAgICBGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYg
dmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW0mIG1fZmlsZXN5c3Rl
bTsKKyAgICBSZWY8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmluZyBtX25h
bWU7CiAgICAgU3RyaW5nIG1fdmlydHVhbFBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0
aW9uLmNwcAppbmRleCBlMjhiMGQxNzc4Ny4uYzk4ZmZjMTA4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01FeGNlcHRpb24uY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIGFycmF5IG5lZWRzIHRvIGJlIGtlcHQgaW4gc3lu
YyB3aXRoIHRoZSBFeGNlcHRpb25Db2RlIGVudW1lcmF0aW9uLgpAQCAtOTksNiArMTAxLDEyIEBA
IFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhj
ZXB0aW9uKGxlZ2FjeUNvZGVGcm9tTmFtZShuYW1lKSwgbmFtZSwgbWVzc2FnZSkpOwogfQogCitS
ZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBFeGNlcHRpb24mIGV4
Y2VwdGlvbikKK3sKKyAgICBhdXRvJiBkZXNjcmlwdGlvbiA9IERPTUV4Y2VwdGlvbjo6ZGVzY3Jp
cHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhj
ZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUsIGV4Y2VwdGlv
bi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3JpcHRpb24ubWVzc2FnZSA6IGV4Y2VwdGlvbi5t
ZXNzYWdlKCkpKTsKK30KKwogRE9NRXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVnYWN5Q29kZSBs
ZWdhY3lDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAg
ICA6IG1fbGVnYWN5Q29kZShsZWdhY3lDb2RlKQogICAgICwgbV9uYW1lKG5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NRXhjZXB0aW9uLmgKaW5kZXggYzUzMzJiOTgyOTUuLmRhYmU5MzA3NTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3MgRE9NRXhjZXB0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxET01F
eGNlcHRpb24+IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcqIG1lc3NhZ2UgPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2Vw
dGlvbiYpOwogCiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4KICAgICBzdGF0aWMgUmVmPERPTUV4
Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAppbmRleCA2YjVkN2E1Nzhi
YS4uMjU5MjU5NDI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAK
QEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0NhbGxiYWNr
LmgiCi0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MTIsMTMgKzExMSw4IEBAIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IERhdGFUcmFuc2Zlckl0ZW06
OmdldEFzRW50cnkoKSBjb25zdAogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBpZiAoIW1fZmlsZVN5c3RlbSkKLSAgICAgICAgbV9maWxlU3lzdGVtID0gRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0KLSAgICBT
dHJpbmcgdmlydHVhbFBhdGggPSAiLyIgKyBmaWxlLT5uYW1lKCk7Ci0gICAgaWYgKGZpbGUtPmlz
RGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW1G
aWxlRW50cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7CisgICAgYXV0byBm
aWxlU3lzdGVtID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKCpmaWxlKTsKKyAgICByZXR1cm4gZmls
ZVN5c3RlbS0+ZmlsZUFzRW50cnkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKaW5kZXggYmVhMWNmMWU0YzAuLjcxMzMwNDMx
YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTcyLDcgKzcyLDYg
QEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiBtX2xpc3Q7CiAg
ICAgY29uc3QgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwotICAgIG11
dGFibGUgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBmYWU1YWUzODhiNy4uM2VmMjdjNmJiYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBX
RUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGlt
ZV90JiByZXN1bHQpOyAvLyBOb3QgYQogYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5n
JiwgRmlsZU1ldGFkYXRhJik7CiBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CitjaGFyIHBhdGhTZXBhcmF0b3Io
KTsKIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhj
b25zdCBTdHJpbmcmIHBhdGgpOwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDViZTM2
ZTllZGRlLi41MDYzMDJkZWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTE4MCw2ICsxODAsMTEgQEAgU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQogICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7CiB9
CiAKK2NoYXIgcGF0aFNlcGFyYXRvcigpCit7CisgICAgcmV0dXJuIEdfRElSX1NFUEFSQVRPUl9T
OworfQorCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CmluZGV4IDA1MzE5MzBiMzkwLi41Yjk3ZjU4MmZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yNzAsNiArMjcwLDExIEBA
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCkKICAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsK
IH0KIAorY2hhciBwYXRoU2VwYXJhdG9yKCkKK3sKKyAgICByZXR1cm4gJy8nOworfQorCiBib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQ1N0cmluZyBm
dWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAyZDEyNzc0ODc2Yy4uNDBi
MWJjYjg5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTIwMSw2ICsyMDEsMTIgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK2NoYXIgcGF0aFNlcGFyYXRv
cigpCit7CisgICAgcmV0dXJuICdcXCc7Cit9CisKKwogI2lmICFVU0UoQ0YpCiAKIENTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319369</attachid>
            <date>2017-08-30 09:22:08 -0700</date>
            <delta_ts>2017-08-30 11:27:35 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>176091_FileSystemDirectoryReader_wip.patch</filename>
            <type>text/plain</type>
            <size>35137</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5ZWE2
YWEzYTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0RpcmVjdG9y
eSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMgNAorUEFT
UyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50cmll
c1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVsbFBhdGgg
aXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlzRGlyZWN0
b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRlcjIiCitQ
QVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyIgor
UEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxk
RW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJm
aWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0Zp
bGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFTUyBncmFu
ZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRy
aWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0IgorUEFT
UyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50
cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0u
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BBU1MgZ3Jh
bmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdyYW5kQ2hp
bGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFt
ZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRo
IGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0IgorUEFTUyBn
cmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJl
YWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxMzAwNWZkZDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LnJlYWRFbnRyaWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0
YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGVudHJ5MS5pc0ZpbGUgaXMgdHJ1ZQor
UEFTUyBlbnRyeTEubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5MS5mdWxsUGF0aCBpcyAi
L3Rlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91
bmQubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0
LnR4dCIKK1BBU1MgZW50cnkyLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnkyLm5hbWUg
aXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkyLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFT
UyBlbnRyeUZvdW5kLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1lIGlz
ICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODY5ZTVkMWJkMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApAQCAtMCwwICsxLDEwMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJv
cHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29s
b3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3Zl
cmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZWxlbWVudCkgeworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VsZW1lbnQoZWxl
bWVudCwgZmlsZXMpIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQg
cmVzdWx0ID0gW107CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIo
KTsKKyAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVh
ZEVudHJpZXMoZW50cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAw
KSB7CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkp
OworICAgICAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCBy
ZWplY3QpOworICAgIH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKworZnVuY3Rpb24gZmlu
ZEVudHJ5QnlOYW1lKGVudHJpZXMsIG5hbWUpCit7CisgICAgZm9yIChsZXQgY2hpbGRFbnRyeSBv
ZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChjaGlsZEVudHJ5Lm5hbWUgPT0gbmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGlsZEVudHJ5CisgICAgfQorICAgIHJldHVybiBudWxsOworfQorCit2
YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6
b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAg
ZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5z
ZmVyLml0ZW1zLmxlbmd0aCIsICIyIik7CisKKyAgICBlbnRyeTEgPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5MiA9IGRhdGFUcmFuc2Zlci5pdGVt
c1sxXS53ZWJraXRHZXRBc0VudHJ5KCk7CisKKyAgICBzaG91bGRCZVRydWUoImVudHJ5MS5pc0Zp
bGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5uYW1lIiwgInRlc3QudHh0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEuZnVsbFBhdGgiLCAiL3Rlc3Qu
dHh0Iik7CisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTEuZmlsZXN5c3RlbS5yb290KS50
aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5
TmFtZShlbnRyaWVzLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeUZv
dW5kLmlzRmlsZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQu
bmFtZSIsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5
Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3QudHh0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJl
bnRyeTIuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRy
eTIubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
bnRyeTIuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgICAgICBnZXRFbnRyaWVzQXNQcm9t
aXNlKGVudHJ5Mi5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAg
ICAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFtZShlbnRyaWVzLCAidGVzdEZpbGVz
Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNEaXJlY3RvcnkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5k
LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRF
bnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVu
dHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVu
dERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250
b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQn
LCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1k
aXJlY3RvcnlSZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uODZjNTQ4MzA3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKQEAg
LTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVu
dHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zm
c2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxl
c09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQcm9taXNl
KGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0gZGlyRW50
cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAgICAg
ICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+
IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9
CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwor
ZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRyYW5zZmVy
Lml0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVudHJ5Lmlz
RGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBhdGgiLCAi
L3Rlc3RGaWxlcyIpOworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAg
IHNob3VsZEJlKCJjaGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rl
c3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJp
ZXNbMV0ubmFtZSIsICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJmb2xkZXIx
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJdLmZ1bGxQ
YXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNo
aWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY2hpbGRFbnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVz
L3N1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbM10uaXNE
aXJlY3RvcnkiKTsKKworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1sy
XSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxkRW50cmll
cyA9IGVudHJpZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVu
Z3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGls
ZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9z
dWJmb2xkZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENo
aWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlz
ZShjaGlsZEVudHJpZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAg
ICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTQudHh0
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50
cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Iik7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUi
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVu
dHJpZXNbMV0ubmFtZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxl
cy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJncmFuZENoaWxkRW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAg
Z2V0RW50cmllc0FzUHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5jdGlvbihl
bnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMgPSBl
bnRyaWVzOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENoaWxkRW50
cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRF
bnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9m
aWxlNS50eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7Cisg
ICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jl
c291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4MWUxNTEu
LmZjZTc5NDc0ZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNTYzLDYgKzU2Myw4IEBAIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50
LWFwaS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggYTgzOWE1Mjg1MGYuLmEwMGM3ODZmODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6RE9N
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAs
IG1fcm9vdChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpKQorc3RydWN0IExpc3RlZENoaWxkIHsKKyAgICBTdHJpbmcgZmlsZW5hbWU7Cisg
ICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGU7CisKKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENv
cHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGZpbGVuYW1l
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgfTsKKyAgICB9Cit9
OworCitET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCisgICAg
OiBtX25hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9maWxlKFdURk1v
dmUoZmlsZSkpCisgICAgLCBtX3Jvb3RQYXRoKGRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkp
KQorICAgICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29y
ayBxdWV1ZSIpKQogeworICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKIH0K
IAogRE9NRmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewogfQogCitSZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsK
K30KKworUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoKQor
eworICAgIGlmIChtX2ZpbGUtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmls
ZS0+bmFtZSgpKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8j
ZXZhbHVhdGUtYS1wYXRoCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcv
Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKKyAgICB2aXJ0dWFsUGF0aC5zcGxp
dCgnLycsIGZhbHNlIC8qIGFsbG93RW1wdHkgKi8sIGNvbXBvbmVudHMpOworCisgICAgVmVjdG9y
PFN0cmluZz4gcmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNv
bXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLiIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLi4iKSB7Cisg
ICAgICAgICAgICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmVzb2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoY29tcG9uZW50KTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQobV9yb290UGF0aCk7CisgICAgZm9yIChhdXRvJiByZXNvbHZlZENvbXBv
bmVudCA6IHJlc29sdmVkQ29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChwYXRo
U2VwYXJhdG9yKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvbHZlZENvbXBvbmVudCk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9y
eSwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVu
dHJ5Pj4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVCgmZGlyZWN0b3J5
LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKKworICAgIGlmIChkaXJlY3RvcnkuaXNSb290KCkpIHsK
KyAgICAgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBjaGlsZHJlbjsKKyAgICAgICAg
Y2hpbGRyZW4uYXBwZW5kKGZpbGVBc0VudHJ5KCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNoaWxkcmVuKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKGRpcmVjdG9yeS52aXJ0dWFsUGF0aCgpKTsKKyAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0ZWRDb3B5KCksIGRp
cmVjdG9yeVB0ciA9ICZkaXJlY3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZmlsZUlz
RGlyZWN0b3J5KGZ1bGxQYXRoKSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJQYXRo
IG5vIGxvbmdlciBleGlzdHMgb3IgaXMgbm8gbG9uZ2VyIGEgZGlyZWN0b3J5IiB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGNoaWxkUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KGZ1bGxQYXRoLCAi
KiIpOworICAgICAgICBWZWN0b3I8TGlzdGVkQ2hpbGQ+IGxpc3RlZENoaWxkcmVuOworICAgICAg
ICBsaXN0ZWRDaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNoaWxkUGF0aHMuc2l6ZSgp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBjaGlsZFBhdGhzKSB7CisgICAgICAg
ICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgICAgICAgICBpZiAoIWdldEZpbGVNZXRh
ZGF0YShjaGlsZFBhdGgsIG1ldGFkYXRhKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBh
dGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBtZXRhZGF0YS50eXBlIH0pOworICAgICAgICB9Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gQ3Jvc3NUaHJlYWRDb3BpZXI8
VmVjdG9yPExpc3RlZENoaWxkPj46OmNvcHkobGlzdGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlQdHJd
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+IGVu
dHJpZXM7CisgICAgICAgICAgICBlbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGlzdGVk
Q2hpbGRyZW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBsaXN0ZWRD
aGlsZHJlbikgeworICAgICAgICAgICAgICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IGRpcmVjdG9y
eVB0ci0+dmlydHVhbFBhdGgoKSArICIvIiArIGNoaWxkLmZpbGVuYW1lOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAoY2hpbGQudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgRmlsZU1ldGFk
YXRhOjpUeXBlRmlsZToKKyAgICAgICAgICAgICAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBl
bmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKCp0aGlzLCB2aXJ0dWFsUGF0aCkpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbGVNZXRhZGF0
YTo6VHlwZURpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgZW50cmllcy51bmNoZWNrZWRB
cHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIHZpcnR1YWxQYXRo
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cmllcykpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXgg
ZjM2OGMwZGY0NTguLjgzNzk5MTZlMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTI1LDMyICsyNSw0NCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgRmlsZTsKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTsK
IGNsYXNzIEZpbGVTeXN0ZW1FbnRyeTsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW0+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUpCisgICAgc3RhdGljIFJlZjxET01GaWxlU3lzdGVtPiBjcmVhdGUoUmVmPEZpbGU+JiYgZmls
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUZpbGVTeXN0ZW0obmFt
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01GaWxlU3lzdGVtKFdURk1vdmUo
ZmlsZSkpKTsKICAgICB9CiAKICAgICB+RE9NRmlsZVN5c3RlbSgpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CisgICAgUmVmPEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeT4gcm9vdCgpOworCisgICAgdm9pZCBsaXN0RGlyZWN0b3J5KEZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxW
ZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmKT4mJik7CisKKyAgICBSZWY8RmlsZVN5c3Rl
bUVudHJ5PiBmaWxlQXNFbnRyeSgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERPTUZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBleHBsaWNpdCBET01GaWxlU3lzdGVtKFJl
ZjxGaWxlPiYmKTsKKworICAgIFN0cmluZyBldmFsdWF0ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0
dWFsUGF0aCk7CiAKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnk+IG1fcm9vdDsKKyAgICBSZWY8RmlsZT4gbV9maWxlOworICAgIFN0cmluZyBtX3Jv
b3RQYXRoOworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5pZGwKaW5kZXggOGNiYTMwMjFiMzMuLmIyNWVjNjUwZjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
aWRsCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgSW50ZXJmYWNlTmFtZT1GaWxlU3lzdGVtLAogXSBp
bnRlcmZhY2UgRE9NRmlsZVN5c3RlbSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmlu
ZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkg
cm9vdDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5IHJvb3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAppbmRl
eCBkNzBkMmQwNTdiMi4uYzkxNWIwMGUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3Bw
CkBAIC0zNyw5ICszNyw5IEBAIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvCiB7CiB9CiAKLVJlZjxG
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0
ZVJlYWRlcigpCitSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKCp0aGlzKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQsICp0
aGlzKTsKIH0KIAogdm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgRmxhZ3MmLCBS
ZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYm
IGVycm9yQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKaW5kZXggZjQ3NGM2OTQ2ZGMu
LmU1YzYxNjYzMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCkBAIC00MSwxMyArNDEsMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkoZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICB9CiAKLSAgICBSZWY8Rmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgUmVmPEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CiAKICAgICBzdHJ1Y3QgRmxhZ3MgewogICAgICAgICBib29sIGNyZWF0ZSB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wgZXhjbHVzaXZlIHsgZmFsc2UgfTsKICAgICB9OwogCisgICAgYm9vbCBpc1Jv
b3QoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsUGF0aCgpID09ICIvIjsgfQorCiAgICAgdm9pZCBn
ZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IEZsYWdzJiBvcHRpb25zLCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiYmKTsKICAgICB2b2lkIGdldERpcmVjdG9yeShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGbGFncyYgb3B0aW9ucywgUmVm
UHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGwKaW5kZXggMjhiZGZjNzkyODAuLjQwZjVjNWQz
NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwog
ICAgIEVuYWJsZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2FkLAogXSBpbnRlcmZhY2UgRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5IDogRmlsZVN5c3RlbUVudHJ5IHsKLSAgICBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOwogCiAg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgZ2V0RmlsZShvcHRpb25h
bCBVU1ZTdHJpbmc/IHBhdGgsCiAgICAgICAgIG9wdGlvbmFsIEZpbGVTeXN0ZW1GbGFncyBvcHRp
b25zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IGVkOWVlNjNjMzk3Li5iZDJl
ODBkZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMjcsMjUgKzI3LDcy
IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgogCiAjaW5jbHVkZSAi
RE9NRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVy
cm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYg
ZGlyZWN0b3J5KQotICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorRmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlcjo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkKKyAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkK
IHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
cjo6fkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFJlZjxGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
cjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2sp
Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhj
ZXB0aW9uOjpjcmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICByZXR1cm4gIkZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6
OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAh
aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50
cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVhZGVudHJpZXMKK3ZvaWQg
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYgc3VjY2Vzc0Nh
bGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlm
IChtX2lzUmVhZGluZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAg
IGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpj
cmVhdGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRGlyZWN0
b3J5IHJlYWRlciBpcyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAg
ICAgICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhj
ZXB0aW9uOjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX2lzRG9uZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJh
Y2soY29udGV4dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNSZWFk
aW5nID0gdHJ1ZTsKKyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2sp
LCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9pc1JlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0
ZW0oKS5saXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0g
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNh
bGxiYWNrKV0oRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJiByZXN1
bHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICBtX2Vycm9yID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAg
ICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoRE9NRXhjZXB0aW9uOjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAg
ICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2lzRG9uZSA9IHRydWU7CisgICAgICAg
ICAgICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CisgICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5oCmluZGV4IDhhMDk5NDRhZDk1Li40ZmI2NDc5NjU0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM2LDExICszOCwxMSBAQCBjbGFzcyBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlciA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXI+IHsKK2NsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5JiBkaXJlY3RvcnkpCisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3RvcnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGNvbnRleHQs
IGRpcmVjdG9yeSkpOwogICAgIH0KIAogICAgIH5GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKCk7
CkBAIC00OCw5ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkRW50cmllcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYpOworICAgIEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNv
bnN0IGZpbmFsOwogCiAgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9kaXJlY3Rv
cnk7CisgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IG1fZXJyb3I7CisgICAgYm9vbCBtX2lz
UmVhZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKaW5kZXggZGQwY2IwNGRkNTUuLjY1ZDJjNjE1
M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsCkBAIC0yNSw3ICsyNSw2IEBACiAK
IFsKICAgICBFbmFibGVkQXRSdW50aW1lPURpcmVjdG9yeVVwbG9hZCwKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciB7
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmVhZEVudHJpZXMo
RmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9y
Q2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggYjA0OTYzYzlmODgu
LjZhYWU4MmNiNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzcsNCArMzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoRE9N
RmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWEKIHsKIH0KIAorRmls
ZVN5c3RlbUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30KKworRE9NRmlsZVN5c3RlbSYg
RmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxl
c3lzdGVtLmdldCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCAw
MzFkYzI3MjQ4Ni4uYTc0ZDg3ZTc4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKQEAgLTM1LDIwICszNSwyMCBAQCBjbGFz
cyBET01GaWxlU3lzdGVtOwogCiBjbGFzcyBGaWxlU3lzdGVtRW50cnkgOiBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRW50cnk+IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtRW50cnkoKSB7IH0KKyAgICB2aXJ0dWFsIH5GaWxlU3lz
dGVtRW50cnkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KICAgICBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUGF0aDsgfQotICAgIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2ZpbGVzeXN0ZW07IH0KKyAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKICAgICBGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0
IFN0cmluZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW0mIG1f
ZmlsZXN5c3RlbTsKKyAgICBSZWY8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdmlydHVhbFBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NRXhjZXB0aW9uLmNwcAppbmRleCBlMjhiMGQxNzc4Ny4uYzk4ZmZjMTA4NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAKKyNpbmNsdWRlICJFeGNlcHRpb24u
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIGFycmF5IG5lZWRzIHRvIGJlIGtl
cHQgaW4gc3luYyB3aXRoIHRoZSBFeGNlcHRpb25Db2RlIGVudW1lcmF0aW9uLgpAQCAtOTksNiAr
MTAxLDEyIEBAIFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRE9NRXhjZXB0aW9uKGxlZ2FjeUNvZGVGcm9tTmFtZShuYW1lKSwgbmFtZSwgbWVzc2FnZSkp
OwogfQogCitSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBFeGNl
cHRpb24mIGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvJiBkZXNjcmlwdGlvbiA9IERPTUV4Y2VwdGlv
bjo6ZGVzY3JpcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUs
IGV4Y2VwdGlvbi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3JpcHRpb24ubWVzc2FnZSA6IGV4
Y2VwdGlvbi5tZXNzYWdlKCkpKTsKK30KKwogRE9NRXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVn
YWN5Q29kZSBsZWdhY3lDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICA6IG1fbGVnYWN5Q29kZShsZWdhY3lDb2RlKQogICAgICwgbV9uYW1lKG5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKaW5kZXggYzUzMzJiOTgyOTUuLmRhYmU5MzA3NTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3MgRE9NRXhjZXB0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxET01FeGNlcHRpb24+IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcqIG1l
c3NhZ2UgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNv
bnN0IEV4Y2VwdGlvbiYpOwogCiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4KICAgICBzdGF0aWMg
UmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAppbmRleCA2
YjVkN2E1NzhiYS4uMjU5MjU5NDI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmlu
Z0NhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMTIsMTMgKzExMSw4IEBAIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IERhdGFUcmFu
c2Zlckl0ZW06OmdldEFzRW50cnkoKSBjb25zdAogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIW1fZmlsZVN5c3RlbSkKLSAgICAgICAgbV9maWxlU3lz
dGVtID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7
Ci0KLSAgICBTdHJpbmcgdmlydHVhbFBhdGggPSAiLyIgKyBmaWxlLT5uYW1lKCk7Ci0gICAgaWYg
KGZpbGUtPmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7Ci0gICAgcmV0dXJuIEZp
bGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7Cisg
ICAgYXV0byBmaWxlU3lzdGVtID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKCpmaWxlKTsKKyAgICBy
ZXR1cm4gZmlsZVN5c3RlbS0+ZmlsZUFzRW50cnkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKaW5kZXggYmVhMWNmMWU0YzAu
LjcxMzMwNDMxYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTcy
LDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiBt
X2xpc3Q7CiAgICAgY29uc3QgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxl
OwotICAgIG11dGFibGUgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBmYWU1YWUzODhiNy4uM2I4
ZWZlNTAwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTEwMSw2ICsx
MDEsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJiwgdGltZV90JiByZXN1bHQpOyAvLyBOb3QgYQogYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiwgRmlsZU1ldGFkYXRhJik7CiBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Citjb25zdCBjaGFy
KiBwYXRoU2VwYXJhdG9yKCk7CiBTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJh
aWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtl
QWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5
UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcAppbmRleCA1YmUzNmU5ZWRkZS4uMTgwN2FhYmQ1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xODAsNiArMTgwLDExIEBA
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCkKICAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRPUl9T
ICsgY29tcG9uZW50OwogfQogCitjb25zdCBjaGFyKiBwYXRoU2VwYXJhdG9yKCkKK3sKKyAgICBy
ZXR1cm4gR19ESVJfU0VQQVJBVE9SX1M7Cit9CisKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVu
ZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggMDUzMTkzMGIzOTAuLjA5N2I1MWUxOGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTI3MCw2ICsyNzAsMTEgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJldHVybiBw
YXRoICsgIi8iICsgY29tcG9uZW50OwogfQogCitjb25zdCBjaGFyKiBwYXRoU2VwYXJhdG9yKCkK
K3sKKyAgICByZXR1cm4gIi8iOworfQorCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgQ1N0cmluZyBmdWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVt
V2luLmNwcAppbmRleCAyZDEyNzc0ODc2Yy4uMDgwM2EyMTBkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTIwMSw2ICsyMDEsMTIgQEAg
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKK2NvbnN0IGNoYXIqIHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiAi
XFwiOworfQorCisKICNpZiAhVVNFKENGKQogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319383</attachid>
            <date>2017-08-30 11:27:35 -0700</date>
            <delta_ts>2017-08-30 12:04:12 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>176091_FileSystemDirectoryReader_wip.patch</filename>
            <type>text/plain</type>
            <size>36477</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5ZWE2
YWEzYTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0RpcmVjdG9y
eSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMgNAorUEFT
UyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUyLnR4
dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50cmll
c1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVsbFBhdGgg
aXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlzRGlyZWN0
b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRlcjIiCitQ
QVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyIgor
UEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxk
RW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJm
aWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0Zp
bGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFTUyBncmFu
ZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRy
aWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0IgorUEFT
UyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50
cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0u
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BBU1MgZ3Jh
bmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdyYW5kQ2hp
bGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFt
ZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRo
IGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0IgorUEFTUyBn
cmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJl
YWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxMzAwNWZkZDk1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LnJlYWRFbnRyaWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0
YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGVudHJ5MS5pc0ZpbGUgaXMgdHJ1ZQor
UEFTUyBlbnRyeTEubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5MS5mdWxsUGF0aCBpcyAi
L3Rlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91
bmQubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0
LnR4dCIKK1BBU1MgZW50cnkyLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnkyLm5hbWUg
aXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnkyLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFT
UyBlbnRyeUZvdW5kLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1lIGlz
ICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODY5ZTVkMWJkMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApAQCAtMCwwICsxLDEwMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJv
cHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29s
b3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3Zl
cmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZWxlbWVudCkgeworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VsZW1lbnQoZWxl
bWVudCwgZmlsZXMpIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQg
cmVzdWx0ID0gW107CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIo
KTsKKyAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVh
ZEVudHJpZXMoZW50cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAw
KSB7CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkp
OworICAgICAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCBy
ZWplY3QpOworICAgIH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKworZnVuY3Rpb24gZmlu
ZEVudHJ5QnlOYW1lKGVudHJpZXMsIG5hbWUpCit7CisgICAgZm9yIChsZXQgY2hpbGRFbnRyeSBv
ZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChjaGlsZEVudHJ5Lm5hbWUgPT0gbmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGlsZEVudHJ5CisgICAgfQorICAgIHJldHVybiBudWxsOworfQorCit2
YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6
b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAg
ZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5z
ZmVyLml0ZW1zLmxlbmd0aCIsICIyIik7CisKKyAgICBlbnRyeTEgPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5MiA9IGRhdGFUcmFuc2Zlci5pdGVt
c1sxXS53ZWJraXRHZXRBc0VudHJ5KCk7CisKKyAgICBzaG91bGRCZVRydWUoImVudHJ5MS5pc0Zp
bGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5uYW1lIiwgInRlc3QudHh0
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEuZnVsbFBhdGgiLCAiL3Rlc3Qu
dHh0Iik7CisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTEuZmlsZXN5c3RlbS5yb290KS50
aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5
TmFtZShlbnRyaWVzLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeUZv
dW5kLmlzRmlsZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQu
bmFtZSIsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5
Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3QudHh0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJl
bnRyeTIuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRy
eTIubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
bnRyeTIuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgICAgICBnZXRFbnRyaWVzQXNQcm9t
aXNlKGVudHJ5Mi5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAg
ICAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFtZShlbnRyaWVzLCAidGVzdEZpbGVz
Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNEaXJlY3RvcnkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5k
LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRF
bnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVu
dHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVu
dERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250
b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQn
LCAnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1k
aXJlY3RvcnlSZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uODZjNTQ4MzA3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKQEAg
LTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVu
dHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zm
c2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxl
c09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQcm9taXNl
KGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0gZGlyRW50
cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAgICAg
ICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+
IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9
CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwor
ZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRyYW5zZmVy
Lml0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVudHJ5Lmlz
RGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1lIiwgInRl
c3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBhdGgiLCAi
L3Rlc3RGaWxlcyIpOworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAg
IHNob3VsZEJlKCJjaGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rl
c3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNb
MF0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJp
ZXNbMV0ubmFtZSIsICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJmb2xkZXIx
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJdLmZ1bGxQ
YXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNo
aWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY2hpbGRFbnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVz
L3N1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbM10uaXNE
aXJlY3RvcnkiKTsKKworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1sy
XSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxkRW50cmll
cyA9IGVudHJpZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVu
Z3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGls
ZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9z
dWJmb2xkZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENo
aWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlz
ZShjaGlsZEVudHJpZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAg
ICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTQudHh0
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50
cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Iik7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUi
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVu
dHJpZXNbMV0ubmFtZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxl
cy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJncmFuZENoaWxkRW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAg
Z2V0RW50cmllc0FzUHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5jdGlvbihl
bnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMgPSBl
bnRyaWVzOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENoaWxkRW50
cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRF
bnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9m
aWxlNS50eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7Cisg
ICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jl
c291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4MWUxNTEu
LmZjZTc5NDc0ZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNTYzLDYgKzU2Myw4IEBAIHBsYXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50
LWFwaS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKaW5kZXggYTgzOWE1Mjg1MGYuLjg0OTczYTQ3MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTM4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6RE9N
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAs
IG1fcm9vdChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpKQorc3RydWN0IExpc3RlZENoaWxkIHsKKyAgICBTdHJpbmcgZmlsZW5hbWU7Cisg
ICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGU7CisKKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07IH0K
K307CisKK3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8TGlzdGVkQ2hpbGQ+PiBsaXN0RGlyZWN0
b3J5V2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFmaWxlSXNEaXJlY3RvcnkoZnVsbFBhdGgpKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBhdGggbm8gbG9uZ2VyIGV4
aXN0cyBvciBpcyBubyBsb25nZXIgYSBkaXJlY3RvcnkiIH07CisKKyAgICBWZWN0b3I8U3RyaW5n
PiBjaGlsZFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKKyAg
ICBWZWN0b3I8TGlzdGVkQ2hpbGQ+IGxpc3RlZENoaWxkcmVuOworICAgIGxpc3RlZENoaWxkcmVu
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOworICAgIGZvciAoYXV0
byYgY2hpbGRQYXRoIDogY2hpbGRQYXRocykgeworICAgICAgICBGaWxlTWV0YWRhdGEgbWV0YWRh
dGE7CisgICAgICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKGNoaWxkUGF0aCwgbWV0YWRhdGEpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFw
cGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBtZXRhZGF0YS50
eXBlIH0pOworICAgIH0KKyAgICByZXR1cm4gV1RGTW92ZShsaXN0ZWRDaGlsZHJlbik7Cit9CisK
K3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiB0b0ZpbGVT
eXN0ZW1FbnRyaWVzKERPTUZpbGVTeXN0ZW0mIGZpbGVTeXN0ZW0sIEV4Y2VwdGlvbk9yPFZlY3Rv
cjxMaXN0ZWRDaGlsZD4+JiYgbGlzdGVkQ2hpbGRyZW4sIGNvbnN0IFN0cmluZyYgcGFyZW50Vmly
dHVhbFBhdGgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobGlzdGVk
Q2hpbGRyZW4uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBsaXN0ZWRDaGlsZHJlbi5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+IGVu
dHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpc3RlZENoaWxkcmVu
LnJldHVyblZhbHVlKCkuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogbGlzdGVkQ2hp
bGRyZW4ucmV0dXJuVmFsdWUoKSkgeworICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBwYXJl
bnRWaXJ0dWFsUGF0aCArICIvIiArIGNoaWxkLmZpbGVuYW1lOworICAgICAgICBzd2l0Y2ggKGNo
aWxkLnR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOgorICAgICAg
ICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRl
KGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3Rvcnk6CisgICAgICAgICAgICBlbnRyaWVzLnVu
Y2hlY2tlZEFwcGVuZChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShmaWxlU3lzdGVt
LCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZW50cmllczsK
K30KKworRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShSZWY8RmlsZT4mJiBmaWxlKQorICAg
IDogbV9uYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKKyAgICAsIG1fZmlsZShXVEZN
b3ZlKGZpbGUpKQorICAgICwgbV9yb290UGF0aChkaXJlY3RvcnlOYW1lKG1fZmlsZS0+cGF0aCgp
KSkKKyAgICAsIG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJET01GaWxlU3lzdGVtIHdv
cmsgcXVldWUiKSkKK3sKKyAgICBBU1NFUlQoIW1fcm9vdFBhdGguZW5kc1dpdGgoJy8nKSk7CiB9
CiAKIERPTUZpbGVTeXN0ZW06On5ET01GaWxlU3lzdGVtKCkKIHsKIH0KIAorUmVmPEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgpCit7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCBBU0NJSUxpdGVyYWwoIi8iKSk7
Cit9CisKK1JlZjxGaWxlU3lzdGVtRW50cnk+IERPTUZpbGVTeXN0ZW06OmZpbGVBc0VudHJ5KCkK
K3sKKyAgICBpZiAobV9maWxlLT5pc0RpcmVjdG9yeSgpKQorICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbUZpbGVFbnRyeTo6Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2Zp
bGUtPm5hbWUoKSk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkv
I2V2YWx1YXRlLWEtcGF0aAorU3RyaW5nIERPTUZpbGVTeXN0ZW06OmV2YWx1YXRlUGF0aChjb25z
dCBTdHJpbmcmIHZpcnR1YWxQYXRoKQoreworICAgIEFTU0VSVCh2aXJ0dWFsUGF0aFswXSA9PSAn
LycpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7CisgICAgdmlydHVhbFBhdGguc3Bs
aXQoJy8nLCBmYWxzZSAvKiBhbGxvd0VtcHR5ICovLCBjb21wb25lbnRzKTsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc29sdmVkQ29tcG9uZW50czsKKyAgICByZXNvbHZlZENvbXBvbmVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb21wb25lbnRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBj
b21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGlmIChjb21wb25lbnQgPT0gIi4iKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjb21wb25lbnQgPT0gIi4uIikgewor
ICAgICAgICAgICAgaWYgKCFyZXNvbHZlZENvbXBvbmVudHMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlZENvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGNvbXBvbmVudCk7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKG1fcm9vdFBhdGgpOworICAgIGZvciAoYXV0byYgcmVzb2x2ZWRDb21w
b25lbnQgOiByZXNvbHZlZENvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocGF0
aFNlcGFyYXRvcigpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmVzb2x2ZWRDb21wb25lbnQp
OworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIERPTUZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3Rv
cnksIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKKworICAgIGF1dG8gZnVs
bFBhdGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5LnZpcnR1YWxQYXRoKCkpOworICAgIGlmIChm
dWxsUGF0aCA9PSBtX3Jvb3RQYXRoKSB7CisgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVu
dHJ5Pj4gY2hpbGRyZW47CisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJlbikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQ
YXRoLmlzb2xhdGVkQ29weSgpLCBkaXJlY3RvcnlQdHIgPSAmZGlyZWN0b3J5XSgpIG11dGFibGUg
eworICAgICAgICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0
YShmdWxsUGF0aCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8RXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4+Ojpjb3B5KGxp
c3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5UHRyXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcygqdGhpcywgV1RGTW92ZShsaXN0ZWRD
aGlsZHJlbiksIGRpcmVjdG9yeVB0ci0+dmlydHVhbFBhdGgoKSkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXggZjM2OGMwZGY0NTguLjZk
M2M1ZDMxMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmgKQEAgLTI1LDMyICsyNSw0NSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRmlsZTsKIGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTsKIGNsYXNzIEZpbGVTeXN0
ZW1FbnRyeTsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3RhdGlj
IFJlZjxGaWxlU3lzdGVtRW50cnk+IGNyZWF0ZUVudHJ5Rm9yRmlsZShSZWY8RmlsZT4mJiBmaWxl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShuYW1l
KSk7CisgICAgICAgIGF1dG8gZmlsZVN5c3RlbSA9IGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3Rl
bShXVEZNb3ZlKGZpbGUpKSk7CisgICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNFbnRy
eSgpOwogICAgIH0KIAogICAgIH5ET01GaWxlU3lzdGVtKCk7CiAKICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICBSZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5PiByb290KCk7CisKKyAgICB1c2luZyBEaXJlY3RvcnlMaXN0aW5nQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lz
dGVtRW50cnk+Pj4mJik+OworICAgIHZvaWQgbGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkmLCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2smJik7CiAKIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgRE9NRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGV4cGxpY2l0
IERPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOworCisgICAgU3RyaW5nIGV2YWx1YXRlUGF0aChj
b25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKKyAgICBSZWY8RmlsZVN5c3RlbUVudHJ5PiBmaWxl
QXNFbnRyeSgpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBSZWY8RmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5PiBtX3Jvb3Q7CisgICAgUmVmPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV9y
b290UGF0aDsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uaWRsCmluZGV4IDhjYmEzMDIxYjMzLi5iMjVlYzY1MGY5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmlkbApAQCAtMjksNSArMjksNSBAQAogICAgIEludGVyZmFjZU5hbWU9RmlsZVN5c3RlbSwKIF0g
aW50ZXJmYWNlIERPTUZpbGVTeXN0ZW0gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJp
bmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
IHJvb3Q7CisgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeSByb290OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAKaW5k
ZXggZDcwZDJkMDU3YjIuLmM5MTViMDBlMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNw
cApAQCAtMzcsOSArMzcsOSBAQCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjbwogewogfQogCi1SZWY8
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVh
dGVSZWFkZXIoKQorUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZSgqdGhpcyk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShjb250ZXh0LCAq
dGhpcyk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwg
UmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGY0NzRjNjk0NmRj
Li44ZGI2ZjkzOTVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaApAQCAtNDEsNyArNDEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIFJlZjxGaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsKKyAgICBSZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
IAogICAgIHN0cnVjdCBGbGFncyB7CiAgICAgICAgIGJvb2wgY3JlYXRlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGwKaW5kZXggMjhiZGZjNzkyODAuLjQwZjVjNWQzNDc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEVu
YWJsZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2FkLAogXSBpbnRlcmZhY2UgRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5IDogRmlsZVN5c3RlbUVudHJ5IHsKLSAgICBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyIGNyZWF0ZVJlYWRlcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOwogCiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgZ2V0RmlsZShvcHRpb25hbCBVU1ZT
dHJpbmc/IHBhdGgsCiAgICAgICAgIG9wdGlvbmFsIEZpbGVTeXN0ZW1GbGFncyBvcHRpb25zLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IGVkOWVlNjNjMzk3Li5iZDJlODBkZmU1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMjcsMjUgKzI3LDcyIEBACiAj
aW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgogCiAjaW5jbHVkZSAiRE9NRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpG
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0
b3J5KQotICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorRmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlcjo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKKyAg
ICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6fkZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZjxGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBl
cnJvckNhbGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6YWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAg
ICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9u
OjpjcmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICByZXR1cm4gIkZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVu
ZGluZ0FjdGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1h
cGkvI2RvbS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVhZGVudHJpZXMKK3ZvaWQgRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNr
LCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmIChtX2lz
UmVhZGluZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRGlyZWN0b3J5IHJl
YWRlciBpcyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAg
ICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9u
OjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICht
X2lzRG9uZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29u
dGV4dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNSZWFkaW5nID0g
dHJ1ZTsKKyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJv
ckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
bV9pc1JlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0ZW0oKS5s
aXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92
ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNr
KV0oRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4mJiByZXN1bHQpIHsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBtX2Vycm9yID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoRE9NRXhjZXB0aW9uOjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgICAgICAg
ICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX2lzRG9uZSA9IHRydWU7CisgICAgICAgICAgICBz
dWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CisgICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5oCmluZGV4IDhhMDk5NDRhZDk1Li40ZmI2NDc5NjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM2LDExICszOCwxMSBAQCBjbGFzcyBGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI+IHsKK2NsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgZmluYWwgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUmVm
Q291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5JiBkaXJlY3RvcnkpCisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5JiBkaXJlY3RvcnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGNvbnRleHQsIGRpcmVj
dG9yeSkpOwogICAgIH0KIAogICAgIH5GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKCk7CkBAIC00
OCw5ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkRW50cmllcyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJv
ckNhbGxiYWNrPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYpOworICAgIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwogCiAgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9kaXJlY3Rvcnk7Cisg
ICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IG1fZXJyb3I7CisgICAgYm9vbCBtX2lzUmVhZGlu
ZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKaW5kZXggZGQwY2IwNGRkNTUuLjY1ZDJjNjE1M2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsCkBAIC0yNSw3ICsyNSw2IEBACiAKIFsKICAg
ICBFbmFibGVkQXRSdW50aW1lPURpcmVjdG9yeVVwbG9hZCwKLSAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciB7CiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmVhZEVudHJpZXMoRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJh
Y2s/IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKaW5kZXggYjA0OTYzYzlmODguLjZhYWU4
MmNiNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzcsNCArMzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5
c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWEKIHsKIH0KIAorRmlsZVN5c3Rl
bUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30KKworRE9NRmlsZVN5c3RlbSYgRmlsZVN5
c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxlc3lzdGVt
LmdldCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCAwMzFkYzI3
MjQ4Ni4uYTc0ZDg3ZTc4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKQEAgLTM1LDIwICszNSwyMCBAQCBjbGFzcyBET01G
aWxlU3lzdGVtOwogCiBjbGFzcyBGaWxlU3lzdGVtRW50cnkgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRW50cnk+IHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5GaWxlU3lzdGVtRW50cnkoKSB7IH0KKyAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtRW50
cnkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUGF0
aDsgfQotICAgIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2Zp
bGVzeXN0ZW07IH0KKyAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKICAgICBGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmlu
ZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW0mIG1fZmlsZXN5
c3RlbTsKKyAgICBSZWY8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgU3RyaW5nIG1fdmlydHVhbFBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhj
ZXB0aW9uLmNwcAppbmRleCBlMjhiMGQxNzc4Ny4uYzk4ZmZjMTA4NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01FeGNlcHRpb24uY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCiAKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIGFycmF5IG5lZWRzIHRvIGJlIGtlcHQgaW4g
c3luYyB3aXRoIHRoZSBFeGNlcHRpb25Db2RlIGVudW1lcmF0aW9uLgpAQCAtOTksNiArMTAxLDEy
IEBAIFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9N
RXhjZXB0aW9uKGxlZ2FjeUNvZGVGcm9tTmFtZShuYW1lKSwgbmFtZSwgbWVzc2FnZSkpOwogfQog
CitSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBFeGNlcHRpb24m
IGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvJiBkZXNjcmlwdGlvbiA9IERPTUV4Y2VwdGlvbjo6ZGVz
Y3JpcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9N
RXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUsIGV4Y2Vw
dGlvbi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3JpcHRpb24ubWVzc2FnZSA6IGV4Y2VwdGlv
bi5tZXNzYWdlKCkpKTsKK30KKwogRE9NRXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVnYWN5Q29k
ZSBsZWdhY3lDb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICA6IG1fbGVnYWN5Q29kZShsZWdhY3lDb2RlKQogICAgICwgbV9uYW1lKG5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NRXhjZXB0aW9uLmgKaW5kZXggYzUzMzJiOTgyOTUuLmRhYmU5MzA3NTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3MgRE9NRXhjZXB0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
T01FeGNlcHRpb24+IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcqIG1lc3NhZ2Ug
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4
Y2VwdGlvbiYpOwogCiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4KICAgICBzdGF0aWMgUmVmPERP
TUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAppbmRleCA2YjVkN2E1
NzhiYS4uZTMyMjgyYjk3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5j
cHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0NhbGxi
YWNrLmgiCi0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMTIsMTMgKzExMSw3IEBAIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IERhdGFUcmFuc2Zlckl0
ZW06OmdldEFzRW50cnkoKSBjb25zdAogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBpZiAoIW1fZmlsZVN5c3RlbSkKLSAgICAgICAgbV9maWxlU3lzdGVtID0g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0KLSAg
ICBTdHJpbmcgdmlydHVhbFBhdGggPSAiLyIgKyBmaWxlLT5uYW1lKCk7Ci0gICAgaWYgKGZpbGUt
PmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6
OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0
ZW1GaWxlRW50cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7CisgICAgcmV0
dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUVudHJ5Rm9yRmlsZSgqZmlsZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXJJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4
IGJlYTFjZjFlNGMwLi43MTMzMDQzMWI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5oCkBAIC03Miw3ICs3Miw2IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxEYXRhVHJhbnNm
ZXJJdGVtTGlzdD4gbV9saXN0OwogICAgIGNvbnN0IFN0cmluZyBtX3R5cGU7CiAgICAgUmVmUHRy
PEZpbGU+IG1fZmlsZTsKLSAgICBtdXRhYmxlIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVT
eXN0ZW07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKaW5kZXggNWY4YThkMmVjYWIuLjA5
N2I5MTc1ZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0zOSw2ICszOSwxMSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdl
OyB9CiAgICAgU3RyaW5nJiYgcmVsZWFzZU1lc3NhZ2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fbWVz
c2FnZSk7IH0KIAorICAgIEV4Y2VwdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgp
IH07CisgICAgfQorCiBwcml2YXRlOgogICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOwogICAgIFN0
cmluZyBtX21lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
T3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IDk3OWQ0YTdjMDZh
Li40ZmU1ODBhMDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTI3LDYgKzI3LDcg
QEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODAsMyArMTgxLDE1IEBAIGlubGluZSBFeGNlcHRpb25P
cjx2b2lkPiBpc29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4mJiB2YWx1ZSkKIH0KIAogfQor
CituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiA+IHsKKyAg
ICB0eXBlZGVmIFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFQ+IFR5cGU7CisgICAgc3RhdGljIFR5cGUg
Y29weShjb25zdCBUeXBlJiBzb3VyY2UpCisgICAgeworICAgICAgICBpZiAoc291cmNlLmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5leGNlcHRpb24oKS5pc29sYXRl
ZENvcHkoKTsKKyAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KHNvdXJj
ZS5yZXR1cm5WYWx1ZSgpKTsKKyAgICB9Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCmluZGV4IGZhZTVhZTM4OGI3Li4zYjhlZmU1MDA1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTAxLDYgKzEwMSw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Z2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8vIE5v
dCBhCiBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmKTsK
IGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY29tcG9uZW50KTsKK2NvbnN0IGNoYXIqIHBhdGhTZXBhcmF0b3IoKTsKIFN0cmluZyBs
YXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpOwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDViZTM2ZTllZGRlLi4xODA3
YWFiZDVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKQEAgLTE4MCw2ICsxODAsMTEgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJl
dHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7CiB9CiAKK2NvbnN0IGNo
YXIqIHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiBHX0RJUl9TRVBBUkFUT1JfUzsKK30K
KwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRl
eCAwNTMxOTMwYjM5MC4uMDk3YjUxZTE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjcwLDYgKzI3MCwxMSBAQCBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb21wb25lbnQpCiAgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25lbnQ7CiB9CiAK
K2NvbnN0IGNoYXIqIHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiAiLyI7Cit9CisKIGJv
b2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5n
IGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDJkMTI3NzQ4NzZjLi4w
ODAzYTIxMGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVt
V2luLmNwcApAQCAtMjAxLDYgKzIwMSwxMiBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0
dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAorY29uc3QgY2hhciogcGF0
aFNlcGFyYXRvcigpCit7CisgICAgcmV0dXJuICJcXCI7Cit9CisKKwogI2lmICFVU0UoQ0YpCiAK
IENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319385</attachid>
            <date>2017-08-30 12:04:13 -0700</date>
            <delta_ts>2017-08-30 16:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176091-20170830120412.patch</filename>
            <type>text/plain</type>
            <size>43724</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM1NTI3N2ExNDMwZWEx
ODdmZWRhZGQ1NGMyY2I3YjM2OGFiNmU0My4uMDkyOTBmMjFjOTYxOGFjMzM3YzliMDU3ZWMzZjYx
ZTRkZWJjZDRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE3LTA4LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NDE2ODAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIGFzIHBl
cjoKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNkb20tZmls
ZXN5c3RlbWRpcmVjdG9yeXJlYWRlci1yZWFkZW50cmllcworCisgICAgICAgIFRlc3RzOiBlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJv
b3QuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaXN0ZWRDaGlsZDo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnlXaXRo
TWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dG9GaWxlU3lzdGVtRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW06OnJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5
c3RlbTo6ZmlsZUFzRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6ZXZh
bHVhdGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGVFbnRyeUZvckZpbGUpOgorICAgICAg
ICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbDoKKyAgICAgICAgLSBJbXBs
ZW1lbnQgZGlyZWN0b3J5IGxpc3Rpbmcgb3BlcmF0aW9uIGZvciBzdXBwb3J0aW5nCisgICAgICAg
ICAgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoKS4KKyAgICAgICAgLSBJ
bXBsZW1lbnQgZXZhbHVhdGVQYXRoKCkgb3BlcmF0aW9uIGFzIHBlcjoKKyAgICAgICAgICAtIGh0
dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2V2YWx1YXRlLWEtcGF0aAorICAgICAg
ICAtIERPTUZpbGVTeXN0ZW0gc2hvdWxkIG5vIGxvbmdlciBob2xkIGEgc3Ryb25nIHJlZmVyZW5j
ZSB0bworICAgICAgICAgIHRoZSByb290IGVudHJ5IGFuZCBGaWxlU3lzdGVtRW50cnkgbm93IGhv
bGRzIGEgc3Ryb25nCisgICAgICAgICAgcmVmZXJlbmNlIHRvIHRoZSBET01GaWxlU3lzdGVtIGFu
ZCB0aGlzIHdvdWxkIGNyZWF0ZSBhCisgICAgICAgICAgY3ljbGUuCisKKyAgICAgICAgKiBNb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmg6CisgICAgICAg
ICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGw6CisgICAg
ICAgIEhhdmUgY3JlYXRlUmVhZGVyKCkgdGFrZSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHdo
aWNoIGlzIG5lZWRlZAorICAgICAgICB0byBjb25zdHJ1Y3QgYSBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLCBub3cgdGhhdCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyCisgICAgICAgIGlzIGFu
IEFjdGl2ZURPTU9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI6OkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbDoKKyAgICAgICAgUHJvdmlkZSBp
bXBsZW1lbnRhdGlvbiBmb3IgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygp
IGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNk
b20tZmlsZXN5c3RlbWRpcmVjdG9yeXJlYWRlci1yZWFkZW50cmllcworICAgICAgICBGb3IgdGhl
IGFjdHVhbCBkaXJlY3RvcnkgbGlzdGluZyBvcGVyYXRpb24sIHdlIGFzayB0aGUgRE9NRmlsZVN5
c3RlbSwgd2hpY2ggaXMKKyAgICAgICAgd2hlcmUgYWxsIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBz
aG91bGQgbGl2ZS4KKyAgICAgICAgQWxzbyBtYWRlIHRoZSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyIGFuIEFjdGl2ZURPTU9iamVjdCB0byBrZWVwIGl0IGFuZCBpdHMKKyAgICAgICAgd3JhcHBl
ciBhbGl2ZSB3aGlsZSBhIGZpbGUgc3lzdGVtIG9wZXJhdGlvbiBpcyBwZW5kaW5nLgorCisgICAg
ICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlU3lzdGVtRW50cnk6On5GaWxlU3lzdGVtRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5Lmg6CisgICAgICAgIE1ha2UgRmlsZVN5c3Rl
bUVudHJ5IGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0cyBET01GaWxlU3lzdGVtIG9iamVj
dC4KKyAgICAgICAgUHJldmlvdXNseSwgdGhlIERPTUZpbGVTeXN0ZW0gd2FzIGtlcHQgYWxpdmUg
YnkgdGhlIERhdGFUcmFuc2Zlckl0ZW0gYnV0CisgICAgICAgIHRoaXMgd2FzIHVuc2FmZSBiZWNh
dXNlIEZpbGVTeXN0ZW1FbnRyeSBtYXkgb3V0bGl2ZSB0aGUgRGF0YVRyYW5zZmVySXRlbS4KKwor
ICAgICAgICAqIGRvbS9ET01FeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRXhj
ZXB0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9ET01FeGNlcHRpb24uaDoKKyAgICAgICAg
QWRkIGZhY3RvcnkgdG8gY29uc3RydWN0IGEgRE9NRXhjZXB0aW9uIGZyb20gYW4gRXhjZXB0aW9u
LgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNFbnRyeSBjb25zdCk6CisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uaDoKKworICAgICAgICAqIGRvbS9FeGNlcHRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkV4Y2VwdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiBkb20v
RXhjZXB0aW9uT3IuaDoKKyAgICAgICAgTWFrZSBFeGNlcHRpb25Pcjw+IC8gRXhjZXB0aW9uIHdv
cmsgd2l0aCBDcm9zc1RocmVhZENvcGllciBmb3IgY29udmVuaWVuY2UuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoU2VwYXJhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0
aFNlcGFyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0aFNlcGFyYXRvcik6CisgICAgICAgIEFkZCBwYXRoU2VwYXJh
dG9yKCkgdXRpbGl0eSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHRoZSByaWdodCBwYXRoIHNlcGFy
YXRvcgorICAgICAgICBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCisKIDIwMTctMDgtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgaW5pdGlhbCBzdXBw
b3J0IGZvciBkYXRhVHJhbnNmZXJJdGVtLndlYmtpdEdldEFzRW50cnkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGE4
MzlhNTI4NTBmOTBkOGYzYjY5YzQzM2ZkODljZmM3Mjk4MGI5MjUuLjQwYjExOGU1NWJmMzEzMjc0
ZTcxZjk1NzBhNzdiMzViOTJkMjY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTI2LDE4ICsyNiwxMzggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRl
ICJGaWxlLmgiCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCisjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkZp
bGVTeXN0ZW1GaWxlRW50cnkuaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6IG1fbmFtZShuYW1lKQotICAgICwgbV9yb290KEZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCBBU0NJSUxpdGVyYWwoIi8iKSkp
CitzdHJ1Y3QgTGlzdGVkQ2hpbGQgeworICAgIFN0cmluZyBmaWxlbmFtZTsKKyAgICBGaWxlTWV0
YWRhdGE6OlR5cGUgdHlwZTsKKworICAgIExpc3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCksIHR5cGUgfTsgfQorfTsKKworc3Rh
dGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlz
IG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGNoaWxkUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KGZ1bGxQYXRoLCAiKiIpOworICAgIFZlY3RvcjxMaXN0ZWRDaGls
ZD4gbGlzdGVkQ2hpbGRyZW47CisgICAgbGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjaGlsZFBhdGhzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBjaGls
ZFBhdGhzKSB7CisgICAgICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICAgICAgaWYgKCFn
ZXRGaWxlTWV0YWRhdGEoY2hpbGRQYXRoLCBtZXRhZGF0YSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgbGlzdGVkQ2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKExpc3RlZENoaWxkIHsg
cGF0aEdldEZpbGVOYW1lKGNoaWxkUGF0aCksIG1ldGFkYXRhLnR5cGUgfSk7CisgICAgfQorICAg
IHJldHVybiBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKTsKK30KKworc3RhdGljIEV4Y2VwdGlvbk9y
PFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9NRmls
ZVN5c3RlbSYgZmlsZVN5c3RlbSwgRXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4mJiBs
aXN0ZWRDaGlsZHJlbiwgY29uc3QgU3RyaW5nJiBwYXJlbnRWaXJ0dWFsUGF0aCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChsaXN0ZWRDaGlsZHJlbi5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGxpc3RlZENoaWxkcmVuLnJlbGVhc2VFeGNlcHRpb24oKTsK
KworICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gZW50cmllczsKKyAgICBlbnRyaWVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGlzdGVkQ2hpbGRyZW4ucmV0dXJuVmFsdWUoKS5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBsaXN0ZWRDaGlsZHJlbi5yZXR1cm5WYWx1ZSgp
KSB7CisgICAgICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IHBhcmVudFZpcnR1YWxQYXRoICsgIi8i
ICsgY2hpbGQuZmlsZW5hbWU7CisgICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkgeworICAgICAg
ICBjYXNlIEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU6CisgICAgICAgICAgICBlbnRyaWVzLnVuY2hl
Y2tlZEFwcGVuZChGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoZmlsZVN5c3RlbSwgdmlydHVh
bFBhdGgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbGVNZXRhZGF0YTo6
VHlwZURpcmVjdG9yeToKKyAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBXVEZNb3ZlKGVudHJpZXMpOworfQorCitET01G
aWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCisgICAgOiBtX25hbWUo
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9maWxlKFdURk1vdmUoZmlsZSkp
CisgICAgLCBtX3Jvb3RQYXRoKGRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQorICAgICwg
bV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIp
KQoreworICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKIH0KIAogRE9NRmls
ZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewogfQogCitSZWY8RmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsKK30KKworUmVm
PEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoKQoreworICAgIGlm
IChtX2ZpbGUtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmlsZS0+bmFtZSgp
KTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZXZhbHVhdGUt
YS1wYXRoCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0IFN0cmluZyYg
dmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CisgICAg
VmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKKyAgICB2aXJ0dWFsUGF0aC5zcGxpdCgnLycsIGZh
bHNlIC8qIGFsbG93RW1wdHkgKi8sIGNvbXBvbmVudHMpOworCisgICAgVmVjdG9yPFN0cmluZz4g
cmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6
IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLiIpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudCA9PSAiLi4iKSB7CisgICAgICAgICAg
ICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVz
b2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoY29tcG9u
ZW50KTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQobV9yb290UGF0aCk7CisgICAgZm9yIChhdXRvJiByZXNvbHZlZENvbXBvbmVudCA6IHJl
c29sdmVkQ29tcG9uZW50cykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChwYXRoU2VwYXJhdG9y
KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChyZXNvbHZlZENvbXBvbmVudCk7CisgICAgfQor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSwgRGlyZWN0
b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKCZk
aXJlY3RvcnkuZmlsZXN5c3RlbSgpID09IHRoaXMpOworCisgICAgYXV0byBmdWxsUGF0aCA9IGV2
YWx1YXRlUGF0aChkaXJlY3RvcnkudmlydHVhbFBhdGgoKSk7CisgICAgaWYgKGZ1bGxQYXRoID09
IG1fcm9vdFBhdGgpIHsKKyAgICAgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBjaGls
ZHJlbjsKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGZpbGVBc0VudHJ5KCkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNoaWxkcmVuKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZ1bGxQYXRoID0gZnVsbFBhdGguaXNvbGF0
ZWRDb3B5KCksIGRpcmVjdG9yeVB0ciA9ICZkaXJlY3RvcnldKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gbGlzdGVkQ2hpbGRyZW4gPSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQYXRo
KTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbGlzdGVkQ2hpbGRyZW4gPSBDcm9zc1RocmVhZENv
cGllcjxFeGNlcHRpb25PcjxWZWN0b3I8TGlzdGVkQ2hpbGQ+Pj46OmNvcHkobGlzdGVkQ2hpbGRy
ZW4pLCBkaXJlY3RvcnlQdHJdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih0b0ZpbGVTeXN0ZW1FbnRyaWVzKCp0aGlzLCBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKSwg
ZGlyZWN0b3J5UHRyLT52aXJ0dWFsUGF0aCgpKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCBmMzY4YzBkZjQ1OGUwM2U4Y2Y2OThjN2Ni
ZDM2MmZlMzYwMTQxNTE1Li42ZDNjNWQzMTIxZTBkM2Y4MGNiYjczYTFlMDU0MDVjZDY3ZjdiYWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmgKQEAgLTI1LDMyICsyNSw0NSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsZTsK
IGNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTsKIGNsYXNzIEZpbGVTeXN0ZW1FbnRyeTsK
IAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPERPTUZpbGVTeXN0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERPTUZp
bGVTeXN0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxGaWxl
U3lzdGVtRW50cnk+IGNyZWF0ZUVudHJ5Rm9yRmlsZShSZWY8RmlsZT4mJiBmaWxlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShuYW1lKSk7CisgICAg
ICAgIGF1dG8gZmlsZVN5c3RlbSA9IGFkb3B0UmVmKCpuZXcgRE9NRmlsZVN5c3RlbShXVEZNb3Zl
KGZpbGUpKSk7CisgICAgICAgIHJldHVybiBmaWxlU3lzdGVtLT5maWxlQXNFbnRyeSgpOwogICAg
IH0KIAogICAgIH5ET01GaWxlU3lzdGVtKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIHJv
b3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5PiByb290KCk7CisKKyAgICB1c2luZyBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+
Pj4mJik+OworICAgIHZvaWQgbGlzdERpcmVjdG9yeShGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkm
LCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2smJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
RE9NRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGV4cGxpY2l0IERPTUZpbGVT
eXN0ZW0oUmVmPEZpbGU+JiYpOworCisgICAgU3RyaW5nIGV2YWx1YXRlUGF0aChjb25zdCBTdHJp
bmcmIHZpcnR1YWxQYXRoKTsKKyAgICBSZWY8RmlsZVN5c3RlbUVudHJ5PiBmaWxlQXNFbnRyeSgp
OwogCiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
PiBtX3Jvb3Q7CisgICAgUmVmPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV9yb290UGF0aDsK
KyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RP
TUZpbGVTeXN0ZW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZp
bGVTeXN0ZW0uaWRsCmluZGV4IDhjYmEzMDIxYjMzYWM2NjRmZThkNzIzZjkxMzZlMzcxZmUyODFi
NjYuLmIyNWVjNjUwZjkzOTdmZDVhNjI2NGNlZGQ3NmU0YjBkZWM5MDlkZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKQEAg
LTI5LDUgKzI5LDUgQEAKICAgICBJbnRlcmZhY2VOYW1lPUZpbGVTeXN0ZW0sCiBdIGludGVyZmFj
ZSBET01GaWxlU3lzdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG5hbWU7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSByb290Owor
ICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkgcm9vdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCmluZGV4IGQ3MGQy
ZDA1N2IyNjgwMDU2MWYwMjE4OWZkMWMzOTZmYzk5NWE0ZWEuLmM5MTViMDBlMTIwZDA2ZTNmYmE4
Y2Q1NzI2OGY2ZjVhY2QxYjk2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0z
Nyw5ICszNyw5IEBAIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5KERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvCiB7CiB9CiAKLVJlZjxGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyPiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRl
cigpCitSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5OjpjcmVhdGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQsICp0aGlzKTsK
IH0KIAogdm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgRmxhZ3MmLCBSZWZQdHI8
RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9y
Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKaW5kZXggZjQ3NGM2OTQ2ZGM4NTEwMzg1
Y2QxZGQ4MzQzMmE3NmMzNzYwNzdmZi4uOGRiNmY5Mzk1ZDMxZmYxZDRiYThiODIxYzkxMGYzYzI4
NDRiNDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAotICAgIFJlZjxGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsKKyAgICBSZWY8RmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAg
IHN0cnVjdCBGbGFncyB7CiAgICAgICAgIGJvb2wgY3JlYXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5pZGwKaW5kZXggMjhiZGZjNzkyODA5N2E1MjNkMWYyMjU3YmJmZmRmMjgw
MTkzM2E5OC4uNDBmNWM1ZDM0NzVmNGNlZGEwMWE0YzJhNjVhYzFlNmMxNjJhMTQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBFbmFibGVk
QXRSdW50aW1lPURpcmVjdG9yeVVwbG9hZCwKIF0gaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeSA6IEZpbGVTeXN0ZW1FbnRyeSB7Ci0gICAgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ciBjcmVhdGVSZWFkZXIoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciBjcmVhdGVSZWFkZXIoKTsKIAogICAgIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIGdldEZpbGUob3B0aW9uYWwgVVNWU3RyaW5n
PyBwYXRoLAogICAgICAgICBvcHRpb25hbCBGaWxlU3lzdGVtRmxhZ3Mgb3B0aW9ucywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmNwcAppbmRleCBlZDllZTYzYzM5NzVlZThmMzZiNDgwM2JjZWU1
M2ZkZGI1MjdmNjE2Li5iZDJlODBkZmU1ZWM3OTVkM2FkZWQ5NGYzOWYwOTE0OTQ0MzFkYzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCkBAIC0yNywyNSArMjcsNzIgQEAKICNpbmNs
dWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgiCiAKICNpbmNsdWRlICJET01FeGNlcHRp
b24uaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OkZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3Rvcnkp
Ci0gICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCitGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
OjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQorICAgIDogQWN0aXZlRE9N
T2JqZWN0KCZjb250ZXh0KQorICAgICwgbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQogeworICAgIHN1
c3BlbmRJZk5lZWRlZCgpOwogfQogCiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjp+RmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlcigpCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPEZp
bGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9y
Q2FsbGJhY2spCitjb25zdCBjaGFyKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjphY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoZXJyb3JDYWxsYmFjaykKLSAgICAgICAg
ZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRpb246OmNy
ZWF0ZShOb3RTdXBwb3J0ZWRFcnJvcikpOworICAgIHJldHVybiAiRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlciI7Cit9CisKK2Jvb2wgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFoYXNQZW5kaW5n
QWN0aXZpdHkoKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8j
ZG9tLWZpbGVzeXN0ZW1kaXJlY3RvcnllbnRyeS1yZWFkZW50cmllcwordm9pZCBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBSZWY8RmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKG1faXNSZWFk
aW5nKSB7CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgZXJyb3JDYWxs
YmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRpb246OmNyZWF0ZShFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJEaXJlY3RvcnkgcmVhZGVy
IGlzIGFscmVhZHkgcmVhZGluZyIpIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX2Vycm9yKSB7CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAg
ZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRpb246OmNy
ZWF0ZSgqbV9lcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNE
b25lKSB7CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0
LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pc1JlYWRpbmcgPSB0cnVl
OworICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBtX2lz
UmVhZGluZyA9IGZhbHNlOworICAgICAgICBtX2RpcmVjdG9yeS0+ZmlsZXN5c3RlbSgpLmxpc3RE
aXJlY3RvcnkobV9kaXJlY3RvcnksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spXShF
eGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmIHJlc3VsdCkgeworICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIG1f
ZXJyb3IgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChl
cnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVF
dmVudChET01FeGNlcHRpb246OmNyZWF0ZSgqbV9lcnJvcikpOworICAgICAgICAgICAgICAgIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1faXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAg
ICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICB9KTsKKyAgICB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgK
aW5kZXggOGEwOTk0NGFkOTVkNTVlZDZhNzM4ZGJkOTdjNjMxYTVjZmQyZGVkYi4uNGZiNjQ3OTY1
NGVlNDE5YmU1OWIzOGNjZjU3ZGViYmU3YjZkYjdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTM2LDExICszOCwxMSBAQCBjbGFzcyBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciA6IHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI+IHsKK2NsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgZmluYWwgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUmVmQ291
bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5JiBkaXJlY3RvcnkpCisgICAgc3RhdGljIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5JiBkaXJlY3RvcnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGRpcmVjdG9yeSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKGNvbnRleHQsIGRpcmVjdG9y
eSkpOwogICAgIH0KIAogICAgIH5GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKCk7CkBAIC00OCw5
ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkRW50cmllcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYpOworICAgIEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFs
OwogCiAgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9kaXJlY3Rvcnk7CisgICAg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IG1fZXJyb3I7CisgICAgYm9vbCBtX2lzUmVhZGluZyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5pZGwKaW5kZXggZGQwY2IwNGRkNTU1MzNkZjQzNWMwOGMwMzFlNTA5
ZjZkMGJlNzZkMi4uNjVkMmM2MTUzZTc5MTA2OTdjOTczZGMzMjk5ZjZkNjU3OGM3MWJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbApAQCAtMjUsNyArMjUsNiBAQAogCiBbCiAgICAg
RW5hYmxlZEF0UnVudGltZT1EaXJlY3RvcnlVcGxvYWQsCi0gICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKIF0gaW50ZXJmYWNlIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgewogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIHJlYWRFbnRyaWVzKEZpbGVTeXN0
ZW1FbnRyaWVzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNr
PyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGIwNDk2M2M5Zjg4ZmU3Y2U5NWE5
MjQ2ODJmM2E3N2UyZTE1M2U3MzAuLjZhYWU4MmNiNWY1MzhiM2YzZjI2MDQyMjA0MmYzYmI2MTJi
OTE2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRW50cnkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbUVudHJ5LmgiCiAKKyNpbmNsdWRlICJET01GaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
Nyw0ICszOCwxNCBAQCBGaWxlU3lzdGVtRW50cnk6OkZpbGVTeXN0ZW1FbnRyeShET01GaWxlU3lz
dGVtJiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHZpcnR1YQogewogfQogCitGaWxlU3lzdGVt
RW50cnk6On5GaWxlU3lzdGVtRW50cnkoKQoreworfQorCitET01GaWxlU3lzdGVtJiBGaWxlU3lz
dGVtRW50cnk6OmZpbGVzeXN0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpbGVzeXN0ZW0u
Z2V0KCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oCmluZGV4IDAzMWRjMjcy
NDg2YTE4M2QyNmEyNTU5NjA2NTE4NmI2YjVlNDQ5ZDkuLmE3NGQ4N2U3ODlhY2U5MDM0MzIxNDY3
M2ZlMjgyMzRjMWQ4YWRkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKQEAgLTM1LDIwICszNSwyMCBAQCBjbGFzcyBET01G
aWxlU3lzdGVtOwogCiBjbGFzcyBGaWxlU3lzdGVtRW50cnkgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRW50cnk+IHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5GaWxlU3lzdGVtRW50cnkoKSB7IH0KKyAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtRW50
cnkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUGF0
aDsgfQotICAgIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2Zp
bGVzeXN0ZW07IH0KKyAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKICAgICBGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmlu
ZyYgdmlydHVhbFBhdGgpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW0mIG1fZmlsZXN5
c3RlbTsKKyAgICBSZWY8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgU3RyaW5nIG1fdmlydHVhbFBhdGg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhj
ZXB0aW9uLmNwcAppbmRleCBlMjhiMGQxNzc4NzRhNzhiOTBlYWFiNThlOWFhNTViZTZmYjkwMWZh
Li5jOThmZmMxMDg2YzI3ZjU3MmNjZTEyMTFlOTY1MDc4NjhiMzQxZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NRXhjZXB0aW9uLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBhcnJheSBuZWVkcyB0byBiZSBrZXB0IGlu
IHN5bmMgd2l0aCB0aGUgRXhjZXB0aW9uQ29kZSBlbnVtZXJhdGlvbi4KQEAgLTk5LDYgKzEwMSwx
MiBAQCBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgbmFtZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERP
TUV4Y2VwdGlvbihsZWdhY3lDb2RlRnJvbU5hbWUobmFtZSksIG5hbWUsIG1lc3NhZ2UpKTsKIH0K
IAorUmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgRXhjZXB0aW9u
JiBleGNlcHRpb24pCit7CisgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRl
c2NyaXB0aW9uKGV4Y2VwdGlvbi5jb2RlKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERP
TUV4Y2VwdGlvbihkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lLCBleGNl
cHRpb24ubWVzc2FnZSgpLmlzRW1wdHkoKSA/IGRlc2NyaXB0aW9uLm1lc3NhZ2UgOiBleGNlcHRp
b24ubWVzc2FnZSgpKSk7Cit9CisKIERPTUV4Y2VwdGlvbjo6RE9NRXhjZXB0aW9uKExlZ2FjeUNv
ZGUgbGVnYWN5Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiAgICAgOiBtX2xlZ2FjeUNvZGUobGVnYWN5Q29kZSkKICAgICAsIG1fbmFtZShuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUV4Y2VwdGlvbi5oCmluZGV4IGM1MzMyYjk4Mjk1MmYxMmRiYjU3ZTEwMDBlNjg4
MzFkMDQ0ODVjZTcuLmRhYmU5MzA3NTM4NmRlYjc1MzYzOWQ1MDMyZWY2OTBiZTQxNTEwMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKQEAgLTMzLDkgKzMzLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRXhjZXB0aW9uOworCiBjbGFzcyBET01FeGNlcHRpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxET01FeGNlcHRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PERPTUV4Y2VwdGlvbj4gY3JlYXRlKEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyogbWVzc2Fn
ZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWY8RE9NRXhjZXB0aW9uPiBjcmVhdGUoY29uc3Qg
RXhjZXB0aW9uJik7CiAKICAgICAvLyBGb3IgRE9NIGJpbmRpbmdzLgogICAgIHN0YXRpYyBSZWY8
RE9NRXhjZXB0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCmluZGV4IDZiNWQ3
YTU3OGJhYTA3YTkxN2Q4OGE2ODIyMTBjZDZhMTM3YmY2MzkuLmUzMjI4MmI5NzgxNjg4YTI4ZDYy
OWVkODMzNGYzOThhNTZhNjlmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMTIsMTMgKzExMSw3IEBAIFJlZlB0cjxGaWxlU3lzdGVtRW50cnk+IERhdGFUcmFuc2Zl
ckl0ZW06OmdldEFzRW50cnkoKSBjb25zdAogICAgIGlmICghZmlsZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBpZiAoIW1fZmlsZVN5c3RlbSkKLSAgICAgICAgbV9maWxlU3lzdGVt
ID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0K
LSAgICBTdHJpbmcgdmlydHVhbFBhdGggPSAiLyIgKyBmaWxlLT5uYW1lKCk7Ci0gICAgaWYgKGZp
bGUtPmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50
cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqbV9maWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCk7CisgICAg
cmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUVudHJ5Rm9yRmlsZSgqZmlsZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmlu
ZGV4IGJlYTFjZjFlNGMwNzlmNGZjYzBlM2U2YWE1OTRhMTEwZjAxYjllNjEuLjcxMzMwNDMxYjlk
NGM5MzA3ZGYwZDIwZDg3NjFlZTg0YmU2YzQzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlckl0ZW0uaApAQCAtNzIsNyArNzIsNiBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8RGF0YVRy
YW5zZmVySXRlbUxpc3Q+IG1fbGlzdDsKICAgICBjb25zdCBTdHJpbmcgbV90eXBlOwogICAgIFJl
ZlB0cjxGaWxlPiBtX2ZpbGU7Ci0gICAgbXV0YWJsZSBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9m
aWxlU3lzdGVtOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCmluZGV4IDVmOGE4ZDJlY2Fi
ZDJmZWQ4OGM0NGU4OTk3MDI4MGMzOTRmNzg5MDIuLjA5N2I5MTc1ZjVkNWM4ZDJkNzQ1ODY5YjZk
Y2I1MjBkZGM3MTFmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKQEAgLTM5LDYgKzM5LDExIEBA
IHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21l
c3NhZ2U7IH0KICAgICBTdHJpbmcmJiByZWxlYXNlTWVzc2FnZSgpIHsgcmV0dXJuIFdURk1vdmUo
bV9tZXNzYWdlKTsgfQogCisgICAgRXhjZXB0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgbV9jb2RlLCBtX21lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCkgfTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uQ29kZSBtX2NvZGU7CiAg
ICAgU3RyaW5nIG1fbWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKaW5kZXggOTc5ZDRh
N2MwNmExMDE2NTRmNjI1MzE2YWIyY2IxMDkxNDFmMGMwYS4uNGZlNTgwYTAzNGU5ZmY2MTViMjFm
ODZhYWJkNjI5NzMyMThlY2FjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbk9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTI3LDYg
KzI3LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODAsMyArMTgxLDE1IEBAIGlubGluZSBFeGNl
cHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4mJiB2YWx1ZSkKIH0K
IAogfQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiA+
IHsKKyAgICB0eXBlZGVmIFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFQ+IFR5cGU7CisgICAgc3RhdGlj
IFR5cGUgY29weShjb25zdCBUeXBlJiBzb3VyY2UpCisgICAgeworICAgICAgICBpZiAoc291cmNl
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5leGNlcHRpb24oKS5p
c29sYXRlZENvcHkoKTsKKyAgICAgICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5
KHNvdXJjZS5yZXR1cm5WYWx1ZSgpKTsKKyAgICB9Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCmluZGV4IGZhZTVhZTM4OGI3YTk4NWI1MGE0NDM2MzZmMDE0MjYwMTlmZjA2
MGEuLjNiOGVmZTUwMDU4MGU0NjIzM2VhMzYzMzg4NjMzNzkzMzBmOTIwMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBXRUJDT1JFX0VYUE9S
VCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQp
OyAvLyBOb3QgYQogYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiwgRmlsZU1ldGFk
YXRhJik7CiBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCk7Citjb25zdCBjaGFyKiBwYXRoU2VwYXJhdG9yKCk7CiBT
dHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJp
bmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA1YmUzNmU5ZWRk
ZTExNDYwYmU5YTIzMGIxMzk0YzRiNjc0MzcyZWEzLi4xODA3YWFiZDVhYThlZDQ4YjAxMzY0MjI2
MWVlOThlZWMxNzhmZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcApAQCAtMTgwLDYgKzE4MCwxMSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
CiAgICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKIH0KIAor
Y29uc3QgY2hhciogcGF0aFNlcGFyYXRvcigpCit7CisgICAgcmV0dXJuIEdfRElSX1NFUEFSQVRP
Ul9TOworfQorCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCmluZGV4IDA1MzE5MzBiMzkwOTM4ZWYyZTBhYzMzNGUxMWZmODY5MDhjYzg2N2QuLjA5N2I1
MWUxOGQyZDFiZWVkNmJlNTEzMDIwY2QyOTRmOTYxYWU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjcwLDYgKzI3MCwx
MSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0dXJuIHBhdGggKyAiLyIgKyBjb21wb25l
bnQ7CiB9CiAKK2NvbnN0IGNoYXIqIHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiAiLyI7
Cit9CisKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBDU3RyaW5nIGZ1bGxQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDJkMTI3
NzQ4NzZjMjM4YmIxMWZiNjM2YzJiNTFkNGQ1NDE5MzZhOGQuLjA4MDNhMjEwZDA1NDE5NTIzYjc3
ZTMyMDM4YWZkYTNiOTIzODk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKQEAgLTIwMSw2ICsyMDEsMTIgQEAgU3RyaW5nIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50
KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKK2NvbnN0
IGNoYXIqIHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiAiXFwiOworfQorCisKICNpZiAh
VVNFKENGKQogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMjllYjFkNDc5MTA3YmZmMTBjZTlkMmQ2MTBkZjU0NjIzYmJmOTNiMy4u
M2Y4NTQwMmJkMjExNTJmOTU4MjgxNjBjNmIxODJkZDM1NmQyZmQzNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE3LTA4LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDkxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE2ODAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0
b3J5UmVhZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTctMDgtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBkYXRhVHJhbnNmZXJJdGVtLndlYmtpdEdldEFzRW50cnko
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWVhNmFhM2EyMmVhODEyNzRiNDg0MzMxMGQ2ODQ0
ZDE0MWFjM2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0RpcmVj
dG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50cnku
ZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMgNAor
UEFTUyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJp
ZXNbMF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVudHJp
ZXNbMF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZpbGUy
LnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUy
LnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50
cmllc1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVsbFBh
dGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlzRGly
ZWN0b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRlcjIi
CitQQVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIy
IgorUEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFuZENo
aWxkRW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlz
ICJmaWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVz
dEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5p
c0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFTUyBn
cmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hpbGRF
bnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Igor
UEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxk
RW50cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNb
MV0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BBU1Mg
Z3JhbmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0u
bmFtZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQ
YXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0IgorUEFT
UyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9y
eVJlYWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDEzMDA1ZmRkOTU1YjQzMDJjNzFlOGYwMDY4YTQzMTNlODJhNDcxZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMiBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMgorUEFTUyBlbnRyeTEuaXNGaWxlIGlzIHRy
dWUKK1BBU1MgZW50cnkxLm5hbWUgaXMgInRlc3QudHh0IgorUEFTUyBlbnRyeTEuZnVsbFBhdGgg
aXMgIi90ZXN0LnR4dCIKK1BBU1MgZW50cnlGb3VuZC5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBlbnRy
eUZvdW5kLm5hbWUgaXMgInRlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmZ1bGxQYXRoIGlzICIv
dGVzdC50eHQiCitQQVNTIGVudHJ5Mi5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5Mi5u
YW1lIGlzICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Mi5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcyIK
K1BBU1MgZW50cnlGb3VuZC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91bmQubmFt
ZSBpcyAidGVzdEZpbGVzIgorUEFTUyBlbnRyeUZvdW5kLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVz
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODY5ZTVkMWJkMjUzNmZjM2UwM2M2OTI2NGZjMWI0ZTRhZjZmMTJjNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCkBAIC0wLDAgKzEsMTAy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0
IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkiKTsK
K2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mRWxl
bWVudChlbGVtZW50KSB7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0
VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFnRmlsZXNPbnRvRWxlbWVu
dChlbGVtZW50LCBmaWxlcykgeworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOwor
ICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZ2V0RW50cmllc0FzUHJvbWlzZShkaXJFbnRyeSkg
eworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
IGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IHJlYWRlciA9IGRpckVudHJ5LmNyZWF0ZVJl
YWRlcigpOworICAgICAgICBsZXQgZG9CYXRjaCA9ICgpID0+IHsKKyAgICAgICAgICAgIHJlYWRl
ci5yZWFkRW50cmllcyhlbnRyaWVzID0+IHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0
aCA+IDApIHsKKyAgICAgICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZSA9PiByZXN1bHQucHVz
aChlKSk7CisgICAgICAgICAgICAgICAgZG9CYXRjaCgpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sIHJlamVjdCk7CisgICAgfTsKKyAgICBkb0JhdGNoKCk7CisgIH0pOworfQorCitmdW5jdGlv
biBmaW5kRW50cnlCeU5hbWUoZW50cmllcywgbmFtZSkKK3sKKyAgICBmb3IgKGxldCBjaGlsZEVu
dHJ5IG9mIGVudHJpZXMpIHsKKyAgICAgICAgaWYgKGNoaWxkRW50cnkubmFtZSA9PSBuYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIGNoaWxkRW50cnkKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9
CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwor
ZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsK
KyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjIiKTsKKworICAgIGVudHJ5MSA9IGRhdGFUcmFuc2Zl
ci5pdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgZW50cnkyID0gZGF0YVRyYW5zZmVy
Lml0ZW1zWzFdLndlYmtpdEdldEFzRW50cnkoKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiZW50cnkx
LmlzRmlsZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkxLm5hbWUiLCAidGVz
dC50eHQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5mdWxsUGF0aCIsICIv
dGVzdC50eHQiKTsKKyAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGVudHJ5MS5maWxlc3lzdGVtLnJv
b3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICBlbnRyeUZvdW5kID0gZmluZEVu
dHJ5QnlOYW1lKGVudHJpZXMsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImVu
dHJ5Rm91bmQuaXNGaWxlIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlG
b3VuZC5uYW1lIiwgInRlc3QudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZW50cnlGb3VuZC5mdWxsUGF0aCIsICIvdGVzdC50eHQiKTsKKworICAgICAgICBzaG91bGRCZVRy
dWUoImVudHJ5Mi5pc0RpcmVjdG9yeSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImVudHJ5Mi5uYW1lIiwgInRlc3RGaWxlcyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImVudHJ5Mi5mdWxsUGF0aCIsICIvdGVzdEZpbGVzIik7CisgICAgICAgIGdldEVudHJpZXNB
c1Byb21pc2UoZW50cnkyLmZpbGVzeXN0ZW0ucm9vdCkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7
CisgICAgICAgICAgICBlbnRyeUZvdW5kID0gZmluZEVudHJ5QnlOYW1lKGVudHJpZXMsICJ0ZXN0
RmlsZXMiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZW50cnlGb3VuZC5pc0RpcmVjdG9y
eSIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5kLm5hbWUi
LCAidGVzdEZpbGVzIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5
Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
cmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfSk7CisgICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJy
ZWFkRW50cmllcyBmYWlsZWQ6ICIgKyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fSk7Cit9OworCitkcm9wem9uZS5vbmRyYWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5w
cmV2ZW50RGVmYXVsdCgpOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmls
ZXNPbnRvRWxlbWVudChkcm9wem9uZSwgWycuLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXN0
LnR4dCcsICcuLi8uLi9mYXN0L2Zvcm1zL2ZpbGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YzU0ODMwNzhjYzM1MzJmMjBm
YTkyMmMwNjFlNTA4MTVlYWIxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0
bWwKQEAgLTAsMCArMSwxMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6
IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
cmVhZEVudHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIG1vdmVN
b3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZ
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRy
YWdGaWxlc09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZl
bnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dp
dGhGaWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQ
cm9taXNlKGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0g
ZGlyRW50cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4gewor
ICAgICAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAg
aWYgKGVudHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFj
aChlID0+IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAg
fSk7Cit9CisKK3ZhciBkcm9wem9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9u
ZScpOworZHJvcHpvbmUub25kcm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1
bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJl
KCJkYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRy
YW5zZmVyLml0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVu
dHJ5LmlzRGlyZWN0b3J5Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1l
IiwgInRlc3RGaWxlcyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBh
dGgiLCAiL3Rlc3RGaWxlcyIpOworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhl
bihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7Cisg
ICAgICAgIHNob3VsZEJlKCJjaGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsK
KyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgi
LCAiL3Rlc3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVu
dHJpZXNbMF0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGls
ZEVudHJpZXNbMV0ubmFtZSIsICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJm
b2xkZXIxIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJd
LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImNoaWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVz
dEZpbGVzL3N1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNb
M10uaXNEaXJlY3RvcnkiKTsKKworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50
cmllc1syXSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxk
RW50cmllcyA9IGVudHJpZXM7CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJp
ZXMubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3Jh
bmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RG
aWxlcy9zdWJmb2xkZXIxL2ZpbGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJn
cmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0Fz
UHJvbWlzZShjaGlsZEVudHJpZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAg
ICAgICAgICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmls
ZTQudHh0Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENo
aWxkRW50cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5p
c0ZpbGUiKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRD
aGlsZEVudHJpZXNbMV0ubmFtZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rl
c3RGaWxlcy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJncmFuZENoaWxkRW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAg
ICAgICAgZ2V0RW50cmllc0FzUHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJp
ZXMgPSBlbnRyaWVzOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENo
aWxkRW50cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQi
KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5k
Q2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xk
ZXIyYS9maWxlNS50eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVh
dEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAg
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJl
YWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2
KSB7CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7
CisgICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9m
aWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4
MWUxNTFmNWI3MDk3ODcwMjEzNDUyNTcxNWRlNDgwMDg2Zi4uZmNlNzk0NzRkZWE3NGIzZWFjOGEz
NDJlOTRkZGM5NDBhNDIyYjYxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTU2Myw2ICs1NjMsOCBAQCBwbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2Jq
Yy1ldmVudC1hcGkuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50
YXRpb24gb2YgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4NQorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCitlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxl
Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIFNr
aXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319418</attachid>
            <date>2017-08-30 16:01:59 -0700</date>
            <delta_ts>2017-08-30 19:03:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176091-20170830160158.patch</filename>
            <type>text/plain</type>
            <size>49010</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU5NGNhMjRiNTYyYWNm
YzQwMGQ5MjhmZDkyNTY0YmNmMGE5ZmM2YS4uMzBjMzk3NWFiYzlhM2E1ZTkzZWJjZmFhYTA5Nzli
MzBlNzg4MWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE3LTA4LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NDE2ODAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IEltcGxlbWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgYXMgcGVy
OgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxl
c3lzdGVtZGlyZWN0b3J5cmVhZGVyLXJlYWRlbnRyaWVzCisKKyAgICAgICAgVGVzdHM6IGVkaXRp
bmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9v
dC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxpc3RlZENoaWxkOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bGlzdERpcmVjdG9yeVdpdGhN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVTeXN0ZW1FbnRyaWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbTo6cm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpmaWxlQXNFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpldmFs
dWF0ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZUVudHJ5Rm9yRmlsZSk6CisgICAgICAg
ICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsOgorICAgICAgICAtIEltcGxl
bWVudCBkaXJlY3RvcnkgbGlzdGluZyBvcGVyYXRpb24gZm9yIHN1cHBvcnRpbmcKKyAgICAgICAg
ICBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcygpLgorICAgICAgICAtIElt
cGxlbWVudCBldmFsdWF0ZVBhdGgoKSBvcGVyYXRpb24gYXMgcGVyOgorICAgICAgICAgIC0gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZXZhbHVhdGUtYS1wYXRoCisgICAgICAg
IC0gRE9NRmlsZVN5c3RlbSBzaG91bGQgbm8gbG9uZ2VyIGhvbGQgYSBzdHJvbmcgcmVmZXJlbmNl
IHRvCisgICAgICAgICAgdGhlIHJvb3QgZW50cnkgYW5kIEZpbGVTeXN0ZW1FbnRyeSBub3cgaG9s
ZHMgYSBzdHJvbmcKKyAgICAgICAgICByZWZlcmVuY2UgdG8gdGhlIERPTUZpbGVTeXN0ZW0gYW5k
IHRoaXMgd291bGQgY3JlYXRlIGEKKyAgICAgICAgICBjeWNsZS4KKworICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIpOgorICAgICAgICAq
IE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbDoKKyAgICAg
ICAgSGF2ZSBjcmVhdGVSZWFkZXIoKSB0YWtlIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgd2hp
Y2ggaXMgbmVlZGVkCisgICAgICAgIHRvIGNvbnN0cnVjdCBhIEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIsIG5vdyB0aGF0IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIKKyAgICAgICAgaXMgYW4g
QWN0aXZlRE9NT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbURpcmVj
dG9yeVJlYWRlcjo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOgorICAgICAgICBQcm92aWRlIGlt
cGxlbWVudGF0aW9uIGZvciBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkg
YXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2Rv
bS1maWxlc3lzdGVtZGlyZWN0b3J5cmVhZGVyLXJlYWRlbnRyaWVzCisgICAgICAgIEZvciB0aGUg
YWN0dWFsIGRpcmVjdG9yeSBsaXN0aW5nIG9wZXJhdGlvbiwgd2UgYXNrIHRoZSBET01GaWxlU3lz
dGVtLCB3aGljaCBpcworICAgICAgICB3aGVyZSBhbGwgZmlsZXN5c3RlbSBvcGVyYXRpb25zIHNo
b3VsZCBsaXZlLgorICAgICAgICBBbHNvIG1hZGUgdGhlIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXIgYW4gQWN0aXZlRE9NT2JqZWN0IHRvIGtlZXAgaXQgYW5kIGl0cworICAgICAgICB3cmFwcGVy
IGFsaXZlIHdoaWxlIGEgZmlsZSBzeXN0ZW0gb3BlcmF0aW9uIGlzIHBlbmRpbmcuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVTeXN0ZW1FbnRyeTo6fkZpbGVTeXN0ZW1FbnRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3lzdGVtRW50cnk6OmZpbGVzeXN0ZW0gY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaDoKKyAgICAgICAgTWFrZSBGaWxlU3lzdGVt
RW50cnkga2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gaXRzIERPTUZpbGVTeXN0ZW0gb2JqZWN0
LgorICAgICAgICBQcmV2aW91c2x5LCB0aGUgRE9NRmlsZVN5c3RlbSB3YXMga2VwdCBhbGl2ZSBi
eSB0aGUgRGF0YVRyYW5zZmVySXRlbSBidXQKKyAgICAgICAgdGhpcyB3YXMgdW5zYWZlIGJlY2F1
c2UgRmlsZVN5c3RlbUVudHJ5IG1heSBvdXRsaXZlIHRoZSBEYXRhVHJhbnNmZXJJdGVtLgorCisg
ICAgICAgICogZG9tL0RPTUV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FeGNl
cHRpb246OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0RPTUV4Y2VwdGlvbi5oOgorICAgICAgICBB
ZGQgZmFjdG9yeSB0byBjb25zdHJ1Y3QgYSBET01FeGNlcHRpb24gZnJvbSBhbiBFeGNlcHRpb24u
CisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0VudHJ5IGNvbnN0KToKKyAgICAgICAgKiBkb20vRGF0
YVRyYW5zZmVySXRlbS5oOgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6RXhjZXB0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIGRvbS9F
eGNlcHRpb25Pci5oOgorICAgICAgICBNYWtlIEV4Y2VwdGlvbk9yPD4gLyBFeGNlcHRpb24gd29y
ayB3aXRoIENyb3NzVGhyZWFkQ29waWVyIGZvciBjb252ZW5pZW5jZS4KKworICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhTZXBhcmF0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRo
U2VwYXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXRoU2VwYXJhdG9yKToKKyAgICAgICAgQWRkIHBhdGhTZXBhcmF0
b3IoKSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIHJpZ2h0IHBhdGggc2VwYXJh
dG9yCisgICAgICAgIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKwogMjAxNy0wOC0zMCAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2gg
aW4gTWF0aE1MIGxheW91dCB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXgg
ODNmN2I0YjE4MTM0ZjBmMDk2YmY3YWQ4NjU5NWU4NGYyMzNkY2FjMy4uYWFlYjU1NDUwNTU1Zjc1
MWYzZjhiMGZkZjU3OTYwMTQwODVhZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jv
c3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5o
CkBAIC0xMzksOSArMTM5LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBIYXNoU2V0PFQ+ID4gewogICAgICAgICByZXR1
cm4gZGVzdGluYXRpb247CiAgICAgfQogfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjcm9z
c1RocmVhZENvcHkoY29uc3QgVCYgc291cmNlKQoreworICAgIHJldHVybiBDcm9zc1RocmVhZENv
cGllcjxUPjo6Y29weShzb3VyY2UpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVz
aW5nIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlSGVscGVyOwogdXNpbmcgV1RGOjpDcm9zc1Ro
cmVhZENvcGllckJhc2U7CiB1c2luZyBXVEY6OkNyb3NzVGhyZWFkQ29waWVyOwordXNpbmcgV1RG
Ojpjcm9zc1RocmVhZENvcHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZFRhc2suaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IDBhNjZlYzE3
ZjdhZDRhOTU5ODQzY2VjYzU0N2Y5Y2NiMDMwMWUzNDUuLjU3YjcxNzkzNGVmZDI0MGQ5YWI4MjEx
OWQ5M2Q2YTYyN2Y1NmQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFk
VGFzay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC01MCwxMiAr
NTAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247
CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgY3Jvc3NUaHJlYWRDb3B5KGNvbnN0IFQm
IHQpCi17Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KHQpOwotfQotCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0lu
ZGV4Pgogdm9pZCBjYWxsRnVuY3Rpb25Gb3JDcm9zc1RocmVhZFRhc2tJbXBsKEYgZnVuY3Rpb24s
IEFyZ3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcAppbmRleCBhODM5YTUyODUwZjkwZDhmM2I2OWM0MzNmZDg5Y2ZjNzI5ODBiOTI1Li5hN2Ji
YjQwZDM0ZDljNDAxNTc1OTc1ZDZhYWFiMmY4OGM5Zjk0NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCAr
MjYsMTM3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgogCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIK
KyNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6
RE9NRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUobmFtZSkKLSAg
ICAsIG1fcm9vdChGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlM
aXRlcmFsKCIvIikpKQorc3RydWN0IExpc3RlZENoaWxkIHsKKyAgICBTdHJpbmcgZmlsZW5hbWU7
CisgICAgRmlsZU1ldGFkYXRhOjpUeXBlIHR5cGU7CisKKyAgICBMaXN0ZWRDaGlsZCBpc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpLCB0eXBlIH07
IH0KK307CisKK3N0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8TGlzdGVkQ2hpbGQ+PiBsaXN0RGly
ZWN0b3J5V2l0aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFmaWxlSXNEaXJlY3RvcnkoZnVsbFBhdGgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBhdGggbm8gbG9uZ2Vy
IGV4aXN0cyBvciBpcyBubyBsb25nZXIgYSBkaXJlY3RvcnkiIH07CisKKyAgICBhdXRvIGNoaWxk
UGF0aHMgPSBsaXN0RGlyZWN0b3J5KGZ1bGxQYXRoLCAiKiIpOworICAgIFZlY3RvcjxMaXN0ZWRD
aGlsZD4gbGlzdGVkQ2hpbGRyZW47CisgICAgbGlzdGVkQ2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjaGlsZFBhdGhzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBj
aGlsZFBhdGhzKSB7CisgICAgICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICAgICAgaWYg
KCFnZXRGaWxlTWV0YWRhdGEoY2hpbGRQYXRoLCBtZXRhZGF0YSkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgbGlzdGVkQ2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKExpc3RlZENoaWxk
IHsgcGF0aEdldEZpbGVOYW1lKGNoaWxkUGF0aCksIG1ldGFkYXRhLnR5cGUgfSk7CisgICAgfQor
ICAgIHJldHVybiBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKTsKK30KKworc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoRE9N
RmlsZVN5c3RlbSYgZmlsZVN5c3RlbSwgRXhjZXB0aW9uT3I8VmVjdG9yPExpc3RlZENoaWxkPj4m
JiBsaXN0ZWRDaGlsZHJlbiwgY29uc3QgU3RyaW5nJiBwYXJlbnRWaXJ0dWFsUGF0aCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChsaXN0ZWRDaGlsZHJlbi5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGxpc3RlZENoaWxkcmVuLnJlbGVhc2VFeGNlcHRpb24o
KTsKKworICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gZW50cmllczsKKyAgICBlbnRy
aWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGlzdGVkQ2hpbGRyZW4ucmV0dXJuVmFsdWUoKS5z
aXplKCkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBsaXN0ZWRDaGlsZHJlbi5yZXR1cm5WYWx1
ZSgpKSB7CisgICAgICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IHBhcmVudFZpcnR1YWxQYXRoICsg
Ii8iICsgY2hpbGQuZmlsZW5hbWU7CisgICAgICAgIHN3aXRjaCAoY2hpbGQudHlwZSkgeworICAg
ICAgICBjYXNlIEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU6CisgICAgICAgICAgICBlbnRyaWVzLnVu
Y2hlY2tlZEFwcGVuZChGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbGVNZXRhZGF0
YTo6VHlwZURpcmVjdG9yeToKKyAgICAgICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBXVEZNb3ZlKGVudHJpZXMpOworfQorCitE
T01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCisgICAgOiBtX25h
bWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorICAgICwgbV9maWxlKFdURk1vdmUoZmls
ZSkpCisgICAgLCBtX3Jvb3RQYXRoKGRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQorICAg
ICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1
ZSIpKQoreworICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKIH0KIAogRE9N
RmlsZVN5c3RlbTo6fkRPTUZpbGVTeXN0ZW0oKQogewogfQogCitSZWY8RmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiLyIpKTsKK30KKwor
UmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6ZmlsZUFzRW50cnkoKQoreworICAg
IGlmIChtX2ZpbGUtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgIi8iICsgbV9maWxlLT5uYW1lKCkpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKnRoaXMsICIvIiArIG1fZmlsZS0+bmFt
ZSgpKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZXZhbHVh
dGUtYS1wYXRoCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKGNvbnN0IFN0cmlu
ZyYgdmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7Cisg
ICAgYXV0byBjb21wb25lbnRzID0gdmlydHVhbFBhdGguc3BsaXQoJy8nKTsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc29sdmVkQ29tcG9uZW50czsKKyAgICByZXNvbHZlZENvbXBvbmVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb21wb25lbnRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBj
b21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAgIGlmIChjb21wb25lbnQgPT0gIi4iKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjb21wb25lbnQgPT0gIi4uIikgewor
ICAgICAgICAgICAgaWYgKCFyZXNvbHZlZENvbXBvbmVudHMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZXNvbHZlZENvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGNvbXBvbmVudCk7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKG1fcm9vdFBhdGgpOworICAgIGZvciAoYXV0byYgcmVzb2x2ZWRDb21w
b25lbnQgOiByZXNvbHZlZENvbXBvbmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocGF0
aFNlcGFyYXRvcigpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmVzb2x2ZWRDb21wb25lbnQp
OworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIERPTUZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiBkaXJlY3Rv
cnksIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKKworICAgIGF1dG8gZnVs
bFBhdGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5LnZpcnR1YWxQYXRoKCkpOworICAgIGlmIChm
dWxsUGF0aCA9PSBtX3Jvb3RQYXRoKSB7CisgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVu
dHJ5Pj4gY2hpbGRyZW47CisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeSgpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJlbikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmdWxsUGF0aCA9IGZ1bGxQ
YXRoLmlzb2xhdGVkQ29weSgpLCBkaXJlY3RvcnlQdHIgPSAmZGlyZWN0b3J5XSgpIG11dGFibGUg
eworICAgICAgICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0
YShmdWxsUGF0aCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jv
c3NUaHJlYWRDb3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5UHRyXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9GaWxlU3lzdGVtRW50cmllcygqdGhpcywg
V1RGTW92ZShsaXN0ZWRDaGlsZHJlbiksIGRpcmVjdG9yeVB0ci0+dmlydHVhbFBhdGgoKSkpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXgg
ZjM2OGMwZGY0NThlMDNlOGNmNjk4YzdjYmQzNjJmZTM2MDE0MTUxNS4uNmQzYzVkMzEyMWUwZDNm
ODBjYmI3M2ExZTA1NDA1Y2Q2N2Y3YmFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCkBAIC0yNSwzMiArMjUsNDUgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEZpbGU7CiBjbGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk7
CiBjbGFzcyBGaWxlU3lzdGVtRW50cnk7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxET01GaWxlU3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbUVudHJ5PiBjcmVhdGVFbnRyeUZvckZpbGUo
UmVmPEZpbGU+JiYgZmlsZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERP
TUZpbGVTeXN0ZW0obmFtZSkpOworICAgICAgICBhdXRvIGZpbGVTeXN0ZW0gPSBhZG9wdFJlZigq
bmV3IERPTUZpbGVTeXN0ZW0oV1RGTW92ZShmaWxlKSkpOworICAgICAgICByZXR1cm4gZmlsZVN5
c3RlbS0+ZmlsZUFzRW50cnkoKTsKICAgICB9CiAKICAgICB+RE9NRmlsZVN5c3RlbSgpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5JiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9Cisg
ICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gcm9vdCgpOworCisgICAgdXNpbmcgRGly
ZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZl
Y3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYpPjsKKyAgICB2b2lkIGxpc3REaXJlY3Rvcnko
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERPTUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICBleHBsaWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKKworICAgIFN0cmlu
ZyBldmFsdWF0ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCk7CisgICAgUmVmPEZpbGVT
eXN0ZW1FbnRyeT4gZmlsZUFzRW50cnkoKTsKIAogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgUmVm
PEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4gbV9yb290OworICAgIFJlZjxGaWxlPiBtX2ZpbGU7
CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7
CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmlkbAppbmRleCA4Y2JhMzAyMWIzM2Fj
NjY0ZmU4ZDcyM2Y5MTM2ZTM3MWZlMjgxYjY2Li5iMjVlYzY1MGY5Mzk3ZmQ1YTYyNjRjZWRkNzZl
NGIwZGVjOTA5ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uaWRsCkBAIC0yOSw1ICsyOSw1IEBACiAgICAgSW50ZXJmYWNlTmFt
ZT1GaWxlU3lzdGVtLAogXSBpbnRlcmZhY2UgRE9NRmlsZVN5c3RlbSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFVTVlN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkgcm9vdDsKKyAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBh
dHRyaWJ1dGUgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5IHJvb3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5LmNwcAppbmRleCBkNzBkMmQwNTdiMjY4MDA1NjFmMDIxODlmZDFjMzk2ZmM5OTVh
NGVhLi5jOTE1YjAwZTEyMGQwNmUzZmJhOGNkNTcyNjhmNmY1YWNkMWI5NmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5LmNwcApAQCAtMzcsOSArMzcsOSBAQCBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVt
LCBjbwogewogfQogCi1SZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQorUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI+IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6
OmNyZWF0ZShjb250ZXh0LCAqdGhpcyk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5o
CmluZGV4IGY0NzRjNjk0NmRjODUxMDM4NWNkMWRkODM0MzJhNzZjMzc2MDc3ZmYuLjhkYjZmOTM5
NWQzMWZmMWQ0YmE4YjgyMWM5MTBmM2MyODQ0YjQ0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkoZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAg
ICB9CiAKLSAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7
CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBzdHJ1Y3QgRmxhZ3MgewogICAgICAgICBib29sIGNy
ZWF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsCmluZGV4IDI4YmRmYzc5
MjgwOTdhNTIzZDFmMjI1N2JiZmZkZjI4MDE5MzNhOTguLjQwZjVjNWQzNDc1ZjRjZWRhMDFhNGMy
YTY1YWMxZTZjMTYyYTE0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsCkBAIC0yNiw3
ICsyNiw3IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1EaXJlY3RvcnlVcGxvYWQsCiBdIGlu
dGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgOiBGaWxlU3lzdGVtRW50cnkgewotICAg
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7CisgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgY3JlYXRl
UmVhZGVyKCk7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBn
ZXRGaWxlKG9wdGlvbmFsIFVTVlN0cmluZz8gcGF0aCwKICAgICAgICAgb3B0aW9uYWwgRmlsZVN5
c3RlbUZsYWdzIG9wdGlvbnMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAKaW5kZXggZWQ5
ZWU2M2MzOTc1ZWU4ZjM2YjQ4MDNiY2VlNTNmZGRiNTI3ZjYxNi4uMDdkODE2ODhmNDRiMjc3NWY1
NzExZTRhZTdjMThjNjg4ZDFiMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApA
QCAtMjcsMjUgKzI3LDcwIEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5o
IgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQotICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQor
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRp
cmVjdG9yeSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0
b3J5KGRpcmVjdG9yeSkKIHsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcjo6fkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12
b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGVycm9yQ2FsbGJhY2spCi0gICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2so
Y29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICBy
ZXR1cm4gIkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXI6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAor
eworICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2lj
Zy5naXRodWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVh
ZGVudHJpZXMKK3ZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJh
Y2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQoreworICAgIGlmIChtX2lzUmVhZGluZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFj
aykKKyAgICAgICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwg
RE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRGlyZWN0b3J5IHJlYWRlciBpcyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJy
b3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2so
Y29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChtX2lzRG9uZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2st
PnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsKKyAgICBhdXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN1
Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9
IFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGlu
Z0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pc1JlYWRpbmcgPSBmYWxzZTsKKyAg
ICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0ZW0oKS5saXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5
LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJv
ckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RG
TW92ZShwZW5kaW5nQWN0aXZpdHkpXShFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1F
bnRyeT4+PiYmIHJlc3VsdCkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgeworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgICAgICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAg
ICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChET01FeGNlcHRpb246OmNyZWF0ZSgqbV9lcnJv
cikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1faXNEb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZl
bnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCmluZGV4
IDhhMDk5NDRhZDk1ZDU1ZWQ2YTczOGRiZDk3YzYzMWE1Y2ZkMmRlZGIuLjRmYjY0Nzk2NTRlZTQx
OWJlNTliMzhjY2Y1N2RlYmJlN2I2ZGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC0zNiwxMSArMzgsMTEgQEAgY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKLWNsYXNzIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyPiB7CitjbGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIGZpbmFsIDogcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNvdW50ZWQ8
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Rmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYg
ZGlyZWN0b3J5KQorICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeSYgZGlyZWN0b3J5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlcihkaXJlY3RvcnkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihjb250ZXh0LCBkaXJlY3RvcnkpKTsK
ICAgICB9CiAKICAgICB+RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcigpOwpAQCAtNDgsOSArNTAs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFJlZjxGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFj
az4mJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
cihGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmKTsKKyAgICBGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmKTsK
KworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAog
ICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IG1fZGlyZWN0b3J5OworICAgIHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uPiBtX2Vycm9yOworICAgIGJvb2wgbV9pc1JlYWRpbmcgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc0RvbmUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuaWRsCmluZGV4IGRkMGNiMDRkZDU1NTMzZGY0MzVjMDhjMDMxZTUwOWY2ZDBi
ZTc2ZDIuLjY1ZDJjNjE1M2U3OTEwNjk3Yzk3M2RjMzI5OWY2ZDY1NzhjNzFiYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKQEAgLTI1LDcgKzI1LDYgQEAKIAogWwogICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2FkLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyIHsKICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZWFkRW50cmllcyhGaWxlU3lzdGVtRW50
cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjaz8gZXJy
b3JDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcAppbmRleCBiMDQ5NjNjOWY4OGZlN2NlOTVhOTI0Njgy
ZjNhNzdlMmUxNTNlNzMwLi42YWFlODJjYjVmNTM4YjNmM2YyNjA0MjIwNDJmM2JiNjEyYjkxNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5
c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgogCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNCAr
MzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYg
ZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWEKIHsKIH0KIAorRmlsZVN5c3RlbUVudHJ5
Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30KKworRE9NRmlsZVN5c3RlbSYgRmlsZVN5c3RlbUVu
dHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWxlc3lzdGVtLmdldCgp
OworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuaAppbmRleCAwMzFkYzI3MjQ4NmEx
ODNkMjZhMjU1OTYwNjUxODZiNmI1ZTQ0OWQ5Li5hNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4
MjM0YzFkOGFkZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRmlsZVN5c3RlbUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5oCkBAIC0zNSwyMCArMzUsMjAgQEAgY2xhc3MgRE9NRmlsZVN5
c3RlbTsKIAogY2xhc3MgRmlsZVN5c3RlbUVudHJ5IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVh
bCB+RmlsZVN5c3RlbUVudHJ5KCkgeyB9CisgICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5KCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29u
c3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0K
LSAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlc3lz
dGVtOyB9CisgICAgRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSgpIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CiAgICAgRmlsZVN5c3RlbUVudHJ5KERPTUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZp
cnR1YWxQYXRoKTsKIAogcHJpdmF0ZToKLSAgICBET01GaWxlU3lzdGVtJiBtX2ZpbGVzeXN0ZW07
CisgICAgUmVmPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKICAgICBTdHJpbmcgbV9uYW1l
OwogICAgIFN0cmluZyBtX3ZpcnR1YWxQYXRoOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaAppbmRleCBjNDdiMWY0NWFjOTcwMmU2NTNmMTVlMTkwYzE2MzA4ZWQzNDhmYmU3Li5l
MjcwNTNmYTVkZmZhMmNmYzlmMWQ5MzRjZjNjNzUyMDY1ZWQ1NGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4NCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIHRoaXNP
YmplY3QtPmRlcmVmKCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBjbGFz
cyBQZW5kaW5nQWN0aXZpdHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nQWN0aXZpdHk8VD4+
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IFBlbmRpbmdBY3Rpdml0eShUJiB0aGlz
T2JqZWN0KQorICAgICAgICAgICAgOiBtX3RoaXNPYmplY3QodGhpc09iamVjdCkKKyAgICAgICAg
eworICAgICAgICAgICAgKysobV90aGlzT2JqZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIH5QZW5kaW5nQWN0aXZpdHkoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQobV90aGlzT2JqZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50ID4gMCk7
CisgICAgICAgICAgICAtLShtX3RoaXNPYmplY3QtPm1fcGVuZGluZ0FjdGl2aXR5Q291bnQpOwor
ICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWY8VD4gbV90aGlzT2JqZWN0Owor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBSZWY8UGVuZGluZ0FjdGl2aXR5PFQ+PiBt
YWtlUGVuZGluZ0FjdGl2aXR5KFQmIHRoaXNPYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQo
JnRoaXNPYmplY3QgPT0gdGhpcyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRp
bmdBY3Rpdml0eTxUPih0aGlzT2JqZWN0KSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0
dWFsIH5BY3RpdmVET01PYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01FeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKaW5k
ZXggZTI4YjBkMTc3ODc0YTc4YjkwZWFhYjU4ZTlhYTU1YmU2ZmI5MDFmYS4uYzk4ZmZjMTA4NmMy
N2Y1NzJjY2UxMjExZTk2NTA3ODY4YjM0MWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlv
bi5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJE
T01FeGNlcHRpb24uaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIFRoaXMgYXJyYXkgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggdGhl
IEV4Y2VwdGlvbkNvZGUgZW51bWVyYXRpb24uCkBAIC05OSw2ICsxMDEsMTIgQEAgUmVmPERPTUV4
Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIG5hbWUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24obGVn
YWN5Q29kZUZyb21OYW1lKG5hbWUpLCBuYW1lLCBtZXNzYWdlKSk7CiB9CiAKK1JlZjxET01FeGNl
cHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQor
eworICAgIGF1dG8mIGRlc2NyaXB0aW9uID0gRE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihleGNl
cHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVz
Y3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3JpcHRpb24ubmFtZSwgZXhjZXB0aW9uLm1lc3NhZ2Uo
KS5pc0VtcHR5KCkgPyBkZXNjcmlwdGlvbi5tZXNzYWdlIDogZXhjZXB0aW9uLm1lc3NhZ2UoKSkp
OworfQorCiBET01FeGNlcHRpb246OkRPTUV4Y2VwdGlvbihMZWdhY3lDb2RlIGxlZ2FjeUNvZGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIDogbV9sZWdh
Y3lDb2RlKGxlZ2FjeUNvZGUpCiAgICAgLCBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNl
cHRpb24uaAppbmRleCBjNTMzMmI5ODI5NTJmMTJkYmI1N2UxMDAwZTY4ODMxZDA0NDg1Y2U3Li5k
YWJlOTMwNzUzODZkZWI3NTM2MzlkNTAzMmVmNjkwYmU0MTUxMDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3MgRE9NRXhjZXB0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxET01FeGNlcHRpb24+
IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcqIG1lc3NhZ2UgPSBudWxscHRyKTsK
KyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbiYpOwog
CiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4KICAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmNwcAppbmRleCA2YjVkN2E1NzhiYWEwN2E5MTdk
ODhhNjgyMjEwY2Q2YTEzN2JmNjM5Li5lMzIyODJiOTc4MTY4OGEyOGQ2MjllZDgzMzRmMzk4YTU2
YTY5ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uY3BwCkBAIC00MCw3
ICs0MCw2IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDEzICsx
MTEsNyBAQCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5PiBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0Vu
dHJ5KCkgY29uc3QKICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgaWYgKCFtX2ZpbGVTeXN0ZW0pCi0gICAgICAgIG1fZmlsZVN5c3RlbSA9IERPTUZpbGVTeXN0
ZW06OmNyZWF0ZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotCi0gICAgU3RyaW5nIHZp
cnR1YWxQYXRoID0gIi8iICsgZmlsZS0+bmFtZSgpOwotICAgIGlmIChmaWxlLT5pc0RpcmVjdG9y
eSgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKm1f
ZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpOwotICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5
OjpjcmVhdGUoKm1fZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpOworICAgIHJldHVybiBET01GaWxl
U3lzdGVtOjpjcmVhdGVFbnRyeUZvckZpbGUoKmZpbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAppbmRleCBiZWExY2YxZTRj
MDc5ZjRmY2MwZTNlNmFhNTk0YTExMGYwMWI5ZTYxLi43MTMzMDQzMWI5ZDRjOTMwN2RmMGQyMGQ4
NzYxZWU4NGJlNmM0M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAg
LTcyLDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0
PiBtX2xpc3Q7CiAgICAgY29uc3QgU3RyaW5nIG1fdHlwZTsKICAgICBSZWZQdHI8RmlsZT4gbV9m
aWxlOwotICAgIG11dGFibGUgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaAppbmRleCA1ZjhhOGQyZWNhYmQyZmVkODhjNDRlODk5
NzAyODBjMzk0Zjc4OTAyLi4wOTdiOTE3NWY1ZDVjOGQyZDc0NTg2OWI2ZGNiNTIwZGRjNzExZmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0zOSw2ICszOSwxMSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAg
U3RyaW5nJiYgcmVsZWFzZU1lc3NhZ2UoKSB7IHJldHVybiBXVEZNb3ZlKG1fbWVzc2FnZSk7IH0K
IAorICAgIEV4Y2VwdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07CisgICAg
fQorCiBwcml2YXRlOgogICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOwogICAgIFN0cmluZyBtX21l
c3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IDk3OWQ0YTdjMDZhMTAxNjU0ZjYy
NTMxNmFiMmNiMTA5MTQxZjBjMGEuLjRmZTU4MGEwMzRlOWZmNjE1YjIxZjg2YWFiZDYyOTczMjE4
ZWNhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC0yNyw2ICsyNyw3IEBAIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3Jv
c3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTgwLDMgKzE4MSwxNSBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4g
aXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZvaWQ+JiYgdmFsdWUpCiB9CiAKIH0KKworbmFtZXNw
YWNlIFdURiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6RXhjZXB0aW9uT3I8VD4gPiB7CisgICAgdHlwZWRl
ZiBXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiBUeXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29u
c3QgVHlwZSYgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UuZXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCk7
CisgICAgICAgIHJldHVybiBDcm9zc1RocmVhZENvcGllcjxUPjo6Y29weShzb3VyY2UucmV0dXJu
VmFsdWUoKSk7CisgICAgfQorfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9y
LmNwcAppbmRleCBiMTY0NWFhMzY4OTFjYWRlNWEyZWVmNmNkMzExOWU4N2Q1YjdlYjM5Li4xOWJk
NDRhZWExZGRkMTZkMTkyOWYyMmRhYTBkMTk4YmJiZjMyYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEZpbGVMaXN0Q3JlYXRvcjo6
RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMs
IFNob3VsCiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRo
cmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBtX3dvcmtR
dWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENyZWF0b3IgV29yayBRdWV1ZSIpOwot
ICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcGF0aHMgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4+Ojpjb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhdGhzID0g
Y3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8gZmls
ZUxpc3QgPSBjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Olllcz4ocGF0
aHMpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0gV1RGTW92ZShmaWxlTGlzdCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAppbmRleCBmYWU1YWUzODhiN2E5ODViNTBhNDQzNjM2ZjAxNDI2MDE5ZmYwNjBhLi4zYjhlZmU1
MDA1ODBlNDYyMzNlYTM2MzM4ODYzMzc5MzMwZjkyMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCkBAIC0xMDEsNiArMTAxLDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsgLy8gTm90IGEK
IGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYsIEZpbGVNZXRhZGF0YSYpOwogYm9v
bCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb21wb25lbnQpOworY29uc3QgY2hhciogcGF0aFNlcGFyYXRvcigpOwogU3RyaW5nIGxhc3RD
b21wb25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiBTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNWJlMzZlOWVkZGUxMTQ2MGJlOWEy
MzBiMTM5NGM0YjY3NDM3MmVhMy4uMTgwN2FhYmQ1YWE4ZWQ0OGIwMTM2NDIyNjFlZTk4ZWVjMTc4
ZmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHAKQEAgLTE4MCw2ICsxODAsMTEgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJldHVy
biBwYXRoICsgR19ESVJfU0VQQVJBVE9SX1MgKyBjb21wb25lbnQ7CiB9CiAKK2NvbnN0IGNoYXIq
IHBhdGhTZXBhcmF0b3IoKQoreworICAgIHJldHVybiBHX0RJUl9TRVBBUkFUT1JfUzsKK30KKwog
Ym9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCAw
NTMxOTMwYjM5MDkzOGVmMmUwYWMzMzRlMTFmZjg2OTA4Y2M4NjdkLi4wOTdiNTFlMThkMmQxYmVl
ZDZiZTUxMzAyMGNkMjk0Zjk2MWFlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI3MCw2ICsyNzAsMTEgQEAgU3RyaW5n
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29tcG9uZW50KQogICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwogfQogCitj
b25zdCBjaGFyKiBwYXRoU2VwYXJhdG9yKCkKK3sKKyAgICByZXR1cm4gIi8iOworfQorCiBib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQ1N0cmluZyBm
dWxsUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAyNThmMTljODFiZjk3MTA1
ZWQ0MWVkZTQ1OTQwNTkyYjE0ODZhN2QyLi43YzY2YjAzNWM5MWE0Y2YxNzAwZThjYWI2YTdhMjNm
YTk0YjYxN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCkBAIC0yMDEsNiArMjAxLDEyIEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKICAgICByZXR1
cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCitjb25zdCBjaGFyKiBwYXRo
U2VwYXJhdG9yKCkKK3sKKyAgICByZXR1cm4gIlxcIjsKK30KKworCiAjaWYgIVVTRShDRikKIAog
Q1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDMyMzk0NDUxOGM0MWU0ZjhjYTAxNjQzM2FjZmVkNGMxNGZhYWExMTQuLmZmZTUwODU3MDUz
MDY4MTlkY2Q1ZjhhMGQ5ODJkZGJiNzNjNDk3OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ny0wOC0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA5MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzQxNjgwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRp
cmVjdG9yeVJlYWRlci1yb290Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDgtMzAg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBh
bGwgb2YgIlJlZ2lzdGVyIiByaWdodCB1cCB1bnRpbCB3aGVyZSB0aGUgc2NyaXB0IGlzIGZldGNo
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMKaW5kZXggZWMzMjIxZDNkNzVmZTgzNzM2MWNkMjU3OTQ3
YTY4ZDMzYjhjMjc4Ni4uMjZkNTZhOWM3YzQyNTE3NDJiZjliODliZjAxNjFiY2VmOWFiYTk4NyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZWRpdGluZy5qcwpAQCAtMzk5LDYgKzM5OSwyNiBAQCBmdW5jdGlvbiBtb3Zl
U2VsZWN0aW9uQmFja3dhcmRCeUxpbmVCb3VuZGFyeUNvbW1hbmQoKSB7CiAKIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitmdW5jdGlvbiBtb3ZlTW91
c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGNlbnRlclggPSBlbGVtZW50Lm9mZnNl
dExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICBjb25zdCBjZW50ZXJZID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxl
c09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogZnVuY3Rpb24gZG91YmxlQ2xpY2soeCwgeSkgewogICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVh
ZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWVhNmFhM2EyMmVhODEyNzRiNDg0MzMxMGQ2
ODQ0ZDE0MWFjM2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MSBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBlbnRyeS5pc0Rp
cmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5Lm5hbWUgaXMgInRlc3RGaWxlcyIKK1BBU1MgZW50
cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGNoaWxkRW50cmllcy5sZW5ndGggaXMg
NAorUEFTUyBjaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBjaGlsZEVu
dHJpZXNbMF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBjaGlsZEVu
dHJpZXNbMF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLm5hbWUgaXMgImZp
bGUyLnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2Zp
bGUyLnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzFdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGNoaWxk
RW50cmllc1syXS5uYW1lIGlzICJzdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmlz
RGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzNdLm5hbWUgaXMgInN1YmZvbGRl
cjIiCitQQVNTIGNoaWxkRW50cmllc1szXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xk
ZXIyIgorUEFTUyBjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmFu
ZENoaWxkRW50cmllcy5sZW5ndGggaXMgMQorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5uYW1l
IGlzICJmaWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIv
dGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1sw
XS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRW50cmllcy5sZW5ndGggaXMgMgorUEFT
UyBncmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxlNC50eHQiCitQQVNTIGdyYW5kQ2hp
bGRFbnRyaWVzWzBdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0
IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBncmFuZENo
aWxkRW50cmllc1sxXS5uYW1lIGlzICJzdWJmb2xkZXIyYSIKK1BBU1MgZ3JhbmRDaGlsZEVudHJp
ZXNbMV0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIKK1BB
U1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0uaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBncmVhdEdy
YW5kQ2hpbGRFbnRyaWVzLmxlbmd0aCBpcyAxCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNb
MF0ubmFtZSBpcyAiZmlsZTUudHh0IgorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1
bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0Igor
UEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVj
dG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDEzMDA1ZmRkOTU1YjQzMDJjNzFlOGYwMDY4YTQzMTNlODJhNDcx
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMiBAQAorQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMgorUEFTUyBlbnRyeTEuaXNGaWxlIGlz
IHRydWUKK1BBU1MgZW50cnkxLm5hbWUgaXMgInRlc3QudHh0IgorUEFTUyBlbnRyeTEuZnVsbFBh
dGggaXMgIi90ZXN0LnR4dCIKK1BBU1MgZW50cnlGb3VuZC5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBl
bnRyeUZvdW5kLm5hbWUgaXMgInRlc3QudHh0IgorUEFTUyBlbnRyeUZvdW5kLmZ1bGxQYXRoIGlz
ICIvdGVzdC50eHQiCitQQVNTIGVudHJ5Mi5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5
Mi5uYW1lIGlzICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5Mi5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxl
cyIKK1BBU1MgZW50cnlGb3VuZC5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91bmQu
bmFtZSBpcyAidGVzdEZpbGVzIgorUEFTUyBlbnRyeUZvdW5kLmZ1bGxQYXRoIGlzICIvdGVzdEZp
bGVzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDM2YWQ4M2FlMWI5MTBlYjEyOTA3ZmEwYzc1MjljMGE3ZWRlYmRj
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCkBAIC0wLDAgKzEs
ODggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGlu
Zy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHls
ZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQgcmVz
dWx0ID0gW107CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIoKTsK
KyAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVhZEVu
dHJpZXMoZW50cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7
CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkpOwor
ICAgICAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCByZWpl
Y3QpOworICAgIH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKworZnVuY3Rpb24gZmluZEVu
dHJ5QnlOYW1lKGVudHJpZXMsIG5hbWUpCit7CisgICAgZm9yIChsZXQgY2hpbGRFbnRyeSBvZiBl
bnRyaWVzKSB7CisgICAgICAgIGlmIChjaGlsZEVudHJ5Lm5hbWUgPT0gbmFtZSkKKyAgICAgICAg
ICAgIHJldHVybiBjaGlsZEVudHJ5CisgICAgfQorICAgIHJldHVybiBudWxsOworfQorCit2YXIg
ZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25l
Lm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0
YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5zZmVy
Lml0ZW1zLmxlbmd0aCIsICIyIik7CisKKyAgICBlbnRyeTEgPSBkYXRhVHJhbnNmZXIuaXRlbXNb
MF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIGVudHJ5MiA9IGRhdGFUcmFuc2Zlci5pdGVtc1sx
XS53ZWJraXRHZXRBc0VudHJ5KCk7CisKKyAgICBzaG91bGRCZVRydWUoImVudHJ5MS5pc0ZpbGUi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5MS5uYW1lIiwgInRlc3QudHh0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEuZnVsbFBhdGgiLCAiL3Rlc3QudHh0
Iik7CisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTEuZmlsZXN5c3RlbS5yb290KS50aGVu
KGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFt
ZShlbnRyaWVzLCAidGVzdC50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRyeUZvdW5k
LmlzRmlsZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQubmFt
ZSIsICJ0ZXN0LnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91
bmQuZnVsbFBhdGgiLCAiL3Rlc3QudHh0Iik7CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJlbnRy
eTIuaXNEaXJlY3RvcnkiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeTIu
bmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRy
eTIuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIpOworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNl
KGVudHJ5Mi5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAg
ICAgICAgZW50cnlGb3VuZCA9IGZpbmRFbnRyeUJ5TmFtZShlbnRyaWVzLCAidGVzdEZpbGVzIik7
CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNEaXJlY3RvcnkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRlc3RG
aWxlcyIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5kLmZ1
bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJp
ZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworfTsK
KworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVudERl
ZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250b0Vs
ZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGVzdC50eHQnLCAn
Li4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJl
Y3RvcnlSZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmU4YmM5ZTVmMmIzMGE1MjM3NjQ1YzU1MmM4
NzZlZDQ5MTg4MTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCkBAIC0w
LDAgKzEsMTE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9u
ZSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JleTsiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdl
IGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkiKTsKK2pzVGVzdElz
QXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBnZXRFbnRyaWVzQXNQcm9taXNlKGRpckVudHJ5KSB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IFtdOworICAgICAgICBsZXQgcmVhZGVyID0gZGlyRW50cnkuY3JlYXRlUmVh
ZGVyKCk7CisgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAgICAgICAgICAgcmVhZGVy
LnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3Ro
ID4gMCkgeworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHJlc3VsdC5wdXNo
KGUpKTsKKyAgICAgICAgICAgICAgICBkb0JhdGNoKCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwgcmVqZWN0KTsKKyAgICB9OworICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9CisKK3ZhciBkcm9w
em9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25k
cm9wID0gZnVuY3Rpb24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJh
bnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRhVHJhbnNmZXIuaXRl
bXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGVudHJ5ID0gZGF0YVRyYW5zZmVyLml0ZW1zWzBdLndl
YmtpdEdldEFzRW50cnkoKTsKKyAgICBzaG91bGRCZVRydWUoImVudHJ5LmlzRGlyZWN0b3J5Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeS5uYW1lIiwgInRlc3RGaWxlcyIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcyIp
OworCisgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeSkudGhlbihmdW5jdGlvbihlbnRyaWVz
KSB7CisgICAgICAgIGNoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAgIHNob3VsZEJlKCJj
aGlsZEVudHJpZXMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxl
MS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMF0uaXNGaWxlIik7
CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMV0ubmFtZSIs
ICJmaWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJp
ZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMi50eHQiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJjaGlsZEVudHJpZXNbMV0uaXNGaWxlIik7CisKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbMl0ubmFtZSIsICJzdWJmb2xkZXIxIik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzJdLmZ1bGxQYXRoIiwgIi90ZXN0
RmlsZXMvc3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNoaWxkRW50cmllc1sy
XS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRF
bnRyaWVzWzNdLm5hbWUiLCAic3ViZm9sZGVyMiIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImNoaWxkRW50cmllc1szXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbM10uaXNEaXJlY3RvcnkiKTsK
KworICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1syXSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBncmFuZENoaWxkRW50cmllcyA9IGVudHJpZXM7
CisgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0u
bmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Z3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIxL2Zp
bGUzLnR4dCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1sw
XS5pc0ZpbGUiKTsKKworICAgICAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlzZShjaGlsZEVudHJp
ZXNbM10pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAgICAgIGdyYW5kQ2hp
bGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JhbmRDaGls
ZEVudHJpZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTQudHh0Iik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50cmllc1swXS5mdWxs
UGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvZmlsZTQudHh0Iik7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0ubmFt
ZSIsICJzdWJmb2xkZXIyYSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZ3JhbmRDaGlsZEVudHJpZXNbMV0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIy
L3N1YmZvbGRlcjJhIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxk
RW50cmllc1sxXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAgZ2V0RW50cmllc0Fz
UHJvbWlzZShncmFuZENoaWxkRW50cmllc1sxXSkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMgPSBlbnRyaWVzOworICAg
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiZ3JlYXRHcmFuZENoaWxkRW50cmllcy5sZW5ndGgi
LCAiMSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdyZWF0
R3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNS50eHQiKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1
bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9maWxlNS50eHQiKTsK
KyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJncmVhdEdyYW5kQ2hpbGRFbnRyaWVz
WzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgZnVuY3Rp
b24oZSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDog
IiArIGUpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRF
bnRyaWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0pOworICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVu
dHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYucHJldmVu
dERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0ZpbGVzT250
b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0
RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRB
c0VudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCmluZGV4IGMwYjgzNTYyNzRhNzU0ZWI4NDcwZTE3
MTg4ZGM2ZWNhMzQ2OWU0YmQuLjQwMjQ4OTIxY2FiZGVmNDZkYzc5ZmVmODdhZmJhZTgzOThkZDE2
YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbApAQCAtMiw2
ICsyLDcgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgpAQCAtOSwy
MSArMTAsNiBAQAogZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGRhdGFUcmFu
c2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpIik7CiBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAot
ZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkgewotICAgIHZhciBj
ZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0g
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKLX0K
LQotZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VsZW1lbnQoZWxlbWVudCwgZmlsZXMpIHsKLSAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZlbnRTZW5k
ZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKLSAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxl
bWVudChlbGVtZW50KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KIHZhciBkcm9w
em9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOwogZHJvcHpvbmUub25k
cm9wID0gZnVuY3Rpb24oZSkgewogICAgIGUucHJldmVudERlZmF1bHQoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0ZmE4MWUxNTFmNWI3MDk3ODcw
MjEzNDUyNTcxNWRlNDgwMDg2Zi4uZmNlNzk0NzRkZWE3NGIzZWFjOGEzNDJlOTRkZGM5NDBhNDIy
YjYxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU2
Myw2ICs1NjMsOCBAQCBwbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1ldmVudC1hcGkuaHRt
bAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2YgZXZlbnRT
ZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NDI4NQorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLmh0bWwKIGVkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319432</attachid>
            <date>2017-08-30 19:03:55 -0700</date>
            <delta_ts>2017-08-30 19:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176091-20170830190354.patch</filename>
            <type>text/plain</type>
            <size>54368</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVhZTlkNGZjMzFkZmI0ZDhkZjc5YWE5
MmRmZjA2MzRmOTNjMGZmY2UuLjA5ZTE3NGE3MDliZWJkYmZjOWRhNTkwNTcxYWUyYWE2YWE4Zjli
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5yZWFkRW50cmllcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTY4MDE1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaDoKKyAgICAgICAgKFdURjo6Y3Jvc3NUaHJlYWRDb3B5KToKKyAgICAgICAgKiB3
dGYvQ3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIE1vdmUgY3Jvc3NUaHJlYWRDb3B5KCkgZnJv
bSBDcm9zc1RocmVhZFRhc2suaCB0byBDcm9zc1RocmVhZENvcGllci5oIGFuZAorICAgICAgICBh
ZGQgInVzaW5nIFdURjo6Y3Jvc3NUaHJlYWRDb3B5IiBzdGF0ZW1lbnQgdG8gbWFrZSBpdCBtb3Jl
IGVhc2lseSB1c2FibGUKKyAgICAgICAgZnJvbSBXZWJDb3JlLgorCiAyMDE3LTA4LTIyICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5ncyBuZWVkIHRvIGJl
IGluIHNvbWUga2luZCBvZiBnaWdhY2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhlOTRjYTI0YjU2MmFjZmM0
MDBkOTI4ZmQ5MjU2NGJjZjBhOWZjNmEuLmIzZGNiNjRjZjk0ZWQ3YzU4MTlhNDc0YzZhOGUwYTVl
ZGM1ZGNmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMTctMDgtMzAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0
MTY4MDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3Rv
cnlSZWFkZXItZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwKKyAgICAgICAg
ICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3Rv
cnlSZWFkZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvRmlsZVN5c3RlbUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmZpbGVBc0VudHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmV2YWx1YXRlUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBN
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGw6CisgICAgICAgIC0gSW1wbGVtZW50IGRpcmVjdG9yeSBs
aXN0aW5nIG9wZXJhdGlvbiBmb3Igc3VwcG9ydGluZworICAgICAgICAgIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKCkuCisgICAgICAgIC0gSW1wbGVtZW50IGV2YWx1YXRl
UGF0aCgpIG9wZXJhdGlvbiBhcyBwZXI6CisgICAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHVi
LmlvL2VudHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKKyAgICAgICAgLSBET01GaWxlU3lzdGVt
IHNob3VsZCBubyBsb25nZXIgaG9sZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8KKyAgICAgICAgICB0
aGUgcm9vdCBlbnRyeSBhbmQgRmlsZVN5c3RlbUVudHJ5IG5vdyBob2xkcyBhIHN0cm9uZworICAg
ICAgICAgIHJlZmVyZW5jZSB0byB0aGUgRE9NRmlsZVN5c3RlbSBhbmQgdGhpcyB3b3VsZCBjcmVh
dGUgYQorICAgICAgICAgIGN5Y2xlLgorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcik6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsOgorICAgICAgICBIYXZlIGNyZWF0ZVJl
YWRlcigpIHRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCB3aGljaCBpcyBuZWVkZWQKKyAg
ICAgICAgdG8gY29uc3RydWN0IGEgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciwgbm93IHRoYXQg
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcgorICAgICAgICBpcyBhbiBBY3RpdmVET01PYmplY3Qu
CisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
OjpyZWFkRW50cmllcyk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5pZGw6CisgICAgICAgIFByb3ZpZGUgaW1wbGVtZW50YXRpb24gZm9y
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKSBhcyBwZXI6CisgICAgICAg
IC0gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1kaXJl
Y3RvcnlyZWFkZXItcmVhZGVudHJpZXMKKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgZGlyZWN0b3J5
IGxpc3Rpbmcgb3BlcmF0aW9uLCB3ZSBhc2sgdGhlIERPTUZpbGVTeXN0ZW0sIHdoaWNoIGlzCisg
ICAgICAgIHdoZXJlIGFsbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgc2hvdWxkIGxpdmUuCisgICAg
ICAgIEFsc28gbWFkZSB0aGUgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciBhbiBBY3RpdmVET01P
YmplY3QgdG8ga2VlcCBpdCBhbmQgaXRzCisgICAgICAgIHdyYXBwZXIgYWxpdmUgd2hpbGUgYSBm
aWxlIHN5c3RlbSBvcGVyYXRpb24gaXMgcGVuZGluZy4KKworICAgICAgICAqIE1vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1F
bnRyeTo6ZmlsZXN5c3RlbSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5oOgorICAgICAgICBNYWtlIEZpbGVTeXN0ZW1FbnRyeSBrZWVwIGEgc3Ry
b25nIHJlZmVyZW5jZSB0byBpdHMgRE9NRmlsZVN5c3RlbSBvYmplY3QuCisgICAgICAgIFByZXZp
b3VzbHksIHRoZSBET01GaWxlU3lzdGVtIHdhcyBrZXB0IGFsaXZlIGJ5IHRoZSBEYXRhVHJhbnNm
ZXJJdGVtIGJ1dAorICAgICAgICB0aGlzIHdhcyB1bnNhZmUgYmVjYXVzZSBGaWxlU3lzdGVtRW50
cnkgbWF5IG91dGxpdmUgdGhlIERhdGFUcmFuc2Zlckl0ZW0uCisKKyAgICAgICAgKiBkb20vQWN0
aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OlBlbmRp
bmdBY3Rpdml0eTo6UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5Ojp+UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIEFk
ZCBQZW5kaW5nQWN0aXZpdHkgLyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgYXMgYSBsZXNzIGVycm9y
LXByb25lCisgICAgICAgIHJlcGxhY2VtZW50IGZvciBzZXRQZW5kaW5nQWN0aXZpdHkoKSAvIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KCkuCisKKyAgICAgICAgKiBkb20vRE9NRXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
RE9NRXhjZXB0aW9uLmg6CisgICAgICAgIEFkZCBmYWN0b3J5IHRvIGNvbnN0cnVjdCBhIERPTUV4
Y2VwdGlvbiBmcm9tIGFuIEV4Y2VwdGlvbi4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJ
dGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkg
Y29uc3QpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb246Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIE1ha2UgRXhj
ZXB0aW9uT3I8PiAvIEV4Y2VwdGlvbiB3b3JrIHdpdGggQ3Jvc3NUaHJlYWRDb3BpZXIgZm9yIGNv
bnZlbmllbmNlLgorCisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICBV
c2UgY3Jvc3NUaHJlYWRDb3B5KCkgaW5zdGVhZCBvZiBsb25nZXIgZm9ybS4KKworICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKToKKyAgICAgICAgQWRkIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoKSB1
dGlsaXR5IGZ1bmN0aW9uLCB3aGljaCBpcyBzaW1pbGFyIHRvCisgICAgICAgIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgpIGJ1dCBzdXBwb3J0cyBhcHBlbmRpbmcgbXVsdGlwbGUgY29tcG9uZW50
cworICAgICAgICBpbiBhbiBlZmZpY2llbnQgZmFzaGlvbi4KKwogMjAxNy0wOC0zMCAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2ggaW4g
TWF0aE1MIGxheW91dCB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggODNm
N2I0YjE4MTM0ZjBmMDk2YmY3YWQ4NjU5NWU4NGYyMzNkY2FjMy4uYWFlYjU1NDUwNTU1Zjc1MWYz
ZjhiMGZkZjU3OTYwMTQwODVhZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC0xMzksOSArMTM5LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBIYXNoU2V0PFQ+ID4gewogICAgICAgICByZXR1cm4g
ZGVzdGluYXRpb247CiAgICAgfQogfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjcm9zc1Ro
cmVhZENvcHkoY29uc3QgVCYgc291cmNlKQoreworICAgIHJldHVybiBDcm9zc1RocmVhZENvcGll
cjxUPjo6Y29weShzb3VyY2UpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5n
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlSGVscGVyOwogdXNpbmcgV1RGOjpDcm9zc1RocmVh
ZENvcGllckJhc2U7CiB1c2luZyBXVEY6OkNyb3NzVGhyZWFkQ29waWVyOwordXNpbmcgV1RGOjpj
cm9zc1RocmVhZENvcHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRh
c2suaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IDBhNjZlYzE3Zjdh
ZDRhOTU5ODQzY2VjYzU0N2Y5Y2NiMDMwMWUzNDUuLjU3YjcxNzkzNGVmZDI0MGQ5YWI4MjExOWQ5
M2Q2YTYyN2Y1NmQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFz
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC01MCwxMiArNTAs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CiB9
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgY3Jvc3NUaHJlYWRDb3B5KGNvbnN0IFQmIHQp
Ci17Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KHQpOwotfQotCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4
Pgogdm9pZCBjYWxsRnVuY3Rpb25Gb3JDcm9zc1RocmVhZFRhc2tJbXBsKEYgZnVuY3Rpb24sIEFy
Z3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cAppbmRleCBhODM5YTUyODUwZjkwZDhmM2I2OWM0MzNmZDg5Y2ZjNzI5ODBiOTI1Li45ZTllYzVk
MWMzODZkZTQxYWRlNTRhNzU0MDgwNzE2ZThjOThhZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6
IG1fbmFtZShuYW1lKQotICAgICwgbV9yb290KEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlKCp0aGlzLCBBU0NJSUxpdGVyYWwoIi8iKSkpCitzdHJ1Y3QgTGlzdGVkQ2hpbGQgeworICAg
IFN0cmluZyBmaWxlbmFtZTsKKyAgICBGaWxlTWV0YWRhdGE6OlR5cGUgdHlwZTsKKworICAgIExp
c3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCksIHR5cGUgfTsgfQorfTsKKworc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0
ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWZpbGVJc0RpcmVj
dG9yeShmdWxsUGF0aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9y
LCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsK
KworICAgIGF1dG8gY2hpbGRQYXRocyA9IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7Cisg
ICAgVmVjdG9yPExpc3RlZENoaWxkPiBsaXN0ZWRDaGlsZHJlbjsKKyAgICBsaXN0ZWRDaGlsZHJl
bi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNoaWxkUGF0aHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1
dG8mIGNoaWxkUGF0aCA6IGNoaWxkUGF0aHMpIHsKKyAgICAgICAgRmlsZU1ldGFkYXRhIG1ldGFk
YXRhOworICAgICAgICBpZiAoIWdldEZpbGVNZXRhZGF0YShjaGlsZFBhdGgsIG1ldGFkYXRhKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0ZWRDaGlsZHJlbi51bmNoZWNrZWRB
cHBlbmQoTGlzdGVkQ2hpbGQgeyBwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKSwgbWV0YWRhdGEu
dHlwZSB9KTsKKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUobGlzdGVkQ2hpbGRyZW4pOworfQor
CitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxl
U3lzdGVtRW50cmllcyhET01GaWxlU3lzdGVtJiBmaWxlU3lzdGVtLCBFeGNlcHRpb25PcjxWZWN0
b3I8TGlzdGVkQ2hpbGQ+PiYmIGxpc3RlZENoaWxkcmVuLCBjb25zdCBTdHJpbmcmIHBhcmVudFZp
cnR1YWxQYXRoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGxpc3Rl
ZENoaWxkcmVuLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbGlzdGVkQ2hpbGRyZW4u
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBl
bnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXN0ZWRDaGlsZHJl
bi5yZXR1cm5WYWx1ZSgpLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGxpc3RlZENo
aWxkcmVuLnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gcGFy
ZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKKyAgICAgICAgc3dpdGNoIChj
aGlsZC50eXBlKSB7CisgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlRmlsZToKKyAgICAg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0
ZShmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5OgorICAgICAgICAgICAgZW50cmllcy51
bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoZmlsZVN5c3Rl
bSwgdmlydHVhbFBhdGgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUo
ZW50cmllcyk7Cit9CisKK0RPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYg
ZmlsZSkKKyAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgLCBt
X2ZpbGUoV1RGTW92ZShmaWxlKSkKKyAgICAsIG1fcm9vdFBhdGgoZGlyZWN0b3J5TmFtZShtX2Zp
bGUtPnBhdGgoKSkpCisgICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiRE9NRmls
ZVN5c3RlbSB3b3JrIHF1ZXVlIikpCit7CisgICAgQVNTRVJUKCFtX3Jvb3RQYXRoLmVuZHNXaXRo
KCcvJykpOwogfQogCiBET01GaWxlU3lzdGVtOjp+RE9NRmlsZVN5c3RlbSgpCiB7CiB9CiAKK1Jl
ZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoKQoreworICAg
IHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpOworfQorCitSZWY8RmlsZVN5c3RlbUVudHJ5PiBET01GaWxlU3lzdGVtOjpmaWxl
QXNFbnRyeSgpCit7CisgICAgaWYgKG1fZmlsZS0+aXNEaXJlY3RvcnkoKSkKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2ZpbGUt
Pm5hbWUoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqdGhpcywg
Ii8iICsgbV9maWxlLT5uYW1lKCkpOworfQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Vu
dHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKK1N0cmluZyBET01GaWxlU3lzdGVtOjpldmFsdWF0
ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKK3sKKyAgICBBU1NFUlQodmlydHVhbFBh
dGhbMF0gPT0gJy8nKTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgn
LycpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29s
dmVkQ29tcG9uZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNv
bXBvbmVudCA9PSAiLiIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBv
bmVudCA9PSAiLi4iKSB7CisgICAgICAgICAgICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9u
ZW50cy51bmNoZWNrZWRBcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOwor
fQorCit2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5JiBkaXJlY3RvcnksIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsK
KworICAgIFN0cmluZyBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeS52aXJ0dWFsUGF0
aCgpOworICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBh
dGgpOworICAgIGlmIChmdWxsUGF0aCA9PSBtX3Jvb3RQYXRoKSB7CisgICAgICAgIFZlY3RvcjxS
ZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hpbGRyZW47CisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChm
aWxlQXNFbnRyeSgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJl
bikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBm
dWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9
IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0
aCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRD
b3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0
dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoKnRoaXMsIFdURk1vdmUobGlzdGVkQ2hpbGRy
ZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXggZjM2OGMwZGY0NThlMDNlOGNmNjk4YzdjYmQz
NjJmZTM2MDE0MTUxNS4uNmQzYzVkMzEyMWUwZDNmODBjYmI3M2ExZTA1NDA1Y2Q2N2Y3YmFhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5oCkBAIC0yNSwzMiArMjUsNDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbGU7CiBj
bGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cnk7CiAK
IGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01GaWxl
U3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZVN5
c3RlbUVudHJ5PiBjcmVhdGVFbnRyeUZvckZpbGUoUmVmPEZpbGU+JiYgZmlsZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUZpbGVTeXN0ZW0obmFtZSkpOworICAgICAg
ICBhdXRvIGZpbGVTeXN0ZW0gPSBhZG9wdFJlZigqbmV3IERPTUZpbGVTeXN0ZW0oV1RGTW92ZShm
aWxlKSkpOworICAgICAgICByZXR1cm4gZmlsZVN5c3RlbS0+ZmlsZUFzRW50cnkoKTsKICAgICB9
CiAKICAgICB+RE9NRmlsZVN5c3RlbSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiByb290
KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeT4gcm9vdCgpOworCisgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+
JiYpPjsKKyAgICB2b2lkIGxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Jiwg
RGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERP
TUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBleHBsaWNpdCBET01GaWxlU3lz
dGVtKFJlZjxGaWxlPiYmKTsKKworICAgIFN0cmluZyBldmFsdWF0ZVBhdGgoY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCk7CisgICAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gZmlsZUFzRW50cnkoKTsK
IAogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4g
bV9yb290OworICAgIFJlZjxGaWxlPiBtX2ZpbGU7CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7Cisg
ICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmlkbAppbmRleCA4Y2JhMzAyMWIzM2FjNjY0ZmU4ZDcyM2Y5MTM2ZTM3MWZlMjgxYjY2
Li5iMjVlYzY1MGY5Mzk3ZmQ1YTYyNjRjZWRkNzZlNGIwZGVjOTA5ZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsCkBAIC0y
OSw1ICsyOSw1IEBACiAgICAgSW50ZXJmYWNlTmFtZT1GaWxlU3lzdGVtLAogXSBpbnRlcmZhY2Ug
RE9NRmlsZVN5c3RlbSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBuYW1lOwot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgcm9vdDsKKyAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5IHJvb3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAppbmRleCBkNzBkMmQw
NTdiMjY4MDA1NjFmMDIxODlmZDFjMzk2ZmM5OTVhNGVhLi5jOTE1YjAwZTEyMGQwNmUzZmJhOGNk
NTcyNjhmNmY1YWNkMWI5NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcApAQCAtMzcs
OSArMzcsOSBAQCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjbwogewogfQogCi1SZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIo
KQorUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShjb250ZXh0LCAqdGhpcyk7CiB9
CiAKIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZp
bGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGY0NzRjNjk0NmRjODUxMDM4NWNk
MWRkODM0MzJhNzZjMzc2MDc3ZmYuLjhkYjZmOTM5NWQzMWZmMWQ0YmE4YjgyMWM5MTBmM2MyODQ0
YjQ0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnko
ZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICB9CiAKLSAgICBSZWY8RmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBz
dHJ1Y3QgRmxhZ3MgewogICAgICAgICBib29sIGNyZWF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaWRsCmluZGV4IDI4YmRmYzc5MjgwOTdhNTIzZDFmMjI1N2JiZmZkZjI4MDE5
MzNhOTguLjQwZjVjNWQzNDc1ZjRjZWRhMDFhNGMyYTY1YWMxZTZjMTYyYTE0OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgRW5hYmxlZEF0
UnVudGltZT1EaXJlY3RvcnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkgOiBGaWxlU3lzdGVtRW50cnkgewotICAgIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIg
Y3JlYXRlUmVhZGVyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7CiAKICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBnZXRGaWxlKG9wdGlvbmFsIFVTVlN0cmluZz8g
cGF0aCwKICAgICAgICAgb3B0aW9uYWwgRmlsZVN5c3RlbUZsYWdzIG9wdGlvbnMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5jcHAKaW5kZXggZWQ5ZWU2M2MzOTc1ZWU4ZjM2YjQ4MDNiY2VlNTNm
ZGRiNTI3ZjYxNi4uMDdkODE2ODhmNDRiMjc3NWY1NzExZTRhZTdjMThjNjg4ZDFiMDE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMjcsMjUgKzI3LDcwIEBACiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQot
ICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkKKyAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKKyAgICBzdXNw
ZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6fkZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAgICAgIGVy
cm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVh
dGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICByZXR1cm4gIkZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVuZGluZ0Fj
dGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2Rv
bS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVhZGVudHJpZXMKK3ZvaWQgRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmIChtX2lzUmVhZGlu
ZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVycm9yQ2FsbGJh
Y2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRGlyZWN0b3J5IHJlYWRlciBp
cyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVy
cm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVh
dGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2lzRG9u
ZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwg
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsK
KyAgICBhdXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHBl
bmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9pc1JlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0
ZW0oKS5saXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0g
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNh
bGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpXShFeGNl
cHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmIHJlc3VsdCkgeworICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIG1fZXJy
b3IgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChlcnJv
ckNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChET01FeGNlcHRpb246OmNyZWF0ZSgqbV9lcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faXNEb25lID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCmluZGV4IDhhMDk5NDRhZDk1ZDU1ZWQ2YTczOGRiZDk3
YzYzMWE1Y2ZkMmRlZGIuLjRmYjY0Nzk2NTRlZTQxOWJlNTliMzhjY2Y1N2RlYmJlN2I2ZGI3Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNiwxMSArMzgsMTEg
QEAgY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJp
ZXNDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIEZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CitjbGFzcyBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyIGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQorICAgIHN0YXRpYyBSZWY8
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihkaXJl
Y3RvcnkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlcihjb250ZXh0LCBkaXJlY3RvcnkpKTsKICAgICB9CiAKICAgICB+RmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcigpOwpAQCAtNDgsOSArNTAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVh
ZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxGaWxlU3lzdGVtRW50cmllc0Nh
bGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkm
KTsKKyAgICBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmKTsKKworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnk+IG1fZGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBtX2Vycm9y
OworICAgIGJvb2wgbV9pc1JlYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0RvbmUgeyBm
YWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsCmluZGV4IGRkMGNi
MDRkZDU1NTMzZGY0MzVjMDhjMDMxZTUwOWY2ZDBiZTc2ZDIuLjY1ZDJjNjE1M2U3OTEwNjk3Yzk3
M2RjMzI5OWY2ZDY1NzhjNzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKQEAg
LTI1LDcgKzI1LDYgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2Fk
LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
dm9pZCByZWFkRW50cmllcyhGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFj
aywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApp
bmRleCBiMDQ5NjNjOWY4OGZlN2NlOTVhOTI0NjgyZjNhNzdlMmUxNTNlNzMwLi42YWFlODJjYjVm
NTM4YjNmM2YyNjA0MjIwNDJmM2JiNjEyYjkxNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgog
CisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNCArMzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpG
aWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2
aXJ0dWEKIHsKIH0KIAorRmlsZVN5c3RlbUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30K
KworRE9NRmlsZVN5c3RlbSYgRmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9maWxlc3lzdGVtLmdldCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRW50cnkuaAppbmRleCAwMzFkYzI3MjQ4NmExODNkMjZhMjU1OTYwNjUxODZiNmI1ZTQ0OWQ5
Li5hNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4MjM0YzFkOGFkZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oCkBAIC0z
NSwyMCArMzUsMjAgQEAgY2xhc3MgRE9NRmlsZVN5c3RlbTsKIAogY2xhc3MgRmlsZVN5c3RlbUVu
dHJ5IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3Rl
bUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5KCkgeyB9Cisg
ICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0KLSAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lz
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlc3lzdGVtOyB9CisgICAgRE9NRmlsZVN5c3RlbSYg
ZmlsZXN5c3RlbSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgRmlsZVN5c3RlbUVudHJ5KERP
TUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKIAogcHJpdmF0ZToKLSAg
ICBET01GaWxlU3lzdGVtJiBtX2ZpbGVzeXN0ZW07CisgICAgUmVmPERPTUZpbGVTeXN0ZW0+IG1f
ZmlsZXN5c3RlbTsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3ZpcnR1YWxQYXRo
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBjNDdiMWY0NWFjOTcw
MmU2NTNmMTVlMTkwYzE2MzA4ZWQzNDhmYmU3Li5lMjcwNTNmYTVkZmZhMmNmYzlmMWQ5MzRjZjNj
NzUyMDY1ZWQ1NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4
NCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIHRoaXNPYmplY3QtPmRlcmVmKCk7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBjbGFzcyBQZW5kaW5nQWN0aXZpdHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxQZW5kaW5nQWN0aXZpdHk8VD4+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4
cGxpY2l0IFBlbmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQorICAgICAgICAgICAgOiBtX3Ro
aXNPYmplY3QodGhpc09iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgKysobV90aGlzT2Jq
ZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIH5QZW5k
aW5nQWN0aXZpdHkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90aGlzT2JqZWN0
LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50ID4gMCk7CisgICAgICAgICAgICAtLShtX3RoaXNPYmpl
Y3QtPm1fcGVuZGluZ0FjdGl2aXR5Q291bnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBSZWY8VD4gbV90aGlzT2JqZWN0OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBUPiBSZWY8UGVuZGluZ0FjdGl2aXR5PFQ+PiBtYWtlUGVuZGluZ0FjdGl2aXR5KFQmIHRoaXNP
YmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQoJnRoaXNPYmplY3QgPT0gdGhpcyk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdBY3Rpdml0eTxUPih0aGlzT2JqZWN0KSk7
CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZlRE9NT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5BY3RpdmVET01PYmplY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKaW5kZXggZTI4YjBkMTc3ODc0YTc4YjkwZWFhYjU4
ZTlhYTU1YmU2ZmI5MDFmYS4uYzk4ZmZjMTA4NmMyN2Y1NzJjY2UxMjExZTk2NTA3ODY4YjM0MWQ3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKIAorI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgYXJyYXkgbmVl
ZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIEV4Y2VwdGlvbkNvZGUgZW51bWVyYXRpb24u
CkBAIC05OSw2ICsxMDEsMTIgQEAgUmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG5hbWUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24obGVnYWN5Q29kZUZyb21OYW1lKG5hbWUpLCBuYW1l
LCBtZXNzYWdlKSk7CiB9CiAKK1JlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRl
KGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQoreworICAgIGF1dG8mIGRlc2NyaXB0aW9uID0g
RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihleGNlcHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3Jp
cHRpb24ubmFtZSwgZXhjZXB0aW9uLm1lc3NhZ2UoKS5pc0VtcHR5KCkgPyBkZXNjcmlwdGlvbi5t
ZXNzYWdlIDogZXhjZXB0aW9uLm1lc3NhZ2UoKSkpOworfQorCiBET01FeGNlcHRpb246OkRPTUV4
Y2VwdGlvbihMZWdhY3lDb2RlIGxlZ2FjeUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgIDogbV9sZWdhY3lDb2RlKGxlZ2FjeUNvZGUpCiAgICAgLCBt
X25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uaAppbmRleCBjNTMzMmI5ODI5NTJm
MTJkYmI1N2UxMDAwZTY4ODMxZDA0NDg1Y2U3Li5kYWJlOTMwNzUzODZkZWI3NTM2MzlkNTAzMmVm
NjkwYmU0MTUxMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3Mg
RE9NRXhjZXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxET01FeGNlcHRpb24+IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25z
dCBTdHJpbmcqIG1lc3NhZ2UgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlv
bj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbiYpOwogCiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4K
ICAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
LmNwcAppbmRleCA2YjVkN2E1NzhiYWEwN2E5MTdkODhhNjgyMjEwY2Q2YTEzN2JmNjM5Li5lMzIy
ODJiOTc4MTY4OGEyOGQ2MjllZDgzMzRmMzk4YTU2YTY5ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDEzICsxMTEsNyBAQCBSZWZQdHI8RmlsZVN5c3RlbUVu
dHJ5PiBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0VudHJ5KCkgY29uc3QKICAgICBpZiAoIWZpbGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0pCi0gICAg
ICAgIG1fZmlsZVN5c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkpOwotCi0gICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gIi8iICsgZmlsZS0+bmFt
ZSgpOwotICAgIGlmIChmaWxlLT5pc0RpcmVjdG9yeSgpKQotICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKm1fZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpOwot
ICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKm1fZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpOworICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGVFbnRyeUZvckZpbGUo
KmZpbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uaAppbmRleCBiZWExY2YxZTRjMDc5ZjRmY2MwZTNlNmFhNTk0YTExMGYwMWI5
ZTYxLi43MTMzMDQzMWI5ZDRjOTMwN2RmMGQyMGQ4NzYxZWU4NGJlNmM0M2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTcyLDcgKzcyLDYgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiBtX2xpc3Q7CiAgICAgY29uc3QgU3RyaW5n
IG1fdHlwZTsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwotICAgIG11dGFibGUgUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaApp
bmRleCA1ZjhhOGQyZWNhYmQyZmVkODhjNDRlODk5NzAyODBjMzk0Zjc4OTAyLi4wOTdiOTE3NWY1
ZDVjOGQyZDc0NTg2OWI2ZGNiNTIwZGRjNzExZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBA
IC0zOSw2ICszOSwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgU3RyaW5nJiYgcmVsZWFzZU1lc3NhZ2UoKSB7
IHJldHVybiBXVEZNb3ZlKG1fbWVzc2FnZSk7IH0KIAorICAgIEV4Y2VwdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9t
ZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07CisgICAgfQorCiBwcml2YXRlOgogICAgIEV4Y2VwdGlv
bkNvZGUgbV9jb2RlOwogICAgIFN0cmluZyBtX21lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCmluZGV4IDk3OWQ0YTdjMDZhMTAxNjU0ZjYyNTMxNmFiMmNiMTA5MTQxZjBjMGEuLmZmOTU1
MjJkNzc0NTY0NzFlNGVkMWRhNzI1YzNjZmJkMzUzNTlhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b25Pci5oCkBAIC0yNyw2ICsyNyw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgwLDMgKzE4MSwx
NSBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgdmFsdWUpCiB9CiAKIH0KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6
RXhjZXB0aW9uT3I8VD4gPiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiBU
eXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHsKKyAg
ICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBjcm9z
c1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGNyb3NzVGhy
ZWFkQ29weShzb3VyY2UucmV0dXJuVmFsdWUoKSk7CisgICAgfQorfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCBiMTY0NWFhMzY4OTFjYWRlNWEyZWVmNmNk
MzExOWU4N2Q1YjdlYjM5Li4xOWJkNDRhZWExZGRkMTZkMTkyOWYyMmRhYTBkMTk4YmJiZjMyYTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIEZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsCiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3Jp
ZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgICAgICBtX3dvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENy
ZWF0b3IgV29yayBRdWV1ZSIpOwotICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0aHMgPSBDcm9zc1RocmVhZENvcGll
cjxWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4+Ojpjb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gZmlsZUxpc3QgPSBjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXM6Olllcz4ocGF0aHMpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0g
V1RGTW92ZShmaWxlTGlzdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBmYWU1YWUzODhiN2E5ODViNTBhNDQzNjM2ZjAx
NDI2MDE5ZmYwNjBhLi41OWUxMzNlZTZhM2UxODA1NzAwYWY4YTIwNDYyMTk4YjE0YjVlZTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xMDEsNiArMTAxLDcgQEAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVf
dCYgcmVzdWx0KTsgLy8gTm90IGEKIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYs
IEZpbGVNZXRhZGF0YSYpOwogYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOworU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29t
cG9uZW50cyk7CiBTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFz
aChjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRl
eCA1YmUzNmU5ZWRkZTExNDYwYmU5YTIzMGIxMzk0YzRiNjc0MzcyZWEzLi40M2IzMTQ3OWY3MDcy
NzI1ZjJhYzc5ZmI1NDZmZDI1MDFiNmEwOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTgwLDYgKzE4MSwxNSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0
dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKIH0KIAorU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgY29tcG9uZW50cykKK3sKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBv
bmVudHMpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoR19ESVJfU0VQQVJBVE9SX1MpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChjb21wb25lbnQpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxl
bmFtZShwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCmluZGV4IDA1MzE5MzBiMzkwOTM4ZWYyZTBhYzMzNGUxMWZmODY5MDhjYzg2
N2QuLmVhMTc2ZGQwNGVkM2UwMDIwNThiOGU2MDI4NDYzZWExYzI4MDM1OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTI3MCw2ICsyNzEsMTcgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJl
dHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwogfQogCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb21w
b25lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChwYXRoKTsKKyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJy8nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50
KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwogYm9vbCBtYWtl
QWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnVsbFBh
dGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMjU4ZjE5YzgxYmY5NzEwNWVkNDFl
ZGU0NTk0MDU5MmIxNDg2YTdkMi4uODc4MmQ3MDBkZWI2Njg1MTFkNzM1ZDMwYzI4ODYwYTA2NWZj
ZDA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0yMDEsNiArMjAyLDE0IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkK
ICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCitTdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBjb21wb25lbnRzKQoreworICAgIFN0cmluZyByZXN1bHQgPSBwYXRoOworICAg
IGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKKyAgICAgICAgcmVzdWx0ID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiAjaWYgIVVTRShDRikKIAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMzk0NDUxOGM0MWU0ZjhjYTAxNjQzM2Fj
ZmVkNGMxNGZhYWExMTQuLjgwN2VlYjljM2Y1Mjc3NmRmZjhjMzE5ZDQ5MWVhMGU0NmFiODdkY2Mg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wOC0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LnJlYWRFbnRyaWVzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NjA5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxNjgwMTU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3Qg
Y292ZXJhZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2VkaXRpbmcuanM6CisgICAgICAgIChtb3Zl
TW91c2VUb0NlbnRlck9mRWxlbWVudCk6CisgICAgICAgIChkcmFnRmlsZXNPbnRvRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRp
cmVjdG9yeVJlYWRlci1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXJy
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlS
ZWFkZXItcm9vdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZGlyZWN0b3J5UmVhZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDgtMzAgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhbGwgb2YgIlJlZ2lz
dGVyIiByaWdodCB1cCB1bnRpbCB3aGVyZSB0aGUgc2NyaXB0IGlzIGZldGNoZWQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2VkaXRpbmcuanMKaW5kZXggZWMzMjIxZDNkNzVmZTgzNzM2MWNkMjU3OTQ3YTY4ZDMzYjhjMjc4
Ni4uMjZkNTZhOWM3YzQyNTE3NDJiZjliODliZjAxNjFiY2VmOWFiYTk4NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
ZWRpdGluZy5qcwpAQCAtMzk5LDYgKzM5OSwyNiBAQCBmdW5jdGlvbiBtb3ZlU2VsZWN0aW9uQmFj
a3dhcmRCeUxpbmVCb3VuZGFyeUNvbW1hbmQoKSB7CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9m
RWxlbWVudChlbGVtZW50KSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbnN0IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICBjb25zdCBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRU
b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09udG9FbGVtZW50
KGVsZW1lbnQsIGZpbGVzKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhmaWxlcyk7Cisg
ICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKwogZnVuY3Rpb24gZG91YmxlQ2xpY2soeCwgeSkgewogICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWVy
cm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzdkOGM1YmFmOGZiZjE3MTMzOGM0MWI4ZWI3
ODk3MjA5ZjE5ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1lcnJvci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorRXJyb3IgY2FzZSBjb3ZlcmFnZSBmb3IgZmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBleC5u
YW1lIGlzICJJbnZhbGlkU3RhdGVFcnJvciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWVycm9yLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZGlyZWN0b3J5UmVhZGVyLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JkYzViNjRjYTg5NTgz
YTZiNTcyY2I1ZDI2OTQzOGM0N2M2NzJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFk
ZXItZXJyb3IuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsg
YmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJF
cnJvciBjYXNlIGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRy
aWVzKCkiKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgZHJvcHpvbmUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9u
KGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRh
VHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCIsICIx
Iik7CisKKyAgICBkaXJFbnRyeSA9IGRhdGFUcmFuc2Zlci5pdGVtc1swXS53ZWJraXRHZXRBc0Vu
dHJ5KCk7CisgICAgbGV0IHJlYWRlciA9IGRpckVudHJ5LmNyZWF0ZVJlYWRlcigpOworICAgIHJl
YWRlci5yZWFkRW50cmllcyhmdW5jdGlvbigpIHt9KTsKKyAgICByZWFkZXIucmVhZEVudHJpZXMo
ZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICB0ZXN0RmFpbGVkKCJDYWxsaW5nIHJlYWRFbnRy
aWVzIG9uIGEgcmVhZGVyIHdpdGggdGhlIHJlYWRpbmcgZmxhZyBzZXQgZGlkIG5vdCB0aHJvdyBh
biBleGNlcHRpb24iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgZnVuY3Rpb24o
ZSkgeworICAgICAgICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgu
bmFtZSIsICJJbnZhbGlkU3RhdGVFcnJvciIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKQorICAg
IH0pOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9uKGV2KSB7CisgICAgZXYu
cHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgZHJhZ0Zp
bGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jtcy9maWxlL3Jlc291cmNl
cy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzllYTZhYTNhMjJlYTgxMjc0YjQ4NDMzMTBkNjg0NGQxNDFhYzNlZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NDEgQEAKK0Jhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
cmVhZEVudHJpZXMoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkYXRh
VHJhbnNmZXIuaXRlbXMubGVuZ3RoIGlzIDEKK1BBU1MgZW50cnkuaXNEaXJlY3RvcnkgaXMgdHJ1
ZQorUEFTUyBlbnRyeS5uYW1lIGlzICJ0ZXN0RmlsZXMiCitQQVNTIGVudHJ5LmZ1bGxQYXRoIGlz
ICIvdGVzdEZpbGVzIgorUEFTUyBjaGlsZEVudHJpZXMubGVuZ3RoIGlzIDQKK1BBU1MgY2hpbGRF
bnRyaWVzWzBdLm5hbWUgaXMgImZpbGUxLnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzBdLmZ1bGxQ
YXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIKK1BBU1MgY2hpbGRFbnRyaWVzWzBdLmlzRmls
ZSBpcyB0cnVlCitQQVNTIGNoaWxkRW50cmllc1sxXS5uYW1lIGlzICJmaWxlMi50eHQiCitQQVNT
IGNoaWxkRW50cmllc1sxXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9maWxlMi50eHQiCitQQVNT
IGNoaWxkRW50cmllc1sxXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBjaGlsZEVudHJpZXNbMl0ubmFt
ZSBpcyAic3ViZm9sZGVyMSIKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLmZ1bGxQYXRoIGlzICIvdGVz
dEZpbGVzL3N1YmZvbGRlcjEiCitQQVNTIGNoaWxkRW50cmllc1syXS5pc0RpcmVjdG9yeSBpcyB0
cnVlCitQQVNTIGNoaWxkRW50cmllc1szXS5uYW1lIGlzICJzdWJmb2xkZXIyIgorUEFTUyBjaGls
ZEVudHJpZXNbM10uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMiIKK1BBU1MgY2hp
bGRFbnRyaWVzWzNdLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMF0ubmFtZSBpcyAiZmlsZTMudHh0
IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJm
b2xkZXIxL2ZpbGUzLnR4dCIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMF0uaXNGaWxlIGlzIHRy
dWUKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIGlzIDIKK1BBU1MgZ3JhbmRDaGlsZEVu
dHJpZXNbMF0ubmFtZSBpcyAiZmlsZTQudHh0IgorUEFTUyBncmFuZENoaWxkRW50cmllc1swXS5m
dWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyL2ZpbGU0LnR4dCIKK1BBU1MgZ3JhbmRD
aGlsZEVudHJpZXNbMF0uaXNGaWxlIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMV0u
bmFtZSBpcyAic3ViZm9sZGVyMmEiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRo
IGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEiCitQQVNTIGdyYW5kQ2hpbGRF
bnRyaWVzWzFdLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZ3JlYXRHcmFuZENoaWxkRW50cmll
cy5sZW5ndGggaXMgMQorUEFTUyBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUgaXMgImZp
bGU1LnR4dCIKK1BBU1MgZ3JlYXRHcmFuZENoaWxkRW50cmllc1swXS5mdWxsUGF0aCBpcyAiL3Rl
c3RGaWxlcy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhL2ZpbGU1LnR4dCIKK1BBU1MgZ3JlYXRHcmFu
ZENoaWxkRW50cmllc1swXS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9v
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQxMzAwNWZkZDk1NWI0MzAyYzcxZThmMDA2OGE0MzEzZTgyYTQ3MWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAK
K0Jhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVu
dHJpZXMoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkYXRhVHJhbnNm
ZXIuaXRlbXMubGVuZ3RoIGlzIDIKK1BBU1MgZW50cnkxLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVu
dHJ5MS5uYW1lIGlzICJ0ZXN0LnR4dCIKK1BBU1MgZW50cnkxLmZ1bGxQYXRoIGlzICIvdGVzdC50
eHQiCitQQVNTIGVudHJ5Rm91bmQuaXNGaWxlIGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1l
IGlzICJ0ZXN0LnR4dCIKK1BBU1MgZW50cnlGb3VuZC5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0Igor
UEFTUyBlbnRyeTIuaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBlbnRyeTIubmFtZSBpcyAidGVz
dEZpbGVzIgorUEFTUyBlbnRyeTIuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIGVudHJ5
Rm91bmQuaXNEaXJlY3RvcnkgaXMgdHJ1ZQorUEFTUyBlbnRyeUZvdW5kLm5hbWUgaXMgInRlc3RG
aWxlcyIKK1BBU1MgZW50cnlGb3VuZC5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGly
ZWN0b3J5UmVhZGVyLXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQzNmFkODNhZTFiOTEwZWIxMjkwN2ZhMGM3NTI5YzBhN2VkZWJkYzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApAQCAtMCwwICsxLDg4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkiKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5j
dGlvbiBnZXRFbnRyaWVzQXNQcm9taXNlKGRpckVudHJ5KSB7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IFtdOworICAg
ICAgICBsZXQgcmVhZGVyID0gZGlyRW50cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIGxldCBk
b0JhdGNoID0gKCkgPT4geworICAgICAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMg
PT4geworICAgICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
ICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHJlc3VsdC5wdXNoKGUpKTsKKyAgICAgICAgICAgICAg
ICBkb0JhdGNoKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc29s
dmUocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgcmVqZWN0KTsKKyAgICB9Owor
ICAgIGRvQmF0Y2goKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIGZpbmRFbnRyeUJ5TmFtZShlbnRy
aWVzLCBuYW1lKQoreworICAgIGZvciAobGV0IGNoaWxkRW50cnkgb2YgZW50cmllcykgeworICAg
ICAgICBpZiAoY2hpbGRFbnRyeS5uYW1lID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gY2hp
bGRFbnRyeQorICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK30KKwordmFyIGRyb3B6b25lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRyb3AgPSBmdW5j
dGlvbihlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFuc2ZlciA9IGUu
ZGF0YVRyYW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGgi
LCAiMiIpOworCisgICAgZW50cnkxID0gZGF0YVRyYW5zZmVyLml0ZW1zWzBdLndlYmtpdEdldEFz
RW50cnkoKTsKKyAgICBlbnRyeTIgPSBkYXRhVHJhbnNmZXIuaXRlbXNbMV0ud2Via2l0R2V0QXNF
bnRyeSgpOworCisgICAgc2hvdWxkQmVUcnVlKCJlbnRyeTEuaXNGaWxlIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJlbnRyeTEubmFtZSIsICJ0ZXN0LnR4dCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZW50cnkxLmZ1bGxQYXRoIiwgIi90ZXN0LnR4dCIpOworICAgIGdldEVu
dHJpZXNBc1Byb21pc2UoZW50cnkxLmZpbGVzeXN0ZW0ucm9vdCkudGhlbihmdW5jdGlvbihlbnRy
aWVzKSB7CisgICAgICAgIGVudHJ5Rm91bmQgPSBmaW5kRW50cnlCeU5hbWUoZW50cmllcywgInRl
c3QudHh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZW50cnlGb3VuZC5pc0ZpbGUiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5kLm5hbWUiLCAidGVzdC50eHQi
KTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5kLmZ1bGxQYXRoIiwg
Ii90ZXN0LnR4dCIpOworCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZW50cnkyLmlzRGlyZWN0b3J5
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkyLm5hbWUiLCAidGVzdEZp
bGVzIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnkyLmZ1bGxQYXRoIiwg
Ii90ZXN0RmlsZXMiKTsKKyAgICAgICAgZ2V0RW50cmllc0FzUHJvbWlzZShlbnRyeTIuZmlsZXN5
c3RlbS5yb290KS50aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgICAgIGVudHJ5Rm91
bmQgPSBmaW5kRW50cnlCeU5hbWUoZW50cmllcywgInRlc3RGaWxlcyIpOworICAgICAgICAgICAg
c2hvdWxkQmVUcnVlKCJlbnRyeUZvdW5kLmlzRGlyZWN0b3J5Iik7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5mdWxsUGF0aCIsICIvdGVz
dEZpbGVzIik7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCBmdW5j
dGlvbihlKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmllcyBmYWlsZWQ6ICIg
KyBlKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9LCBm
dW5jdGlvbihlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDogIiAr
IGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKK307CisKK2Ryb3B6b25lLm9u
ZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnByZXZlbnREZWZhdWx0KCk7Cit9CisK
K29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxlc09udG9FbGVtZW50KGRyb3B6b25l
LCBbJy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3Rlc3QudHh0JywgJy4uLy4uL2Zhc3QvZm9y
bXMvZmlsZS9yZXNvdXJjZXMvdGVzdEZpbGVzJ10pOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjZlOGJjOWU1ZjJiMzBhNTIzNzY0NWM1NTJjODc2ZWQ0OTE4ODEwYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXIuaHRtbApAQCAtMCwwICsxLDExNSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0
aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworZnVuY3Rpb24gZ2V0RW50cmllc0FzUHJvbWlzZShkaXJFbnRyeSkgeworICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCByZXN1bHQgPSBb
XTsKKyAgICAgICAgbGV0IHJlYWRlciA9IGRpckVudHJ5LmNyZWF0ZVJlYWRlcigpOworICAgICAg
ICBsZXQgZG9CYXRjaCA9ICgpID0+IHsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRW50cmllcyhl
bnRyaWVzID0+IHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDApIHsKKyAgICAg
ICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZSA9PiByZXN1bHQucHVzaChlKSk7CisgICAgICAg
ICAgICAgICAgZG9CYXRjaCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHJlamVjdCk7Cisg
ICAgfTsKKyAgICBkb0JhdGNoKCk7CisgIH0pOworfQorCit2YXIgZHJvcHpvbmUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9u
KGUpIHsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRh
VHJhbnNmZXI7CisKKyAgICBzaG91bGRCZSgiZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCIsICIx
Iik7CisKKyAgICBlbnRyeSA9IGRhdGFUcmFuc2Zlci5pdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5
KCk7CisgICAgc2hvdWxkQmVUcnVlKCJlbnRyeS5pc0RpcmVjdG9yeSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZW50cnkubmFtZSIsICJ0ZXN0RmlsZXMiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMiKTsKKworICAgIGdldEVu
dHJpZXNBc1Byb21pc2UoZW50cnkpLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICBj
aGlsZEVudHJpZXMgPSBlbnRyaWVzOworICAgICAgICBzaG91bGRCZSgiY2hpbGRFbnRyaWVzLmxl
bmd0aCIsICI0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVz
WzBdLm5hbWUiLCAiZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Y2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEudHh0Iik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiY2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzFdLm5hbWUiLCAiZmlsZTIudHh0Iik7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRyaWVzWzFdLmZ1bGxQYXRo
IiwgIi90ZXN0RmlsZXMvZmlsZTIudHh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2hpbGRF
bnRyaWVzWzFdLmlzRmlsZSIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hp
bGRFbnRyaWVzWzJdLm5hbWUiLCAic3ViZm9sZGVyMSIpOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImNoaWxkRW50cmllc1syXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRl
cjEiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJjaGlsZEVudHJpZXNbMl0uaXNEaXJlY3Rvcnki
KTsKKworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1szXS5uYW1l
IiwgInN1YmZvbGRlcjIiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVu
dHJpZXNbM10uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyIik7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiY2hpbGRFbnRyaWVzWzNdLmlzRGlyZWN0b3J5Iik7CisKKyAgICAgICAgZ2V0
RW50cmllc0FzUHJvbWlzZShjaGlsZEVudHJpZXNbMl0pLnRoZW4oZnVuY3Rpb24oZW50cmllcykg
eworICAgICAgICAgICAgZ3JhbmRDaGlsZEVudHJpZXMgPSBlbnRyaWVzOworICAgICAgICAgICAg
c2hvdWxkQmUoImdyYW5kQ2hpbGRFbnRyaWVzLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUiLCAiZmlsZTMu
dHh0Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRy
aWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ3JhbmRDaGlsZEVudHJpZXNbMF0uaXNGaWxlIik7CisK
KyAgICAgICAgICAgIGdldEVudHJpZXNBc1Byb21pc2UoY2hpbGRFbnRyaWVzWzNdKS50aGVuKGZ1
bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICBncmFuZENoaWxkRW50cmllcyA9IGVu
dHJpZXM7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImdyYW5kQ2hpbGRFbnRyaWVzLmxlbmd0
aCIsICIyIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENo
aWxkRW50cmllc1swXS5uYW1lIiwgImZpbGU0LnR4dCIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RG
aWxlcy9zdWJmb2xkZXIyL2ZpbGU0LnR4dCIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ3JhbmRDaGlsZEVudHJpZXNbMF0uaXNGaWxlIik7CisKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzFdLm5hbWUiLCAic3ViZm9sZGVy
MmEiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRF
bnRyaWVzWzFdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYSIp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ3JhbmRDaGlsZEVudHJpZXNbMV0uaXNE
aXJlY3RvcnkiKTsKKworICAgICAgICAgICAgICAgIGdldEVudHJpZXNBc1Byb21pc2UoZ3JhbmRD
aGlsZEVudHJpZXNbMV0pLnRoZW4oZnVuY3Rpb24oZW50cmllcykgeworICAgICAgICAgICAgICAg
ICAgICBncmVhdEdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImdyZWF0R3JhbmRDaGlsZEVudHJpZXMubGVuZ3RoIiwgIjEiKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmVhdEdyYW5kQ2hpbGRFbnRy
aWVzWzBdLm5hbWUiLCAiZmlsZTUudHh0Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZ3JlYXRHcmFuZENoaWxkRW50cmllc1swXS5mdWxsUGF0aCIsICIvdGVz
dEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEvZmlsZTUudHh0Iik7CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiZ3JlYXRHcmFuZENoaWxkRW50cmllc1swXS5pc0ZpbGUiKTsK
KworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9
LCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRy
aWVzIGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmllcyBmYWlsZWQ6ICIgKyBlKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCBm
dW5jdGlvbihlKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmllcyBmYWlsZWQ6
ICIgKyBlKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9
LCBmdW5jdGlvbihlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoInJlYWRFbnRyaWVzIGZhaWxlZDog
IiArIGUpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKK307CisKK2Ryb3B6b25l
Lm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnByZXZlbnREZWZhdWx0KCk7Cit9
CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxlc09udG9FbGVtZW50KGRyb3B6
b25lLCBbJy4uLy4uL2Zhc3QvZm9ybXMvZmlsZS9yZXNvdXJjZXMvdGVzdEZpbGVzJ10pOworfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dEFzRW50cnkuaHRtbAppbmRleCBjMGI4MzU2Mjc0YTc1NGViODQ3MGUxNzE4OGRjNmVjYTM0Njll
NGJkLi40MDI0ODkyMWNhYmRlZjQ2ZGM3OWZlZjg3YWZiYWU4Mzk4ZGQxNmE1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3At
Z2V0QXNFbnRyeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKQEAgLTIsNiArMiw3IEBACiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgogPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KQEAgLTksMjEgKzEwLDYgQEAKIGRl
c2NyaXB0aW9uKCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBkYXRhVHJhbnNmZXJJdGVtLndlYmtp
dEdldEFzRW50cnkoKSIpOwoganNUZXN0SXNBc3luYyA9IHRydWU7CiAKLWZ1bmN0aW9uIG1vdmVN
b3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpIHsKLSAgICB2YXIgY2VudGVyWCA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgIHZhciBjZW50ZXJZ
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7Ci0gICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Ci19Ci0KLWZ1bmN0aW9uIGRy
YWdGaWxlc09udG9FbGVtZW50KGVsZW1lbnQsIGZpbGVzKSB7Ci0gICAgaWYgKCF3aW5kb3cuZXZl
bnRTZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dp
dGhGaWxlcyhmaWxlcyk7Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQotCiB2YXIgZHJvcHpvbmUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZHJvcHpvbmUnKTsKIGRyb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9u
KGUpIHsKICAgICBlLnByZXZlbnREZWZhdWx0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGY4NGZhODFlMTUxZjViNzA5Nzg3MDIxMzQ1MjU3MTVkZTQ4
MDA4NmYuLjhhMmEyYTE3ZGRlYTM4MDY1ZmU3MjM5NTQ1YWFkMWQzZmRkMTk4ZWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01NjMsNiArNTYzLDkgQEAg
cGxhdGZvcm0vbWFjL2Zhc3QvZXZlbnRzL29iamMtZXZlbnQtYXBpLmh0bWwKIAogIyBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2ZW50U2VuZGVyLmJlZ2luRHJh
Z1dpdGhGaWxlcwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQy
ODUKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlS
ZWFkZXIuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRp
cmVjdG9yeVJlYWRlci1lcnJvci5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLmh0bWwKIGVkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319433</attachid>
            <date>2017-08-30 19:18:43 -0700</date>
            <delta_ts>2017-08-30 20:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176091-20170830191842.patch</filename>
            <type>text/plain</type>
            <size>54423</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVhZTlkNGZjMzFkZmI0ZDhkZjc5YWE5
MmRmZjA2MzRmOTNjMGZmY2UuLjA5ZTE3NGE3MDliZWJkYmZjOWRhNTkwNTcxYWUyYWE2YWE4Zjli
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5yZWFkRW50cmllcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTY4MDE1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaDoKKyAgICAgICAgKFdURjo6Y3Jvc3NUaHJlYWRDb3B5KToKKyAgICAgICAgKiB3
dGYvQ3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIE1vdmUgY3Jvc3NUaHJlYWRDb3B5KCkgZnJv
bSBDcm9zc1RocmVhZFRhc2suaCB0byBDcm9zc1RocmVhZENvcGllci5oIGFuZAorICAgICAgICBh
ZGQgInVzaW5nIFdURjo6Y3Jvc3NUaHJlYWRDb3B5IiBzdGF0ZW1lbnQgdG8gbWFrZSBpdCBtb3Jl
IGVhc2lseSB1c2FibGUKKyAgICAgICAgZnJvbSBXZWJDb3JlLgorCiAyMDE3LTA4LTIyICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5ncyBuZWVkIHRvIGJl
IGluIHNvbWUga2luZCBvZiBnaWdhY2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhlOTRjYTI0YjU2MmFjZmM0
MDBkOTI4ZmQ5MjU2NGJjZjBhOWZjNmEuLmIzZGNiNjRjZjk0ZWQ3YzU4MTlhNDc0YzZhOGUwYTVl
ZGM1ZGNmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMTctMDgtMzAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmllcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0
MTY4MDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3Rv
cnlSZWFkZXItZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwKKyAgICAgICAg
ICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3Rv
cnlSZWFkZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlzdGVkQ2hpbGQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvRmlsZVN5c3RlbUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmZpbGVBc0VudHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmV2YWx1YXRlUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBN
b2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RmlsZVN5c3RlbTo6Y3JlYXRlRW50cnlGb3JGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGw6CisgICAgICAgIC0gSW1wbGVtZW50IGRpcmVjdG9yeSBs
aXN0aW5nIG9wZXJhdGlvbiBmb3Igc3VwcG9ydGluZworICAgICAgICAgIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKCkuCisgICAgICAgIC0gSW1wbGVtZW50IGV2YWx1YXRl
UGF0aCgpIG9wZXJhdGlvbiBhcyBwZXI6CisgICAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHVi
LmlvL2VudHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKKyAgICAgICAgLSBET01GaWxlU3lzdGVt
IHNob3VsZCBubyBsb25nZXIgaG9sZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8KKyAgICAgICAgICB0
aGUgcm9vdCBlbnRyeSBhbmQgRmlsZVN5c3RlbUVudHJ5IG5vdyBob2xkcyBhIHN0cm9uZworICAg
ICAgICAgIHJlZmVyZW5jZSB0byB0aGUgRE9NRmlsZVN5c3RlbSBhbmQgdGhpcyB3b3VsZCBjcmVh
dGUgYQorICAgICAgICAgIGN5Y2xlLgorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcik6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaWRsOgorICAgICAgICBIYXZlIGNyZWF0ZVJl
YWRlcigpIHRha2UgYSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCB3aGljaCBpcyBuZWVkZWQKKyAg
ICAgICAgdG8gY29uc3RydWN0IGEgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciwgbm93IHRoYXQg
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcgorICAgICAgICBpcyBhbiBBY3RpdmVET01PYmplY3Qu
CisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
OjpyZWFkRW50cmllcyk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5pZGw6CisgICAgICAgIFByb3ZpZGUgaW1wbGVtZW50YXRpb24gZm9y
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKSBhcyBwZXI6CisgICAgICAg
IC0gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1kaXJl
Y3RvcnlyZWFkZXItcmVhZGVudHJpZXMKKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgZGlyZWN0b3J5
IGxpc3Rpbmcgb3BlcmF0aW9uLCB3ZSBhc2sgdGhlIERPTUZpbGVTeXN0ZW0sIHdoaWNoIGlzCisg
ICAgICAgIHdoZXJlIGFsbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgc2hvdWxkIGxpdmUuCisgICAg
ICAgIEFsc28gbWFkZSB0aGUgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlciBhbiBBY3RpdmVET01P
YmplY3QgdG8ga2VlcCBpdCBhbmQgaXRzCisgICAgICAgIHdyYXBwZXIgYWxpdmUgd2hpbGUgYSBm
aWxlIHN5c3RlbSBvcGVyYXRpb24gaXMgcGVuZGluZy4KKworICAgICAgICAqIE1vZHVsZXMvZW50
cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3Rl
bUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1F
bnRyeTo6ZmlsZXN5c3RlbSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1FbnRyeS5oOgorICAgICAgICBNYWtlIEZpbGVTeXN0ZW1FbnRyeSBrZWVwIGEgc3Ry
b25nIHJlZmVyZW5jZSB0byBpdHMgRE9NRmlsZVN5c3RlbSBvYmplY3QuCisgICAgICAgIFByZXZp
b3VzbHksIHRoZSBET01GaWxlU3lzdGVtIHdhcyBrZXB0IGFsaXZlIGJ5IHRoZSBEYXRhVHJhbnNm
ZXJJdGVtIGJ1dAorICAgICAgICB0aGlzIHdhcyB1bnNhZmUgYmVjYXVzZSBGaWxlU3lzdGVtRW50
cnkgbWF5IG91dGxpdmUgdGhlIERhdGFUcmFuc2Zlckl0ZW0uCisKKyAgICAgICAgKiBkb20vQWN0
aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OlBlbmRp
bmdBY3Rpdml0eTo6UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5Ojp+UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIEFk
ZCBQZW5kaW5nQWN0aXZpdHkgLyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgYXMgYSBsZXNzIGVycm9y
LXByb25lCisgICAgICAgIHJlcGxhY2VtZW50IGZvciBzZXRQZW5kaW5nQWN0aXZpdHkoKSAvIHVu
c2V0UGVuZGluZ0FjdGl2aXR5KCkuCisKKyAgICAgICAgKiBkb20vRE9NRXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
RE9NRXhjZXB0aW9uLmg6CisgICAgICAgIEFkZCBmYWN0b3J5IHRvIGNvbnN0cnVjdCBhIERPTUV4
Y2VwdGlvbiBmcm9tIGFuIEV4Y2VwdGlvbi4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJ
dGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW06OmdldEFzRW50cnkg
Y29uc3QpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb246Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgIE1ha2UgRXhj
ZXB0aW9uT3I8PiAvIEV4Y2VwdGlvbiB3b3JrIHdpdGggQ3Jvc3NUaHJlYWRDb3BpZXIgZm9yIGNv
bnZlbmllbmNlLgorCisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAgICAgICBV
c2UgY3Jvc3NUaHJlYWRDb3B5KCkgaW5zdGVhZCBvZiBsb25nZXIgZm9ybS4KKworICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKToKKyAgICAgICAgQWRkIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoKSB1
dGlsaXR5IGZ1bmN0aW9uLCB3aGljaCBpcyBzaW1pbGFyIHRvCisgICAgICAgIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgpIGJ1dCBzdXBwb3J0cyBhcHBlbmRpbmcgbXVsdGlwbGUgY29tcG9uZW50
cworICAgICAgICBpbiBhbiBlZmZpY2llbnQgZmFzaGlvbi4KKwogMjAxNy0wOC0zMCAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQ3Jhc2ggaW4g
TWF0aE1MIGxheW91dCB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggODNm
N2I0YjE4MTM0ZjBmMDk2YmY3YWQ4NjU5NWU4NGYyMzNkY2FjMy4uYWFlYjU1NDUwNTU1Zjc1MWYz
ZjhiMGZkZjU3OTYwMTQwODVhZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC0xMzksOSArMTM5LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBIYXNoU2V0PFQ+ID4gewogICAgICAgICByZXR1cm4g
ZGVzdGluYXRpb247CiAgICAgfQogfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjcm9zc1Ro
cmVhZENvcHkoY29uc3QgVCYgc291cmNlKQoreworICAgIHJldHVybiBDcm9zc1RocmVhZENvcGll
cjxUPjo6Y29weShzb3VyY2UpOworfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5n
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlSGVscGVyOwogdXNpbmcgV1RGOjpDcm9zc1RocmVh
ZENvcGllckJhc2U7CiB1c2luZyBXVEY6OkNyb3NzVGhyZWFkQ29waWVyOwordXNpbmcgV1RGOjpj
cm9zc1RocmVhZENvcHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRh
c2suaCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IDBhNjZlYzE3Zjdh
ZDRhOTU5ODQzY2VjYzU0N2Y5Y2NiMDMwMWUzNDUuLjU3YjcxNzkzNGVmZDI0MGQ5YWI4MjExOWQ5
M2Q2YTYyN2Y1NmQ4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFz
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC01MCwxMiArNTAs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgRnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CiB9
OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgY3Jvc3NUaHJlYWRDb3B5KGNvbnN0IFQmIHQp
Ci17Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkQ29waWVyPFQ+Ojpjb3B5KHQpOwotfQotCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCBzaXplX3QuLi4gQXJnc0luZGV4
Pgogdm9pZCBjYWxsRnVuY3Rpb25Gb3JDcm9zc1RocmVhZFRhc2tJbXBsKEYgZnVuY3Rpb24sIEFy
Z3NUdXBsZSYmIGFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0luZGV4Li4uPikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNw
cAppbmRleCBhODM5YTUyODUwZjkwZDhmM2I2OWM0MzNmZDg5Y2ZjNzI5ODBiOTI1Li45ZTllYzVk
MWMzODZkZTQxYWRlNTRhNzU0MDgwNzE2ZThjOThhZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0yNiwxOCArMjYs
MTMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6
IG1fbmFtZShuYW1lKQotICAgICwgbV9yb290KEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlKCp0aGlzLCBBU0NJSUxpdGVyYWwoIi8iKSkpCitzdHJ1Y3QgTGlzdGVkQ2hpbGQgeworICAg
IFN0cmluZyBmaWxlbmFtZTsKKyAgICBGaWxlTWV0YWRhdGE6OlR5cGUgdHlwZTsKKworICAgIExp
c3RlZENoaWxkIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCksIHR5cGUgfTsgfQorfTsKKworc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0
ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWZpbGVJc0RpcmVj
dG9yeShmdWxsUGF0aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9y
LCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsK
KworICAgIGF1dG8gY2hpbGRQYXRocyA9IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7Cisg
ICAgVmVjdG9yPExpc3RlZENoaWxkPiBsaXN0ZWRDaGlsZHJlbjsKKyAgICBsaXN0ZWRDaGlsZHJl
bi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNoaWxkUGF0aHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1
dG8mIGNoaWxkUGF0aCA6IGNoaWxkUGF0aHMpIHsKKyAgICAgICAgRmlsZU1ldGFkYXRhIG1ldGFk
YXRhOworICAgICAgICBpZiAoIWdldEZpbGVNZXRhZGF0YShjaGlsZFBhdGgsIG1ldGFkYXRhKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsaXN0ZWRDaGlsZHJlbi51bmNoZWNrZWRB
cHBlbmQoTGlzdGVkQ2hpbGQgeyBwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKSwgbWV0YWRhdGEu
dHlwZSB9KTsKKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUobGlzdGVkQ2hpbGRyZW4pOworfQor
CitzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxl
U3lzdGVtRW50cmllcyhET01GaWxlU3lzdGVtJiBmaWxlU3lzdGVtLCBFeGNlcHRpb25PcjxWZWN0
b3I8TGlzdGVkQ2hpbGQ+PiYmIGxpc3RlZENoaWxkcmVuLCBjb25zdCBTdHJpbmcmIHBhcmVudFZp
cnR1YWxQYXRoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGxpc3Rl
ZENoaWxkcmVuLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbGlzdGVkQ2hpbGRyZW4u
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBl
bnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXN0ZWRDaGlsZHJl
bi5yZXR1cm5WYWx1ZSgpLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGxpc3RlZENo
aWxkcmVuLnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gcGFy
ZW50VmlydHVhbFBhdGggKyAiLyIgKyBjaGlsZC5maWxlbmFtZTsKKyAgICAgICAgc3dpdGNoIChj
aGlsZC50eXBlKSB7CisgICAgICAgIGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlRmlsZToKKyAgICAg
ICAgICAgIGVudHJpZXMudW5jaGVja2VkQXBwZW5kKEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0
ZShmaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5OgorICAgICAgICAgICAgZW50cmllcy51
bmNoZWNrZWRBcHBlbmQoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoZmlsZVN5c3Rl
bSwgdmlydHVhbFBhdGgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUo
ZW50cmllcyk7Cit9CisKK0RPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYg
ZmlsZSkKKyAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCisgICAgLCBt
X2ZpbGUoV1RGTW92ZShmaWxlKSkKKyAgICAsIG1fcm9vdFBhdGgoZGlyZWN0b3J5TmFtZShtX2Zp
bGUtPnBhdGgoKSkpCisgICAgLCBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiRE9NRmls
ZVN5c3RlbSB3b3JrIHF1ZXVlIikpCit7CisgICAgQVNTRVJUKCFtX3Jvb3RQYXRoLmVuZHNXaXRo
KCcvJykpOwogfQogCiBET01GaWxlU3lzdGVtOjp+RE9NRmlsZVN5c3RlbSgpCiB7CiB9CiAKK1Jl
ZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoKQoreworICAg
IHJldHVybiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZSgqdGhpcywgQVNDSUlMaXRl
cmFsKCIvIikpOworfQorCitSZWY8RmlsZVN5c3RlbUVudHJ5PiBET01GaWxlU3lzdGVtOjpmaWxl
QXNFbnRyeSgpCit7CisgICAgaWYgKG1fZmlsZS0+aXNEaXJlY3RvcnkoKSkKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKCp0aGlzLCAiLyIgKyBtX2ZpbGUt
Pm5hbWUoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW1GaWxlRW50cnk6OmNyZWF0ZSgqdGhpcywg
Ii8iICsgbV9maWxlLT5uYW1lKCkpOworfQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Vu
dHJpZXMtYXBpLyNldmFsdWF0ZS1hLXBhdGgKK1N0cmluZyBET01GaWxlU3lzdGVtOjpldmFsdWF0
ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKK3sKKyAgICBBU1NFUlQodmlydHVhbFBh
dGhbMF0gPT0gJy8nKTsKKyAgICBhdXRvIGNvbXBvbmVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgn
LycpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVzb2x2ZWRDb21wb25lbnRzOworICAgIHJlc29s
dmVkQ29tcG9uZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbXBvbmVudHMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpIHsKKyAgICAgICAgaWYgKGNv
bXBvbmVudCA9PSAiLiIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBv
bmVudCA9PSAiLi4iKSB7CisgICAgICAgICAgICBpZiAoIXJlc29sdmVkQ29tcG9uZW50cy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21wb25lbnRzLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlc29sdmVkQ29tcG9u
ZW50cy51bmNoZWNrZWRBcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOwor
fQorCit2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5JiBkaXJlY3RvcnksIERpcmVjdG9yeUxpc3RpbmdDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsK
KworICAgIFN0cmluZyBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGRpcmVjdG9yeS52aXJ0dWFsUGF0
aCgpOworICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBh
dGgpOworICAgIGlmIChmdWxsUGF0aCA9PSBtX3Jvb3RQYXRoKSB7CisgICAgICAgIFZlY3RvcjxS
ZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hpbGRyZW47CisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChm
aWxlQXNFbnRyeSgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjaGlsZHJl
bikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBm
dWxsUGF0aCA9IGZ1bGxQYXRoLmlzb2xhdGVkQ29weSgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9
IGRpcmVjdG9yeVZpcnR1YWxQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIGxpc3RlZENoaWxkcmVuID0gbGlzdERpcmVjdG9yeVdpdGhNZXRhZGF0YShmdWxsUGF0
aCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGxpc3RlZENoaWxkcmVuID0gY3Jvc3NUaHJlYWRD
b3B5KGxpc3RlZENoaWxkcmVuKSwgZGlyZWN0b3J5VmlydHVhbFBhdGggPSBkaXJlY3RvcnlWaXJ0
dWFsUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRvRmlsZVN5c3RlbUVudHJpZXMoKnRoaXMsIFdURk1vdmUobGlzdGVkQ2hpbGRy
ZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXggZjM2OGMwZGY0NThlMDNlOGNmNjk4YzdjYmQz
NjJmZTM2MDE0MTUxNS4uNmQzYzVkMzEyMWUwZDNmODBjYmI3M2ExZTA1NDA1Y2Q2N2Y3YmFhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5oCkBAIC0yNSwzMiArMjUsNDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbGU7CiBj
bGFzcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBGaWxlU3lzdGVtRW50cnk7CiAK
IGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01GaWxl
U3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8RmlsZVN5
c3RlbUVudHJ5PiBjcmVhdGVFbnRyeUZvckZpbGUoUmVmPEZpbGU+JiYgZmlsZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUZpbGVTeXN0ZW0obmFtZSkpOworICAgICAg
ICBhdXRvIGZpbGVTeXN0ZW0gPSBhZG9wdFJlZigqbmV3IERPTUZpbGVTeXN0ZW0oV1RGTW92ZShm
aWxlKSkpOworICAgICAgICByZXR1cm4gZmlsZVN5c3RlbS0+ZmlsZUFzRW50cnkoKTsKICAgICB9
CiAKICAgICB+RE9NRmlsZVN5c3RlbSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiByb290
KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeT4gcm9vdCgpOworCisgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+
JiYpPjsKKyAgICB2b2lkIGxpc3REaXJlY3RvcnkoRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Jiwg
RGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERP
TUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBleHBsaWNpdCBET01GaWxlU3lz
dGVtKFJlZjxGaWxlPiYmKTsKKworICAgIFN0cmluZyBldmFsdWF0ZVBhdGgoY29uc3QgU3RyaW5n
JiB2aXJ0dWFsUGF0aCk7CisgICAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gZmlsZUFzRW50cnkoKTsK
IAogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4g
bV9yb290OworICAgIFJlZjxGaWxlPiBtX2ZpbGU7CisgICAgU3RyaW5nIG1fcm9vdFBhdGg7Cisg
ICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmlkbAppbmRleCA4Y2JhMzAyMWIzM2FjNjY0ZmU4ZDcyM2Y5MTM2ZTM3MWZlMjgxYjY2
Li5iMjVlYzY1MGY5Mzk3ZmQ1YTYyNjRjZWRkNzZlNGIwZGVjOTA5ZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaWRsCkBAIC0y
OSw1ICsyOSw1IEBACiAgICAgSW50ZXJmYWNlTmFtZT1GaWxlU3lzdGVtLAogXSBpbnRlcmZhY2Ug
RE9NRmlsZVN5c3RlbSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBuYW1lOwot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkgcm9vdDsKKyAg
ICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5IHJvb3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAppbmRleCBkNzBkMmQw
NTdiMjY4MDA1NjFmMDIxODlmZDFjMzk2ZmM5OTVhNGVhLi5jOTE1YjAwZTEyMGQwNmUzZmJhOGNk
NTcyNjhmNmY1YWNkMWI5NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcApAQCAtMzcs
OSArMzcsOSBAQCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeShET01GaWxlU3lzdGVtJiBmaWxlc3lzdGVtLCBjbwogewogfQogCi1SZWY8RmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIo
KQorUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShjb250ZXh0LCAqdGhpcyk7CiB9
CiAKIHZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZp
bGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGY0NzRjNjk0NmRjODUxMDM4NWNk
MWRkODM0MzJhNzZjMzc2MDc3ZmYuLjhkYjZmOTM5NWQzMWZmMWQ0YmE4YjgyMWM5MTBmM2MyODQ0
YjQ0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnko
ZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKICAgICB9CiAKLSAgICBSZWY8RmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgUmVmPEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXI+IGNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBz
dHJ1Y3QgRmxhZ3MgewogICAgICAgICBib29sIGNyZWF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaWRsCmluZGV4IDI4YmRmYzc5MjgwOTdhNTIzZDFmMjI1N2JiZmZkZjI4MDE5
MzNhOTguLjQwZjVjNWQzNDc1ZjRjZWRhMDFhNGMyYTY1YWMxZTZjMTYyYTE0OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgRW5hYmxlZEF0
UnVudGltZT1EaXJlY3RvcnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkgOiBGaWxlU3lzdGVtRW50cnkgewotICAgIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIg
Y3JlYXRlUmVhZGVyKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7CiAKICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBnZXRGaWxlKG9wdGlvbmFsIFVTVlN0cmluZz8g
cGF0aCwKICAgICAgICAgb3B0aW9uYWwgRmlsZVN5c3RlbUZsYWdzIG9wdGlvbnMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5jcHAKaW5kZXggZWQ5ZWU2M2MzOTc1ZWU4ZjM2YjQ4MDNiY2VlNTNm
ZGRiNTI3ZjYxNi4uMDdkODE2ODhmNDRiMjc3NWY1NzExZTRhZTdjMThjNjg4ZDFiMDE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcApAQCAtMjcsMjUgKzI3LDcwIEBACiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQot
ICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSkKKyAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKKyAgICAsIG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKIHsKKyAgICBzdXNw
ZW5kSWZOZWVkZWQoKTsKIH0KIAogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6fkZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIoKQogewogfQogCi12b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFk
ZXI6OnJlYWRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQorY29uc3QgY2hhciogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcjo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2spCi0gICAgICAgIGVy
cm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVh
dGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICByZXR1cm4gIkZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIiOworfQorCitib29sIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaGFzUGVuZGluZ0Fj
dGl2aXR5KCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2Rv
bS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktcmVhZGVudHJpZXMKK3ZvaWQgRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmPEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmIChtX2lzUmVhZGlu
ZykgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVycm9yQ2FsbGJh
Y2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRGlyZWN0b3J5IHJlYWRlciBp
cyBhbHJlYWR5IHJlYWRpbmciKSB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9lcnJvcikgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIGVy
cm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9NRXhjZXB0aW9uOjpjcmVh
dGUoKm1fZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2lzRG9u
ZSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwg
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faXNSZWFkaW5nID0gdHJ1ZTsK
KyAgICBhdXRvIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHBl
bmRpbmdBY3Rpdml0eSA9IFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9pc1JlYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9kaXJlY3RvcnktPmZpbGVzeXN0
ZW0oKS5saXN0RGlyZWN0b3J5KG1fZGlyZWN0b3J5LCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrID0g
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNh
bGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpXShFeGNl
cHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmIHJlc3VsdCkgeworICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIG1fZXJy
b3IgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChlcnJv
ckNhbGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChET01FeGNlcHRpb246OmNyZWF0ZSgqbV9lcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faXNEb25lID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oCmluZGV4IDhhMDk5NDRhZDk1ZDU1ZWQ2YTczOGRiZDk3
YzYzMWE1Y2ZkMmRlZGIuLjRmYjY0Nzk2NTRlZTQxOWJlNTliMzhjY2Y1N2RlYmJlN2I2ZGI3Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNiwxMSArMzgsMTEg
QEAgY2xhc3MgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OwogY2xhc3MgRmlsZVN5c3RlbUVudHJp
ZXNDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIEZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiB7CitjbGFzcyBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyIGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQorICAgIHN0YXRpYyBSZWY8
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYgZGlyZWN0b3J5KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihkaXJl
Y3RvcnkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlcihjb250ZXh0LCBkaXJlY3RvcnkpKTsKICAgICB9CiAKICAgICB+RmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlcigpOwpAQCAtNDgsOSArNTAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVh
ZEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxGaWxlU3lzdGVtRW50cmllc0Nh
bGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcihGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkm
KTsKKyAgICBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmKTsKKworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnk+IG1fZGlyZWN0b3J5OworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBtX2Vycm9y
OworICAgIGJvb2wgbV9pc1JlYWRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0RvbmUgeyBm
YWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsCmluZGV4IGRkMGNi
MDRkZDU1NTMzZGY0MzVjMDhjMDMxZTUwOWY2ZDBiZTc2ZDIuLjY1ZDJjNjE1M2U3OTEwNjk3Yzk3
M2RjMzI5OWY2ZDY1NzhjNzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwKQEAg
LTI1LDcgKzI1LDYgQEAKIAogWwogICAgIEVuYWJsZWRBdFJ1bnRpbWU9RGlyZWN0b3J5VXBsb2Fk
LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyIHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
dm9pZCByZWFkRW50cmllcyhGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFj
aywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApp
bmRleCBiMDQ5NjNjOWY4OGZlN2NlOTVhOTI0NjgyZjNhNzdlMmUxNTNlNzMwLi42YWFlODJjYjVm
NTM4YjNmM2YyNjA0MjIwNDJmM2JiNjEyYjkxNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeS5oIgog
CisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNCArMzgsMTQgQEAgRmlsZVN5c3RlbUVudHJ5OjpG
aWxlU3lzdGVtRW50cnkoRE9NRmlsZVN5c3RlbSYgZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2
aXJ0dWEKIHsKIH0KIAorRmlsZVN5c3RlbUVudHJ5Ojp+RmlsZVN5c3RlbUVudHJ5KCkKK3sKK30K
KworRE9NRmlsZVN5c3RlbSYgRmlsZVN5c3RlbUVudHJ5OjpmaWxlc3lzdGVtKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9maWxlc3lzdGVtLmdldCgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRW50cnkuaAppbmRleCAwMzFkYzI3MjQ4NmExODNkMjZhMjU1OTYwNjUxODZiNmI1ZTQ0OWQ5
Li5hNzRkODdlNzg5YWNlOTAzNDMyMTQ2NzNmZTI4MjM0YzFkOGFkZDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5oCkBAIC0z
NSwyMCArMzUsMjAgQEAgY2xhc3MgRE9NRmlsZVN5c3RlbTsKIAogY2xhc3MgRmlsZVN5c3RlbUVu
dHJ5IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3Rl
bUVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5KCkgeyB9Cisg
ICAgdmlydHVhbCB+RmlsZVN5c3RlbUVudHJ5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlydHVhbFBhdGg7IH0KLSAgICBET01GaWxlU3lzdGVtJiBmaWxlc3lz
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlc3lzdGVtOyB9CisgICAgRE9NRmlsZVN5c3RlbSYg
ZmlsZXN5c3RlbSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgRmlsZVN5c3RlbUVudHJ5KERP
TUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKIAogcHJpdmF0ZToKLSAg
ICBET01GaWxlU3lzdGVtJiBtX2ZpbGVzeXN0ZW07CisgICAgUmVmPERPTUZpbGVTeXN0ZW0+IG1f
ZmlsZXN5c3RlbTsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3ZpcnR1YWxQYXRo
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBjNDdiMWY0NWFjOTcw
MmU2NTNmMTVlMTkwYzE2MzA4ZWQzNDhmYmU3Li5lMjcwNTNmYTVkZmZhMmNmYzlmMWQ5MzRjZjNj
NzUyMDY1ZWQ1NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4
NCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIHRoaXNPYmplY3QtPmRlcmVmKCk7CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBjbGFzcyBQZW5kaW5nQWN0aXZpdHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxQZW5kaW5nQWN0aXZpdHk8VD4+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4
cGxpY2l0IFBlbmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQorICAgICAgICAgICAgOiBtX3Ro
aXNPYmplY3QodGhpc09iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgKysobV90aGlzT2Jq
ZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIH5QZW5k
aW5nQWN0aXZpdHkoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV90aGlzT2JqZWN0
LT5tX3BlbmRpbmdBY3Rpdml0eUNvdW50ID4gMCk7CisgICAgICAgICAgICAtLShtX3RoaXNPYmpl
Y3QtPm1fcGVuZGluZ0FjdGl2aXR5Q291bnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBSZWY8VD4gbV90aGlzT2JqZWN0OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBUPiBSZWY8UGVuZGluZ0FjdGl2aXR5PFQ+PiBtYWtlUGVuZGluZ0FjdGl2aXR5KFQmIHRoaXNP
YmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQoJnRoaXNPYmplY3QgPT0gdGhpcyk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdBY3Rpdml0eTxUPih0aGlzT2JqZWN0KSk7
CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWN0aXZlRE9NT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5BY3RpdmVET01PYmplY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKaW5kZXggZTI4YjBkMTc3ODc0YTc4YjkwZWFhYjU4
ZTlhYTU1YmU2ZmI5MDFmYS4uYzk4ZmZjMTA4NmMyN2Y1NzJjY2UxMjExZTk2NTA3ODY4YjM0MWQ3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKIAorI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgYXJyYXkgbmVl
ZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIEV4Y2VwdGlvbkNvZGUgZW51bWVyYXRpb24u
CkBAIC05OSw2ICsxMDEsMTIgQEAgUmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG5hbWUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24obGVnYWN5Q29kZUZyb21OYW1lKG5hbWUpLCBuYW1l
LCBtZXNzYWdlKSk7CiB9CiAKK1JlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRl
KGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQoreworICAgIGF1dG8mIGRlc2NyaXB0aW9uID0g
RE9NRXhjZXB0aW9uOjpkZXNjcmlwdGlvbihleGNlcHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgZGVzY3Jp
cHRpb24ubmFtZSwgZXhjZXB0aW9uLm1lc3NhZ2UoKS5pc0VtcHR5KCkgPyBkZXNjcmlwdGlvbi5t
ZXNzYWdlIDogZXhjZXB0aW9uLm1lc3NhZ2UoKSkpOworfQorCiBET01FeGNlcHRpb246OkRPTUV4
Y2VwdGlvbihMZWdhY3lDb2RlIGxlZ2FjeUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgIDogbV9sZWdhY3lDb2RlKGxlZ2FjeUNvZGUpCiAgICAgLCBt
X25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uaAppbmRleCBjNTMzMmI5ODI5NTJm
MTJkYmI1N2UxMDAwZTY4ODMxZDA0NDg1Y2U3Li5kYWJlOTMwNzUzODZkZWI3NTM2MzlkNTAzMmVm
NjkwYmU0MTUxMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5oCkBAIC0zMyw5ICszMywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV4Y2VwdGlvbjsKKwogY2xhc3Mg
RE9NRXhjZXB0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NRXhjZXB0aW9uPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxET01FeGNlcHRpb24+IGNyZWF0ZShFeGNlcHRpb25Db2RlLCBjb25z
dCBTdHJpbmcqIG1lc3NhZ2UgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlv
bj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbiYpOwogCiAgICAgLy8gRm9yIERPTSBiaW5kaW5ncy4K
ICAgICBzdGF0aWMgUmVmPERPTUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXJJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
LmNwcAppbmRleCA2YjVkN2E1NzhiYWEwN2E5MTdkODhhNjgyMjEwY2Q2YTEzN2JmNjM5Li5lMzIy
ODJiOTc4MTY4OGEyOGQ2MjllZDgzMzRmMzk4YTU2YTY5ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDEzICsxMTEsNyBAQCBSZWZQdHI8RmlsZVN5c3RlbUVu
dHJ5PiBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0VudHJ5KCkgY29uc3QKICAgICBpZiAoIWZpbGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0pCi0gICAg
ICAgIG1fZmlsZVN5c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkpOwotCi0gICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gIi8iICsgZmlsZS0+bmFt
ZSgpOwotICAgIGlmIChmaWxlLT5pc0RpcmVjdG9yeSgpKQotICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoKm1fZmlsZVN5c3RlbSwgdmlydHVhbFBhdGgpOwot
ICAgIHJldHVybiBGaWxlU3lzdGVtRmlsZUVudHJ5OjpjcmVhdGUoKm1fZmlsZVN5c3RlbSwgdmly
dHVhbFBhdGgpOworICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGVFbnRyeUZvckZpbGUo
KmZpbGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uaAppbmRleCBiZWExY2YxZTRjMDc5ZjRmY2MwZTNlNmFhNTk0YTExMGYwMWI5
ZTYxLi43MTMzMDQzMWI5ZDRjOTMwN2RmMGQyMGQ4NzYxZWU4NGJlNmM0M2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTcyLDcgKzcyLDYgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0PiBtX2xpc3Q7CiAgICAgY29uc3QgU3RyaW5n
IG1fdHlwZTsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwotICAgIG11dGFibGUgUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaApp
bmRleCA1ZjhhOGQyZWNhYmQyZmVkODhjNDRlODk5NzAyODBjMzk0Zjc4OTAyLi4wOTdiOTE3NWY1
ZDVjOGQyZDc0NTg2OWI2ZGNiNTIwZGRjNzExZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBA
IC0zOSw2ICszOSwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAgICAgU3RyaW5nJiYgcmVsZWFzZU1lc3NhZ2UoKSB7
IHJldHVybiBXVEZNb3ZlKG1fbWVzc2FnZSk7IH0KIAorICAgIEV4Y2VwdGlvbiBpc29sYXRlZENv
cHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IG1fY29kZSwgbV9t
ZXNzYWdlLmlzb2xhdGVkQ29weSgpIH07CisgICAgfQorCiBwcml2YXRlOgogICAgIEV4Y2VwdGlv
bkNvZGUgbV9jb2RlOwogICAgIFN0cmluZyBtX21lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCmluZGV4IDk3OWQ0YTdjMDZhMTAxNjU0ZjYyNTMxNmFiMmNiMTA5MTQxZjBjMGEuLmZmOTU1
MjJkNzc0NTY0NzFlNGVkMWRhNzI1YzNjZmJkMzUzNTlhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b25Pci5oCkBAIC0yNyw2ICsyNyw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgwLDMgKzE4MSwx
NSBAQCBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gaXNvbGF0ZWRDb3B5KEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgdmFsdWUpCiB9CiAKIH0KKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6
RXhjZXB0aW9uT3I8VD4gPiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiBU
eXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgVHlwZSYgc291cmNlKQorICAgIHsKKyAg
ICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBjcm9z
c1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGNyb3NzVGhy
ZWFkQ29weShzb3VyY2UucmV0dXJuVmFsdWUoKSk7CisgICAgfQorfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCBiMTY0NWFhMzY4OTFjYWRlNWEyZWVmNmNk
MzExOWU4N2Q1YjdlYjM5Li4xOWJkNDRhZWExZGRkMTZkMTkyOWYyMmRhYTBkMTk4YmJiZjMyYTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIEZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsCiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3Jp
ZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgICAgIG1fY29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgICAgICBtX3dvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENy
ZWF0b3IgV29yayBRdWV1ZSIpOwotICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0aHMgPSBDcm9zc1RocmVhZENvcGll
cjxWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4+Ojpjb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGF1dG8gZmlsZUxpc3QgPSBjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZl
RGlyZWN0b3JpZXM6Olllcz4ocGF0aHMpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZpbGVMaXN0ID0g
V1RGTW92ZShmaWxlTGlzdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGVyKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBmYWU1YWUzODhiN2E5ODViNTBhNDQzNjM2ZjAx
NDI2MDE5ZmYwNjBhLi41OWUxMzNlZTZhM2UxODA1NzAwYWY4YTIwNDYyMTk4YjE0YjVlZTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xMDEsNiArMTAxLDcgQEAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVf
dCYgcmVzdWx0KTsgLy8gTm90IGEKIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYs
IEZpbGVNZXRhZGF0YSYpOwogYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOworU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29t
cG9uZW50cyk7CiBTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFz
aChjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRl
eCA1YmUzNmU5ZWRkZTExNDYwYmU5YTIzMGIxMzk0YzRiNjc0MzcyZWEzLi5lM2M1ZDYzZTg0ODBk
YTQ4MTk1ODA5ZDVhMmY2ZDIxNTU5ODllMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTgwLDYgKzE4MSwxNyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgcmV0
dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1JfUyArIGNvbXBvbmVudDsKIH0KIAorU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YnVpbGRlci5hcHBlbmQocGF0aCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25l
bnRzKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKEdfRElSX1NFUEFSQVRPUl9TKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoY29tcG9uZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5h
bWUocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAppbmRleCAwNTMxOTMwYjM5MDkzOGVmMmUwYWMzMzRlMTFmZjg2OTA4Y2M4Njdk
Li5lYTE3NmRkMDRlZDNlMDAyMDU4YjhlNjAyODQ2M2VhMWMyODAzNThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0yNzAsNiArMjcxLDE3IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKICAgICByZXR1
cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKIH0KIAorU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29tcG9u
ZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
cGF0aCk7CisgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcvJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbXBvbmVudCk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIGJvb2wgbWFrZUFs
bERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZ1bGxQYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI1OGYxOWM4MWJmOTcxMDVlZDQxZWRl
NDU5NDA1OTJiMTQ4NmE3ZDIuLjg3ODJkNzAwZGViNjY4NTExZDczNWQzMGMyODg2MGEwNjVmY2Qw
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjAxLDYgKzIwMiwxNCBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAg
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAorU3RyaW5nIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgY29tcG9uZW50cykKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aDsKKyAgICBm
b3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCisgICAgICAgIHJlc3VsdCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogI2lmICFVU0UoQ0YpCiAKIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMjM5NDQ1MThjNDFlNGY4Y2EwMTY0MzNhY2Zl
ZDRjMTRmYWFhMTE0Li44MDdlZWI5YzNmNTI3NzZkZmY4YzMxOWQ0OTFlYTBlNDZhYjg3ZGNjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMDgtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5y
ZWFkRW50cmllcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYwOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTY4MDE1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNv
dmVyYWdlLgorCisgICAgICAgICogZWRpdGluZy9lZGl0aW5nLmpzOgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VsZW1lbnQpOgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJl
Y3RvcnlSZWFkZXItZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWVycm9y
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVh
ZGVyLXJvb3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9w
LWRpcmVjdG9yeVJlYWRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE3LTA4LTMwICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYWxsIG9mICJSZWdpc3Rl
ciIgcmlnaHQgdXAgdW50aWwgd2hlcmUgdGhlIHNjcmlwdCBpcyBmZXRjaGVkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9l
ZGl0aW5nLmpzCmluZGV4IGVjMzIyMWQzZDc1ZmU4MzczNjFjZDI1Nzk0N2E2OGQzM2I4YzI3ODYu
LjI2ZDU2YTljN2M0MjUxNzQyYmY5Yjg5YmYwMTYxYmNlZjlhYmE5ODcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2Vk
aXRpbmcuanMKQEAgLTM5OSw2ICszOTksMjYgQEAgZnVuY3Rpb24gbW92ZVNlbGVjdGlvbkJhY2t3
YXJkQnlMaW5lQm91bmRhcnlDb21tYW5kKCkgewogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVs
ZW1lbnQoZWxlbWVudCkgeworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgY29uc3QgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9w
ICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFnRmlsZXNPbnRvRWxlbWVudChl
bGVtZW50LCBmaWxlcykgeworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOworICAg
IG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKIGZ1bmN0aW9uIGRvdWJsZUNsaWNrKHgsIHkpIHsKICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1kaXJlY3RvcnlSZWFkZXItZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1lcnJv
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM3ZDhjNWJhZjhmYmYxNzEzMzhjNDFiOGViNzg5
NzIwOWYxOWUxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXJyb3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0Vycm9yIGNhc2UgY292ZXJhZ2UgZm9yIGZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBkYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoIGlzIDEKK1BBU1MgZXgubmFt
ZSBpcyAiSW52YWxpZFN0YXRlRXJyb3IiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1lcnJvci5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9w
LWRpcmVjdG9yeVJlYWRlci1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZGM1YjY0Y2E4OTU4M2E2
YjU3MmNiNWQyNjk0MzhjNDdjNjcyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVy
LWVycm9yLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJh
Y2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiRXJy
b3IgY2FzZSBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5yZWFkRW50cmll
cygpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGRyb3B6b25lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihl
KSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRy
YW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGgiLCAiMSIp
OworCisgICAgZGlyRW50cnkgPSBkYXRhVHJhbnNmZXIuaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRy
eSgpOworICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIoKTsKKyAgICByZWFk
ZXIucmVhZEVudHJpZXMoZnVuY3Rpb24oKSB7fSk7CisgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGZ1
bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ2FsbGluZyByZWFkRW50cmll
cyBvbiBhIHJlYWRlciB3aXRoIHRoZSByZWFkaW5nIGZsYWcgc2V0IGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgZXggPSBlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5h
bWUiLCAiSW52YWxpZFN0YXRlRXJyb3IiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICB9
KTsKK307CisKK2Ryb3B6b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgeworICAgIGV2LnBy
ZXZlbnREZWZhdWx0KCk7Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRyYWdGaWxl
c09udG9FbGVtZW50KGRyb3B6b25lLCBbJy4uLy4uL2Zhc3QvZm9ybXMvZmlsZS9yZXNvdXJjZXMv
dGVzdEZpbGVzJ10pOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3At
ZGlyZWN0b3J5UmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM5ZWE2YWEzYTIyZWE4MTI3NGI0ODQzMzEwZDY4NDRkMTQxYWMzZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQx
IEBACitCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJl
YWRFbnRyaWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRy
YW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAxCitQQVNTIGVudHJ5LmlzRGlyZWN0b3J5IGlzIHRydWUK
K1BBU1MgZW50cnkubmFtZSBpcyAidGVzdEZpbGVzIgorUEFTUyBlbnRyeS5mdWxsUGF0aCBpcyAi
L3Rlc3RGaWxlcyIKK1BBU1MgY2hpbGRFbnRyaWVzLmxlbmd0aCBpcyA0CitQQVNTIGNoaWxkRW50
cmllc1swXS5uYW1lIGlzICJmaWxlMS50eHQiCitQQVNTIGNoaWxkRW50cmllc1swXS5mdWxsUGF0
aCBpcyAiL3Rlc3RGaWxlcy9maWxlMS50eHQiCitQQVNTIGNoaWxkRW50cmllc1swXS5pc0ZpbGUg
aXMgdHJ1ZQorUEFTUyBjaGlsZEVudHJpZXNbMV0ubmFtZSBpcyAiZmlsZTIudHh0IgorUEFTUyBj
aGlsZEVudHJpZXNbMV0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTIudHh0IgorUEFTUyBj
aGlsZEVudHJpZXNbMV0uaXNGaWxlIGlzIHRydWUKK1BBU1MgY2hpbGRFbnRyaWVzWzJdLm5hbWUg
aXMgInN1YmZvbGRlcjEiCitQQVNTIGNoaWxkRW50cmllc1syXS5mdWxsUGF0aCBpcyAiL3Rlc3RG
aWxlcy9zdWJmb2xkZXIxIgorUEFTUyBjaGlsZEVudHJpZXNbMl0uaXNEaXJlY3RvcnkgaXMgdHJ1
ZQorUEFTUyBjaGlsZEVudHJpZXNbM10ubmFtZSBpcyAic3ViZm9sZGVyMiIKK1BBU1MgY2hpbGRF
bnRyaWVzWzNdLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIiCitQQVNTIGNoaWxk
RW50cmllc1szXS5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzLmxl
bmd0aCBpcyAxCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLm5hbWUgaXMgImZpbGUzLnR4dCIK
K1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9s
ZGVyMS9maWxlMy50eHQiCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVl
CitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzLmxlbmd0aCBpcyAyCitQQVNTIGdyYW5kQ2hpbGRFbnRy
aWVzWzBdLm5hbWUgaXMgImZpbGU0LnR4dCIKK1BBU1MgZ3JhbmRDaGlsZEVudHJpZXNbMF0uZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMi9maWxlNC50eHQiCitQQVNTIGdyYW5kQ2hp
bGRFbnRyaWVzWzBdLmlzRmlsZSBpcyB0cnVlCitQQVNTIGdyYW5kQ2hpbGRFbnRyaWVzWzFdLm5h
bWUgaXMgInN1YmZvbGRlcjJhIgorUEFTUyBncmFuZENoaWxkRW50cmllc1sxXS5mdWxsUGF0aCBp
cyAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhIgorUEFTUyBncmFuZENoaWxkRW50
cmllc1sxXS5pc0RpcmVjdG9yeSBpcyB0cnVlCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgZ3JlYXRHcmFuZENoaWxkRW50cmllc1swXS5uYW1lIGlzICJmaWxl
NS50eHQiCitQQVNTIGdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGggaXMgIi90ZXN0
RmlsZXMvc3ViZm9sZGVyMi9zdWJmb2xkZXIyYS9maWxlNS50eHQiCitQQVNTIGdyZWF0R3JhbmRD
aGlsZEVudHJpZXNbMF0uaXNGaWxlIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3Qt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMTMwMDVmZGQ5NTViNDMwMmM3MWU4ZjAwNjhhNDMxM2U4MmE0NzFkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitC
YXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRy
aWVzKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRyYW5zZmVy
Lml0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGVudHJ5MS5pc0ZpbGUgaXMgdHJ1ZQorUEFTUyBlbnRy
eTEubmFtZSBpcyAidGVzdC50eHQiCitQQVNTIGVudHJ5MS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0
IgorUEFTUyBlbnRyeUZvdW5kLmlzRmlsZSBpcyB0cnVlCitQQVNTIGVudHJ5Rm91bmQubmFtZSBp
cyAidGVzdC50eHQiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0LnR4dCIKK1BB
U1MgZW50cnkyLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnkyLm5hbWUgaXMgInRlc3RG
aWxlcyIKK1BBU1MgZW50cnkyLmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzIgorUEFTUyBlbnRyeUZv
dW5kLmlzRGlyZWN0b3J5IGlzIHRydWUKK1BBU1MgZW50cnlGb3VuZC5uYW1lIGlzICJ0ZXN0Rmls
ZXMiCitQQVNTIGVudHJ5Rm91bmQuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVj
dG9yeVJlYWRlci1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLXJvb3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMzZhZDgzYWUxYjkxMGViMTI5MDdmYTBjNzUyOWMwYTdlZGViZGMzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwKQEAgLTAsMCArMSw4OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7
IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5yZWFkRW50cmllcygpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rp
b24gZ2V0RW50cmllc0FzUHJvbWlzZShkaXJFbnRyeSkgeworICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAg
ICAgbGV0IHJlYWRlciA9IGRpckVudHJ5LmNyZWF0ZVJlYWRlcigpOworICAgICAgICBsZXQgZG9C
YXRjaCA9ICgpID0+IHsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzID0+
IHsKKyAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAg
ICBlbnRyaWVzLmZvckVhY2goZSA9PiByZXN1bHQucHVzaChlKSk7CisgICAgICAgICAgICAgICAg
ZG9CYXRjaCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXNvbHZl
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHJlamVjdCk7CisgICAgfTsKKyAg
ICBkb0JhdGNoKCk7CisgIH0pOworfQorCitmdW5jdGlvbiBmaW5kRW50cnlCeU5hbWUoZW50cmll
cywgbmFtZSkKK3sKKyAgICBmb3IgKGxldCBjaGlsZEVudHJ5IG9mIGVudHJpZXMpIHsKKyAgICAg
ICAgaWYgKGNoaWxkRW50cnkubmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxk
RW50cnkKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisKK3ZhciBkcm9wem9uZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wem9uZScpOworZHJvcHpvbmUub25kcm9wID0gZnVuY3Rp
b24oZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBlLmRh
dGFUcmFuc2ZlcjsKKworICAgIHNob3VsZEJlKCJkYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoIiwg
IjIiKTsKKworICAgIGVudHJ5MSA9IGRhdGFUcmFuc2Zlci5pdGVtc1swXS53ZWJraXRHZXRBc0Vu
dHJ5KCk7CisgICAgZW50cnkyID0gZGF0YVRyYW5zZmVyLml0ZW1zWzFdLndlYmtpdEdldEFzRW50
cnkoKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiZW50cnkxLmlzRmlsZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZW50cnkxLm5hbWUiLCAidGVzdC50eHQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImVudHJ5MS5mdWxsUGF0aCIsICIvdGVzdC50eHQiKTsKKyAgICBnZXRFbnRy
aWVzQXNQcm9taXNlKGVudHJ5MS5maWxlc3lzdGVtLnJvb3QpLnRoZW4oZnVuY3Rpb24oZW50cmll
cykgeworICAgICAgICBlbnRyeUZvdW5kID0gZmluZEVudHJ5QnlOYW1lKGVudHJpZXMsICJ0ZXN0
LnR4dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Rm91bmQuaXNGaWxlIik7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5uYW1lIiwgInRlc3QudHh0Iik7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZW50cnlGb3VuZC5mdWxsUGF0aCIsICIv
dGVzdC50eHQiKTsKKworICAgICAgICBzaG91bGRCZVRydWUoImVudHJ5Mi5pc0RpcmVjdG9yeSIp
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Mi5uYW1lIiwgInRlc3RGaWxl
cyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Mi5mdWxsUGF0aCIsICIv
dGVzdEZpbGVzIik7CisgICAgICAgIGdldEVudHJpZXNBc1Byb21pc2UoZW50cnkyLmZpbGVzeXN0
ZW0ucm9vdCkudGhlbihmdW5jdGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICBlbnRyeUZvdW5k
ID0gZmluZEVudHJ5QnlOYW1lKGVudHJpZXMsICJ0ZXN0RmlsZXMiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiZW50cnlGb3VuZC5pc0RpcmVjdG9yeSIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJlbnRyeUZvdW5kLm5hbWUiLCAidGVzdEZpbGVzIik7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVudHJ5Rm91bmQuZnVsbFBhdGgiLCAiL3Rlc3RG
aWxlcyIpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgZnVuY3Rp
b24oZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsg
ZSk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSwgZnVu
Y3Rpb24oZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmllcyBmYWlsZWQ6ICIgKyBl
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5vbmRy
YWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQorCitv
bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9uZSwg
WycuLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXN0LnR4dCcsICcuLi8uLi9mYXN0L2Zvcm1z
L2ZpbGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2ZThiYzllNWYyYjMwYTUyMzc2NDVjNTUyYzg3NmVkNDkxODgxMGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKQEAgLTAsMCArMSwxMTUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6
IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgY292ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIucmVhZEVudHJpZXMoKSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisK
K2Z1bmN0aW9uIGdldEVudHJpZXNBc1Byb21pc2UoZGlyRW50cnkpIHsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQgcmVzdWx0ID0gW107
CisgICAgICAgIGxldCByZWFkZXIgPSBkaXJFbnRyeS5jcmVhdGVSZWFkZXIoKTsKKyAgICAgICAg
bGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZW50
cmllcyA9PiB7CisgICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7CisgICAgICAg
ICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkpOworICAgICAgICAg
ICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9LCByZWplY3QpOworICAg
IH07CisgICAgZG9CYXRjaCgpOworICB9KTsKK30KKwordmFyIGRyb3B6b25lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihl
KSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRy
YW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGgiLCAiMSIp
OworCisgICAgZW50cnkgPSBkYXRhVHJhbnNmZXIuaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSgp
OworICAgIHNob3VsZEJlVHJ1ZSgiZW50cnkuaXNEaXJlY3RvcnkiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImVudHJ5Lm5hbWUiLCAidGVzdEZpbGVzIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJlbnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzIik7CisKKyAgICBnZXRFbnRy
aWVzQXNQcm9taXNlKGVudHJ5KS50aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgY2hp
bGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgc2hvdWxkQmUoImNoaWxkRW50cmllcy5sZW5n
dGgiLCAiNCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1sw
XS5uYW1lIiwgImZpbGUxLnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNo
aWxkRW50cmllc1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIpOworICAgICAg
ICBzaG91bGRCZVRydWUoImNoaWxkRW50cmllc1swXS5pc0ZpbGUiKTsKKworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1sxXS5uYW1lIiwgImZpbGUyLnR4dCIpOwor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxkRW50cmllc1sxXS5mdWxsUGF0aCIs
ICIvdGVzdEZpbGVzL2ZpbGUyLnR4dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImNoaWxkRW50
cmllc1sxXS5pc0ZpbGUiKTsKKworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNoaWxk
RW50cmllc1syXS5uYW1lIiwgInN1YmZvbGRlcjEiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjaGlsZEVudHJpZXNbMl0uZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIx
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2hpbGRFbnRyaWVzWzJdLmlzRGlyZWN0b3J5Iik7
CisKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaGlsZEVudHJpZXNbM10ubmFtZSIs
ICJzdWJmb2xkZXIyIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2hpbGRFbnRy
aWVzWzNdLmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMiIpOworICAgICAgICBzaG91
bGRCZVRydWUoImNoaWxkRW50cmllc1szXS5pc0RpcmVjdG9yeSIpOworCisgICAgICAgIGdldEVu
dHJpZXNBc1Byb21pc2UoY2hpbGRFbnRyaWVzWzJdKS50aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsK
KyAgICAgICAgICAgIGdyYW5kQ2hpbGRFbnRyaWVzID0gZW50cmllczsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJncmFuZENoaWxkRW50cmllcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50cmllc1swXS5uYW1lIiwgImZpbGUzLnR4
dCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50cmll
c1swXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0Iik7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisg
ICAgICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGNoaWxkRW50cmllc1szXSkudGhlbihmdW5j
dGlvbihlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgZ3JhbmRDaGlsZEVudHJpZXMgPSBlbnRy
aWVzOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJncmFuZENoaWxkRW50cmllcy5sZW5ndGgi
LCAiMiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JhbmRDaGls
ZEVudHJpZXNbMF0ubmFtZSIsICJmaWxlNC50eHQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImdyYW5kQ2hpbGRFbnRyaWVzWzBdLmZ1bGxQYXRoIiwgIi90ZXN0Rmls
ZXMvc3ViZm9sZGVyMi9maWxlNC50eHQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
ImdyYW5kQ2hpbGRFbnRyaWVzWzBdLmlzRmlsZSIpOworCisgICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50cmllc1sxXS5uYW1lIiwgInN1YmZvbGRlcjJh
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncmFuZENoaWxkRW50
cmllc1sxXS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjIvc3ViZm9sZGVyMmEiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hpbGRFbnRyaWVzWzFdLmlzRGly
ZWN0b3J5Iik7CisKKyAgICAgICAgICAgICAgICBnZXRFbnRyaWVzQXNQcm9taXNlKGdyYW5kQ2hp
bGRFbnRyaWVzWzFdKS50aGVuKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZ3JlYXRHcmFuZENoaWxkRW50cmllcyA9IGVudHJpZXM7CisgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJncmVhdEdyYW5kQ2hpbGRFbnRyaWVzLmxlbmd0aCIsICIxIik7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ3JlYXRHcmFuZENoaWxkRW50cmll
c1swXS5uYW1lIiwgImZpbGU1LnR4dCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0uZnVsbFBhdGgiLCAiL3Rlc3RG
aWxlcy9zdWJmb2xkZXIyL3N1YmZvbGRlcjJhL2ZpbGU1LnR4dCIpOworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZVRydWUoImdyZWF0R3JhbmRDaGlsZEVudHJpZXNbMF0uaXNGaWxlIik7CisK
KyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwg
ZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmll
cyBmYWlsZWQ6ICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbihlKSB7CisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAiICsgZSk7CisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgZnVu
Y3Rpb24oZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVhZEVudHJpZXMgZmFpbGVkOiAi
ICsgZSk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfSwg
ZnVuY3Rpb24oZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJyZWFkRW50cmllcyBmYWlsZWQ6ICIg
KyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9OworCitkcm9wem9uZS5v
bmRyYWdvdmVyID0gZnVuY3Rpb24oZXYpIHsKKyAgICBldi5wcmV2ZW50RGVmYXVsdCgpOworfQor
CitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChkcm9wem9u
ZSwgWycuLi8uLi9mYXN0L2Zvcm1zL2ZpbGUvcmVzb3VyY2VzL3Rlc3RGaWxlcyddKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEFzRW50cnkuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRB
c0VudHJ5Lmh0bWwKaW5kZXggYzBiODM1NjI3NGE3NTRlYjg0NzBlMTcxODhkYzZlY2EzNDY5ZTRi
ZC4uNDAyNDg5MjFjYWJkZWY0NmRjNzlmZWY4N2FmYmFlODM5OGRkMTZhNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dEFzRW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5odG1sCkBAIC0yLDYgKzIsNyBAQAogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KIDxkaXYgaWQ9ImRyb3B6b25lIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyI+PC9kaXY+CkBAIC05LDIxICsxMCw2IEBACiBkZXNj
cmlwdGlvbigiQmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZGF0YVRyYW5zZmVySXRlbS53ZWJraXRH
ZXRBc0VudHJ5KCkiKTsKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1mdW5jdGlvbiBtb3ZlTW91
c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KSB7Ci0gICAgdmFyIGNlbnRlclggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKLSAgICB2YXIgY2VudGVyWSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOwotfQotCi1mdW5jdGlvbiBkcmFn
RmlsZXNPbnRvRWxlbWVudChlbGVtZW50LCBmaWxlcykgewotICAgIGlmICghd2luZG93LmV2ZW50
U2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRo
RmlsZXMoZmlsZXMpOwotICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpOwot
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQogdmFyIGRyb3B6b25lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7CiBkcm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihl
KSB7CiAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBmODRmYTgxZTE1MWY1YjcwOTc4NzAyMTM0NTI1NzE1ZGU0ODAw
ODZmLi44YTJhMmExN2RkZWEzODA2NWZlNzIzOTU0NWFhZDFkM2ZkZDE5OGVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTYzLDYgKzU2Myw5IEBAIHBs
YXRmb3JtL21hYy9mYXN0L2V2ZW50cy9vYmpjLWV2ZW50LWFwaS5odG1sCiAKICMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNlbmRlci5iZWdpbkRyYWdX
aXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0Mjg1
CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVh
ZGVyLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJl
Y3RvcnlSZWFkZXItZXJyb3IuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1yb290Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9k
YXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRBc0VudHJ5Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1wbGFpbnRleHQtZmlsZS5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>