<?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>220423</bug_id>
          
          <creation_ts>2021-01-07 11:12:39 -0800</creation_ts>
          <short_desc>[Mac] Add runtime logging to format reader and WebM parser</short_desc>
          <delta_ts>2021-01-12 14:47:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718004</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-07 11:12:39 -0800</bug_when>
    <thetext>Add runtime logging to format reader and WebM parser to make failures easier to diagnose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718005</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-07 11:12:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/72896655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718071</commentid>
    <comment_count>2</comment_count>
      <attachid>417208</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-07 13:40:31 -0800</bug_when>
    <thetext>Created attachment 417208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718079</commentid>
    <comment_count>3</comment_count>
      <attachid>417208</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2021-01-07 14:13:18 -0800</bug_when>
    <thetext>Comment on attachment 417208
Patch

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

&gt; Source/WebKit/Shared/mac/MediaFormatReader/MediaTrackReader.cpp:78
&gt; +    , m_logIdentifier(formatReader.nextTrackReaderLogIdentifier())

Can trackID also be the log identifier here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718081</commentid>
    <comment_count>4</comment_count>
      <attachid>417208</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2021-01-07 14:16:44 -0800</bug_when>
    <thetext>Comment on attachment 417208
Patch

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

&gt; Source/WebCore/dom/Document.cpp:538
&gt; +static RefPtr&lt;Logger&gt;&amp; staticSharedLogger()
&gt; +{
&gt; +    static NeverDestroyed&lt;RefPtr&lt;Logger&gt;&gt; logger;
&gt; +    return logger;
&gt; +}
&gt; +
&gt; +RefPtr&lt;Logger&gt;&amp; Document::sharedLogger()
&gt; +{
&gt; +    if (!staticSharedLogger().get()) {
&gt; +        staticSharedLogger() = Logger::create(sharedLoggerOwner());
&gt; +        configureSharedLogger();
&gt; +    }
&gt; +    
&gt; +    return staticSharedLogger();
&gt; +}

Nit: I think `static Logger*` would work just as well as `static NeverDestroyed&lt;RefPtr&lt;Logger&gt;&gt;`. This Logger lives forever, so you could just `.leakRef()` the result of `Logger::create()` when initializing `staticSharedLogger()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718100</commentid>
    <comment_count>5</comment_count>
      <attachid>417208</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-07 15:10:24 -0800</bug_when>
    <thetext>Comment on attachment 417208
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:538
&gt;&gt; +}
&gt; 
&gt; Nit: I think `static Logger*` would work just as well as `static NeverDestroyed&lt;RefPtr&lt;Logger&gt;&gt;`. This Logger lives forever, so you could just `.leakRef()` the result of `Logger::create()` when initializing `staticSharedLogger()`.

Good idea. I changed it and made `Document::sharedLogger` to return a `const Logger&amp;`

&gt;&gt; Source/WebKit/Shared/mac/MediaFormatReader/MediaTrackReader.cpp:78
&gt;&gt; +    , m_logIdentifier(formatReader.nextTrackReaderLogIdentifier())
&gt; 
&gt; Can trackID also be the log identifier here?

Yes, I updated `MediaFormatReader.nextTrackReaderLogIdentifier` to take the track ID to use as the child portion of the identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718103</commentid>
    <comment_count>6</comment_count>
      <attachid>417216</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-07 15:15:40 -0800</bug_when>
    <thetext>Created attachment 417216
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718134</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-07 16:18:37 -0800</bug_when>
    <thetext>Committed r271270: &lt;https://trac.webkit.org/changeset/271270&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417216.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718336</commentid>
    <comment_count>8</comment_count>
      <attachid>417216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-08 10:36:17 -0800</bug_when>
    <thetext>Comment on attachment 417216
Patch for landing

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

Why are we using &quot;const void*&quot; for identifiers instead of something that doesn&apos;t require reinterpret_cast. Is there some reason pretending this integer is a pointer has value?

&gt; Source/WebCore/dom/Document.cpp:549
&gt; +    bool alwaysOnLoggingAllowed = !allDocumentsMap().isEmpty() &amp;&amp; WTF::allOf(allDocumentsMap().values(), [](auto* document) {
&gt; +        auto* page = document-&gt;page();
&gt; +        return !page || page-&gt;sessionID().isAlwaysOnLoggingAllowed();
&gt; +    });

Is the emptiness check valuable? I’d expect allOf/values to efficiently do nothing for an empty map without an explicit check.

&gt; Source/WebCore/dom/Document.cpp:643
&gt;      ASSERT_UNUSED(addResult, addResult.isNewEntry);

Seems like we should move this assertion into Document::addToDocumentsMap as we did with removeFromDocumentsMap.

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:65
&gt; +    static String toString(webm::TrackType type)

I think return value type should be ASCIILiteral, not String. Does that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719124</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-12 13:58:16 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719125</commentid>
    <comment_count>10</comment_count>
      <attachid>417490</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-12 13:58:18 -0800</bug_when>
    <thetext>Created attachment 417490
Address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719128</commentid>
    <comment_count>11</comment_count>
      <attachid>417216</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-12 14:02:20 -0800</bug_when>
    <thetext>Comment on attachment 417216
Patch for landing

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

&gt;&gt; Source/WebCore/dom/Document.cpp:549
&gt;&gt; +    });
&gt; 
&gt; Is the emptiness check valuable? I’d expect allOf/values to efficiently do nothing for an empty map without an explicit check.

`allOf` return true for an empty map, and we don&apos;t want to allow logging if there are no documents.

&gt;&gt; Source/WebCore/dom/Document.cpp:643
&gt;&gt;      ASSERT_UNUSED(addResult, addResult.isNewEntry);
&gt; 
&gt; Seems like we should move this assertion into Document::addToDocumentsMap as we did with removeFromDocumentsMap.

Good point, moved.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:65
&gt;&gt; +    static String toString(webm::TrackType type)
&gt; 
&gt; I think return value type should be ASCIILiteral, not String. Does that work?

It does, thanks for the suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719130</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-01-12 14:03:58 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Why are we using &quot;const void*&quot; for identifiers instead of something that
&gt; doesn&apos;t require reinterpret_cast. Is there some reason pretending this
&gt; integer is a pointer has value?
&gt; 
The log identifier is a void* because originally I thought that it would be more flexible, but in practice integers are used so we should change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719139</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-12 14:47:55 -0800</bug_when>
    <thetext>Committed r271418: &lt;https://trac.webkit.org/changeset/271418&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417490.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417208</attachid>
            <date>2021-01-07 13:40:31 -0800</date>
            <delta_ts>2021-01-07 15:15:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220423-20210107134031.patch</filename>
            <type>text/plain</type>
            <size>31945</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA3ZmUyOTg1YTk2YjBl
ODVlNjNlNTQwN2I0ZjdiMjU1NjZiMzRmZS4uY2QyMzczNzYxNWI1MDdiNDVmYjdiZTYwZjA3Y2Qy
MzlmNWM5NWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAxLTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFkZCBy
dW50aW1lIGxvZ2dpbmcgdG8gZm9ybWF0IHJlYWRlciBhbmQgV2ViTSBwYXJzZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQyMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzI4OTY2NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgc2hhcmVkIExvZ2dlciB0byBEb2N1bWVudCB0aGF0IGNh
biBiZSB1c2VkIGJ5IHNpbmdsZXRvbnMgb3Igb2JqZWN0cyB0aGF0IGRvbid0CisgICAgICAgIGhh
dmUgYWNjZXNzIHRvIGEgRG9jdW1lbnQuIFRvIGVuc3VyZSB0aGF0IHRoZSBzaGFyZWQgbG9nZ2Vy
IGRvZXNuJ3QgbG9nIGFjdGl2aXR5CisgICAgICAgIGZyb20gYSBwcml2YXRlIHNlc3Npb24sIGl0
IGlzIGRpc2FibGVkIGlmICphbnkqIERvY3VtZW50IGluIHRoZSBwcm9jZXNzIGRvZXNuJ3QKKyAg
ICAgICAgYWxsb3cgbG9nZ2luZy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hhcmVkTG9nZ2VyT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGljU2hhcmVkTG9n
Z2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaGFyZWRMb2dnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbmZpZ3VyZVNoYXJlZExvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkVG9Eb2N1bWVudHNNYXApOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlbW92ZUZyb21Eb2N1bWVudHNNYXApOgorICAgICAgICAoV2ViQ29yZTo6bV9z
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PHdl
Ym06OlRyYWNrVHlwZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2xhc3NOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25TZWdtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBCZWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgor
CiAyMDIxLTAxLTA3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb10gV2ViR0wgaXNuJ3Qgc2hvd24gaW4gbm9uLUFDIG1vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYjQxZmY3YTA5OGYyODk3OWZhNmFiOTQ4NWIwZGYzMTgyMjVkYmEzOC4uNjU1ODQ3
YTUwNmM5ODMwMWFhYmVjZDAxNGU2ODE5MWM1MzNkZDM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAyMS0wMS0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSBBZGQgcnVudGltZSBsb2dnaW5nIHRvIGZvcm1hdCByZWFkZXIgYW5k
IFdlYk0gcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjA0MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyODk2NjU1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgRG9jdW1lbnQ6
OnNoYXJlZExvZ2dlciB0byBsb2cgZm9ybWF0IHJlYWRlciBhbmQgdHJhY2sgcmVhZGVyIHN0YXRl
IGNoYW5nZXMKKyAgICAgICAgYW5kIGVycm9ycy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpu
ZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0NoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0Ojpsb2dDbGFzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJl
YWRlcjo6cGFyc2VCeXRlU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFk
ZXI6OmRpZFBhcnNlVHJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6
OmNvcHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpuZXh0
VHJhY2tSZWFkZXJMb2dJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9XZWJLaXQ6Ok1lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVRyYWNrUmVhZGVyOjpNZWRpYVRyYWNrUmVhZGVyKToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFUcmFja1JlYWRlcjo6ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhVHJhY2tSZWFkZXI6Om1lZGlhVHlwZVN0cmluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhVHJhY2tSZWFkZXI6OmNvcHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhVHJhY2tSZWFkZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFUcmFj
a1JlYWRlcjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9XZWJLaXQ6Ok1lZGlhVHJhY2tSZWFkZXIuaDoKKwogMjAyMS0wMS0wNyAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUHJlcGVuZCAiTWVk
aWEiIHRvIEZvcm1hdFJlYWRlciwgU2FtcGxlQ3Vyc29yLCBhbmQgVHJhY2tSZWFkZXIgY2xhc3Mg
bmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiMDJiYTI0ZmExMDE2MWU3YTJkMzQ4NjczNDlmMmJjZmY1MDNkZGRhLi5jN2Q5
YmJmOGE5YmUxMGFkMTM2NWU2ZmY2NTEwNDljMTk0MzJiYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDI3LDcgKzM0Mjcs
NyBAQAogCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE4NzIxMzA5NzdEM0Mw
MDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MTg3MjE1MDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggKi87IH07CiAJCUE4MTg3
MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg3MjE4MDk3N0QzQzAwMDU4MjZEOSAvKiBO
YW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlBODIzOUUwMTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyMzlERkYwOUIzQ0Y4QTAwQjYw
NjQxIC8qIExvZ2dpbmcuaCAqLzsgfTsKKwkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgyNEI0NjUwRTJFRjJFQTAwODFBN0I3IC8q
IFRleHRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MjRCNDY0MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0
IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi87IH07CiAJ
CUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVBMDlEMTUwOEQwMDBFNjFE
NyAvKiBYTGlua05hbWVzLmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkz
MDBlZTQ2ZDQ2OGRlNTM5ZWVkMzgxYmY4MWFlMDlmN2Q2YzYyNzguLjFiOWFhZWMzMTcwYjBlOThj
ZDE1YzllYmU0ZGEyNzk0MTg4YzE2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTE1
LDYgKzUxNSw1NyBAQCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJh
bWUmIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRfdCBEb2N1bWVu
dDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBzaGFyZWRM
b2dnZXJPd25lcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG93bmVyID0gY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4ob3duZXIpOworfQorCitzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIHN0YXRpY1NoYXJlZExv
Z2dlcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dnZXI+PiBsb2dn
ZXI7CisgICAgcmV0dXJuIGxvZ2dlcjsKK30KKworUmVmUHRyPExvZ2dlcj4mIERvY3VtZW50Ojpz
aGFyZWRMb2dnZXIoKQoreworICAgIGlmICghc3RhdGljU2hhcmVkTG9nZ2VyKCkuZ2V0KCkpIHsK
KyAgICAgICAgc3RhdGljU2hhcmVkTG9nZ2VyKCkgPSBMb2dnZXI6OmNyZWF0ZShzaGFyZWRMb2dn
ZXJPd25lcigpKTsKKyAgICAgICAgY29uZmlndXJlU2hhcmVkTG9nZ2VyKCk7CisgICAgfQorICAg
IAorICAgIHJldHVybiBzdGF0aWNTaGFyZWRMb2dnZXIoKTsKK30KKwordm9pZCBEb2N1bWVudDo6
Y29uZmlndXJlU2hhcmVkTG9nZ2VyKCkKK3sKKyAgICBhdXRvIGxvZ2dlciA9IHN0YXRpY1NoYXJl
ZExvZ2dlcigpLmdldCgpOworICAgIGlmICghbG9nZ2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBib29sIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQgPSAhYWxsRG9jdW1lbnRzTWFwKCkuaXNFbXB0
eSgpICYmIFdURjo6YWxsT2YoYWxsRG9jdW1lbnRzTWFwKCkudmFsdWVzKCksIFtdKGF1dG8qIGRv
Y3VtZW50KSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAg
ICByZXR1cm4gIXBhZ2UgfHwgcGFnZS0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCk7CisgICAgfSk7CisgICAgbG9nZ2VyLT5zZXRFbmFibGVkKHNoYXJlZExvZ2dlck93bmVy
KCksIGFsd2F5c09uTG9nZ2luZ0FsbG93ZWQpOworfQorCithdXRvIERvY3VtZW50OjphZGRUb0Rv
Y3VtZW50c01hcCgpIC0+IERvY3VtZW50c01hcDo6QWRkUmVzdWx0Cit7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBhbGxEb2N1bWVudHNNYXAoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAgICBj
b25maWd1cmVTaGFyZWRMb2dnZXIoKTsKKyAgICAKKyAgICByZXR1cm4gYWRkUmVzdWx0OworfQor
Cit2b2lkIERvY3VtZW50OjpyZW1vdmVGcm9tRG9jdW1lbnRzTWFwKCkKK3sKKyAgICBBU1NFUlQo
YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CisgICAgYWxsRG9jdW1l
bnRzTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFhbGxEb2N1bWVudHNN
YXAoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKKyAgICBjb25maWd1cmVTaGFyZWRMb2dnZXIo
KTsKK30KKwogYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkgLT4gRG9jdW1lbnRzTWFw
JgogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEb2N1bWVudHNNYXA+IGRvY3VtZW50czsK
QEAgLTU4OSw3ICs2NDAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bQogICAgICwgbV9lZGl0
b3IobWFrZVVuaXF1ZVJlZjxFZGl0b3I+KCp0aGlzKSkKICAgICAsIG1fc2VsZWN0aW9uKG1ha2VV
bmlxdWVSZWY8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0g
YWxsRG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBhZGRUb0RvY3VtZW50c01hcCgpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICAvLyBXZSBkZXBlbmQgb24gdGhlIHVybCBn
ZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBzdWJmcmFtZXMsIGJ1dCB3ZQpAQCAtNjQ5LDggKzcw
MCw4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIH0KICNlbmRpZgogCi0gICAgQVNTRVJU
KGFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwotICAgIGFsbERvY3Vt
ZW50c01hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIHJlbW92ZUZyb21Eb2N1bWVudHNN
YXAoKTsKKwogICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGZyb20gdGhlIGNvbnRleHRzIG1hcCB2
ZXJ5IGVhcmx5IGluIHRoZSBkZXN0cnVjdG9yIHNvIHRoYXQgY2FsbGluZyBwb3N0VGFzaygpIG9u
IHRoaXMgRG9jdW1lbnQgZnJvbSBhbm90aGVyIHRocmVhZCBpcyBzYWZlLgogICAgIHJlbW92ZUZy
b21Db250ZXh0c01hcCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk0NjRkN2VhYTQ1OTQ4
NTEwZmNhZjNlMzVmZjhlNzIyY2U3NWNjYzcuLmE1YjEyNDU3MmExOGQ4NzY3N2NlY2E0OGM1Yzdi
OTJhNmVkYWUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNDkyLDYgKzE0OTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNYXlCZURldGFjaGVkRnJvbUZyYW1lKGJvb2wgbWF5QmVEZXRh
Y2hlZEZyb21GcmFtZSkgeyBtX21heUJlRGV0YWNoZWRGcm9tRnJhbWUgPSBtYXlCZURldGFjaGVk
RnJvbUZyYW1lOyB9CiAKICAgICBMb2dnZXImIGxvZ2dlcigpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgc2hhcmVkTG9nZ2VyKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRyPFN0cmluZ0NhbGxiYWNr
PiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKQEAgLTE3MTgsNiArMTcxOSwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNCb2R5UG90ZW50aWFsbHlTY3JvbGxhYmxlKEhUTUxCb2R5RWxlbWVudCYpOwog
CiAgICAgdm9pZCBkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBXVEZMb2dMZXZl
bCwgVmVjdG9yPEpTT05Mb2dWYWx1ZT4mJikgZmluYWw7CisgICAgc3RhdGljIHZvaWQgY29uZmln
dXJlU2hhcmVkTG9nZ2VyKCk7CisKKyAgICBEb2N1bWVudHNNYXA6OkFkZFJlc3VsdCBhZGRUb0Rv
Y3VtZW50c01hcCgpOworICAgIHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgpOwogCiAgICAg
Y29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCmluZGV4IDU1ODQ1MGU0Mjc4OGIzM2EwMGEwMzE4ODllYTEyNjE4OTFi
YzJkNTMuLjFlOTQ4NjRmMjdjYTJiMjMxMDVmNzhhY2U5NjRhZmE1OWEwNjlkZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC02MSw2ICs2MSwyMiBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAordGVtcGxh
dGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJhY2tUeXBlPiB7CisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a1ZpZGVvOiByZXR1cm4g
IlZpZGVvIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a0F1ZGlvOiByZXR1cm4g
IkF1ZGlvIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a0NvbXBsZXg6IHJldHVy
biAiQ29tcGxleCJfczsKKyAgICAgICAgY2FzZSB3ZWJtOjpUcmFja1R5cGU6OmtMb2dvOiByZXR1
cm4gIkxvZ28iX3M7CisgICAgICAgIGNhc2Ugd2VibTo6VHJhY2tUeXBlOjprU3VidGl0bGU6IHJl
dHVybiAiU3VidGl0bGUiX3M7CisgICAgICAgIGNhc2Ugd2VibTo6VHJhY2tUeXBlOjprQnV0dG9u
czogcmV0dXJuICJCdXR0b25zIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a0Nv
bnRyb2w6IHJldHVybiAiQ29udHJvbCJfczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIlVu
a25vd24iX3M7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2Vi
bTo6SWQ+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKHdlYm06OklkIGlkKQogICAgIHsK
QEAgLTI0MywxMCArMjU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgV1RGTG9nQ2hhbm5l
bCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhU291cmNlOyB9CitzdGF0aWMgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CiBzdGF0aWMgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIlNvdXJjZUJ1ZmZlclBhcnNlcldlYk0iOyB9
Ci0jZW5kaWYKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Uga0NNVmlkZW9Db2RlY1R5cGVf
VlA5IGlzIGFkZGVkIHRvIENNRm9ybWF0RGVzY3JpcHRpb24uaAogY29uc3RleHByIENNVmlkZW9D
b2RlY1R5cGUga0NNVmlkZW9Db2RlY1R5cGVfVlA5IHsgJ3ZwMDknIH07CkBAIC02MjcsNyArNjQx
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNlZ21lbnQmJiBz
ZWdtZW50LCBBcHBlbmRGbGFncyBhcHBlbmRGbGEKICAgICAgICAgLy8gcG9zaXRpb24gb2YgdGhl
IGluY29taW5nIEVibWwgRWxlbWVudCwgYW5kIHJlc2V0IHRoZSBwYXJzZXIsIHdoaWNoIHdpbGwg
Y2F1c2UgdGhlIEVibWwgZWxlbWVudCB0byBiZQogICAgICAgICAvLyBwYXJzZWQgYXMgYSB0b3At
bGV2ZWwgZWxlbWVudCwgcmF0aGVyIHRoYW4gYXMgYSBjaGlsZCBvZiB0aGUgU2VnbWVudC4KICAg
ICAgICAgaWYgKCFtX3JlYWRlci0+cmV3aW5kVG8oKm1fcmV3aW5kVG9Qb3NpdGlvbikpIHsKLSAg
ICAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFpbGVkIHRv
IHJld2luZCByZWFkZXIsIGJhaWxpbmciKTsKKyAgICAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiZmFpbGVkIHRvIHJld2luZCByZWFkZXIiKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTY4OCwxMyArNzAyLDExIEBAIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jdXJyZW50QmxvY2sucmVzZXQo
KTsKIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7CiAgICAgbV9s
b2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKIH0KLSNlbmRpZgogCiBhdXRvIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90IHRyYWNrTnVt
YmVyKSAtPiBUcmFja0RhdGEqCiB7CkBAIC03MjAsMTUgKzczMiwxMyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBt
ZXRhZGF0YSwgQQogCiAgICAgaWYgKChtX3N0YXRlID09IFN0YXRlOjpOb25lICYmIG1ldGFkYXRh
LmlkICE9IElkOjprRWJtbCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1NlZ21lbnQpCiAgICAgICAg
IHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2VnbWVudCAmJiBtZXRhZGF0YS5pZCAhPSBJ
ZDo6a0luZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtUcmFja3MgJiYgbWV0YWRhdGEuaWQgIT0g
SWQ6OmtDbHVzdGVyKSkgewotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgInN0YXRlKCIsIG1fc3RhdGUsICIpLCBpZCgiLCBtZXRhZGF0YS5pZCwgIiksIHBvc2l0
aW9uKCIsIG1ldGFkYXRhLnBvc2l0aW9uLCAiKSwgaGVhZGVyU2l6ZSgiLCBtZXRhZGF0YS5oZWFk
ZXJfc2l6ZSwgIiksIHNpemUoIiwgbWV0YWRhdGEuc2l6ZSwgIiksIHNraXBwaW5nIik7CisgICAg
ICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJzdGF0ZSgiLCBtX3N0YXRl
LCAiKSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBwb3NpdGlvbigiLCBtZXRhZGF0YS5wb3NpdGlv
biwgIiksIGhlYWRlclNpemUoIiwgbWV0YWRhdGEuaGVhZGVyX3NpemUsICIpLCBzaXplKCIsIG1l
dGFkYXRhLnNpemUsICIpLCBza2lwcGluZyIpOwogCiAgICAgICAgICphY3Rpb24gPSBBY3Rpb246
OmtTa2lwOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKICAg
ICB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBhdXRvIG9sZFN0YXRlID0gbV9z
dGF0ZTsKLSNlbmRpZgogCiAgICAgaWYgKG1ldGFkYXRhLmlkID09IElkOjprRWJtbCkKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nRWJtbDsKQEAgLTc0Myw3ICs3NTMsNyBAQCBTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgQQogICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09IElkOjprQ2x1
c3RlcikKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nQ2x1c3RlcjsKIAotICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAic3RhdGUoIiwgb2xkU3RhdGUsICIt
PiIsIG1fc3RhdGUsICIpLCBpZCgiLCBtZXRhZGF0YS5pZCwgIiksIHBvc2l0aW9uKCIsIG1ldGFk
YXRhLnBvc2l0aW9uLCAiKSwgaGVhZGVyU2l6ZSgiLCBtZXRhZGF0YS5oZWFkZXJfc2l6ZSwgIiks
IHNpemUoIiwgbWV0YWRhdGEuc2l6ZSwgIikiKTsKKyAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAic3RhdGUoIiwgb2xkU3RhdGUsICItPiIsIG1fc3RhdGUsICIpLCBpZCgi
LCBtZXRhZGF0YS5pZCwgIiksIHBvc2l0aW9uKCIsIG1ldGFkYXRhLnBvc2l0aW9uLCAiKSwgaGVh
ZGVyU2l6ZSgiLCBtZXRhZGF0YS5oZWFkZXJfc2l6ZSwgIiksIHNpemUoIiwgbWV0YWRhdGEuc2l6
ZSwgIikiKTsKIAogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQpA
QCAtNzUxLDEwICs3NjEsOSBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVt
ZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQQogU3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEVuZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1l
dGFkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5GT19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBhdXRvIG9sZFN0YXRlID0gbV9zdGF0ZTsKLSNlbmRpZgogCiAgICAgaWYgKG1ldGFkYXRhLmlk
ID09IElkOjprRWJtbCB8fCBtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCiAgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6Tm9uZTsKQEAgLTc2Myw3ICs3NzIsNyBAQCBTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEpCiAgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtUcmFja0VudHJ5KQogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFja3M7CiAKLSAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgInN0YXRlKCIsIG9sZFN0YXRlLCAiLT4iLCBtX3N0YXRlLCAi
KSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBzaXplKCIsIG1ldGFkYXRhLnNpemUsICIpIik7Cisg
ICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgInN0YXRlKCIsIG9sZFN0YXRl
LCAiLT4iLCBtX3N0YXRlLCAiKSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBzaXplKCIsIG1ldGFk
YXRhLnNpemUsICIpIik7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKIH0KQEAgLTc3MSw2ICs3ODAsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEpCiBTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIGNvbnN0IEVibWwmIGVibWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAg
ICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKKwogICAgIGlmIChlYm1sLmRv
Y190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1sLmRvY190eXBlLnZhbHVlKCkuY29tcGFyZSgid2Vi
bSIpKQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFs
aWREb2NUeXBlKSk7CiAKQEAgLTc4Myw4ICs3OTQsMTAgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uRWJtbChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBF
Ym0KIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbihjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKIHsKICAgICBVTlVTRURf
UEFSQU0obWV0YWRhdGEpOworICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIp
OworCiAgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkKSB7Ci0gICAg
ICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgU2Vn
bWVudCBiZWZvcmUgRW1ibCwgYmFpbGluZyIpOworICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIFNlZ21lbnQgYmVmb3JlIEVtYmwiKTsKICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNl
Z21lbnQpKTsKICAgICB9CiAKQEAgLTc5OSw4ICs4MTIsMTAgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIEEKIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKIHsKICAgICBVTlVTRURfUEFS
QU0obWV0YWRhdGEpOworICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwor
CiAgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8ICFtX2luaXRp
YWxpemF0aW9uU2VnbWVudCkgewotICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIkVuY291bnRlcmVkIEluZm8gb3V0c2lkZSBTZWdtZW50LCBiYWlsaW5nIik7Cisg
ICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQg
SW5mbyBvdXRzaWRlIFNlZ21lbnQiKTsKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNv
ZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKICAgICB9CiAKQEAgLTgxNCw3ICs4
MjksOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEluZgogU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNv
bnN0IENsdXN0ZXImIGNsdXN0ZXIsIEFjdGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJB
TShtZXRhZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNsdXN0ZXIpOworICAgIElORk9fTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIpOworCiAgICAgQVNTRVJUKGFjdGlvbik7CiAgICAgaWYg
KCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5
KTsKQEAgLTg0OSwyMCArODY1LDI5IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
blRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgYXV0
byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUudmFsdWUoKTsKICAgICBTdHJpbmcg
Y29kZWNJZCB7IHRyYWNrRW50cnkuY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNpZ25lZCl0
cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKIAorICAgIEFMV0FZU19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgdHJhY2tUeXBlLCAiLCBjb2RlYyAiLCBjb2RlY0lk
KTsKKwogICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8gJiYgIXN1cHBvcnRl
ZFZpZGVvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKLSAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCB2aWRlbyBj
b2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICBFUlJPUl9MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIHZpZGVv
IGNvZGVjIElEICIsIGNvZGVjSWQpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29k
ZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlkZW9Db2RlYykpOwogICAgIH0KIAogICAgIGlmICh0
cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8gJiYgIXN1cHBvcnRlZEF1ZGlvQ29kZWNzKCku
Y29udGFpbnMoY29kZWNJZCkpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCBhdWRpbyBjb2RlYyBJRCBcIiIsIGNv
ZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIGF1ZGlvIGNvZGVjIElEICIsIGNv
ZGVjSWQpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVu
c3VwcG9ydGVkQXVkaW9Db2RlYykpOwogICAgIH0KIAotICAgIGlmICh0cmFja1R5cGUgPT0gVHJh
Y2tUeXBlOjprVmlkZW8pCi0gICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1Ry
YWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJh
Y2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNr
RW50cnkpKSB9KTsKLSAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8p
Ci0gICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQoeyBN
ZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKyAg
ICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKSB7CisgICAgICAgIGF1dG8gdHJh
Y2sgPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkp
KTsKKyAgICAgICAgaWYgKG1fbG9nZ2VyKQorICAgICAgICAgICAgdHJhY2stPnNldExvZ2dlcigq
bV9sb2dnZXIsIExvZ2dlckhlbHBlcjo6Y2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmll
ciwgKyttX25leHRDaGlsZElkZW50aWZpZXIpKTsKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVhdGUo
VHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFdURk1vdmUodHJhY2spIH0pOworICAgIH0gZWxzZSBp
ZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKSB7CisgICAgICAgIGF1dG8gdHJhY2sg
PSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKTsK
KyAgICAgICAgaWYgKG1fbG9nZ2VyKQorICAgICAgICAgICAgdHJhY2stPnNldExvZ2dlcigqbV9s
b2dnZXIsIExvZ2dlckhlbHBlcjo6Y2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwg
KyttX25leHRDaGlsZElkZW50aWZpZXIpKTsKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21l
bnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVhdGUoVHJh
Y2tFbnRyeSh0cmFja0VudHJ5KSksIFdURk1vdmUodHJhY2spIH0pOworICAgIH0KIAogICAgIFN0
cmluZ1ZpZXcgY29kZWNTdHJpbmcgeyB0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkuZGF0YSgp
LCAodW5zaWduZWQpdHJhY2tFbnRyeS5jb2RlY19pZC52YWx1ZSgpLmxlbmd0aCgpIH07CiAjaWYg
RU5BQkxFKFZQOSkKQEAgLTg5Nyw2ICs5MjIsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbgog
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tCZWdpbihjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBCbG9jayYgYmxvY2ssIEFjdGlvbiogYWN0
aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5GT19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQoYWN0aW9uKTsKICAgICBpZiAoIWFj
dGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwpA
QCAtOTEyLDYgKzkzOSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsCiB7CiAgICAgVU5VU0VE
X1BBUkFNKG1ldGFkYXRhKTsKICAgICBVTlVTRURfUEFSQU0oYmxvY2spOworICAgIElORk9fTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgbV9jdXJyZW50QmxvY2sgPSBXVEY6
Om51bGxvcHQ7CiAKQEAgLTkyMSw2ICs5NDksOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25CbG9ja0VuZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLAog
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYgYmxvY2ss
IEFjdGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5G
T19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQoYWN0aW9uKTsK
ICAgICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91
Z2hNZW1vcnkpOwpAQCAtOTM1LDYgKzk2NSw4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtCiB3
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25z
dCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYgYmxvY2spCiB7
CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKKwogICAgIFVOVVNFRF9QQVJBTShibG9jayk7CiAKICAgICBtX2N1cnJl
bnRCbG9jayA9IFdURjo6bnVsbG9wdDsKQEAgLTk0NSw2ICs5NzcsOCBAQCB3ZWJtOjpTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25zdCBFbGVtZW50TWV0
YWRhdGEmIG1ldAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tH
cm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIHdlYm06OkFj
dGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5GT19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQoYWN0aW9uKTsKICAg
ICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hN
ZW1vcnkpOwpAQCAtOTU3LDYgKzk5MSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBVTlVTRURfUEFSQU0oYmxvY2tHcm91cCk7
CisgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKQEAgLTk2Niw4ICsxMDAxLDEwIEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKIAotICAgIGlmICghbV9jdXJyZW50Qmxv
Y2spCisgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgeworICAgICAgICBFUlJPUl9MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIm5vIGN1cnJlbnQgYmxvY2shIik7CiAgICAgICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CisgICAgfQogCiAgICAgYXV0byog
YmxvY2sgPSBXVEY6OnN3aXRjaE9uKCptX2N1cnJlbnRCbG9jaywgW10oQmxvY2smIGJsb2NrKSB7
CiAgICAgICAgIHJldHVybiAmYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5k
ZXggYjA4Y2I4M2ZhYjUyYWZmOTliZmFiZDViZGI3YzcyMDY0ODg3YWI1NS4uNmI2MmRjMDY1OWU2
Yzg2MTEyZTNkYWY0NjViYTY0MWUzOTlmZDQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uaApAQCAtMjcwLDYgKzI3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Y29uc3QgV1RG
OjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51
bGxwdHIgfTsKKyAgICB1aW50NjRfdCBtX25leHRDaGlsZElkZW50aWZpZXIgeyAwIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCBkMTE3OGMyNWI0ZjIyZmFj
ODVjNmVjMDk2ZWMwMTcyM2ZhYjY2NzAzLi45ZGNmMGI5NzJjM2Y2YzI0MjBmMGM4NWU3NGMwYTM3
NTNkY2Q0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTMxLDExICsz
MSwxNCBAQAogI2luY2x1ZGUgIk1lZGlhVHJhY2tSZWFkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvVHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRl
eHRUcmFja1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xvZ2dpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lu
Y2x1ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5oPgpAQCAtNDcsNiArNTAsMTUg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCit7
CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigr
K2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgp
IHsgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOyB9CitzdGF0aWMgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgeyByZXR1cm4gIkZvcm1hdFJlYWRlciI7IH0KKwogQ01CYXNlQ2xhc3NJRCBNZWRp
YUZvcm1hdFJlYWRlcjo6d3JhcHBlckNsYXNzSUQoKQogewogICAgIHJldHVybiBNVFBsdWdpbkZv
cm1hdFJlYWRlckdldENsYXNzSUQoKTsKQEAgLTk3LDYgKzEwOSwxNCBAQCB2b2lkIE1lZGlhRm9y
bWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJl
Zj4mJiBieXRlUwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKCFtX2xvZ2dlcikg
eworICAgICAgICBtX2xvZ2dlciA9IERvY3VtZW50OjpzaGFyZWRMb2dnZXIoKTsKKyAgICAgICAg
bV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIHBhcnNlci0+c2V0TG9nZ2VyKCptX2xvZ2dlciwg
bV9sb2dJZGVudGlmaWVyKTsKKwogICAgIC8vIFNldCBhIG1pbmltdW0gYXVkaW8gc2FtcGxlIGR1
cmF0aW9uIG9mIDAgc28gdGhlIHBhcnNlciBjcmVhdGVzIGluZGl2aXNpYmxlIHNhbXBsZXMgd2l0
aCBieXRlIHNvdXJjZSByYW5nZXMuCiAgICAgcGFyc2VyLT5zZXRNaW5pbXVtQXVkaW9TYW1wbGVE
dXJhdGlvbigwKTsKIApAQCAtMTQwLDYgKzE2MCwxMCBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVy
OjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
bgogICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpKTsKICAgICBBU1NFUlQobV90cmFj
a1JlYWRlcnMuaXNFbXB0eSgpKTsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7Cisg
ICAgaWYgKGVycm9yQ29kZSkKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsIGVycm9y
Q29kZSk7CisKICAgICBtX3BhcnNlVHJhY2tzU3RhdHVzID0gZXJyb3JDb2RlID8ga01UUGx1Z2lu
Rm9ybWF0UmVhZGVyRXJyb3JfUGFyc2luZ0ZhaWx1cmUgOiBub0VycjsKICAgICBtX2R1cmF0aW9u
ID0gV1RGTW92ZShzZWdtZW50LmR1cmF0aW9uKTsKIApAQCAtMTg2LDYgKzIxMCw3IEBAIHZvaWQg
TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlPiYm
IG1lZGlhU2FtcGxlLCB1aW50CiB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpmaW5pc2hQYXJzaW5n
KFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYgcGFyc2VyKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcGFyc2VUcmFja3NMb2NrKTsKICAgICBBU1NFUlQobV9wYXJzZVRy
YWNrc1N0YXR1cy5oYXNWYWx1ZSgpKTsKQEAgLTIxMyw2ICsyMzgsNyBAQCBPU1N0YXR1cyBNZWRp
YUZvcm1hdFJlYWRlcjo6Y29weVByb3BlcnR5KENGU3RyaW5nUmVmIGtleSwgQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdAogICAgICAgICB9CiAgICAgfQogCisgICAgRVJST1JfTE9HKExPR0lERU5USUZJ
RVIsICJhc2tlZCBmb3IgdW5zdXBwb3J0ZWQgcHJvcGVydHkgIiwgU3RyaW5nKGtleSkpOwogICAg
IHJldHVybiBrQ01CYXNlT2JqZWN0RXJyb3JfVmFsdWVOb3RBdmFpbGFibGU7CiB9CiAKQEAgLTIz
NCw2ICsyNjAsMTIgQEAgT1NTdGF0dXMgTWVkaWFGb3JtYXRSZWFkZXI6OmNvcHlUcmFja0FycmF5
KENGQXJyYXlSZWYqIHRyYWNrQXJyYXlDb3B5KQogICAgIHJldHVybiBub0VycjsKIH0KIAorY29u
c3Qgdm9pZCogTWVkaWFGb3JtYXRSZWFkZXI6Om5leHRUcmFja1JlYWRlckxvZ0lkZW50aWZpZXIo
KSBjb25zdAoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGlsZElkZW50aWZpZXJTZWVkOworICAg
IHJldHVybiBMb2dnZXJIZWxwZXI6OmNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrY2hpbGRJZGVudGlmaWVyU2VlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmgKaW5kZXggMDdhNmI5NzkxZjZhY2UyZjRlMGE4NzFlYTZmZDNhZmFhMDVmZjJmMC4uNjA4
MDg4NTBmMDI5ZGM0MjY5ZmZjZjFiOWY4NjgwMTkxYTc3NGVmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAKIERFQ0xBUkVfQ09SRV9N
RURJQV9UUkFJVFMoRm9ybWF0UmVhZGVyKTsKIApAQCAtNTUsNiArNTYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdGFydE9uTWFpblRocmVhZChNVFBsdWdpbkJ5dGVTb3VyY2VSZWYpOwogICAgIGNv
bnN0IE1lZGlhVGltZSYgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAK
KyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0
dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRUcmFja1JlYWRlckxv
Z0lkZW50aWZpZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUZvcm1h
dFJlYWRlcihBbGxvY2F0b3ImJik7CiAKQEAgLTcxLDYgKzc1LDggQEAgcHJpdmF0ZToKIAogICAg
IC8vIFdyYXBwZXJDbGFzcwogICAgIE9TU3RhdHVzIGNvcHlUcmFja0FycmF5KENGQXJyYXlSZWYq
KTsKKyAgICAKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CiAKICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVm
PiBtX2J5dGVTb3VyY2U7CiAgICAgQ29uZGl0aW9uIG1fcGFyc2VUcmFja3NDb25kaXRpb247CkBA
IC03OCw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CiAgICAg
T3B0aW9uYWw8T1NTdGF0dXM+IG1fcGFyc2VUcmFja3NTdGF0dXM7CiAgICAgVmVjdG9yPFJlZjxN
ZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnM7CisgICAgUmVmUHRyPExvZ2dlcj4gbV9s
b2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogfTsKIAogY29uc3RleHBy
IE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6OndyYXBw
ZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAKaW5kZXggZmIxY2QxZGUwZWY5
MDBjZmVjMDhkMjgwZjQzYjRkZWEyODkzYTQ1My4uMDhiMzRkZGY1OTA1MmYwY2Q5MzMxMzI4ZDkz
Zjg5ZmNmOWIxZDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQ3Vyc29yLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdWRpb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlTWFwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgpAQCAtNzMsOSArNzQsMTIgQEAg
TWVkaWFUcmFja1JlYWRlcjo6TWVkaWFUcmFja1JlYWRlcihBbGxvY2F0b3ImJiBhbGxvY2F0b3Is
IGNvbnN0IE1lZGlhRm9ybWF0UmVhZGUKICAgICAsIG1fdHJhY2tJRCh0cmFja0lEKQogICAgICwg
bV9tZWRpYVR5cGUobWVkaWFUeXBlKQogICAgICwgbV9kdXJhdGlvbihmb3JtYXRSZWFkZXIuZHVy
YXRpb24oKSkKKyAgICAsIG1fbG9nZ2VyKGZvcm1hdFJlYWRlci5sb2dnZXIoKSkKKyAgICAsIG1f
bG9nSWRlbnRpZmllcihmb3JtYXRSZWFkZXIubmV4dFRyYWNrUmVhZGVyTG9nSWRlbnRpZmllcigp
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBtZWRpYVR5cGVTdHJpbmcoKSwgIiAiLCB0cmFja0lEKTsKICAgICBpZiAoZW5h
YmxlZCkKICAgICAgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkLnZhbHVlKCkgPyBFbmFibGVkOjpU
cnVlIDogRW5hYmxlZDo6RmFsc2U7CiB9CkBAIC0xMTIsMTUgKzExNiwzNyBAQCB2b2lkIE1lZGlh
VHJhY2tSZWFkZXI6OndhaXRGb3JTYW1wbGUoRnVuY3Rpb248Ym9vbChTYW1wbGVNYXAmLCBib29s
KT4mJiBwcmVkaWNhdAogdm9pZCBNZWRpYVRyYWNrUmVhZGVyOjpmaW5pc2hQYXJzaW5nKCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZVN0b3JhZ2VMb2NrKTsK
ICAgICBpZiAoIW1fc2FtcGxlU3RvcmFnZSkKICAgICAgICAgbV9zYW1wbGVTdG9yYWdlID0gbWFr
ZVVuaXF1ZTxTYW1wbGVTdG9yYWdlPigpOwogICAgIG1fc2FtcGxlU3RvcmFnZS0+aGFzQWxsU2Ft
cGxlcyA9IHRydWU7Ci0gICAgaWYgKG1faXNFbmFibGVkID09IEVuYWJsZWQ6OlVua25vd24pCisg
ICAgaWYgKG1faXNFbmFibGVkID09IEVuYWJsZWQ6OlVua25vd24pIHsKICAgICAgICAgbV9pc0Vu
YWJsZWQgPSBtX3NhbXBsZVN0b3JhZ2UtPnNhbXBsZU1hcC5lbXB0eSgpID8gRW5hYmxlZDo6RmFs
c2UgOiBFbmFibGVkOjpUcnVlOworICAgICAgICBpZiAobV9pc0VuYWJsZWQgPT0gRW5hYmxlZDo6
RmFsc2UpCisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5nIGVt
cHR5ICIsIG1lZGlhVHlwZVN0cmluZygpLCAiIHRyYWNrIik7CisgICAgfQogICAgIG1fc2FtcGxl
U3RvcmFnZUNvbmRpdGlvbi5ub3RpZnlBbGwoKTsKIH0KIAorY29uc3QgY2hhciogTWVkaWFUcmFj
a1JlYWRlcjo6bWVkaWFUeXBlU3RyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fbWVkaWFU
eXBlKSB7CisgICAgY2FzZSBrQ01NZWRpYVR5cGVfVmlkZW86CisgICAgICAgIHJldHVybiAidmlk
ZW8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTU1lZGlhVHlwZV9BdWRpbzoKKyAgICAg
ICAgcmV0dXJuICJhdWRpbyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga0NNTWVkaWFUeXBl
X1RleHQ6CisgICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gInVua25vd24iOworfQorCiBPU1N0
YXR1cyBNZWRpYVRyYWNrUmVhZGVyOjpjb3B5UHJvcGVydHkoQ0ZTdHJpbmdSZWYga2V5LCBDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIHZvaWQqIGNvcGllZFZhbHVlKQogewogICAgIC8vIERvbid0
IGJsb2NrIHdhaXRpbmcgZm9yIG1lZGlhIGlmIHRoZSB3ZSBrbm93IHRoZSBlbmFibGVkIHN0YXRl
LgpAQCAtMTM3LDE1ICsxNjMsMjAgQEAgT1NTdGF0dXMgTWVkaWFUcmFja1JlYWRlcjo6Y29weVBy
b3BlcnR5KENGU3RyaW5nUmVmIGtleSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG8KICAgICBhdXRv
JiBzYW1wbGVNYXAgPSBtX3NhbXBsZVN0b3JhZ2UtPnNhbXBsZU1hcDsKIAogICAgIGlmIChDRkVx
dWFsKGtleSwgUEFMOjpnZXRfTWVkaWFUb29sYm94X2tNVFBsdWdpblRyYWNrUmVhZGVyUHJvcGVy
dHlfRW5hYmxlZCgpKSkgewotICAgICAgICBpZiAobV9pc0VuYWJsZWQgPT0gRW5hYmxlZDo6VW5r
bm93bikKKyAgICAgICAgaWYgKG1faXNFbmFibGVkID09IEVuYWJsZWQ6OlVua25vd24pIHsKICAg
ICAgICAgICAgIG1faXNFbmFibGVkID0gc2FtcGxlTWFwLmVtcHR5KCkgPyBFbmFibGVkOjpGYWxz
ZSA6IEVuYWJsZWQ6OlRydWU7CisgICAgICAgICAgICBpZiAobV9pc0VuYWJsZWQgPT0gRW5hYmxl
ZDo6RmFsc2UpCisgICAgICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJpZ25v
cmluZyBlbXB0eSAiLCBtZWRpYVR5cGVTdHJpbmcoKSwgIiB0cmFjayIpOworICAgICAgICB9CiAK
ICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8Q0ZCb29sZWFuUmVmKj4oY29waWVkVmFsdWUpID0g
cmV0YWluUHRyKG1faXNFbmFibGVkID09IEVuYWJsZWQ6OlRydWUgPyBrQ0ZCb29sZWFuVHJ1ZSA6
IGtDRkJvb2xlYW5GYWxzZSkubGVha1JlZigpOwogICAgICAgICByZXR1cm4gbm9FcnI7CiAgICAg
fQogCi0gICAgaWYgKHNhbXBsZU1hcC5lbXB0eSgpKQorICAgIGlmIChzYW1wbGVNYXAuZW1wdHko
KSkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInNhbXBsZSB0YWJsZSBlbXB0
eSB3aGVuIGFza2VkIGZvciAiLCBTdHJpbmcoa2V5KSk7CiAgICAgICAgIHJldHVybiBrQ01CYXNl
T2JqZWN0RXJyb3JfVmFsdWVOb3RBdmFpbGFibGU7CisgICAgfQogCiAgICAgYXV0byYgbGFzdFNh
bXBsZSA9ICpzYW1wbGVNYXAuZGVjb2RlT3JkZXIoKS5yYmVnaW4oKS0+c2Vjb25kOwogCkBAIC0x
NjIsNiArMTkzLDcgQEAgT1NTdGF0dXMgTWVkaWFUcmFja1JlYWRlcjo6Y29weVByb3BlcnR5KENG
U3RyaW5nUmVmIGtleSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG8KICAgICAgICAgcmV0dXJuIG5v
RXJyOwogICAgIH0KIAorICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiYXNrZWQgZm9yIHVu
c3VwcG9ydGVkIHByb3BlcnR5ICIsIFN0cmluZyhrZXkpKTsKICAgICByZXR1cm4ga0NNQmFzZU9i
amVjdEVycm9yX1ZhbHVlTm90QXZhaWxhYmxlOwogfQogCkBAIC0xOTksNiArMjMxLDExIEBAIE9T
U3RhdHVzIE1lZGlhVHJhY2tSZWFkZXI6OmNyZWF0ZUN1cnNvckF0TGFzdFNhbXBsZUluRGVjb2Rl
T3JkZXIoTVRQbHVnaW5TYW1wbGVDCiAgICAgcmV0dXJuIG5vRXJyOwogfQogCitXVEZMb2dDaGFu
bmVsJiBNZWRpYVRyYWNrUmVhZGVyOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViQ29yZTo6TG9nTWVkaWE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5oCmlu
ZGV4IGYxNjViNDhmZGY3M2E0MDQ3NDkwYmZhZWNmNmFlNWI4MjYzYjA1ZmMuLmFhMjgwZTIwZmI0
NWRlZWU2NzU5Mzc4MmUzNDc1ZDI3Yzg1YTYzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIu
aApAQCAtOTAsNiArOTAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNBbGxTYW1wbGVz
IHsgZmFsc2UgfTsKICAgICB9OwogCisgICAgY29uc3QgY2hhciogbWVkaWFUeXBlU3RyaW5nKCkg
Y29uc3Q7CisgICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nZ2VyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4g
IlRyYWNrUmVhZGVyIjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVs
KCkgY29uc3Q7CisKICAgICBlbnVtIEVuYWJsZWQgOiB1aW50OF90IHsgVW5rbm93biwgRmFsc2Us
IFRydWUgfTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1fdHJhY2tJRDsKQEAgLTk5LDYgKzEwNSw4
IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb25kaXRpb24gbV9zYW1wbGVTdG9yYWdlQ29uZGl0
aW9uOwogICAgIG11dGFibGUgTG9jayBtX3NhbXBsZVN0b3JhZ2VMb2NrOwogICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPFNhbXBsZVN0b3JhZ2U+IG1fc2FtcGxlU3RvcmFnZTsKKyAgICBSZWY8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CiB9OwogCiBjb25zdGV4cHIgTWVkaWFUcmFja1JlYWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhVHJh
Y2tSZWFkZXI6OndyYXBwZXJDbGFzcygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417216</attachid>
            <date>2021-01-07 15:15:40 -0800</date>
            <delta_ts>2021-01-12 13:58:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-220423-20210107151539.patch</filename>
            <type>text/plain</type>
            <size>31843</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA3ZmUyOTg1YTk2YjBl
ODVlNjNlNTQwN2I0ZjdiMjU1NjZiMzRmZS4uYWI3YTNiY2NiN2ViOThmZWE4NTkwNmMxZTU2MTZl
NTIwNGYyNjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAxLTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFkZCBy
dW50aW1lIGxvZ2dpbmcgdG8gZm9ybWF0IHJlYWRlciBhbmQgV2ViTSBwYXJzZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQyMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzI4OTY2NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rl
cy4KKworICAgICAgICBBZGQgYSBzaGFyZWQgTG9nZ2VyIHRvIERvY3VtZW50IHRoYXQgY2FuIGJl
IHVzZWQgYnkgc2luZ2xldG9ucyBvciBvYmplY3RzIHRoYXQgZG9uJ3QKKyAgICAgICAgaGF2ZSBh
Y2Nlc3MgdG8gYSBEb2N1bWVudC4gVG8gZW5zdXJlIHRoYXQgdGhlIHNoYXJlZCBsb2dnZXIgZG9l
c24ndCBsb2cgYWN0aXZpdHkKKyAgICAgICAgZnJvbSBhIHByaXZhdGUgc2Vzc2lvbiwgaXQgaXMg
ZGlzYWJsZWQgaWYgKmFueSogRG9jdW1lbnQgaW4gdGhlIHByb2Nlc3MgZG9lc24ndAorICAgICAg
ICBhbGxvdyBsb2dnaW5nLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRMb2dnZXJPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpzdGF0aWNTaGFyZWRMb2dnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNoYXJlZExvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y29uZmlndXJlU2hhcmVkTG9nZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphZGRUb0RvY3VtZW50c01hcCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlRnJvbURvY3VtZW50c01hcCk6CisgICAgICAgIChXZWJDb3JlOjptX3NlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8d2VibTo6
VHJhY2tUeXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2dDbGFzc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzZXRMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEJlZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tHcm91cEVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisKIDIw
MjEtMDEtMDcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAg
ICAgICAgW1dpbkNhaXJvXSBXZWJHTCBpc24ndCBzaG93biBpbiBub24tQUMgbW9kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBiNDFmZjdhMDk4ZjI4OTc5ZmE2YWI5NDg1YjBkZjMxODIyNWRiYTM4Li5jMDUzZmE5NTM1
Y2U3ZTM4YzY1NzljZmUzMzIyYTg5NzZlZmI5OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDIxLTAxLTA3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNYWNdIEFkZCBydW50aW1lIGxvZ2dpbmcgdG8gZm9ybWF0IHJlYWRlciBhbmQgV2Vi
TSBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDQyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI4OTY2NTU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICBVc2UgdGhlIERvY3VtZW50OjpzaGFyZWRM
b2dnZXIgdG8gbG9nIGZvcm1hdCBhbmQgdHJhY2sgcmVhZGVyIHN0YXRlIGNoYW5nZXMKKyAgICAg
ICAgYW5kIGVycm9ycy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXh0TG9nSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0NoYW5uZWwpOgorICAgICAgICAoV2ViS2l0Ojpsb2dD
bGFzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRl
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJh
Y2tzKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFGb3JtYXRSZWFkZXI6OmNvcHlQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpuZXh0VHJhY2tSZWFkZXJMb2dJ
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9XZWJLaXQ6Ok1lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVRyYWNrUmVhZGVyOjpNZWRpYVRyYWNrUmVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFU
cmFja1JlYWRlcjo6ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhVHJhY2tS
ZWFkZXI6Om1lZGlhVHlwZVN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhVHJh
Y2tSZWFkZXI6OmNvcHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhVHJhY2tSZWFk
ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFUcmFja1JlYWRlcjo6bG9nQ2hh
bm5lbCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9XZWJL
aXQ6Ok1lZGlhVHJhY2tSZWFkZXIuaDoKKwogMjAyMS0wMS0wNyAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUHJlcGVuZCAiTWVkaWEiIHRvIEZvcm1hdFJl
YWRlciwgU2FtcGxlQ3Vyc29yLCBhbmQgVHJhY2tSZWFkZXIgY2xhc3MgbmFtZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMDJi
YTI0ZmExMDE2MWU3YTJkMzQ4NjczNDlmMmJjZmY1MDNkZGRhLi5jN2Q5YmJmOGE5YmUxMGFkMTM2
NWU2ZmY2NTEwNDljMTk0MzJiYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDI3LDcgKzM0MjcsNyBAQAogCQlBODE4NzIx
RTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE4NzIxMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZU5vZGVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg3MjE1MDk3N0QzQzAw
MDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggKi87IH07CiAJCUE4MTg3MjIzMDk3N0QzQzAwMDU4
MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4MTg3MjE4MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBODIzOUUw
MTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcu
aCAqLzsgfTsKKwkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjM5REZGMDlCM0NGOEEw
MEI2MDY0MSAvKiBMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTgyNEI0NjUwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjRCNDY0MEUyRUYy
RUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU4
MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi87IH07CiAJCUE4MzNDN0NDMEEyQ0Yw
NzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVBMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlua05hbWVz
LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkzMDBlZTQ2ZDQ2OGRlNTM5
ZWVkMzgxYmY4MWFlMDlmN2Q2YzYyNzguLjI3YTlkODEzZTI3NGZjMGY0OTU5MDlmNzAyYmFhYTMx
NjcyYmU5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTE1LDYgKzUxNSw1NiBAQCBz
dGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUmIGZyYW1lLCBjb25z
dCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVl
VmVyc2lvbiA9IDA7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBzaGFyZWRMb2dnZXJPd25lcigpCit7
CisgICAgc3RhdGljIHVpbnQ2NF90IG93bmVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4ob3duZXIpOwor
fQorCitzdGF0aWMgTG9nZ2VyKiYgc3RhdGljU2hhcmVkTG9nZ2VyKCkKK3sKKyAgICBzdGF0aWMg
TG9nZ2VyKiBsb2dnZXI7CisgICAgcmV0dXJuIGxvZ2dlcjsKK30KKworY29uc3QgTG9nZ2VyJiBE
b2N1bWVudDo6c2hhcmVkTG9nZ2VyKCkKK3sKKyAgICBpZiAoIXN0YXRpY1NoYXJlZExvZ2dlcigp
KSB7CisgICAgICAgIHN0YXRpY1NoYXJlZExvZ2dlcigpID0gJkxvZ2dlcjo6Y3JlYXRlKHNoYXJl
ZExvZ2dlck93bmVyKCkpLmxlYWtSZWYoKTsKKyAgICAgICAgY29uZmlndXJlU2hhcmVkTG9nZ2Vy
KCk7CisgICAgfQorICAgIAorICAgIHJldHVybiAqc3RhdGljU2hhcmVkTG9nZ2VyKCk7Cit9CisK
K3ZvaWQgRG9jdW1lbnQ6OmNvbmZpZ3VyZVNoYXJlZExvZ2dlcigpCit7CisgICAgYXV0byBsb2dn
ZXIgPSBzdGF0aWNTaGFyZWRMb2dnZXIoKTsKKyAgICBpZiAoIWxvZ2dlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYm9vbCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkID0gIWFsbERvY3VtZW50c01h
cCgpLmlzRW1wdHkoKSAmJiBXVEY6OmFsbE9mKGFsbERvY3VtZW50c01hcCgpLnZhbHVlcygpLCBb
XShhdXRvKiBkb2N1bWVudCkgeworICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
KTsKKyAgICAgICAgcmV0dXJuICFwYWdlIHx8IHBhZ2UtPnNlc3Npb25JRCgpLmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpOworICAgIH0pOworICAgIGxvZ2dlci0+c2V0RW5hYmxlZChzaGFyZWRM
b2dnZXJPd25lcigpLCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKTsKK30KKworYXV0byBEb2N1bWVu
dDo6YWRkVG9Eb2N1bWVudHNNYXAoKSAtPiBEb2N1bWVudHNNYXA6OkFkZFJlc3VsdAoreworICAg
IGF1dG8gYWRkUmVzdWx0ID0gYWxsRG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhp
cyk7CisgICAgY29uZmlndXJlU2hhcmVkTG9nZ2VyKCk7CisgICAgCisgICAgcmV0dXJuIGFkZFJl
c3VsdDsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3ZlRnJvbURvY3VtZW50c01hcCgpCit7Cisg
ICAgQVNTRVJUKGFsbERvY3VtZW50c01hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOworICAg
IGFsbERvY3VtZW50c01hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIGNvbmZpZ3VyZVNo
YXJlZExvZ2dlcigpOworfQorCiBhdXRvIERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKSAtPiBE
b2N1bWVudHNNYXAmCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERvY3VtZW50c01hcD4g
ZG9jdW1lbnRzOwpAQCAtNTg5LDcgKzYzOSw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAg
ICAgLCBtX2VkaXRvcihtYWtlVW5pcXVlUmVmPEVkaXRvcj4oKnRoaXMpKQogICAgICwgbV9zZWxl
Y3Rpb24obWFrZVVuaXF1ZVJlZjxGcmFtZVNlbGVjdGlvbj4odGhpcykpCiB7Ci0gICAgYXV0byBh
ZGRSZXN1bHQgPSBhbGxEb2N1bWVudHNNYXAoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IGFkZFRvRG9jdW1lbnRzTWFwKCk7CiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIC8vIFdlIGRlcGVuZCBv
biB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1YmZyYW1lcywgYnV0IHdlCkBA
IC02NDksOCArNjk5LDggQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBBU1NFUlQoYWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7Ci0g
ICAgYWxsRG9jdW1lbnRzTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgcmVtb3ZlRnJv
bURvY3VtZW50c01hcCgpOworCiAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgZnJvbSB0aGUgY29u
dGV4dHMgbWFwIHZlcnkgZWFybHkgaW4gdGhlIGRlc3RydWN0b3Igc28gdGhhdCBjYWxsaW5nIHBv
c3RUYXNrKCkgb24gdGhpcyBEb2N1bWVudCBmcm9tIGFub3RoZXIgdGhyZWFkIGlzIHNhZmUuCiAg
ICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTQ2
NGQ3ZWFhNDU5NDg1MTBmY2FmM2UzNWZmOGU3MjJjZTc1Y2NjNy4uYTYyMDAzMDcwMjNhNDQxMjIz
YmM5ZTI3OTA0MWM3NDA0ODc5NWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0OTIsNiAr
MTQ5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heUJlRGV0YWNoZWRGcm9tRnJhbWUoYm9v
bCBtYXlCZURldGFjaGVkRnJvbUZyYW1lKSB7IG1fbWF5QmVEZXRhY2hlZEZyb21GcmFtZSA9IG1h
eUJlRGV0YWNoZWRGcm9tRnJhbWU7IH0KIAogICAgIExvZ2dlciYgbG9nZ2VyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IExvZ2dlciYgc2hhcmVkTG9nZ2VyKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRyPFN0cmlu
Z0NhbGxiYWNrPiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKQEAgLTE3MTgsNiArMTcxOSwxMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNCb2R5UG90ZW50aWFsbHlTY3JvbGxhYmxlKEhUTUxCb2R5RWxl
bWVudCYpOwogCiAgICAgdm9pZCBkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBX
VEZMb2dMZXZlbCwgVmVjdG9yPEpTT05Mb2dWYWx1ZT4mJikgZmluYWw7CisgICAgc3RhdGljIHZv
aWQgY29uZmlndXJlU2hhcmVkTG9nZ2VyKCk7CisKKyAgICBEb2N1bWVudHNNYXA6OkFkZFJlc3Vs
dCBhZGRUb0RvY3VtZW50c01hcCgpOworICAgIHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgp
OwogCiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDU1ODQ1MGU0Mjc4OGIzM2EwMGEwMzE4ODll
YTEyNjE4OTFiYzJkNTMuLjFlOTQ4NjRmMjdjYTJiMjMxMDVmNzhhY2U5NjRhZmE1OWEwNjlkZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC02MSw2ICs2MSwyMiBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJhY2tUeXBlPiB7CisgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a1ZpZGVv
OiByZXR1cm4gIlZpZGVvIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a0F1ZGlv
OiByZXR1cm4gIkF1ZGlvIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a0NvbXBs
ZXg6IHJldHVybiAiQ29tcGxleCJfczsKKyAgICAgICAgY2FzZSB3ZWJtOjpUcmFja1R5cGU6OmtM
b2dvOiByZXR1cm4gIkxvZ28iX3M7CisgICAgICAgIGNhc2Ugd2VibTo6VHJhY2tUeXBlOjprU3Vi
dGl0bGU6IHJldHVybiAiU3VidGl0bGUiX3M7CisgICAgICAgIGNhc2Ugd2VibTo6VHJhY2tUeXBl
OjprQnV0dG9uczogcmV0dXJuICJCdXR0b25zIl9zOworICAgICAgICBjYXNlIHdlYm06OlRyYWNr
VHlwZTo6a0NvbnRyb2w6IHJldHVybiAiQ29udHJvbCJfczsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gIlVua25vd24iX3M7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJn
dW1lbnQ8d2VibTo6SWQ+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKHdlYm06OklkIGlk
KQogICAgIHsKQEAgLTI0MywxMCArMjU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgUEFMOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0aWMgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhU291cmNlOyB9CitzdGF0
aWMgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIHsgcmV0dXJuIExvZ01lZGlhOyB9CiBzdGF0
aWMgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk0iOyB9Ci0jZW5kaWYKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Uga0NNVmlkZW9D
b2RlY1R5cGVfVlA5IGlzIGFkZGVkIHRvIENNRm9ybWF0RGVzY3JpcHRpb24uaAogY29uc3RleHBy
IENNVmlkZW9Db2RlY1R5cGUga0NNVmlkZW9Db2RlY1R5cGVfVlA5IHsgJ3ZwMDknIH07CkBAIC02
MjcsNyArNjQxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBBcHBlbmRGbGFncyBhcHBlbmRGbGEKICAgICAgICAgLy8gcG9zaXRp
b24gb2YgdGhlIGluY29taW5nIEVibWwgRWxlbWVudCwgYW5kIHJlc2V0IHRoZSBwYXJzZXIsIHdo
aWNoIHdpbGwgY2F1c2UgdGhlIEVibWwgZWxlbWVudCB0byBiZQogICAgICAgICAvLyBwYXJzZWQg
YXMgYSB0b3AtbGV2ZWwgZWxlbWVudCwgcmF0aGVyIHRoYW4gYXMgYSBjaGlsZCBvZiB0aGUgU2Vn
bWVudC4KICAgICAgICAgaWYgKCFtX3JlYWRlci0+cmV3aW5kVG8oKm1fcmV3aW5kVG9Qb3NpdGlv
bikpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
ZmFpbGVkIHRvIHJld2luZCByZWFkZXIsIGJhaWxpbmciKTsKKyAgICAgICAgICAgIEVSUk9SX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFpbGVkIHRvIHJld2luZCByZWFkZXIiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTY4OCwxMyArNzAyLDExIEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jdXJyZW50Qmxv
Y2sucmVzZXQoKTsKIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpCiB7CiAgICAgbV9sb2dnZXIgPSBtYWtlUmVmUHRyKGxvZ2dlcik7
CiAgICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKIH0KLSNlbmRpZgogCiBhdXRv
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90
IHRyYWNrTnVtYmVyKSAtPiBUcmFja0RhdGEqCiB7CkBAIC03MjAsMTUgKzczMiwxMyBAQCBTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgQQogCiAgICAgaWYgKChtX3N0YXRlID09IFN0YXRlOjpOb25lICYm
IG1ldGFkYXRhLmlkICE9IElkOjprRWJtbCAmJiBtZXRhZGF0YS5pZCAhPSBJZDo6a1NlZ21lbnQp
CiAgICAgICAgIHx8IChtX3N0YXRlID09IFN0YXRlOjpSZWFkaW5nU2VnbWVudCAmJiBtZXRhZGF0
YS5pZCAhPSBJZDo6a0luZm8gJiYgbWV0YWRhdGEuaWQgIT0gSWQ6OmtUcmFja3MgJiYgbWV0YWRh
dGEuaWQgIT0gSWQ6OmtDbHVzdGVyKSkgewotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgInN0YXRlKCIsIG1fc3RhdGUsICIpLCBpZCgiLCBtZXRhZGF0YS5pZCwg
IiksIHBvc2l0aW9uKCIsIG1ldGFkYXRhLnBvc2l0aW9uLCAiKSwgaGVhZGVyU2l6ZSgiLCBtZXRh
ZGF0YS5oZWFkZXJfc2l6ZSwgIiksIHNpemUoIiwgbWV0YWRhdGEuc2l6ZSwgIiksIHNraXBwaW5n
Iik7CisgICAgICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJzdGF0ZSgi
LCBtX3N0YXRlLCAiKSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBwb3NpdGlvbigiLCBtZXRhZGF0
YS5wb3NpdGlvbiwgIiksIGhlYWRlclNpemUoIiwgbWV0YWRhdGEuaGVhZGVyX3NpemUsICIpLCBz
aXplKCIsIG1ldGFkYXRhLnNpemUsICIpLCBza2lwcGluZyIpOwogCiAgICAgICAgICphY3Rpb24g
PSBBY3Rpb246OmtTa2lwOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxl
dGVkKTsKICAgICB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBhdXRvIG9sZFN0
YXRlID0gbV9zdGF0ZTsKLSNlbmRpZgogCiAgICAgaWYgKG1ldGFkYXRhLmlkID09IElkOjprRWJt
bCkKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nRWJtbDsKQEAgLTc0Myw3ICs3NTMs
NyBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50QmVnaW4oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQQogICAgIGVsc2UgaWYgKG1ldGFkYXRhLmlkID09
IElkOjprQ2x1c3RlcikKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkaW5nQ2x1c3RlcjsK
IAotICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAic3RhdGUoIiwgb2xk
U3RhdGUsICItPiIsIG1fc3RhdGUsICIpLCBpZCgiLCBtZXRhZGF0YS5pZCwgIiksIHBvc2l0aW9u
KCIsIG1ldGFkYXRhLnBvc2l0aW9uLCAiKSwgaGVhZGVyU2l6ZSgiLCBtZXRhZGF0YS5oZWFkZXJf
c2l6ZSwgIiksIHNpemUoIiwgbWV0YWRhdGEuc2l6ZSwgIikiKTsKKyAgICBJTkZPX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSLCAic3RhdGUoIiwgb2xkU3RhdGUsICItPiIsIG1fc3RhdGUs
ICIpLCBpZCgiLCBtZXRhZGF0YS5pZCwgIiksIHBvc2l0aW9uKCIsIG1ldGFkYXRhLnBvc2l0aW9u
LCAiKSwgaGVhZGVyU2l6ZSgiLCBtZXRhZGF0YS5oZWFkZXJfc2l6ZSwgIiksIHNpemUoIiwgbWV0
YWRhdGEuc2l6ZSwgIikiKTsKIAogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0
ZWQpOwogfQpAQCAtNzUxLDEwICs3NjEsOSBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25FbGVtZW50QmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgQQogU3Rh
dHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWxlbWVudEVuZChjb25zdCBFbGVtZW50TWV0
YWRhdGEmIG1ldGFkYXRhKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5G
T19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBhdXRvIG9sZFN0YXRlID0gbV9zdGF0ZTsKLSNlbmRpZgogCiAgICAgaWYgKG1l
dGFkYXRhLmlkID09IElkOjprRWJtbCB8fCBtZXRhZGF0YS5pZCA9PSBJZDo6a1NlZ21lbnQpCiAg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Tm9uZTsKQEAgLTc2Myw3ICs3NzIsNyBAQCBTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEpCiAgICAgZWxzZSBpZiAobWV0YWRhdGEuaWQgPT0gSWQ6OmtUcmFja0VudHJ5
KQogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWRpbmdUcmFja3M7CiAKLSAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgInN0YXRlKCIsIG9sZFN0YXRlLCAiLT4iLCBt
X3N0YXRlLCAiKSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBzaXplKCIsIG1ldGFkYXRhLnNpemUs
ICIpIik7CisgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgInN0YXRlKCIs
IG9sZFN0YXRlLCAiLT4iLCBtX3N0YXRlLCAiKSwgaWQoIiwgbWV0YWRhdGEuaWQsICIpLCBzaXpl
KCIsIG1ldGFkYXRhLnNpemUsICIpIik7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09r
Q29tcGxldGVkKTsKIH0KQEAgLTc3MSw2ICs3ODAsOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25FbGVtZW50RW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEpCiBT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIGNvbnN0IEVibWwmIGVibWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFk
YXRhKTsKKyAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKKwogICAgIGlm
IChlYm1sLmRvY190eXBlLmlzX3ByZXNlbnQoKSAmJiBlYm1sLmRvY190eXBlLnZhbHVlKCkuY29t
cGFyZSgid2VibSIpKQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNv
ZGU6OkludmFsaWREb2NUeXBlKSk7CiAKQEAgLTc4Myw4ICs3OTQsMTAgQEAgU3RhdHVzIFNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBjb25zdCBFYm0KIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNlZ21lbnRCZWdp
bihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBBY3Rpb24qIGFjdGlvbikKIHsKICAg
ICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIpOworCiAgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVk
KSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3Vu
dGVyZWQgU2VnbWVudCBiZWZvcmUgRW1ibCwgYmFpbGluZyIpOworICAgICAgICBFUlJPUl9MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIFNlZ21lbnQgYmVmb3JlIEVt
YmwiKTsKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZh
bGlkSW5pdFNlZ21lbnQpKTsKICAgICB9CiAKQEAgLTc5OSw4ICs4MTIsMTAgQEAgU3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2VnbWVudEJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsIEEKIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkluZm8oY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgSW5mbyYgaW5mbykKIHsKICAgICBV
TlVTRURfUEFSQU0obWV0YWRhdGEpOworICAgIElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIpOworCiAgICAgaWYgKCFtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkIHx8
ICFtX2luaXRpYWxpemF0aW9uU2VnbWVudCkgewotICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIEluZm8gb3V0c2lkZSBTZWdtZW50LCBiYWls
aW5nIik7CisgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5j
b3VudGVyZWQgSW5mbyBvdXRzaWRlIFNlZ21lbnQiKTsKICAgICAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkSW5pdFNlZ21lbnQpKTsKICAgICB9CiAKQEAg
LTgxNCw3ICs4MjksOCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25JbmZvKGNv
bnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEluZgogU3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0
YWRhdGEsIGNvbnN0IENsdXN0ZXImIGNsdXN0ZXIsIEFjdGlvbiogYWN0aW9uKQogewogICAgIFVO
VVNFRF9QQVJBTShtZXRhZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNsdXN0ZXIpOworICAgIElO
Rk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOworCiAgICAgQVNTRVJUKGFjdGlvbik7
CiAgICAgaWYgKCFhY3Rpb24pCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5v
dWdoTWVtb3J5KTsKQEAgLTg0OSwyMCArODY1LDI5IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29u
CiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUudmFsdWUoKTsKICAg
ICBTdHJpbmcgY29kZWNJZCB7IHRyYWNrRW50cnkuY29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1
bnNpZ25lZCl0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkgfTsKIAorICAgIEFM
V0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgdHJhY2tUeXBlLCAiLCBjb2RlYyAi
LCBjb2RlY0lkKTsKKwogICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8gJiYg
IXN1cHBvcnRlZFZpZGVvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKLSAgICAgICAgRVJS
T1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRl
ZCB2aWRlbyBjb2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICBF
UlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9y
dGVkIHZpZGVvIGNvZGVjIElEICIsIGNvZGVjSWQpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlkZW9Db2RlYykpOwogICAgIH0KIAog
ICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8gJiYgIXN1cHBvcnRlZEF1ZGlv
Q29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCBhdWRpbyBjb2RlYyBJ
RCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICBFUlJPUl9MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIGF1ZGlvIGNvZGVj
IElEICIsIGNvZGVjSWQpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJv
ckNvZGU6OlVuc3VwcG9ydGVkQXVkaW9Db2RlYykpOwogICAgIH0KIAotICAgIGlmICh0cmFja1R5
cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCi0gICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNr
RW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0Vu
dHJ5KHRyYWNrRW50cnkpKSB9KTsKLSAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBl
OjprQXVkaW8pCi0gICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5h
cHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRy
eSkpLCBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkp
KSB9KTsKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKSB7CisgICAgICAg
IGF1dG8gdHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRy
YWNrRW50cnkpKTsKKyAgICAgICAgaWYgKG1fbG9nZ2VyKQorICAgICAgICAgICAgdHJhY2stPnNl
dExvZ2dlcigqbV9sb2dnZXIsIExvZ2dlckhlbHBlcjo6Y2hpbGRMb2dJZGVudGlmaWVyKG1fbG9n
SWRlbnRpZmllciwgKyttX25leHRDaGlsZElkZW50aWZpZXIpKTsKKyAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFdURk1vdmUodHJhY2spIH0pOworICAg
IH0gZWxzZSBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKSB7CisgICAgICAgIGF1
dG8gdHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNr
RW50cnkpKTsKKyAgICAgICAgaWYgKG1fbG9nZ2VyKQorICAgICAgICAgICAgdHJhY2stPnNldExv
Z2dlcigqbV9sb2dnZXIsIExvZ2dlckhlbHBlcjo6Y2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRl
bnRpZmllciwgKyttX25leHRDaGlsZElkZW50aWZpZXIpKTsKKyAgICAgICAgbV9pbml0aWFsaXph
dGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpj
cmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFdURk1vdmUodHJhY2spIH0pOworICAgIH0K
IAogICAgIFN0cmluZ1ZpZXcgY29kZWNTdHJpbmcgeyB0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVl
KCkuZGF0YSgpLCAodW5zaWduZWQpdHJhY2tFbnRyeS5jb2RlY19pZC52YWx1ZSgpLmxlbmd0aCgp
IH07CiAjaWYgRU5BQkxFKFZQOSkKQEAgLTg5Nyw2ICs5MjIsOCBAQCBTdGF0dXMgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRh
dGEsIGNvbgogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxvY2tCZWdp
bihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBCbG9jayYgYmxvY2ssIEFj
dGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7CisgICAgSU5GT19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQoYWN0aW9uKTsKICAg
ICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hN
ZW1vcnkpOwpAQCAtOTEyLDYgKzkzOSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBVTlVTRURfUEFSQU0oYmxvY2spOworICAg
IElORk9fTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogCiAgICAgbV9jdXJyZW50Qmxv
Y2sgPSBXVEY6Om51bGxvcHQ7CiAKQEAgLTkyMSw2ICs5NDksOCBAQCB3ZWJtOjpTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1l
dGFkYXRhLAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxv
Y2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9j
ayYgYmxvY2ssIEFjdGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7
CisgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQo
YWN0aW9uKTsKICAgICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtOb3RFbm91Z2hNZW1vcnkpOwpAQCAtOTM1LDYgKzk2NSw4IEBAIHdlYm06OlN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtCiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9j
a0VuZChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBTaW1wbGVCbG9jayYg
YmxvY2spCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKKyAgICBJTkZPX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSKTsKKwogICAgIFVOVVNFRF9QQVJBTShibG9jayk7CiAKICAg
ICBtX2N1cnJlbnRCbG9jayA9IFdURjo6bnVsbG9wdDsKQEAgLTk0NSw2ICs5NzcsOCBAQCB3ZWJt
OjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG1ldAogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uQmxvY2tHcm91cEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEs
IHdlYm06OkFjdGlvbiogYWN0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtZXRhZGF0YSk7Cisg
ICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKICAgICBBU1NFUlQoYWN0
aW9uKTsKICAgICBpZiAoIWFjdGlvbikKICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtO
b3RFbm91Z2hNZW1vcnkpOwpAQCAtOTU3LDYgKzk5MSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrR3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFk
YXRhCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1ldGFkYXRhKTsKICAgICBVTlVTRURfUEFSQU0oYmxv
Y2tHcm91cCk7CisgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKQEAgLTk2Niw4ICsxMDAx
LDEwIEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0
IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKIAotICAgIGlmICghbV9j
dXJyZW50QmxvY2spCisgICAgaWYgKCFtX2N1cnJlbnRCbG9jaykgeworICAgICAgICBFUlJPUl9M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIm5vIGN1cnJlbnQgYmxvY2shIik7CiAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprSW52YWxpZEVsZW1lbnRJZCk7CisgICAgfQogCiAg
ICAgYXV0byogYmxvY2sgPSBXVEY6OnN3aXRjaE9uKCptX2N1cnJlbnRCbG9jaywgW10oQmxvY2sm
IGJsb2NrKSB7CiAgICAgICAgIHJldHVybiAmYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKaW5kZXggYjA4Y2I4M2ZhYjUyYWZmOTliZmFiZDViZGI3YzcyMDY0ODg3YWI1NS4uNmI2
MmRjMDY1OWU2Yzg2MTEyZTNkYWY0NjViYTY0MWUzOTlmZDQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaApAQCAtMjcwLDYgKzI3MCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKKyAgICB1aW50NjRfdCBtX25leHRDaGlsZElkZW50aWZpZXIgeyAw
IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCBkMTE3OGMy
NWI0ZjIyZmFjODVjNmVjMDk2ZWMwMTcyM2ZhYjY2NzAzLi4yNGZiN2FkZTQ0OGE5YWRjZjEzYThh
ZDAzMTlhMjUwZmExZjQxM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAg
LTMxLDExICszMSwxNCBAQAogI2luY2x1ZGUgIk1lZGlhVHJhY2tSZWFkZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0F1ZGlvVHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
VHlwZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xvZ2dpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KIAogI2luY2x1ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5oPgpAQCAtNDcs
NiArNTAsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRp
ZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOworfQorCitzdGF0aWMgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIHsgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOyB9CitzdGF0aWMgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgeyByZXR1cm4gIk1lZGlhRm9ybWF0UmVhZGVyIjsgfQorCiBDTUJh
c2VDbGFzc0lEIE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3NJRCgpCiB7CiAgICAgcmV0
dXJuIE1UUGx1Z2luRm9ybWF0UmVhZGVyR2V0Q2xhc3NJRCgpOwpAQCAtOTcsNiArMTA5LDE0IEBA
IHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiYmIGJ5dGVTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAoIW1fbG9nZ2VyKSB7CisgICAgICAgIG1fbG9nZ2VyID0gbWFrZVJlZlB0cihEb2N1bWVudDo6
c2hhcmVkTG9nZ2VyKCkpOworICAgICAgICBtX2xvZ0lkZW50aWZpZXIgPSBuZXh0TG9nSWRlbnRp
ZmllcigpOworICAgIH0KKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAgcGFy
c2VyLT5zZXRMb2dnZXIoKm1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZpZXIpOworCiAgICAgLy8gU2V0
IGEgbWluaW11bSBhdWRpbyBzYW1wbGUgZHVyYXRpb24gb2YgMCBzbyB0aGUgcGFyc2VyIGNyZWF0
ZXMgaW5kaXZpc2libGUgc2FtcGxlcyB3aXRoIGJ5dGUgc291cmNlIHJhbmdlcy4KICAgICBwYXJz
ZXItPnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uKDApOwogCkBAIC0xNDAsNiArMTYwLDEw
IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uCiAgICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJbnZh
bGlkKCkpOwogICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOwogCisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAoZXJyb3JDb2RlKQorICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgZXJyb3JDb2RlKTsKKwogICAgIG1fcGFyc2VUcmFja3NTdGF0
dXMgPSBlcnJvckNvZGUgPyBrTVRQbHVnaW5Gb3JtYXRSZWFkZXJFcnJvcl9QYXJzaW5nRmFpbHVy
ZSA6IG5vRXJyOwogICAgIG1fZHVyYXRpb24gPSBXVEZNb3ZlKHNlZ21lbnQuZHVyYXRpb24pOwog
CkBAIC0xODYsNiArMjEwLDcgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUHJvdmlkZU1l
ZGlhRGF0YShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUsIHVpbnQKIHZvaWQgTWVkaWFG
b3JtYXRSZWFkZXI6OmZpbmlzaFBhcnNpbmcoUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJiBwYXJz
ZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wYXJzZVRyYWNrc0xv
Y2spOwogICAgIEFTU0VSVChtX3BhcnNlVHJhY2tzU3RhdHVzLmhhc1ZhbHVlKCkpOwpAQCAtMjEz
LDYgKzIzOCw3IEBAIE9TU3RhdHVzIE1lZGlhRm9ybWF0UmVhZGVyOjpjb3B5UHJvcGVydHkoQ0ZT
dHJpbmdSZWYga2V5LCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImFza2VkIGZvciB1bnN1cHBvcnRlZCBwcm9w
ZXJ0eSAiLCBTdHJpbmcoa2V5KSk7CiAgICAgcmV0dXJuIGtDTUJhc2VPYmplY3RFcnJvcl9WYWx1
ZU5vdEF2YWlsYWJsZTsKIH0KIApAQCAtMjM0LDYgKzI2MCwxMSBAQCBPU1N0YXR1cyBNZWRpYUZv
cm1hdFJlYWRlcjo6Y29weVRyYWNrQXJyYXkoQ0ZBcnJheVJlZiogdHJhY2tBcnJheUNvcHkpCiAg
ICAgcmV0dXJuIG5vRXJyOwogfQogCitjb25zdCB2b2lkKiBNZWRpYUZvcm1hdFJlYWRlcjo6bmV4
dFRyYWNrUmVhZGVyTG9nSWRlbnRpZmllcih1aW50NjRfdCB0cmFja0lEKSBjb25zdAoreworICAg
IHJldHVybiBMb2dnZXJIZWxwZXI6OmNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
IHRyYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJNX0ZPUk1BVF9SRUFERVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCmluZGV4IDA3
YTZiOTc5MWY2YWNlMmY0ZTBhODcxZWE2ZmQzYWZhYTA1ZmYyZjAuLjRlZWNhYzYzMmNiMmYzMzc1
YzQ4MDVmZDIwMGNjZDhiMzEwMGE1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogCiBERUNMQVJFX0NPUkVfTUVESUFfVFJBSVRTKEZv
cm1hdFJlYWRlcik7CiAKQEAgLTU1LDYgKzU2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRP
bk1haW5UaHJlYWQoTVRQbHVnaW5CeXRlU291cmNlUmVmKTsKICAgICBjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogCisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIu
Z2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0VHJhY2tSZWFkZXJMb2dJZGVudGlmaWVyKHVp
bnQ2NF90KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUZvcm1hdFJlYWRl
cihBbGxvY2F0b3ImJik7CiAKQEAgLTcxLDYgKzc1LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFdy
YXBwZXJDbGFzcwogICAgIE9TU3RhdHVzIGNvcHlUcmFja0FycmF5KENGQXJyYXlSZWYqKTsKKyAg
ICAKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9CiAKICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiBtX2J5
dGVTb3VyY2U7CiAgICAgQ29uZGl0aW9uIG1fcGFyc2VUcmFja3NDb25kaXRpb247CkBAIC03OCw2
ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CiAgICAgT3B0aW9u
YWw8T1NTdGF0dXM+IG1fcGFyc2VUcmFja3NTdGF0dXM7CiAgICAgVmVjdG9yPFJlZjxNZWRpYVRy
YWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnM7CisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogfTsKIAogY29uc3RleHBy
IE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3JtYXRSZWFkZXI6OndyYXBw
ZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAKaW5kZXggZmIxY2QxZGUwZWY5
MDBjZmVjMDhkMjgwZjQzYjRkZWEyODkzYTQ1My4uMGM0NDI2YTY0NzI5M2QzZDJmNjc3Mjk3NDk2
Y2Q1MDJlZjA1MDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQ3Vyc29yLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdWRpb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtcGxlTWFwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgpAQCAtNzMsOSArNzQsMTIgQEAg
TWVkaWFUcmFja1JlYWRlcjo6TWVkaWFUcmFja1JlYWRlcihBbGxvY2F0b3ImJiBhbGxvY2F0b3Is
IGNvbnN0IE1lZGlhRm9ybWF0UmVhZGUKICAgICAsIG1fdHJhY2tJRCh0cmFja0lEKQogICAgICwg
bV9tZWRpYVR5cGUobWVkaWFUeXBlKQogICAgICwgbV9kdXJhdGlvbihmb3JtYXRSZWFkZXIuZHVy
YXRpb24oKSkKKyAgICAsIG1fbG9nZ2VyKGZvcm1hdFJlYWRlci5sb2dnZXIoKSkKKyAgICAsIG1f
bG9nSWRlbnRpZmllcihmb3JtYXRSZWFkZXIubmV4dFRyYWNrUmVhZGVyTG9nSWRlbnRpZmllcih0
cmFja0lEKSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgbWVkaWFUeXBlU3RyaW5nKCksICIgIiwgdHJhY2tJRCk7CiAgICAg
aWYgKGVuYWJsZWQpCiAgICAgICAgIG1faXNFbmFibGVkID0gZW5hYmxlZC52YWx1ZSgpID8gRW5h
YmxlZDo6VHJ1ZSA6IEVuYWJsZWQ6OkZhbHNlOwogfQpAQCAtMTEyLDE1ICsxMTYsMzcgQEAgdm9p
ZCBNZWRpYVRyYWNrUmVhZGVyOjp3YWl0Rm9yU2FtcGxlKEZ1bmN0aW9uPGJvb2woU2FtcGxlTWFw
JiwgYm9vbCk+JiYgcHJlZGljYXQKIHZvaWQgTWVkaWFUcmFja1JlYWRlcjo6ZmluaXNoUGFyc2lu
ZygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVTdG9yYWdl
TG9jayk7CiAgICAgaWYgKCFtX3NhbXBsZVN0b3JhZ2UpCiAgICAgICAgIG1fc2FtcGxlU3RvcmFn
ZSA9IG1ha2VVbmlxdWU8U2FtcGxlU3RvcmFnZT4oKTsKICAgICBtX3NhbXBsZVN0b3JhZ2UtPmhh
c0FsbFNhbXBsZXMgPSB0cnVlOwotICAgIGlmIChtX2lzRW5hYmxlZCA9PSBFbmFibGVkOjpVbmtu
b3duKQorICAgIGlmIChtX2lzRW5hYmxlZCA9PSBFbmFibGVkOjpVbmtub3duKSB7CiAgICAgICAg
IG1faXNFbmFibGVkID0gbV9zYW1wbGVTdG9yYWdlLT5zYW1wbGVNYXAuZW1wdHkoKSA/IEVuYWJs
ZWQ6OkZhbHNlIDogRW5hYmxlZDo6VHJ1ZTsKKyAgICAgICAgaWYgKG1faXNFbmFibGVkID09IEVu
YWJsZWQ6OkZhbHNlKQorICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJpZ25v
cmluZyBlbXB0eSAiLCBtZWRpYVR5cGVTdHJpbmcoKSwgIiB0cmFjayIpOworICAgIH0KICAgICBt
X3NhbXBsZVN0b3JhZ2VDb25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKK2NvbnN0IGNoYXIqIE1l
ZGlhVHJhY2tSZWFkZXI6Om1lZGlhVHlwZVN0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X21lZGlhVHlwZSkgeworICAgIGNhc2Uga0NNTWVkaWFUeXBlX1ZpZGVvOgorICAgICAgICByZXR1
cm4gInZpZGVvIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ01NZWRpYVR5cGVfQXVkaW86
CisgICAgICAgIHJldHVybiAiYXVkaW8iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtDTU1l
ZGlhVHlwZV9UZXh0OgorICAgICAgICByZXR1cm4gInRleHQiOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICJ1bmtub3duIjsKK30K
KwogT1NTdGF0dXMgTWVkaWFUcmFja1JlYWRlcjo6Y29weVByb3BlcnR5KENGU3RyaW5nUmVmIGtl
eSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCB2b2lkKiBjb3BpZWRWYWx1ZSkKIHsKICAgICAv
LyBEb24ndCBibG9jayB3YWl0aW5nIGZvciBtZWRpYSBpZiB0aGUgd2Uga25vdyB0aGUgZW5hYmxl
ZCBzdGF0ZS4KQEAgLTEzNywxNSArMTYzLDIwIEBAIE9TU3RhdHVzIE1lZGlhVHJhY2tSZWFkZXI6
OmNvcHlQcm9wZXJ0eShDRlN0cmluZ1JlZiBrZXksIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvCiAg
ICAgYXV0byYgc2FtcGxlTWFwID0gbV9zYW1wbGVTdG9yYWdlLT5zYW1wbGVNYXA7CiAKICAgICBp
ZiAoQ0ZFcXVhbChrZXksIFBBTDo6Z2V0X01lZGlhVG9vbGJveF9rTVRQbHVnaW5UcmFja1JlYWRl
clByb3BlcnR5X0VuYWJsZWQoKSkpIHsKLSAgICAgICAgaWYgKG1faXNFbmFibGVkID09IEVuYWJs
ZWQ6OlVua25vd24pCisgICAgICAgIGlmIChtX2lzRW5hYmxlZCA9PSBFbmFibGVkOjpVbmtub3du
KSB7CiAgICAgICAgICAgICBtX2lzRW5hYmxlZCA9IHNhbXBsZU1hcC5lbXB0eSgpID8gRW5hYmxl
ZDo6RmFsc2UgOiBFbmFibGVkOjpUcnVlOworICAgICAgICAgICAgaWYgKG1faXNFbmFibGVkID09
IEVuYWJsZWQ6OkZhbHNlKQorICAgICAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiaWdub3JpbmcgZW1wdHkgIiwgbWVkaWFUeXBlU3RyaW5nKCksICIgdHJhY2siKTsKKyAgICAg
ICAgfQogCiAgICAgICAgICpyZWludGVycHJldF9jYXN0PENGQm9vbGVhblJlZio+KGNvcGllZFZh
bHVlKSA9IHJldGFpblB0cihtX2lzRW5hYmxlZCA9PSBFbmFibGVkOjpUcnVlID8ga0NGQm9vbGVh
blRydWUgOiBrQ0ZCb29sZWFuRmFsc2UpLmxlYWtSZWYoKTsKICAgICAgICAgcmV0dXJuIG5vRXJy
OwogICAgIH0KIAotICAgIGlmIChzYW1wbGVNYXAuZW1wdHkoKSkKKyAgICBpZiAoc2FtcGxlTWFw
LmVtcHR5KCkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJzYW1wbGUgdGFi
bGUgZW1wdHkgd2hlbiBhc2tlZCBmb3IgIiwgU3RyaW5nKGtleSkpOwogICAgICAgICByZXR1cm4g
a0NNQmFzZU9iamVjdEVycm9yX1ZhbHVlTm90QXZhaWxhYmxlOworICAgIH0KIAogICAgIGF1dG8m
IGxhc3RTYW1wbGUgPSAqc2FtcGxlTWFwLmRlY29kZU9yZGVyKCkucmJlZ2luKCktPnNlY29uZDsK
IApAQCAtMTYyLDYgKzE5Myw3IEBAIE9TU3RhdHVzIE1lZGlhVHJhY2tSZWFkZXI6OmNvcHlQcm9w
ZXJ0eShDRlN0cmluZ1JlZiBrZXksIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvCiAgICAgICAgIHJl
dHVybiBub0VycjsKICAgICB9CiAKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImFza2Vk
IGZvciB1bnN1cHBvcnRlZCBwcm9wZXJ0eSAiLCBTdHJpbmcoa2V5KSk7CiAgICAgcmV0dXJuIGtD
TUJhc2VPYmplY3RFcnJvcl9WYWx1ZU5vdEF2YWlsYWJsZTsKIH0KIApAQCAtMTk5LDYgKzIzMSwx
MSBAQCBPU1N0YXR1cyBNZWRpYVRyYWNrUmVhZGVyOjpjcmVhdGVDdXJzb3JBdExhc3RTYW1wbGVJ
bkRlY29kZU9yZGVyKE1UUGx1Z2luU2FtcGxlQwogICAgIHJldHVybiBub0VycjsKIH0KIAorV1RG
TG9nQ2hhbm5lbCYgTWVkaWFUcmFja1JlYWRlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJNX0ZPUk1BVF9SRUFERVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFk
ZXIuaAppbmRleCBmMTY1YjQ4ZmRmNzNhNDA0NzQ5MGJmYWVjZjZhZTViODI2M2IwNWZjLi5kMTY2
NjhlYTVmZGQyYzAzZmM1ZGI5MDRiNmVmN2RjNzhhZGZhYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRyYWNr
UmVhZGVyLmgKQEAgLTkwLDYgKzkwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzQWxs
U2FtcGxlcyB7IGZhbHNlIH07CiAgICAgfTsKIAorICAgIGNvbnN0IGNoYXIqIG1lZGlhVHlwZVN0
cmluZygpIGNvbnN0OworICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJNZWRpYVRyYWNrUmVhZGVyIjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3Q7CisKICAgICBlbnVtIEVuYWJsZWQgOiB1aW50OF90IHsgVW5r
bm93biwgRmFsc2UsIFRydWUgfTsKIAogICAgIGNvbnN0IHVpbnQ2NF90IG1fdHJhY2tJRDsKQEAg
LTk5LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb25kaXRpb24gbV9zYW1wbGVT
dG9yYWdlQ29uZGl0aW9uOwogICAgIG11dGFibGUgTG9jayBtX3NhbXBsZVN0b3JhZ2VMb2NrOwog
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZVN0b3JhZ2U+IG1fc2FtcGxlU3RvcmFn
ZTsKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CiB9OwogCiBjb25zdGV4cHIgTWVkaWFUcmFja1JlYWRlcjo6V3JhcHBlckNs
YXNzIE1lZGlhVHJhY2tSZWFkZXI6OndyYXBwZXJDbGFzcygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417490</attachid>
            <date>2021-01-12 13:58:18 -0800</date>
            <delta_ts>2021-01-12 14:47:56 -0800</delta_ts>
            <desc>Address review comments</desc>
            <filename>bug-220423-20210112135817.patch</filename>
            <type>text/plain</type>
            <size>4369</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhM2IyYTU3ODMzODhh
YTZiNmM3OTA1MGE0Yjc5OWU0NDU4YjY2OS4uMjU2YjQ1NmYyZjUzZjJjZGZiYmVlM2Q1NDhmODEy
ZmM5NDJlMTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFkZCBy
dW50aW1lIGxvZ2dpbmcgdG8gZm9ybWF0IHJlYWRlciBhbmQgV2ViTSBwYXJzZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQyMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzI4OTY2NTU+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgYWRkcmVzcyBw
b3N0LXJldmlldyBjb21tZW50cyBhZnRlciByMjcxMjcwLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRUb0RvY3VtZW50c01hcCk6
IEFTU0VSVCB0aGF0IGRvY3VtZW50IHdhcyBub3QgYWxyZWFkeSBpbiB0aGUgbWFwLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KTogTW92ZSBBU1NFUlQgdG8gYWRkVG9Eb2N1
bWVudHNNYXAuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nQXJndW1lbnQ8d2VibTo6VHJhY2tUeXBlPjo6dG9TdHJpbmcpOiBSZXR1cm4gQVNDSUlM
aXRlcmFsIGluc3RlYWQgb2YgU3RyaW5nLgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDx3ZWJt
OjpJZD46OnRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0YXRlPjo6dG9TdHJpbmcpOiBEaXR0by4KKwog
MjAyMS0wMS0xMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIFN1cHBvcnQga2V5IHJvdGF0aW9uIHdpdGggSExTLWJhY2tlZCBlbmNyeXB0ZWQgbWVk
aWEgc3RyZWFtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWVjNmI0YWFmNzk1NGE2ZmRj
ZDI5N2VlZGMzNDA2MWNlOTQzNjU2ZS4uYWMzMWEyNmZkZjllMzk4NGFhNzA2ZjgxODJhMjVmMzAz
YWQ0YTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTAsMTIgKzU1MCwxMiBAQCB2
b2lkIERvY3VtZW50Ojpjb25maWd1cmVTaGFyZWRMb2dnZXIoKQogICAgIGxvZ2dlci0+c2V0RW5h
YmxlZChzaGFyZWRMb2dnZXJPd25lcigpLCBhbHdheXNPbkxvZ2dpbmdBbGxvd2VkKTsKIH0KIAot
YXV0byBEb2N1bWVudDo6YWRkVG9Eb2N1bWVudHNNYXAoKSAtPiBEb2N1bWVudHNNYXA6OkFkZFJl
c3VsdAordm9pZCBEb2N1bWVudDo6YWRkVG9Eb2N1bWVudHNNYXAoKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gYWxsRG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKwogICAgIGNv
bmZpZ3VyZVNoYXJlZExvZ2dlcigpOwotICAgIAotICAgIHJldHVybiBhZGRSZXN1bHQ7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUZyb21Eb2N1bWVudHNNYXAoKQpAQCAtNjM5LDggKzYzOSw3
IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0
aW5ncywgY29uc3QgVVJMJiB1cmwsIERvY3VtCiAgICAgLCBtX2VkaXRvcihtYWtlVW5pcXVlUmVm
PEVkaXRvcj4oKnRoaXMpKQogICAgICwgbV9zZWxlY3Rpb24obWFrZVVuaXF1ZVJlZjxGcmFtZVNl
bGVjdGlvbj4odGhpcykpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBhZGRUb0RvY3VtZW50c01h
cCgpOwotICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisgICAgYWRkVG9Eb2N1bWVudHNNYXAoKTsKIAogICAgIC8vIFdlIGRlcGVuZCBvbiB0aGUgdXJs
IGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1YmZyYW1lcywgYnV0IHdlCiAgICAgLy8gYWxz
byBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQgaW4gb3BlbmVk
IHdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE2MjAwMzA3MDIzYTQ0MTIyM2JjOWUy
NzkwNDFjNzQwNDg3OTVmMTIuLjA4YzQwNTg0MzU4ZjRmNzdjNzIxNWU5MGRiNzEwMzI0YTg0NTkx
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNzIxLDcgKzE3MjEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVsJiwgV1RGTG9nTGV2ZWws
IFZlY3RvcjxKU09OTG9nVmFsdWU+JiYpIGZpbmFsOwogICAgIHN0YXRpYyB2b2lkIGNvbmZpZ3Vy
ZVNoYXJlZExvZ2dlcigpOwogCi0gICAgRG9jdW1lbnRzTWFwOjpBZGRSZXN1bHQgYWRkVG9Eb2N1
bWVudHNNYXAoKTsKKyAgICB2b2lkIGFkZFRvRG9jdW1lbnRzTWFwKCk7CiAgICAgdm9pZCByZW1v
dmVGcm9tRG9jdW1lbnRzTWFwKCk7CiAKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1f
c2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDFlOTQ4NjRm
MjdjYTJiMjMxMDVmNzhhY2U5NjRhZmE1OWEwNjlkZDAuLjZjZTk1OGY3YTQ2ZWM4MWU5NGNmYjky
MTBhZjg5NmYzZDk1MzdlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBA
IC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVj
dCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJh
Y2tUeXBlPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlw
ZSkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRvU3RyaW5nKHdlYm06OlRyYWNrVHlwZSB0eXBl
KQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ugd2VibTo6VHJh
Y2tUeXBlOjprVmlkZW86IHJldHVybiAiVmlkZW8iX3M7CkBAIC03OCw3ICs3OCw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PHdlYm06OlRyYWNrVHlwZT4gewogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6SWQ+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKHdlYm06OklkIGlkKQorICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2Vi
bTo6SWQgaWQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2Ugd2Vi
bTo6SWQ6OmtFYm1sOiByZXR1cm4gIkVibWwiX3M7CkBAIC0yMzUsNyArMjM1LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6SWQ+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0YXRlPiB7
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpTdGF0ZSBzdGF0ZSkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRvU3RyaW5nKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlN0YXRlIHN0YXRlKQogICAgIHsKICAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OlN0YXRlOjpOb25lOiByZXR1cm4gIk5vbmUiX3M7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>