<?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>216985</bug_id>
          
          <creation_ts>2020-09-25 12:21:23 -0700</creation_ts>
          <short_desc>&lt;input type=&quot;datetime-local&quot;&gt; not show calendar UI when it&apos;s inside ShadowDOM</short_desc>
          <delta_ts>2021-03-04 22:57:21 -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>Forms</component>
          <version>Safari 14</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222657</see_also>
          <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>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>sobue</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>ben</cc>
    
    <cc>cafebab3</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pxlcoder</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1691981</commentid>
    <comment_count>0</comment_count>
    <who name="">sobue</who>
    <bug_when>2020-09-25 12:21:23 -0700</bug_when>
    <thetext>When `&lt;input type=&quot;datetime-local&quot;&gt;` is put inside ShadowDOM, iOS date time picker UI won&apos;t show up.
This bug is a regression from iOS 14. iOS 13.7 was showing date time picker.

```
&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Safari datetime-local in ShadowDOM&lt;/title&gt;
    &lt;script&gt;
      const template = document.createElement(&apos;template&apos;);
      template.innerHTML = `&lt;input type=&quot;datetime-local&quot;&gt;`;

      window.customElements.define(&apos;test-me&apos;, class TestMeElement extends HTMLElement {
        constructor() {
          super();
          const root = this.attachShadow({ mode: &apos;open&apos;});
          root.appendChild(template.content.cloneNode(true));
        }
      });
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    Not in ShadowDOM : &lt;input type=&quot;datetime-local&quot;&gt;&lt;br&gt;
    Inside ShadowDOM : &lt;test-me&gt;&lt;/test-me&gt;&lt;br&gt;
  &lt;/body&gt;
&lt;/html&gt;

```

Chrome v85 is showing calendar UI for both cases, either when `&lt;input type=&quot;datetime-local&quot;&gt;` is inside ShadowDOM or outside.
Mobile Safari in iOS13.7 shows calendar UI for both cases as well.

Mobile Safari in iOS 14.0 shows calendar UI when &lt;input&gt; is outside ShadowDOM but not when it&apos;s inside ShadowDOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692411</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-27 10:15:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/69660273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692493</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Nagel">ben</who>
    <bug_when>2020-09-28 00:47:27 -0700</bug_when>
    <thetext>The same problem occures when using `&lt;input type=&quot;date&quot;&gt;` or `&lt;input type=&quot;time&quot;&gt;`. Other inputs are working fine. The same issue is when using `template.contens.cloneNode(true)`

Also when reading the type if the `&lt;input type=&quot;datetime-local&quot;&gt;` (or other date types) the result is always `text`. The input is styled like a date field but behaves like a text input.


JSFiddle - cloneNode: https://jsfiddle.net/g5xp3u76/1/
JSFiddle - webComponent: https://jsfiddle.net/znkpLuce/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692494</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Nagel">ben</who>
    <bug_when>2020-09-28 00:54:58 -0700</bug_when>
    <thetext>Also in the SO post I posted a few days ago a user experienced a crash when using the clear button of a date field. I didn&apos;t tested it myself.

Source: https://stackoverflow.com/questions/64042354/safari-on-ios-14-breaks-date-time-inputs-when-used-with-template-tags-or-custom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694699</commentid>
    <comment_count>4</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-10-05 08:33:51 -0700</bug_when>
    <thetext>There are a couple ways to reproduce this issue.

```
let body = document.getElementsByTagName(&quot;body&quot;)[0];
let template = document.createElement(&apos;template&apos;);
template.innerHTML = &apos;&lt;input type=&quot;date&quot;&gt;&apos;;
body.appendChild(template.content.cloneNode(true));
```

and

```
let body = document.getElementsByTagName(&quot;body&quot;)[0];
let doc = document.implementation.createHTMLDocument(&quot;New Document&quot;);
doc.body = document.createElement(&quot;body&quot;);
doc.body.innerHTML = &apos;&lt;input type=&quot;date&quot;&gt;&apos;;
body.appendChild(doc.body.childNodes[0]);
```

The common link between these two test cases is the creation of a new Document, without an associated Frame. This results in the Document’s Settings containing default values for all features.

```
m_settings(frame ? Ref&lt;Settings&gt;(frame-&gt;settings()) : Settings::create(nullptr))
```

Since the initial value of date input feature flags in Settings.yaml is false, creating an &lt;input type=“date”&gt; element in this kind of Document results in the creation of a TextInputType rather than a DateInputType.

```
Ref&lt;InputType&gt; InputType::create(HTMLInputElement&amp; element, const AtomString&amp; typeName)
{
    if (!typeName.isEmpty()) {
        static const auto factoryMap = makeNeverDestroyed(createInputTypeFactoryMap());
        auto&amp;&amp; [conditional, factory] = factoryMap.get().get(typeName);
        if (factory &amp;&amp; (!conditional || std::invoke(conditional, element.document().settings())))
            return factory(element);
    }
    return adoptRef(*new TextInputType(element));
}
```

This regression was caused by r263977, which moved date input feature flags from RuntimeEnabledSettings into page Settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694728</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-05 09:31:43 -0700</bug_when>
    <thetext>We should fix the issue with bad Settings in Document by requiring all Documents to either be passed a Frame&amp; or a Settings&amp;. And then we should get rid of that Settings constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695242</commentid>
    <comment_count>6</comment_count>
      <attachid>410672</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 11:42:22 -0700</bug_when>
    <thetext>Created attachment 410672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695247</commentid>
    <comment_count>7</comment_count>
      <attachid>410673</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 11:49:54 -0700</bug_when>
    <thetext>Created attachment 410673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695340</commentid>
    <comment_count>8</comment_count>
      <attachid>410701</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 15:18:39 -0700</bug_when>
    <thetext>Created attachment 410701
Tests should fail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695394</commentid>
    <comment_count>9</comment_count>
      <attachid>410715</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 17:02:33 -0700</bug_when>
    <thetext>Created attachment 410715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695411</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 17:36:44 -0700</bug_when>
    <thetext>Should be ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695428</commentid>
    <comment_count>11</comment_count>
      <attachid>410715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-06 18:39:17 -0700</bug_when>
    <thetext>Comment on attachment 410715
Patch

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

Seems the right way to do this. But we should not explicitly pass the Settings in any case where it can be avoided. I suggest removing it anywhere we can rather than passing it everywhere. I suspect that functions that do not allow a null frame don’t need the Settings argument although I might have missed something.

&gt; Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb:40
&gt; +    WEBCORE_EXPORT static Ref&lt;Settings&gt; create(Page*);

Can this really work with a Page of null? Of not maybe change to a Page&amp;?

&gt; Source/WebCore/dom/DOMImplementation.h:46
&gt; +    static Ref&lt;Document&gt; createDocument(const String&amp; mimeType, Frame*, const Settings&amp;, const URL&amp;);

Another option is to use the name contentType.

&gt; Source/WebCore/dom/Document.cpp:617
&gt; +    auto document = adoptRef(*new Document(nullptr, contextDocument.m_settings.get(), URL()));

Doesn’t this work without the explicit call to get()?

&gt; Source/WebCore/dom/Document.cpp:4010
&gt; +            return XMLDocument::createXHTML(nullptr, m_settings.get(), url());

Same here.

&gt; Source/WebCore/dom/Document.cpp:4011
&gt; +        return XMLDocument::create(nullptr, m_settings.get(), url());

And here.

&gt; Source/WebCore/dom/Document.cpp:4013
&gt; +    return create(m_settings.get(), url());

Here.

&gt; Source/WebCore/dom/Document.cpp:7142
&gt; +        m_templateDocument = HTMLDocument::create(nullptr, m_settings.get(), aboutBlankURL());

Here.

&gt; Source/WebCore/dom/Document.cpp:7144
&gt; +        m_templateDocument = create(m_settings.get(), aboutBlankURL());

Here.

&gt; Source/WebCore/dom/Document.h:343
&gt; +    static Ref&lt;Document&gt; createNonRenderedPlaceholder(Frame&amp;, const Settings&amp;, const URL&amp;);

Seems we do not need the Settings argument here.

&gt; Source/WebCore/html/HTMLDocument.h:33
&gt; +    static Ref&lt;HTMLDocument&gt; createSynthesizedDocument(Frame&amp;, const Settings&amp;, const URL&amp;);

Seems we do not need the Settings argument here.

&gt; Source/WebCore/html/ImageDocument.h:37
&gt; +    static Ref&lt;ImageDocument&gt; create(Frame&amp; frame, const Settings&amp; settings, const URL&amp; url)

Might not need Settings argument here.

&gt; Source/WebCore/html/PluginDocument.h:37
&gt; +    static Ref&lt;PluginDocument&gt; create(Frame&amp; frame, const Settings&amp; settings, const URL&amp; url)

Might not need it here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:114
&gt; +static CachedResource* createResource(CachedResource::Type type, CachedResourceRequest&amp;&amp; request, const PAL::SessionID&amp; sessionID, const CookieJar* cookieJar, const Settings&amp; settings)

Change return type to smart pointer?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:153
&gt; +static CachedResource* createResource(CachedResourceRequest&amp;&amp; request, CachedResource&amp; resource)

Ditto?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:155
&gt; +    switch (resource.type()) {

Is there a way to make this less repetitive?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1081
&gt; +    CachedResourceHandle&lt;CachedResource&gt; resource = createResource(type, WTFMove(request), sessionID, &amp;cookieJar, settings);

Maybe auto if we fix the return type above

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:39
&gt; +    : CachedSVGDocument(WTFMove(request), resource.sessionID(), resource.cookieJar(), resource.m_settings.get())

Less get()?

&gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:59
&gt; +        m_document = SVGDocument::create(nullptr, m_settings.get(), response().url());

Likely don’t need the get() here

&gt; Source/WebCore/page/ios/FrameIOS.mm:86
&gt; +    auto document = HTMLDocument::createSynthesizedDocument(*this, settings(), url);

Maybe this is a case where we do not have to pass Settings.

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:63
&gt; +    auto document = Document::createNonRenderedPlaceholder(mainFrame, mainFrame.settings(), data.scriptURL);

Maybe this function is a case where we do not need to pass Settings.

&gt; Source/WebCore/xml/DOMParser.cpp:45
&gt; +    auto document = DOMImplementation::createDocument(contentType, nullptr, m_settings.get(), URL { });

May not need get here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695443</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 20:22:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 410715 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410715&amp;action=review
&gt; 
&gt; Seems the right way to do this. But we should not explicitly pass the
&gt; Settings in any case where it can be avoided. I suggest removing it anywhere
&gt; we can rather than passing it everywhere. I suspect that functions that do
&gt; not allow a null frame don’t need the Settings argument although I might
&gt; have missed something.
&gt; 
&gt; &gt; Source/WebCore/Scripts/SettingsTemplates/Settings.h.erb:40
&gt; &gt; +    WEBCORE_EXPORT static Ref&lt;Settings&gt; create(Page*);
&gt; 
&gt; Can this really work with a Page of null? Of not maybe change to a Page&amp;?

It can (really, Settings doesn&apos;t for the most part require a Page at all), and I&apos;d like to make it take a Page&amp; at some point, but that would require making it easier to make a Page so that the TestWebKitAPI test for DocumentOrder can still work.

&gt; 
&gt; &gt; Source/WebCore/dom/DOMImplementation.h:46
&gt; &gt; +    static Ref&lt;Document&gt; createDocument(const String&amp; mimeType, Frame*, const Settings&amp;, const URL&amp;);
&gt; 
&gt; Another option is to use the name contentType.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:617
&gt; &gt; +    auto document = adoptRef(*new Document(nullptr, contextDocument.m_settings.get(), URL()));
&gt; 
&gt; Doesn’t this work without the explicit call to get()?
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4010
&gt; &gt; +            return XMLDocument::createXHTML(nullptr, m_settings.get(), url());
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4011
&gt; &gt; +        return XMLDocument::create(nullptr, m_settings.get(), url());
&gt; 
&gt; And here.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4013
&gt; &gt; +    return create(m_settings.get(), url());
&gt; 
&gt; Here.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:7142
&gt; &gt; +        m_templateDocument = HTMLDocument::create(nullptr, m_settings.get(), aboutBlankURL());
&gt; 
&gt; Here.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:7144
&gt; &gt; +        m_templateDocument = create(m_settings.get(), aboutBlankURL());
&gt; 
&gt; Here.
&gt; 

Done (and all above).

&gt; &gt; Source/WebCore/dom/Document.h:343
&gt; &gt; +    static Ref&lt;Document&gt; createNonRenderedPlaceholder(Frame&amp;, const Settings&amp;, const URL&amp;);
&gt; 
&gt; Seems we do not need the Settings argument here.

Removed.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLDocument.h:33
&gt; &gt; +    static Ref&lt;HTMLDocument&gt; createSynthesizedDocument(Frame&amp;, const Settings&amp;, const URL&amp;);
&gt; 
&gt; Seems we do not need the Settings argument here.

Removed.

&gt; 
&gt; &gt; Source/WebCore/html/ImageDocument.h:37
&gt; &gt; +    static Ref&lt;ImageDocument&gt; create(Frame&amp; frame, const Settings&amp; settings, const URL&amp; url)
&gt; 
&gt; Might not need Settings argument here.

Removed.

&gt; 
&gt; &gt; Source/WebCore/html/PluginDocument.h:37
&gt; &gt; +    static Ref&lt;PluginDocument&gt; create(Frame&amp; frame, const Settings&amp; settings, const URL&amp; url)
&gt; 
&gt; Might not need it here.


Removed.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:114
&gt; &gt; +static CachedResource* createResource(CachedResource::Type type, CachedResourceRequest&amp;&amp; request, const PAL::SessionID&amp; sessionID, const CookieJar* cookieJar, const Settings&amp; settings)
&gt; 
&gt; Change return type to smart pointer?

Done.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:153
&gt; &gt; +static CachedResource* createResource(CachedResourceRequest&amp;&amp; request, CachedResource&amp; resource)
&gt; 
&gt; Ditto?

Done.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:155
&gt; &gt; +    switch (resource.type()) {
&gt; 
&gt; Is there a way to make this less repetitive?

I couldn&apos;t come up with one yet. Will keep thinking though.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1081
&gt; &gt; +    CachedResourceHandle&lt;CachedResource&gt; resource = createResource(type, WTFMove(request), sessionID, &amp;cookieJar, settings);
&gt; 
&gt; Maybe auto if we fix the return type above

Done.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:39
&gt; &gt; +    : CachedSVGDocument(WTFMove(request), resource.sessionID(), resource.cookieJar(), resource.m_settings.get())
&gt; 
&gt; Less get()?

Removed.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedSVGDocument.cpp:59
&gt; &gt; +        m_document = SVGDocument::create(nullptr, m_settings.get(), response().url());
&gt; 
&gt; Likely don’t need the get() here

Removed.

&gt; 
&gt; &gt; Source/WebCore/page/ios/FrameIOS.mm:86
&gt; &gt; +    auto document = HTMLDocument::createSynthesizedDocument(*this, settings(), url);
&gt; 
&gt; Maybe this is a case where we do not have to pass Settings.

Removed.

&gt; 
&gt; &gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:63
&gt; &gt; +    auto document = Document::createNonRenderedPlaceholder(mainFrame, mainFrame.settings(), data.scriptURL);
&gt; 
&gt; Maybe this function is a case where we do not need to pass Settings.

Removed.

&gt; 
&gt; &gt; Source/WebCore/xml/DOMParser.cpp:45
&gt; &gt; +    auto document = DOMImplementation::createDocument(contentType, nullptr, m_settings.get(), URL { });
&gt; 
&gt; May not need get here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695444</commentid>
    <comment_count>13</comment_count>
      <attachid>410727</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 20:24:04 -0700</bug_when>
    <thetext>Created attachment 410727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695453</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 21:03:54 -0700</bug_when>
    <thetext>Committed r268114: &lt;https://trac.webkit.org/changeset/268114&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410727.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702926</commentid>
    <comment_count>15</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-10-29 17:27:13 -0700</bug_when>
    <thetext>*** Bug 218339 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410672</attachid>
            <date>2020-10-06 11:42:22 -0700</date>
            <delta_ts>2020-10-06 11:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216985-20201006114221.patch</filename>
            <type>text/plain</type>
            <size>65911</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAyMC0xMC0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0IHR5cGU9ImRhdGV0aW1l
LWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGluc2lkZSBTaGFkb3dET00K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yK01lZGlhRGV2aWNlcy5pZGw6CisgICAgICAgICogU2NyaXB0cy9T
ZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzUnVudGltZUNoZWNrKToKKyAg
ICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBkb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWE1MRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6bV9zZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhv
dXRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlVGVt
cGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YWJsZVNldHRpbmdz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnQ6
OmNyZWF0ZVhIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50OjpYTUxEb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRo
ZXNpemVkRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpIVE1MRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0
aG91dENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpJbWFnZURv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6TWVk
aWFEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50Lmg6CisgICAgICAgICog
aHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVu
dDo6UGx1Z2luRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9j
dW1lbnQ6OlRleHREb2N1bWVudCk6CisgICAgICAgICogaHRtbC9UZXh0RG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpjcmVhdGVE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YmVnaW4pOgorICAg
ICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lua0Rv
Y3VtZW50OjpTaW5rRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjpDYWNoZWRTVkdG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAq
IHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6c2hvdWxkRW5hYmxl
TGVnYWN5R2V0VXNlck1lZGlhUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtz
OjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAg
ICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRX
aXRoU2ltcGxlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuIGNvbnN0KToK
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3Vt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYWdlRm9yU2Vy
dmljZVdvcmtlcik6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01QYXJzZXI6OkRPTVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OnBhcnNlRnJvbVN0cmluZyk6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5oOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291
cmNlKToKKwogMjAyMC0xMC0wNiAgTHVtaW5nIFlpbiAgPGx1bWluZ195aW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gQnVtcCByZXBvcnRlZCBjdXJyZW50IHNoaXBwaW5nIHJlbGVhc2Ug
VUEgdG8gMTBfMTVfNwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3IrTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvcitNZWRpYURldmljZXMuaWRsCShyZXZpc2lvbiAy
NjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvcitN
ZWRpYURldmljZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw1ICszNiw1IEBACiAgICAgSW1w
bGVtZW50ZWRCeT1OYXZpZ2F0b3JNZWRpYURldmljZXMKIF0gcGFydGlhbCBpbnRlcmZhY2UgTmF2
aWdhdG9yIHsKICAgICBbU2FtZU9iamVjdCwgU2VjdXJlQ29udGV4dCwgQ29udGV4dEFsbG93c01l
ZGlhRGV2aWNlc10gcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhRGV2aWNlcyBtZWRpYURldmljZXM7
Ci0gICAgW0N1c3RvbSwgRW5hYmxlZEJ5U2V0dGluZz1MZWdhY3lHZXRVc2VyTWVkaWFdIHVuZGVm
aW5lZCBnZXRVc2VyTWVkaWEob2JqZWN0IGNvbnN0cmFpbnRzLCBvYmplY3Q/IHN1Y2Nlc3NDYWxs
YmFjaywgb2JqZWN0PyBlcnJvckNhbGxiYWNrKTsKKyAgICBbQ3VzdG9tLCBFbmFibGVkQnlRdWly
az1zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFdIHVuZGVmaW5lZCBnZXRVc2VyTWVkaWEo
b2JqZWN0IGNvbnN0cmFpbnRzLCBvYmplY3Q/IHN1Y2Nlc3NDYWxsYmFjaywgb2JqZWN0PyBlcnJv
ckNhbGxiYWNrKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVt
cGxhdGVzL1NldHRpbmdzLmguZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIJKHJldmlzaW9uIDI2ODAyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFNldHRp
bmdzIDogcHVibGljIFNldHRpbmdzQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8U2V0dGluZ3M+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXR0aW5ncyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2V0dGluZ3M+IGNyZWF0ZShQYWdlKik7Ci0g
ICAgflNldHRpbmdzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZXR0aW5ncz4g
Y3JlYXRlKFBhZ2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U2V0dGluZ3MoKTsKIAogPCUtIGZv
ciBAc2V0dGluZyBpbiBAdW5jb25kaXRpb25hbFNldHRpbmcgZG8gLSU+CiAgICAgPCUtIGlmIEBz
ZXR0aW5nLmhhc0NvbXBsZXhHZXR0ZXI/IC0lPgpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiA8
JS0gZW5kIC0lPgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZXR0aW5ncyhQYWdlKik7CiAKIDwlLSBmb3IgQHNl
dHRpbmcgaW4gQGluc3BlY3Rvck92ZXJyaWRlU2V0dGluZ3MgZG8gLSU+CiAgICAgT3B0aW9uYWw8
PCU9IEBzZXR0aW5nLnR5cGUgJT4+IG1fPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTk5Niw2
ICsxOTk2LDcgQEAgc3ViIE5lZWRzUnVudGltZUNoZWNrCiAgICAgICAgIHx8ICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yQ29udGV4dH0KICAgICAgICAgfHwgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JXb3JsZH0KICAgICAgICAgfHwgJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9CisgICAgICAgIHx8
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlRdWlya30KICAgICAgICAg
fHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30KICAgICAg
ICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9CiAgICAg
ICAgIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbmFibGVkfTsKQEAg
LTQwNzcsNiArNDA3OCwyMCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpCiAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIiR7Y2xhc3NOYW1lfSIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY29udGV4dC0+bmFtZSkgLiAiSXNFbmFibGVkKCkiKTsKICAgICB9
CiAKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVF1aXJr
fSkgeworICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRW5hYmxlZEJ5UXVp
cmsuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30g
ZXEgIlZBTFVFX0lTX01JU1NJTkciOworCisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJEb2N1
bWVudC5oIik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJRdWlya3MuaCIpOworCisgICAg
ICAgIGFzc2VydCgiRW5hYmxlZEJ5UXVpcmsgY2FuIG9ubHkgYmUgdXNlZCBieSBpbnRlcmZhY2Vz
IG9ubHkgZXhwb3NlZCB0byB0aGUgV2luZG93IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RXhwb3NlZH0gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhw
b3NlZH0gbmUgIldpbmRvdyI7CisKKyAgICAgICAgbXkgQGZsYWdzID0gc3BsaXQoLyYvLCAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5UXVpcmt9KTsKKyAgICAgICAgZm9y
ZWFjaCBteSAkZmxhZyAoQGZsYWdzKSB7CisgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxP
YmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cXVpcmtzKCkuIiAuIFRv
TWV0aG9kTmFtZSgkZmxhZykgLiAiUXVpcmsoKSIpOworICAgICAgICB9CisgICAgfQorCiAgICAg
aWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEaXNhYmxlZEJ5UXVpcmt9KSB7CiAg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBEaXNhYmxlZEJ5UXVpcmsuIikg
aWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30gZXEgIlZB
TFVFX0lTX01JU1NJTkciOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTE2MCw2ICsxNjAsMTEgQEAKICAgICAgICAgIkRlZmF1bHREZWZpbmVPd25Qcm9wZXJ0
eSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAg
ICAgIH0sCisgICAgICAgICJEaXNhYmxlZEJ5UXVpcmsiOiB7CisgICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0
ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIiLCAiaW5jbHVk
ZXMiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBwb3J0
c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiRG9Ob3RDaGVja0NvbnN0
YW50cyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAg
ICAgICAgIH0sCkBAIC0xNzUsNiArMTgwLDExIEBACiAgICAgICAgICJEb2N1bWVudEV2ZW50SGFu
ZGxlciI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAg
ICAgICAgIH0sCisgICAgICAgICJFbmFibGVkQnlRdWlyayI6IHsKKyAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmli
dXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFudCIsICJkaWN0aW9uYXJ5LW1lbWJlciIsICJpbmNs
dWRlcyJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAorICAgICAgICAgICAgInN1cHBv
cnRzQ29uanVuY3Rpb24iOiB0cnVlCisgICAgICAgIH0sCiAgICAgICAgICJFbmFibGVkQXRSdW50
aW1lIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImRp
Y3Rpb25hcnkiLCAiZW51bSIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIiwgImNvbnN0YW50Iiwg
Iml0ZXJhYmxlIiwgImluY2x1ZGVzIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCkBA
IC0xODUsMTAgKzE5NSw2IEBACiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCiAgICAgICAg
ICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkRp
c2FibGVkQnlRdWlyayI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVy
ZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJj
b25zdGFudCJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCiAgICAg
ICAgICJFbmFibGVkRm9yQ29udGV4dCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXQogICAgICAgICB9LApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NiwxOCArNzYsMTggQEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IERPTUltcGxlbQog
ICAgIHJldHVybiBEb2N1bWVudFR5cGU6OmNyZWF0ZShtX2RvY3VtZW50LCBxdWFsaWZpZWROYW1l
LCBwdWJsaWNJZCwgc3lzdGVtSWQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVu
dD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkkpCitzdGF0aWMg
aW5saW5lIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBpZiAobmFtZXNw
YWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIHJldHVybiBTVkdE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgcmV0dXJuIFNWR0RvY3Vt
ZW50OjpjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MsIFVSTCgpKTsKICAgICBpZiAobmFtZXNwYWNl
VVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOwotICAgIHJldHVybiBYTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50
OjpjcmVhdGVYSFRNTChudWxscHRyLCBzZXR0aW5ncywgVVJMKCkpOworICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHNldHRpbmdzLCBVUkwoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPFJlZjxYTUxEb2N1bWVudD4+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBE
b2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSkKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRl
WE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1M
RG9jdW1lbnQobmFtZXNwYWNlVVJJLCBtX2RvY3VtZW50LnNldHRpbmdzKCkpOwogICAgIGRvY3Vt
ZW50LT5zZXRDb250ZXh0RG9jdW1lbnQobV9kb2N1bWVudC5jb250ZXh0RG9jdW1lbnQoKSk7CiAg
ICAgZG9jdW1lbnQtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KG1fZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW5Qb2xpY3koKSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBSZWY8Q1NTU3R5bGVTaGVldD4g
RE9NSW1wbGVtZW50YXRpb246OmNyCiAKIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBhdXRv
IGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX2RvY3VtZW50LnNl
dHRpbmdzKCksIFVSTCgpKTsKICAgICBkb2N1bWVudC0+b3BlbigpOwogICAgIGRvY3VtZW50LT53
cml0ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+
PC9ib2R5PjwvaHRtbD4iX3MgfSk7CiAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkgewpAQCAtMTMz
LDcgKzEzMyw3IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmUKICAg
ICByZXR1cm4gZG9jdW1lbnQ7CiB9CiAKLVJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKK1JlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50
KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBJbmVsZWdhbnQgdG8gaGF2ZSB0
aGlzIGhlcmUganVzdCBiZWNhdXNlIHRoaXMgaXMgdGhlIGhvbWUgb2YgRE9NIEFQSXMgZm9yIGNy
ZWF0aW5nIGRvY3VtZW50cy4KICAgICAvLyBUaGlzIGlzIGludGVybmFsLCBub3QgYSBET00gQVBJ
LiBNYXliZSB3ZSBzaG91bGQgcHV0IGl0IGluIGEgbmV3IGNsYXNzIGNhbGxlZCBEb2N1bWVudEZh
Y3RvcnksCkBAIC0xNDEsNTcgKzE0MSw1NyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVECiAKICAgICAvLyBQbHVnLWlucyBjYW5ub3QgdGFrZSBvdmVyIGZvciBIVE1M
LCBYSFRNTCwgcGxhaW4gdGV4dCwgb3Igbm9uLVBERiBpbWFnZXMuCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0ZXh0L2h0bWwiKSkKLSAgICAgICAgcmV0dXJu
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSFRNTERv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXBwbGljYXRpb24veGh0bWwreG1sIikpCi0gICAg
ICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIHVybCk7CisgICAgICAg
IHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9wbGFpbiIp
KQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAg
ICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAg
ICAgYm9vbCBpc0ltYWdlID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKHR5cGUpOwogICAgIGlmIChmcmFtZSAmJiBpc0ltYWdlICYmICFNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1l
bnQ6OmNyZWF0ZSgqZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogCiAgICAgLy8gVGhlICJpbWFnZSBk
b2N1bWVudHMgZm9yIHN1YmZyYW1lIFBERnMiIG1vZGUgd2lsbCBvdmVycmlkZSBhIFBERiBwbHVn
LWluLgogICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNQREZNSU1FVHlwZSh0eXBlKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFn
ZURvY3VtZW50Rm9yU3ViZnJhbWVQREYoKSkKLSAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVh
dGUoKmZyYW1lLCBzZXR0aW5ncywgdXJsKTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBl
ID0gQ29udGVudFR5cGUgeyB0eXBlIH07CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7CiAgICAg
aWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCi0gICAgICAgIHJldHVybiBNZWRpYURvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50Ojpj
cmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRQRElS
KQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXBwbGljYXRp
b24veC1mdHAtZGlyZWN0b3J5IikpCi0gICAgICAgIHJldHVybiBGVFBEaXJlY3RvcnlEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAjZW5kaWYKIAogICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQodHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwg
dXJsKTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCBzZXR0
aW5ncywgdXJsKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHJlbGF0aXZlbHkgY29z
dGx5IGxvb2t1cCB0aGF0IHJlcXVpcmVzIGluaXRpYWxpemluZyB0aGUgcGx1Zy1pbiBkYXRhYmFz
ZS4KICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBhdXRvIGFsbG93
ZWRQbHVnaW5UeXBlcyA9IGZyYW1lLT5sb2FkZXIoKS5hcmVQbHVnaW5zRW5hYmxlZCgpCiAgICAg
ICAgICAgICA/IFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMgOiBQbHVnaW5EYXRhOjpPbmx5QXBwbGlj
YXRpb25QbHVnaW5zOwogICAgICAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpLnN1
cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykpCi0gICAg
ICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAg
ICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHNldHRpbmdzLCB1
cmwpOwogICAgIH0KIAogICAgIC8vIEl0ZW1zIGxpc3RlZCBoZXJlLCBhZnRlciB0aGUgcGx1Zy1p
biBjaGVja3MsIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBsdWctaW5zLgogICAgIC8vIEZvciBleGFt
cGxlLCBwbHVnLWlucyBjYW4gdGFrZSBvdmVyIHN1cHBvcnQgZm9yIFBERiBvciBTVkcuCiAgICAg
aWYgKGZyYW1lICYmIGlzSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVh
dGUoKmZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpm
cmFtZSwgc2V0dGluZ3MsIHVybCk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1J
TUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHVybCk7CisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGlu
Z3MsIHVybCk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJp
bWFnZS9zdmcreG1sIikpCi0gICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwpOworICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGlu
Z3MsIHVybCk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkp
IHsKLSAgICAgICAgYXV0byBkb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBz
ZXR0aW5ncywgdXJsKTsKICAgICAgICAgZG9jdW1lbnQtPm92ZXJyaWRlTUlNRVR5cGUodHlwZSk7
CiAgICAgICAgIHJldHVybiBkb2N1bWVudDsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShm
cmFtZSwgc2V0dGluZ3MsIHVybCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgaGFzRmVhdHVyZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CiAKLSAgICBzdGF0
aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBG
cmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZURvY3Vt
ZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25z
dCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDExICs1MzIsMTEgQEAgc3Rh
dGljIGlubGluZSBpbnQgY3VycmVudE9yaWVudGF0aW9uKEZyYQogICAgIHJldHVybiAwOwogfQog
Ci1Eb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgRG9jdW1l
bnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3Mp
CitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCB1
bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKICAgICA6IENvbnRhaW5lck5vZGUoKnRoaXMsIENy
ZWF0ZURvY3VtZW50KQogICAgICwgVHJlZVNjb3BlKCp0aGlzKQogICAgICwgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyKGZyYW1lKQotICAgICwgbV9zZXR0aW5ncyhmcmFtZSA/IFJlZjxTZXR0aW5n
cz4oZnJhbWUtPnNldHRpbmdzKCkpIDogU2V0dGluZ3M6OmNyZWF0ZShudWxscHRyKSkKKyAgICAs
IG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3F1aXJrcyhtYWtlVW5pcXVlUmVmPFF1aXJr
cz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1lID8gUmVmPENh
Y2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVh
dGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lv
bikKQEAgLTYxMCwyMiArNjEwLDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFUKICAgICAgICAgbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnQgPSAwOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVudExpc3RlbmVyc1RvTm9kZSgqdGhpcyk7
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3NldHRpbmdzLT5zZXRMZWdhY3lHZXRV
c2VyTWVkaWFFbmFibGVkKHF1aXJrcygpLnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYSgp
KTsKLSNlbmRpZgogfQogCiBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGNvbnRleHREb2N1bWVudCkKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRSZWYoKm5ldyBE
b2N1bWVudChudWxscHRyLCBVUkwoKSkpOworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdFJlZigq
bmV3IERvY3VtZW50KG51bGxwdHIsIGNvbnRleHREb2N1bWVudC5tX3NldHRpbmdzLmdldCgpLCBV
UkwoKSkpOwogICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoY29udGV4dERvY3VtZW50
KTsKICAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koY29udGV4dERvY3VtZW50
LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkpOwogICAgIHJldHVybiBkb2N1bWVudDsKIH0KIAotUmVm
PERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlTm9u
UmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQo
JmZyYW1lLCB1cmwsIERlZmF1bHREb2N1bWVudENsYXNzLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQoJmZyYW1lLCBzZXR0aW5ncywg
dXJsLCBEZWZhdWx0RG9jdW1lbnRDbGFzcywgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikpOwogfQog
CiBEb2N1bWVudDo6fkRvY3VtZW50KCkKQEAgLTQwMTAsMTAgKzQwMDcsMTAgQEAgUmVmPERvY3Vt
ZW50PiBEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdAogewogICAgIGlmIChpc1hNTERvY3VtZW50
KCkpIHsKICAgICAgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJu
IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCB1cmwoKSk7Ci0gICAgICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHVybCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgbV9zZXR0aW5ncy5nZXQoKSwgdXJs
KCkpOworICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRp
bmdzLmdldCgpLCB1cmwoKSk7CiAgICAgfQotICAgIHJldHVybiBjcmVhdGUodXJsKCkpOworICAg
IHJldHVybiBjcmVhdGUobV9zZXR0aW5ncy5nZXQoKSwgdXJsKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIG90aGVyKQpAQCAtNzE0
Miw5ICs3MTM5LDkgQEAgRG9jdW1lbnQmIERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZQog
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KCpkb2N1bWVudCk7CiAKICAgICBp
ZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1w
bGF0ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncy5n
ZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1
bWVudCA9IGNyZWF0ZShhYm91dEJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1l
bnQgPSBjcmVhdGUobV9zZXR0aW5ncy5nZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKIAogICAgIG1f
dGVtcGxhdGVEb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVudCgpKTsK
ICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KHRoaXMpOyAv
LyBiYWxhbmNlZCBpbiBkdG9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2
ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzksOCArMzM5LDggQEAgY2xhc3MgRG9jdW1lbnQKICAgICAsIHB1YmxpYyBDYW52YXNPYnNl
cnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoRG9jdW1lbnQsIFdFQkNP
UkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoY29u
c3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcihGcmFtZSYsIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNy
ZWF0ZShjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1l
bnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUmLCBjb25zdCBTZXR0aW5ncyYs
IGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYp
OwogCiAgICAgdmlydHVhbCB+RG9jdW1lbnQoKTsKQEAgLTU1Niw3ICs1NTYsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7IC8vIENhbiBiZSBu
dWxsLgogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gQ2FuIGJlIG51
bGwuCiAgICAgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0
aW5ncy5nZXQoKTsgfQotICAgIFNldHRpbmdzJiBtdXRhYmxlU2V0dGluZ3MoKSB7IHJldHVybiBt
X3NldHRpbmdzLmdldCgpOyB9CiAgICAgRWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcigp
IGNvbnN0OwogCiAgICAgY29uc3QgUXVpcmtzJiBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3F1
aXJrczsgfQpAQCAtMTU5Myw3ICsxNTkyLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlciA9IDEgPDwgMSB9OwotICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwg
Y29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVu
c2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFn
cyA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAp
OwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmluZygp
OyB9CiAKQEAgLTE2OTQsNyArMTY5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZExvZ01l
c3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYsIFdURkxvZ0xldmVsLCBWZWN0b3I8SlNPTkxvZ1Zh
bHVlPiYmKSBmaW5hbDsKIAotICAgIGNvbnN0IFJlZjxTZXR0aW5ncz4gbV9zZXR0aW5nczsKKyAg
ICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAKICAgICBVbmlxdWVSZWY8
UXVpcmtzPiBtX3F1aXJrczsKIApAQCAtMjE2Miw5ICsyMTYxLDkgQEAgaW5saW5lIEFYT2JqZWN0
Q2FjaGUqIERvY3VtZW50OjpleGlzdGluZwogICAgIHJldHVybiBleGlzdGluZ0FYT2JqZWN0Q2Fj
aGVTbG93KCk7CiB9CiAKLWlubGluZSBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwpCitpbmxpbmUgUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRG9jdW1lbnQobnVsbHB0ciwgdXJsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRG9jdW1lbnQobnVsbHB0ciwgc2V0dGluZ3MsIHVybCkpOwogfQogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudDo6aW52YWxpZGF0ZUFjY2Vzc0tleUNhY2hlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudC5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjAgKzMyLDIxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFhNTERvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFhNTERvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFhN
TERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0
aWMgUmVmPFhNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBYTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCisgICAgc3RhdGljIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZy
YW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgWEhUTUxE
b2N1bWVudENsYXNzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50
KGZyYW1lLCBzZXR0aW5ncywgdXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CiAKIHBy
b3RlY3RlZDoKLSAgICBYTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1
bnNpZ25lZCBkb2N1bWVudENsYXNzZXMgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcykKLSAgICAgICAg
OiBEb2N1bWVudChmcmFtZSwgdXJsLCBYTUxEb2N1bWVudENsYXNzIHwgZG9jdW1lbnRDbGFzc2Vz
KQotICAgIHsgfQorICAgIFhNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzID0gRGVm
YXVsdERvY3VtZW50Q2xhc3MpCisgICAgICAgIDogRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1
cmwsIFhNTERvY3VtZW50Q2xhc3MgfCBkb2N1bWVudENsYXNzZXMpCisgICAgeworICAgIH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIy
LDggKzQyMiw4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgKICAg
ICBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpOwogfQogCi1GVFBEaXJlY3RvcnlEb2N1bWVu
dDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQorRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERp
cmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBj
b25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkK
IHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTG9nRlRQLnN0YXRlID0gV1RGTG9nQ2hhbm5lbFN0
YXRlOjpPbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
b2N1bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGVFBEaXJlY3RvcnlEb2N1bWVu
dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxGVFBEaXJlY3Rv
cnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZU
UERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29u
c3QgVVJMJik7CiAgICAgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlk
ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsMTMgKzg1LDEzIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChI
VE1MRG9jdW1lbnQKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVmPEhUTUxEb2N1
bWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCitSZWY8SFRNTERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6OmNyZWF0
ZVN5bnRoZXNpemVkRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1
bWVudCgmZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTERvY3VtZW50KCZmcmFtZSwgc2V0dGluZ3MsIHVybCwg
SFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7CiB9CiAKLUhUTUxEb2N1bWVudDo6SFRN
TERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xhc3NGbGFn
cyBkb2N1bWVudENsYXNzZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzKQotICAgIDogRG9j
dW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3VtZW50Q2xhc3MsIGNv
bnN0cnVjdGlvbkZsYWdzKQorSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNz
RmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKKyAgICA6
IERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsLCBkb2N1bWVudENsYXNzZXMgfCBIVE1MRG9j
dW1lbnRDbGFzcywgY29uc3RydWN0aW9uRmxhZ3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7
CiB9CkBAIC0yNTAsNyArMjUwLDcgQEAgYm9vbCBIVE1MRG9jdW1lbnQ6OmlzRnJhbWVTZXQoKSBj
b25zdAogCiBSZWY8RG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRD
aGlsZHJlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCB1cmwoKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCBzZXR0aW5ncygpLCB1cmwoKSk7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMg
RG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERvY3VtZW50KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiwgY29uc3Qg
VVJMJik7Ci0gICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRoZXNpemVkRG9j
dW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMg
UmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSYsIGNvbnN0
IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB+SFRNTERvY3VtZW50KCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKIHByb3RlY3RlZDoKLSAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmLCBEb2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9
IDApOworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJM
JiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAw
KTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRnJhbWVTZXQoKSBjb25zdCBmaW5hbDsKQEAgLTY1
LDkgKzY1LDkgQEAgcHJpdmF0ZToKICAgICBUcmVlU2NvcGVPcmRlcmVkTWFwIG1fd2luZG93TmFt
ZWRJdGVtOwogfTsKIAotaW5saW5lIFJlZjxIVE1MRG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitpbmxpbmUgUmVmPEhUTUxEb2N1bWVu
dD4gSFRNTERvY3VtZW50OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxE
b2N1bWVudChmcmFtZSwgdXJsLCBIVE1MRG9jdW1lbnRDbGFzcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgSFRNTERvY3VtZW50
Q2xhc3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTQgKzE5Niwx
NCBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgZG9jdW1lbnQoKS5m
aW5pc2hlZFBhcnNpbmcoKTsKIH0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgdXJs
LCBJbWFnZURvY3VtZW50Q2xhc3MpCitJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KEZyYW1l
JiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6
IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNldHRpbmdzLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykK
ICAgICAsIG1faW1hZ2VFbGVtZW50KG51bGxwdHIpCiAgICAgLCBtX2ltYWdlU2l6ZUlzS25vd24o
ZmFsc2UpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX2RpZFNocmlua0ltYWdl
KGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKGZyYW1lLnNldHRpbmdz
KCkuc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkp
CisgICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKHNldHRpbmdzLnNocmlua3NTdGFuZGFsb25lSW1h
Z2VzVG9GaXQoKSAmJiBmcmFtZS5pc01haW5GcmFtZSgpKQogewogICAgIHNldENvbXBhdGliaWxp
dHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tD
b21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgJ
KHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBJbWFnZURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZURvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7
CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBJbWFnZURvY3Vt
ZW50KEZyYW1lJiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4
IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG8KICAgICBmaW5pc2go
KTsKIH0KICAgICAKLU1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3Vt
ZW50Q2xhc3MpCitNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVu
dChmcmFtZSwgc2V0dGluZ3MsIHVybCwgTWVkaWFEb2N1bWVudENsYXNzKQogewogICAgIHNldENv
bXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwog
ICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURv
Y3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhRG9jdW1lbnQpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCisgICAgc3RhdGljIFJlZjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1
cmwpKTsKICAgICB9CiAgICAgdmlydHVhbCB+TWVkaWFEb2N1bWVudCgpOwogCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fb3V0Z29pbmdSZWZlcnJlcjsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0
dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDggKzE0MSw4IEBAIHZvaWQgUGx1Z2luRG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKEQKICAgICB9CiB9CiAKLVBsdWdpbkRvY3VtZW50OjpQ
bHVnaW5Eb2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERv
Y3VtZW50KCZmcmFtZSwgdXJsLCBQbHVnaW5Eb2N1bWVudENsYXNzKQorUGx1Z2luRG9jdW1lbnQ6
OlBsdWdpbkRvY3VtZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBj
b25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNldHRpbmdzLCB1cmws
IFBsdWdpbkRvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1l
bnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlN
b2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCShyZXZpc2lvbiAy
NjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgV2lkZ2V0OwogY2xhc3MgUGx1Z2luRG9jdW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFBsdWdpbkRvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBsdWdpbkRvY3Vt
ZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVm
PFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbHVnaW5Eb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIFdpZGdldCogcGx1Z2luV2lkZ2V0KCk7CkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2lu
RG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSYs
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZVBhcnNlcigpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dERvY3VtZW50KTsKIAotVGV4
dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBUZXh0RG9jdW1lbnRDbGFzcykKK1RleHREb2N1
bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVy
bCwgVGV4dERvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1l
bnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlN
b2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0RG9jdW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFRleHREb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0RG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8VGV4
dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Ms
IGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIFRleHREb2N1bWVudChGcmFt
ZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAgICAgCiAgICAgUmVmPERvY3VtZW50
UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDExICs3NiwxMSBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVu
dChjb25zCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBuZXdEb2N1bWVudDsKICAgICBpZiAobV9k
b2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX2RvY3VtZW50LnNldHRpbmdzKCksIFVSTCgpKTsK
ICAgICBlbHNlIGlmIChtX2RvY3VtZW50LmlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdE
b2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBVUkwoKSk7CisgICAg
ICAgIG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIG1fZG9j
dW1lbnQuc2V0dGluZ3MoKSwgVVJMKCkpOwogICAgIGVsc2UgaWYgKG1fZG9jdW1lbnQuaXNTVkdE
b2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgVVJMKCkpOworICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSk7CiAKICAgICBBU1NFUlQobmV3
RG9jdW1lbnQpOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gcGFyc2VyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBib29sIERvY3VtZW50V3JpdGVyOjpiZWdpbigpCiBSZWY8
RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCi0gICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gUGx1
Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgbV9mcmFtZS0+c2V0dGluZ3MoKSwgdXJsKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BE
Rk1JTUVUeXBlKG1fbWltZVR5cGUpICYmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpIHx8ICFtX2Zy
YW1lLT5zZXR0aW5ncygpLnVzZUltYWdlRG9jdW1lbnRGb3JTdWJmcmFtZVBERigpKSkKLSAgICAg
ICAgcmV0dXJuIFNpbmtEb2N1bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICBy
ZXR1cm4gU2lua0RvY3VtZW50OjpjcmVhdGUoKm1fZnJhbWUsIG1fZnJhbWUtPnNldHRpbmdzKCks
IHVybCk7CiAjZW5kaWYKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0hU
TUxWaWV3KCkpCi0gICAgICAgIHJldHVybiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcigqbV9mcmFtZSwgdXJsKTsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBE
b2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcigqbV9mcmFtZSwgbV9mcmFtZS0+
c2V0dGluZ3MoKSwgdXJsKTsKKyAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURv
Y3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIG1fZnJhbWUtPnNldHRpbmdzKCksIHVybCk7CiB9
CiAKIGJvb2wgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IFVSTCYgdXJsUmVmZXJlbmNlLCBi
b29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKQEAgLTEzNCw3ICsxMzQsNyBA
QCBib29sIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVyCiAgICAgLy8gSWYgdGhl
IG5ldyBkb2N1bWVudCBpcyBmb3IgYSBQbHVnaW4gYnV0IHdlJ3JlIHN1cHBvc2VkIHRvIGJlIHNh
bmRib3hlZCBmcm9tIFBsdWdpbnMsCiAgICAgLy8gdGhlbiByZXBsYWNlIHRoZSBkb2N1bWVudCB3
aXRoIG9uZSB3aG9zZSBwYXJzZXIgd2lsbCBpZ25vcmUgdGhlIGluY29taW5nIGRhdGEgKGJ1ZyAz
OTMyMykKICAgICBpZiAoZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+
aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQotICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1
bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1
bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCBtX2ZyYW1lLT5zZXR0aW5ncygpLCB1cmwpOwogCiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29uc3VsdCB0aGUgY29udGVudCBzZWN1cml0eSBwb2xp
Y3kgaGVyZSBhYm91dCBibG9ja2VkIHBsdWctaW5zPwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU2lua0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAg
cHJpdmF0ZToKICAgICB9CiB9OwogCi1TaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgdXJsKQor
U2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgc2V0
dGluZ3MsIHVybCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGli
aWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNpbmtEb2N1bWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U2lua0RvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbmtEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxTaW5rRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29u
c3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW5rRG9j
dW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW5rRG9j
dW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lu
a0RvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgU2lua0RvY3VtZW50KEZyYW1lJiwg
Y29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlUGFyc2VyKCkgZmluYWw7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjgwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGlubGluZSBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzbwogICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChjYWNoZWRSZXNv
dXJjZS5lcnJvcigpKTsKIH0KIAotc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNv
b2tpZUphcikKK3N0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgpAQCAtMTIxLDkgKzEyMSw5IEBA
IHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0
KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlOgotICAgICAgICByZXR1cm4gbmV3
IENhY2hlZFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3Qp
LCBzZXNzaW9uSUQsIGNvb2tpZUphciwgc2V0dGluZ3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdG
b250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRTVkdGb250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2ll
SmFyLCBzZXR0aW5ncyk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291
cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vz
c2lvbklELCBjb29raWVKYXIpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkJlYWNv
bjoKQEAgLTE1MCw2ICsxNTAsNDUgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNv
dXJjZShDYQogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgQ2FjaGVkUmVzb3VyY2Uq
IGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgeworICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6CisgICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkSW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCks
IHJlc291cmNlLmNvb2tpZUphcigpKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigp
KTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkU2NyaXB0KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgp
LCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVu
dChXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVudCY+KHJlc291
cmNlKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRm9udFJlc291cmNlOgor
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0ZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc3RhdGlj
X2Nhc3Q8Q2FjaGVkU1ZHRm9udCY+KHJlc291cmNlKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Rm9udFJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigp
KTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpCZWFjb246CisgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UGluZzoKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpN
ZWRpYVJlc291cmNlOgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNl
OgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJh
d1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnR5cGUoKSwgcmVzb3VyY2Uuc2Vz
c2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFhTTFN0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lv
bklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNv
dXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TGlua1ByZWZldGNo
LCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgorICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFRleHRUcmFjayhXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQo
KSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ogor
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShyZXF1
ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNlbmRp
ZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9jdW1lbnQobnVsbHB0cikKICAgICAs
IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCkBAIC02NzMsMTQgKzcxMiwxNCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNSZXNvdXJjZVN1aXRhYmxlRm9yCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXImIGNvb2tpZUph
cikKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXImIGNvb2tpZUphciwg
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmICghaXNSZXNvdXJjZVN1aXRhYmxl
Rm9yRGlyZWN0UmV1c2UocmVzb3VyY2UsIHJlcXVlc3QpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0
Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwotICAgICAgICBy
ZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNlLnR5cGUoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKHJl
cXVlc3QpLCBjb29raWVKYXIpOworICAgICAgICByZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNl
LnR5cGUoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIsIHNldHRpbmdz
KTsKICAgICB9CiAKLSAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gY3JlYXRlUmVzb3VyY2UocmVz
b3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsICZjb29raWVKYXIpOwor
ICAgIGF1dG8gcmVzb3VyY2VIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS50eXBlKCks
IFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgJmNvb2tpZUphciwgc2V0dGluZ3MpOwogICAg
IHJlc291cmNlSGFuZGxlLT5sb2FkRnJvbShyZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNl
SGFuZGxlOwogfQpAQCAtODQwLDcgKzg3OSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWMKICAgICAgICAgaWYgKGJsb2NrZWRMb2FkKSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJjZTogUmVzb3Vy
Y2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiLCBmcmFtZSk7CiAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Ci0gICAgICAgICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gY3Jl
YXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgcGFnZS5zZXNzaW9uSUQoKSwgJnBh
Z2UuY29va2llSmFyKCkpOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVx
dWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksICZwYWdlLmNvb2tpZUphcigpLCBwYWdlLnNldHRpbmdz
KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CiAgICAg
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250
ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlc291cmNlUmVx
dWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRl
bnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0
aW9uIikpKTsKQEAgLTkxMyw3ICs5NTIsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjCiAgICAgY2FzZSBMb2FkOgogICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAg
ICAgICAgICBsb2dNZW1vcnlDYWNoZVJlc291cmNlUmVxdWVzdCgmZnJhbWUsIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6bWVtb3J5Q2FjaGVFbnRyeURlY2lzaW9uS2V5KCksIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6dW51c2VkS2V5KCkpOwotICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0
eXBlLCBwYWdlLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIpOworICAg
ICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCBwYWdlLnNlc3Npb25JRCgpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBjb29raWVKYXIsIHBhZ2Uuc2V0dGluZ3MoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUmV2YWxpZGF0ZToKICAgICAgICAgaWYgKHJlc291cmNlKQpAQCAtOTMwLDcg
Kzk2OSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWMKICAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZXJyb3IpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJl
cXVlc3QoKnJlc291cmNlLCByZXF1ZXN0KSkgewotICAgICAgICAgICAgcmVzb3VyY2UgPSB1cGRh
dGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdCgqcmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksIGNvb2tpZUphcik7CisgICAgICAgICAgICByZXNvdXJj
ZSA9IHVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KCpyZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSwgcGFnZS5zZXNzaW9uSUQoKSwgY29va2llSmFyLCBwYWdlLnNldHRpbmdz
KCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJj
ZTo6U3RhdHVzOjpDYWNoZWQpCiAgICAgICAgICAgICAgICAgcG9saWN5ID0gTG9hZDsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTEwMTgsNyArMTA1Nyw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWMKICAgICBBU1NFUlQoIXJlc291cmNlLnJlc291cmNlVG9SZXZhbGlk
YXRlKCkpOwogICAgIEFTU0VSVChyZXNvdXJjZS5hbGxvd3NDYWNoaW5nKCkpOwogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVz
b3VyY2UocmVzb3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9u
SUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKFdURk1vdmUocmVxdWVz
dCksIHJlc291cmNlKTsKIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZSAlcCBj
cmVhdGVkIHRvIHJldmFsaWRhdGUgJXAiLCBuZXdSZXNvdXJjZS5nZXQoKSwgJnJlc291cmNlKTsK
ICAgICBuZXdSZXNvdXJjZS0+c2V0UmVzb3VyY2VUb1JldmFsaWRhdGUoJnJlc291cmNlKTsKQEAg
LTEwMzEsNyArMTA3MCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWMKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgQ29va2llSmFyJiBjb29raWVKYXIpCitDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IENvb2tpZUphciYgY29v
a2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgYXV0byYgbWVtb3J5Q2Fj
aGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgQVNTRVJUKCFyZXF1ZXN0LmFsbG93
c0NhY2hpbmcoKSB8fCAhbWVtb3J5Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCkKQEAgLTEwMzksNyArMTA3OCw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKIAogICAgIExPRyhSZXNvdXJjZUxvYWRp
bmcsICJMb2FkaW5nIENhY2hlZFJlc291cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkubGF0aW4xKCku
ZGF0YSgpKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNv
dXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwg
JmNvb2tpZUphcik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklE
LCAmY29va2llSmFyLCBzZXR0aW5ncyk7CiAKICAgICBpZiAocmVzb3VyY2UtPmFsbG93c0NhY2hp
bmcoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJjZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgRm9yUHJlbG9hZCA9IEZvclByZWxvYWQ6Ok5vLCBJbWFnZUxvYWRpbmcgPSBJbWFn
ZUxvYWRpbmc6OkltbWVkaWF0ZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVk
UmVzb3VyY2UmKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9h
ZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvb2tpZUphciYpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFBB
TDo6U2Vzc2lvbklELCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgQ29va2llSmFyJiwg
Y29uc3QgU2V0dGluZ3MmKTsKIAogICAgIHZvaWQgcHJlcGFyZUZldGNoKENhY2hlZFJlc291cmNl
OjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHVwZGF0ZUhUVFBSZXF1
ZXN0SGVhZGVycyhGcmFtZUxvYWRlciYsIENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFJldmFsaWRh
dGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5
cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291
cmNlLCBGb3JQcmVsb2FkLCBJbWFnZUxvYWRpbmcpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRV
cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVz
dChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciYpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVz
dChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciYsIGNvbnN0IFNldHRpbmdzJik7CiAKICAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlw
ZSwgY29uc3QgVVJMJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEzICsyMywyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNh
Y2hlZFNWR0RvY3VtZW50LmgiCiAKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0RvY3VtZW50
OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikK
K0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29r
aWVKYXIqIGNvb2tpZUphciwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogQ2FjaGVk
UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgc2Vz
c2lvbklELCBjb29raWVKYXIpCiAgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCit7
Cit9CisKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBDYWNoZWRTVkdEb2N1bWVudCYgcmVzb3VyY2UpCisgICAgOiBD
YWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwg
cmVzb3VyY2UuY29va2llSmFyKCksIHJlc291cmNlLm1fc2V0dGluZ3MuZ2V0KCkpCiB7CiB9CiAK
QEAgLTQ5LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhT
aAogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KLSAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgcmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MuZ2V0KCksIHJlc3BvbnNlKCkudXJsKCkp
OwogICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2V0dGluZ3M7CisKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50IGZpbmFsIDogcHVibGljIENh
Y2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29r
aWVKYXIqKTsKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBjb25zdCBT
ZXR0aW5ncyYpOworICAgIGV4cGxpY2l0IENhY2hlZFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNl
UmVxdWVzdCYmLCBDYWNoZWRTVkdEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNWR0Rv
Y3VtZW50KCk7CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CkBAIC00NCw2ICs0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKKyAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE3ICszMiwyNCBAQAogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiU1ZHVG9PVEZGb250Q29udmVyc2lv
bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0Zv
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQm
IHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCitDYWNoZWRTVkdGb250OjpD
YWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNoZWRGb250KFdURk1vdmUocmVxdWVzdCksIHNl
c3Npb25JRCwgY29va2llSmFyLCBUeXBlOjpTVkdGb250UmVzb3VyY2UpCiAgICAgLCBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQobnVsbHB0cikKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCit7
Cit9CisKK0NhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgQ2FjaGVkU1ZHRm9udCYgcmVzb3VyY2UpCisgICAgOiBDYWNoZWRTVkdGb250
KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVK
YXIoKSwgcmVzb3VyY2UubV9zZXR0aW5ncy5nZXQoKSkKIHsKIH0KIApAQCAtNjYsNyArNzMsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhCiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBkdXJpbmcgcmVuZGVyIHRyZWUgdXBkYXRlcyB3
aGVuIGV2ZW50cyBhcmUgZm9yYmlkZGVuLgogICAgICAgICAgICAgLy8gRnJhbWVsZXNzIGRvY3Vt
ZW50IGNhbid0IHJ1biBzY3JpcHRzIG9yIGNhbGwgYmFjayB0byB0aGUgY2xpZW50IHNvIHRoaXMg
aXMgc2FmZS4KLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50
OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLmdldCgpLCBVUkwo
KSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCShyZXZpc2lvbiAyNjgwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxMCArMzAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1ZHRm9udEZhY2VFbGVtZW50OworY2xhc3MgU2V0dGluZ3M7CiAKIGNsYXNzIENhY2hlZFNWR0Zv
bnQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkU1ZHRm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBD
b29raWVKYXIqKTsKKyAgICBDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciosIGNvbnN0IFNldHRpbmdzJik7
CisgICAgQ2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkU1ZHRm9u
dCYpOwogCiAgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpIG92ZXJyaWRlOwogCkBAIC01MCw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVu
dD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNw
cAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VF
dmVudExpc3RlbmVyUGFzcwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLWJvb2wgUXVp
cmtzOjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEoKSBjb25zdAorYm9vbCBRdWlya3M6
OnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJrKCkgY29uc3QKIHsKICAgICBpZiAo
IW5lZWRzUXVpcmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUXVpcmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50TGlzdGVuZXImKTsKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0gICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVk
aWEoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJr
KCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUVsZW1lbnRGdWxsc2Ny
ZWVuUXVpcmsoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlz
aW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQwLDEwICs5NDAsNiBAQCBpc0xvZ2dlZEluQVBJRW5hYmxlZDoKIGVudGVy
S2V5SGludEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKLWxlZ2FjeUdldFVzZXJNZWRpYUVu
YWJsZWQ6Ci0gIGluaXRpYWw6IGZhbHNlCi0gIGNvbmRpdGlvbmFsOiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCiAjIEZJWE1FOiBTZWVtcyB0byBiZSB1bnVzZWQuIFJlbW92ZSBvbmNlIHZlcmlmaWVk
LgogaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIEZyYW1lOjppbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjCiB7CiAgICAg
bV9sb2FkZXItPmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBhdXRvIGRv
Y3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KCp0aGlzLCB1
cmwpOworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVk
RG9jdW1lbnQoKnRoaXMsIHNldHRpbmdzKCksIHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBh
dGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2Rl
KTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7CiAgICAgc2V0RG9jdW1lbnQoZG9j
dW1lbnQuY29weVJlZigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdEb2N1bWVudCk7CiAKLVNWR0RvY3VtZW50OjpTVkdE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogWE1MRG9jdW1lbnQo
ZnJhbWUsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCisg
ICAgOiBYTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykK
IHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29u
c3QgRmxvYXRQCiAKIFJlZjxEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCkp
OworICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MoKSwgdXJsKCkpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIzICsz
MCwyMyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnQgZmluYWwgOiBw
dWJsaWMgWE1MRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHRG9jdW1l
bnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSos
IGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSos
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBib29sIHpvb21BbmRQYW5FbmFi
bGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7
CiAgICAgdm9pZCB1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgU1ZH
RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogCiAgICAgUmVm
PERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBGbG9hdFNpemUgbV9wYW5uaW5nT2Zmc2V0OwogfTsKIAotaW5saW5lIFJlZjxTVkdE
b2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQoraW5saW5lIFJlZjxTVkdEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0RvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTIgKzU2LDEzIEBAIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBh
Z2UKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwogCisgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKwogICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpOwogICAgIG1haW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWRE
b2N1bWVudCh7IH0pOwotICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVu
ZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIGRv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1l
LCBtYWluRnJhbWUuc2V0dGluZ3MoKSwgZGF0YS5zY3JpcHRVUkwpOwogICAgIGRvY3VtZW50LT5j
cmVhdGVET01XaW5kb3coKTsKIAotICAgIGRvY3VtZW50LT5tdXRhYmxlU2V0dGluZ3MoKS5zZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3koc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBkb2N1bWVu
dC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8gb3JpZ2luID0g
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dl
YkNvcmUveG1sL0RPTVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgRE9NUGFyc2VyOjpET01QYXJzZXIoRG9jdW1l
bnQmIGNvbnRleHREb2N1bWVudCkKICAgICA6IG1fY29udGV4dERvY3VtZW50KG1ha2VXZWFrUHRy
KGNvbnRleHREb2N1bWVudCkpCisgICAgLCBtX3NldHRpbmdzKGNvbnRleHREb2N1bWVudC5zZXR0
aW5ncygpKQogewogfQogCkBAIC0zOCw3ICszOSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVu
dD4+IERPTVBhcnNlcjo6cGEKIHsKICAgICBpZiAoY29udGVudFR5cGUgIT0gInRleHQvaHRtbCIg
JiYgY29udGVudFR5cGUgIT0gInRleHQveG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRp
b24veG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRpb24veGh0bWwreG1sIiAmJiBjb250
ZW50VHlwZSAhPSAiaW1hZ2Uvc3ZnK3htbCIpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IgfTsKLSAgICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRyLCBVUkwgeyB9KTsKKyAgICBhdXRvIGRvY3Vt
ZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxs
cHRyLCBtX3NldHRpbmdzLmdldCgpLCBVUkwgeyB9KTsKICAgICBpZiAobV9jb250ZXh0RG9jdW1l
bnQpCiAgICAgICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoKm1fY29udGV4dERvY3Vt
ZW50LmdldCgpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGVudChzdHJpbmcpOwpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3htbC9ET01QYXJzZXIuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUveG1s
L0RPTVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xhc3MgU2V0dGluZ3M7CiAKIGNsYXNzIERP
TVBhcnNlciA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVBhcnNlcj4gewogcHVibGljOgpAQCAtMzQs
NiArMzUsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IERPTVBhcnNlcihEb2N1bWVudCYgY29u
dGV4dERvY3VtZW50KTsKIAogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY29udGV4dERvY3VtZW50
OworICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjY4MDIxKQor
KysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgxLDkgKzE4MSw5IEBAIEV4Y2VwdGlvbk9yPERvY3VtZW50Kj4gWE1MSHR0cFJlcXVlc3Q6
OnIKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNIVE1MKQotICAgICAgICAgICAgICAgIG1fcmVzcG9u
c2VEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fcmVzcG9uc2UudXJs
KCkpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIGNvbnRleHQuc2V0dGluZ3MoKSwgbV9yZXNwb25zZS51cmwoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gWE1M
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3Jlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgICAg
ICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGNv
bnRleHQuc2V0dGluZ3MoKSwgbV9yZXNwb25zZS51cmwoKSk7CiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlRG9jdW1lbnQtPm92ZXJyaWRlTGFzdE1vZGlmaWVkKG1fcmVzcG9uc2UubGFzdE1vZGlmaWVk
KCkpOwogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQo
Y29udGV4dCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQtPnNldFNlY3VyaXR5T3Jp
Z2luUG9saWN5KGNvbnRleHQuc2VjdXJpdHlPcmlnaW5Qb2xpY3koKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEwICs3Miwx
MCBAQCBSZWY8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtCiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxh
aW4iKSB7Ci0gICAgICAgIHJlc3VsdCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwg
c291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOworICAgICAg
ICByZXN1bHQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIG93bmVyRG9jdW1lbnQt
PnNldHRpbmdzKCksIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IFVS
TCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyhk
b2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9j
dW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKKyAgICAgICAgcmVzdWx0ID0g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBmcmFtZSwg
b3duZXJEb2N1bWVudC0+c2V0dGluZ3MoKSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1l
bnQtPnVybCgpIDogVVJMKCkpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcsIHdlIG5lZWQgdG8g
c2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5ldyBkb2N1bWVudAog
ICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3ZSdyZSByZW5kZXJp
bmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODA1OCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEwLTA2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICA8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9j
YWwiPiBub3Qgc2hvdyBjYWxlbmRhciBVSSB3aGVuIGl0J3MgaW5zaWRlIFNoYWRvd0RPTQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTg1CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTY2MDI3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Eb2N1
bWVudE9yZGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZURvY3VtZW50KToK
KyAgICAgICAgVXBkYXRlIHRvIHBhc3MgYSBTZXR0aW5ncyBvYmplY3QgdG8gRG9jdW1lbnQ6OmNy
ZWF0ZSB3aGljaCBpcyBub3cgcmVxdWlyZWQuCisKIDIwMjAtMTAtMDYgIEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjcz
OTkpOiBbV1BFXSBCdWlsZCBicm9rZW4gd2l0aCBFTkFCTEVfQUNDRVNTSUJJTElUWT1PRkYKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRP
cmRlci5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEh0bWxFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3NpdGlvbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYWRvd1Jv
b3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaD4KQEAgLTU1LDcgKzU2LDggQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudCgpCiB7
CiAgICAgSFRNTE5hbWVzOjppbml0KCk7Ci0gICAgYXV0byBkb2N1bWVudCA9IERvY3VtZW50Ojpj
cmVhdGUoYWJvdXRCbGFua1VSTCgpKTsKKyAgICBhdXRvIHNldHRpbmdzID0gU2V0dGluZ3M6OmNy
ZWF0ZShudWxscHRyKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShzZXR0
aW5ncy5nZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKICAgICBhdXRvIGRvY3VtZW50RWxlbWVudCA9
IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBkb2N1bWVudC0+YXBwZW5k
Q2hpbGQoZG9jdW1lbnRFbGVtZW50KTsKICAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Cg==
</data>
<flag name="commit-queue"
          id="426673"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410673</attachid>
            <date>2020-10-06 11:49:54 -0700</date>
            <delta_ts>2020-10-06 15:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216985-20201006114954.patch</filename>
            <type>text/plain</type>
            <size>66326</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAyMC0xMC0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0IHR5cGU9ImRhdGV0aW1l
LWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGluc2lkZSBTaGFkb3dET00K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yK01lZGlhRGV2aWNlcy5pZGw6CisgICAgICAgICogU2NyaXB0cy9T
ZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzUnVudGltZUNoZWNrKToKKyAg
ICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBkb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWE1MRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQp
OgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6bV9zZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhv
dXRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlVGVt
cGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bXV0YWJsZVNldHRpbmdz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnQ6
OmNyZWF0ZVhIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50OjpYTUxEb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRo
ZXNpemVkRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpIVE1MRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0
aG91dENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpJbWFnZURv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudDo6TWVk
aWFEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50Lmg6CisgICAgICAgICog
aHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVu
dDo6UGx1Z2luRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9j
dW1lbnQ6OlRleHREb2N1bWVudCk6CisgICAgICAgICogaHRtbC9UZXh0RG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpjcmVhdGVE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YmVnaW4pOgorICAg
ICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lua0Rv
Y3VtZW50OjpTaW5rRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjpDYWNoZWRTVkdG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAq
IHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6c2hvdWxkRW5hYmxl
TGVnYWN5R2V0VXNlck1lZGlhUXVpcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtz
OjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAg
ICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluaXRX
aXRoU2ltcGxlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuIGNvbnN0KToK
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3Vt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYWdlRm9yU2Vy
dmljZVdvcmtlcik6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01QYXJzZXI6OkRPTVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6
OnBhcnNlRnJvbVN0cmluZyk6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5oOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291
cmNlKToKKwogMjAyMC0xMC0wNiAgTHVtaW5nIFlpbiAgPGx1bWluZ195aW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gQnVtcCByZXBvcnRlZCBjdXJyZW50IHNoaXBwaW5nIHJlbGVhc2Ug
VUEgdG8gMTBfMTVfNwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3IrTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvcitNZWRpYURldmljZXMuaWRsCShyZXZpc2lvbiAy
NjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvcitN
ZWRpYURldmljZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw1ICszNiw1IEBACiAgICAgSW1w
bGVtZW50ZWRCeT1OYXZpZ2F0b3JNZWRpYURldmljZXMKIF0gcGFydGlhbCBpbnRlcmZhY2UgTmF2
aWdhdG9yIHsKICAgICBbU2FtZU9iamVjdCwgU2VjdXJlQ29udGV4dCwgQ29udGV4dEFsbG93c01l
ZGlhRGV2aWNlc10gcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhRGV2aWNlcyBtZWRpYURldmljZXM7
Ci0gICAgW0N1c3RvbSwgRW5hYmxlZEJ5U2V0dGluZz1MZWdhY3lHZXRVc2VyTWVkaWFdIHVuZGVm
aW5lZCBnZXRVc2VyTWVkaWEob2JqZWN0IGNvbnN0cmFpbnRzLCBvYmplY3Q/IHN1Y2Nlc3NDYWxs
YmFjaywgb2JqZWN0PyBlcnJvckNhbGxiYWNrKTsKKyAgICBbQ3VzdG9tLCBFbmFibGVkQnlRdWly
az1zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFdIHVuZGVmaW5lZCBnZXRVc2VyTWVkaWEo
b2JqZWN0IGNvbnN0cmFpbnRzLCBvYmplY3Q/IHN1Y2Nlc3NDYWxsYmFjaywgb2JqZWN0PyBlcnJv
ckNhbGxiYWNrKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVt
cGxhdGVzL1NldHRpbmdzLmguZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIJKHJldmlzaW9uIDI2ODAyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFNldHRp
bmdzIDogcHVibGljIFNldHRpbmdzQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8U2V0dGluZ3M+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXR0aW5ncyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2V0dGluZ3M+IGNyZWF0ZShQYWdlKik7Ci0g
ICAgflNldHRpbmdzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZXR0aW5ncz4g
Y3JlYXRlKFBhZ2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U2V0dGluZ3MoKTsKIAogPCUtIGZv
ciBAc2V0dGluZyBpbiBAdW5jb25kaXRpb25hbFNldHRpbmcgZG8gLSU+CiAgICAgPCUtIGlmIEBz
ZXR0aW5nLmhhc0NvbXBsZXhHZXR0ZXI/IC0lPgpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiA8
JS0gZW5kIC0lPgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZXR0aW5ncyhQYWdlKik7CiAKIDwlLSBmb3IgQHNl
dHRpbmcgaW4gQGluc3BlY3Rvck92ZXJyaWRlU2V0dGluZ3MgZG8gLSU+CiAgICAgT3B0aW9uYWw8
PCU9IEBzZXR0aW5nLnR5cGUgJT4+IG1fPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTk5Niw2
ICsxOTk2LDcgQEAgc3ViIE5lZWRzUnVudGltZUNoZWNrCiAgICAgICAgIHx8ICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yQ29udGV4dH0KICAgICAgICAgfHwgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JXb3JsZH0KICAgICAgICAgfHwgJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9CisgICAgICAgIHx8
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlRdWlya30KICAgICAgICAg
fHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30KICAgICAg
ICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9CiAgICAg
ICAgIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbmFibGVkfTsKQEAg
LTQwNzcsNiArNDA3OCwyMCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpCiAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIiR7Y2xhc3NOYW1lfSIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY29udGV4dC0+bmFtZSkgLiAiSXNFbmFibGVkKCkiKTsKICAgICB9
CiAKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVF1aXJr
fSkgeworICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRW5hYmxlZEJ5UXVp
cmsuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30g
ZXEgIlZBTFVFX0lTX01JU1NJTkciOworCisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJEb2N1
bWVudC5oIik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJRdWlya3MuaCIpOworCisgICAg
ICAgIGFzc2VydCgiRW5hYmxlZEJ5UXVpcmsgY2FuIG9ubHkgYmUgdXNlZCBieSBpbnRlcmZhY2Vz
IG9ubHkgZXhwb3NlZCB0byB0aGUgV2luZG93IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RXhwb3NlZH0gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhw
b3NlZH0gbmUgIldpbmRvdyI7CisKKyAgICAgICAgbXkgQGZsYWdzID0gc3BsaXQoLyYvLCAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5UXVpcmt9KTsKKyAgICAgICAgZm9y
ZWFjaCBteSAkZmxhZyAoQGZsYWdzKSB7CisgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxP
YmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+cXVpcmtzKCkuIiAuIFRv
TWV0aG9kTmFtZSgkZmxhZykgLiAiUXVpcmsoKSIpOworICAgICAgICB9CisgICAgfQorCiAgICAg
aWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEaXNhYmxlZEJ5UXVpcmt9KSB7CiAg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBEaXNhYmxlZEJ5UXVpcmsuIikg
aWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlRdWlya30gZXEgIlZB
TFVFX0lTX01JU1NJTkciOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTE2MCw2ICsxNjAsMTEgQEAKICAgICAgICAgIkRlZmF1bHREZWZpbmVPd25Qcm9wZXJ0
eSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAg
ICAgIH0sCisgICAgICAgICJEaXNhYmxlZEJ5UXVpcmsiOiB7CisgICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0
ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIiLCAiaW5jbHVk
ZXMiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBwb3J0
c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiRG9Ob3RDaGVja0NvbnN0
YW50cyI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAg
ICAgICAgIH0sCkBAIC0xNzUsNiArMTgwLDExIEBACiAgICAgICAgICJEb2N1bWVudEV2ZW50SGFu
ZGxlciI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAg
ICAgICAgIH0sCisgICAgICAgICJFbmFibGVkQnlRdWlyayI6IHsKKyAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmli
dXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFudCIsICJkaWN0aW9uYXJ5LW1lbWJlciIsICJpbmNs
dWRlcyJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAorICAgICAgICAgICAgInN1cHBv
cnRzQ29uanVuY3Rpb24iOiB0cnVlCisgICAgICAgIH0sCiAgICAgICAgICJFbmFibGVkQXRSdW50
aW1lIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImRp
Y3Rpb25hcnkiLCAiZW51bSIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIiwgImNvbnN0YW50Iiwg
Iml0ZXJhYmxlIiwgImluY2x1ZGVzIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCkBA
IC0xODUsMTAgKzE5NSw2IEBACiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCiAgICAgICAg
ICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKICAgICAgICAgfSwKLSAgICAgICAgIkRp
c2FibGVkQnlRdWlyayI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVy
ZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJj
b25zdGFudCJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCiAgICAg
ICAgICJFbmFibGVkRm9yQ29udGV4dCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXQogICAgICAgICB9LApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NiwxOCArNzYsMTggQEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IERPTUltcGxlbQog
ICAgIHJldHVybiBEb2N1bWVudFR5cGU6OmNyZWF0ZShtX2RvY3VtZW50LCBxdWFsaWZpZWROYW1l
LCBwdWJsaWNJZCwgc3lzdGVtSWQpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVu
dD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkkpCitzdGF0aWMg
aW5saW5lIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBpZiAobmFtZXNw
YWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIHJldHVybiBTVkdE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgcmV0dXJuIFNWR0RvY3Vt
ZW50OjpjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MsIFVSTCgpKTsKICAgICBpZiAobmFtZXNwYWNl
VVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOwotICAgIHJldHVybiBYTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50
OjpjcmVhdGVYSFRNTChudWxscHRyLCBzZXR0aW5ncywgVVJMKCkpOworICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHNldHRpbmdzLCBVUkwoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPFJlZjxYTUxEb2N1bWVudD4+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBE
b2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSkKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRl
WE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1M
RG9jdW1lbnQobmFtZXNwYWNlVVJJLCBtX2RvY3VtZW50LnNldHRpbmdzKCkpOwogICAgIGRvY3Vt
ZW50LT5zZXRDb250ZXh0RG9jdW1lbnQobV9kb2N1bWVudC5jb250ZXh0RG9jdW1lbnQoKSk7CiAg
ICAgZG9jdW1lbnQtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KG1fZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW5Qb2xpY3koKSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBSZWY8Q1NTU3R5bGVTaGVldD4g
RE9NSW1wbGVtZW50YXRpb246OmNyCiAKIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBhdXRv
IGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX2RvY3VtZW50LnNl
dHRpbmdzKCksIFVSTCgpKTsKICAgICBkb2N1bWVudC0+b3BlbigpOwogICAgIGRvY3VtZW50LT53
cml0ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+
PC9ib2R5PjwvaHRtbD4iX3MgfSk7CiAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkgewpAQCAtMTMz
LDcgKzEzMyw3IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmUKICAg
ICByZXR1cm4gZG9jdW1lbnQ7CiB9CiAKLVJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKK1JlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50
KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBJbmVsZWdhbnQgdG8gaGF2ZSB0
aGlzIGhlcmUganVzdCBiZWNhdXNlIHRoaXMgaXMgdGhlIGhvbWUgb2YgRE9NIEFQSXMgZm9yIGNy
ZWF0aW5nIGRvY3VtZW50cy4KICAgICAvLyBUaGlzIGlzIGludGVybmFsLCBub3QgYSBET00gQVBJ
LiBNYXliZSB3ZSBzaG91bGQgcHV0IGl0IGluIGEgbmV3IGNsYXNzIGNhbGxlZCBEb2N1bWVudEZh
Y3RvcnksCkBAIC0xNDEsNTcgKzE0MSw1NyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVECiAKICAgICAvLyBQbHVnLWlucyBjYW5ub3QgdGFrZSBvdmVyIGZvciBIVE1M
LCBYSFRNTCwgcGxhaW4gdGV4dCwgb3Igbm9uLVBERiBpbWFnZXMuCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ0ZXh0L2h0bWwiKSkKLSAgICAgICAgcmV0dXJu
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSFRNTERv
Y3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXBwbGljYXRpb24veGh0bWwreG1sIikpCi0gICAg
ICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIHVybCk7CisgICAgICAg
IHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9wbGFpbiIp
KQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAg
ICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAg
ICAgYm9vbCBpc0ltYWdlID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKHR5cGUpOwogICAgIGlmIChmcmFtZSAmJiBpc0ltYWdlICYmICFNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1l
bnQ6OmNyZWF0ZSgqZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogCiAgICAgLy8gVGhlICJpbWFnZSBk
b2N1bWVudHMgZm9yIHN1YmZyYW1lIFBERnMiIG1vZGUgd2lsbCBvdmVycmlkZSBhIFBERiBwbHVn
LWluLgogICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNQREZNSU1FVHlwZSh0eXBlKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFn
ZURvY3VtZW50Rm9yU3ViZnJhbWVQREYoKSkKLSAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVh
dGUoKmZyYW1lLCBzZXR0aW5ncywgdXJsKTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBl
ID0gQ29udGVudFR5cGUgeyB0eXBlIH07CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7CiAgICAg
aWYgKE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQpCi0gICAgICAgIHJldHVybiBNZWRpYURvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBNZWRpYURvY3VtZW50Ojpj
cmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRQRElS
KQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXBwbGljYXRp
b24veC1mdHAtZGlyZWN0b3J5IikpCi0gICAgICAgIHJldHVybiBGVFBEaXJlY3RvcnlEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAjZW5kaWYKIAogICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQodHlwZSkpCi0gICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwg
dXJsKTsKKyAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCBzZXR0
aW5ncywgdXJsKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHJlbGF0aXZlbHkgY29z
dGx5IGxvb2t1cCB0aGF0IHJlcXVpcmVzIGluaXRpYWxpemluZyB0aGUgcGx1Zy1pbiBkYXRhYmFz
ZS4KICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBhdXRvIGFsbG93
ZWRQbHVnaW5UeXBlcyA9IGZyYW1lLT5sb2FkZXIoKS5hcmVQbHVnaW5zRW5hYmxlZCgpCiAgICAg
ICAgICAgICA/IFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMgOiBQbHVnaW5EYXRhOjpPbmx5QXBwbGlj
YXRpb25QbHVnaW5zOwogICAgICAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpLnN1
cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykpCi0gICAg
ICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAg
ICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHNldHRpbmdzLCB1
cmwpOwogICAgIH0KIAogICAgIC8vIEl0ZW1zIGxpc3RlZCBoZXJlLCBhZnRlciB0aGUgcGx1Zy1p
biBjaGVja3MsIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBsdWctaW5zLgogICAgIC8vIEZvciBleGFt
cGxlLCBwbHVnLWlucyBjYW4gdGFrZSBvdmVyIHN1cHBvcnQgZm9yIFBERiBvciBTVkcuCiAgICAg
aWYgKGZyYW1lICYmIGlzSW1hZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVh
dGUoKmZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpm
cmFtZSwgc2V0dGluZ3MsIHVybCk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1J
TUVUeXBlKHR5cGUpKQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHVybCk7CisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGlu
Z3MsIHVybCk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJp
bWFnZS9zdmcreG1sIikpCi0gICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwpOworICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGlu
Z3MsIHVybCk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkp
IHsKLSAgICAgICAgYXV0byBkb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBz
ZXR0aW5ncywgdXJsKTsKICAgICAgICAgZG9jdW1lbnQtPm92ZXJyaWRlTUlNRVR5cGUodHlwZSk7
CiAgICAgICAgIHJldHVybiBkb2N1bWVudDsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShm
cmFtZSwgc2V0dGluZ3MsIHVybCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgaGFzRmVhdHVyZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CiAKLSAgICBzdGF0
aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBG
cmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZURvY3Vt
ZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25z
dCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDExICs1MzIsMTEgQEAgc3Rh
dGljIGlubGluZSBpbnQgY3VycmVudE9yaWVudGF0aW9uKEZyYQogICAgIHJldHVybiAwOwogfQog
Ci1Eb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgRG9jdW1l
bnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3Mp
CitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCB1
bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKICAgICA6IENvbnRhaW5lck5vZGUoKnRoaXMsIENy
ZWF0ZURvY3VtZW50KQogICAgICwgVHJlZVNjb3BlKCp0aGlzKQogICAgICwgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyKGZyYW1lKQotICAgICwgbV9zZXR0aW5ncyhmcmFtZSA/IFJlZjxTZXR0aW5n
cz4oZnJhbWUtPnNldHRpbmdzKCkpIDogU2V0dGluZ3M6OmNyZWF0ZShudWxscHRyKSkKKyAgICAs
IG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3F1aXJrcyhtYWtlVW5pcXVlUmVmPFF1aXJr
cz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1lID8gUmVmPENh
Y2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVh
dGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lv
bikKQEAgLTYxMCwyMiArNjEwLDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFUKICAgICAgICAgbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291bnQgPSAwOwogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVudExpc3RlbmVyc1RvTm9kZSgqdGhpcyk7
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3NldHRpbmdzLT5zZXRMZWdhY3lHZXRV
c2VyTWVkaWFFbmFibGVkKHF1aXJrcygpLnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYSgp
KTsKLSNlbmRpZgogfQogCiBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGNvbnRleHREb2N1bWVudCkKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRSZWYoKm5ldyBE
b2N1bWVudChudWxscHRyLCBVUkwoKSkpOworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdFJlZigq
bmV3IERvY3VtZW50KG51bGxwdHIsIGNvbnRleHREb2N1bWVudC5tX3NldHRpbmdzLmdldCgpLCBV
UkwoKSkpOwogICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoY29udGV4dERvY3VtZW50
KTsKICAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koY29udGV4dERvY3VtZW50
LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkpOwogICAgIHJldHVybiBkb2N1bWVudDsKIH0KIAotUmVm
PERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlTm9u
UmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQo
JmZyYW1lLCB1cmwsIERlZmF1bHREb2N1bWVudENsYXNzLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnQoJmZyYW1lLCBzZXR0aW5ncywg
dXJsLCBEZWZhdWx0RG9jdW1lbnRDbGFzcywgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikpOwogfQog
CiBEb2N1bWVudDo6fkRvY3VtZW50KCkKQEAgLTQwMTAsMTAgKzQwMDcsMTAgQEAgUmVmPERvY3Vt
ZW50PiBEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdAogewogICAgIGlmIChpc1hNTERvY3VtZW50
KCkpIHsKICAgICAgICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJu
IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCB1cmwoKSk7Ci0gICAgICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIHVybCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgbV9zZXR0aW5ncy5nZXQoKSwgdXJs
KCkpOworICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRp
bmdzLmdldCgpLCB1cmwoKSk7CiAgICAgfQotICAgIHJldHVybiBjcmVhdGUodXJsKCkpOworICAg
IHJldHVybiBjcmVhdGUobV9zZXR0aW5ncy5nZXQoKSwgdXJsKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIG90aGVyKQpAQCAtNzE0
Miw5ICs3MTM5LDkgQEAgRG9jdW1lbnQmIERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZQog
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KCpkb2N1bWVudCk7CiAKICAgICBp
ZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1w
bGF0ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncy5n
ZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1
bWVudCA9IGNyZWF0ZShhYm91dEJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1l
bnQgPSBjcmVhdGUobV9zZXR0aW5ncy5nZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKIAogICAgIG1f
dGVtcGxhdGVEb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVudCgpKTsK
ICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KHRoaXMpOyAv
LyBiYWxhbmNlZCBpbiBkdG9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI2
ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzksOCArMzM5LDggQEAgY2xhc3MgRG9jdW1lbnQKICAgICAsIHB1YmxpYyBDYW52YXNPYnNl
cnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoRG9jdW1lbnQsIFdFQkNP
UkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoY29u
c3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcihGcmFtZSYsIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNy
ZWF0ZShjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1l
bnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUmLCBjb25zdCBTZXR0aW5ncyYs
IGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYp
OwogCiAgICAgdmlydHVhbCB+RG9jdW1lbnQoKTsKQEAgLTU1Niw3ICs1NTYsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7IC8vIENhbiBiZSBu
dWxsLgogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gQ2FuIGJlIG51
bGwuCiAgICAgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0
aW5ncy5nZXQoKTsgfQotICAgIFNldHRpbmdzJiBtdXRhYmxlU2V0dGluZ3MoKSB7IHJldHVybiBt
X3NldHRpbmdzLmdldCgpOyB9CiAgICAgRWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcigp
IGNvbnN0OwogCiAgICAgY29uc3QgUXVpcmtzJiBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3F1
aXJrczsgfQpAQCAtMTU5Myw3ICsxNTkyLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBDb25zdHJ1Y3Rpb25GbGFncyB7IFN5bnRoZXNpemVkID0gMSwgTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlciA9IDEgPDwgMSB9OwotICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KEZyYW1lKiwg
Y29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIHVu
c2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFn
cyA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDAp
OwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmluZygp
OyB9CiAKQEAgLTE2OTQsNyArMTY5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZExvZ01l
c3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYsIFdURkxvZ0xldmVsLCBWZWN0b3I8SlNPTkxvZ1Zh
bHVlPiYmKSBmaW5hbDsKIAotICAgIGNvbnN0IFJlZjxTZXR0aW5ncz4gbV9zZXR0aW5nczsKKyAg
ICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAKICAgICBVbmlxdWVSZWY8
UXVpcmtzPiBtX3F1aXJrczsKIApAQCAtMjE2Miw5ICsyMTYxLDkgQEAgaW5saW5lIEFYT2JqZWN0
Q2FjaGUqIERvY3VtZW50OjpleGlzdGluZwogICAgIHJldHVybiBleGlzdGluZ0FYT2JqZWN0Q2Fj
aGVTbG93KCk7CiB9CiAKLWlubGluZSBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwpCitpbmxpbmUgUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRG9jdW1lbnQobnVsbHB0ciwgdXJsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRG9jdW1lbnQobnVsbHB0ciwgc2V0dGluZ3MsIHVybCkpOwogfQogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudDo6aW52YWxpZGF0ZUFjY2Vzc0tleUNhY2hlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudC5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjAgKzMyLDIxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFhNTERvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFhNTERvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFhN
TERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0
aWMgUmVmPFhNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBYTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCisgICAgc3RhdGljIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZy
YW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgWEhUTUxE
b2N1bWVudENsYXNzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50
KGZyYW1lLCBzZXR0aW5ncywgdXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CiAKIHBy
b3RlY3RlZDoKLSAgICBYTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1
bnNpZ25lZCBkb2N1bWVudENsYXNzZXMgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcykKLSAgICAgICAg
OiBEb2N1bWVudChmcmFtZSwgdXJsLCBYTUxEb2N1bWVudENsYXNzIHwgZG9jdW1lbnRDbGFzc2Vz
KQotICAgIHsgfQorICAgIFhNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzID0gRGVm
YXVsdERvY3VtZW50Q2xhc3MpCisgICAgICAgIDogRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1
cmwsIFhNTERvY3VtZW50Q2xhc3MgfCBkb2N1bWVudENsYXNzZXMpCisgICAgeworICAgIH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIy
LDggKzQyMiw4IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgKICAg
ICBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpOwogfQogCi1GVFBEaXJlY3RvcnlEb2N1bWVu
dDo6RlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQorRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERp
cmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBj
b25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkK
IHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTG9nRlRQLnN0YXRlID0gV1RGTG9nQ2hhbm5lbFN0
YXRlOjpPbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
b2N1bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGVFBEaXJlY3RvcnlEb2N1bWVu
dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxGVFBEaXJlY3Rv
cnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZU
UERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29u
c3QgVVJMJik7CiAgICAgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlk
ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsMTMgKzg1LDEzIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChI
VE1MRG9jdW1lbnQKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVmPEhUTUxEb2N1
bWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCitSZWY8SFRNTERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6OmNyZWF0
ZVN5bnRoZXNpemVkRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1
bWVudCgmZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTERvY3VtZW50KCZmcmFtZSwgc2V0dGluZ3MsIHVybCwg
SFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7CiB9CiAKLUhUTUxEb2N1bWVudDo6SFRN
TERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xhc3NGbGFn
cyBkb2N1bWVudENsYXNzZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzKQotICAgIDogRG9j
dW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3VtZW50Q2xhc3MsIGNv
bnN0cnVjdGlvbkZsYWdzKQorSFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNz
RmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKKyAgICA6
IERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsLCBkb2N1bWVudENsYXNzZXMgfCBIVE1MRG9j
dW1lbnRDbGFzcywgY29uc3RydWN0aW9uRmxhZ3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7
CiB9CkBAIC0yNTAsNyArMjUwLDcgQEAgYm9vbCBIVE1MRG9jdW1lbnQ6OmlzRnJhbWVTZXQoKSBj
b25zdAogCiBSZWY8RG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRD
aGlsZHJlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCB1cmwoKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCBzZXR0aW5ncygpLCB1cmwoKSk7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMg
RG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTERvY3VtZW50KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiwgY29uc3Qg
VVJMJik7Ci0gICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRoZXNpemVkRG9j
dW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMg
UmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSYsIGNvbnN0
IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB+SFRNTERvY3VtZW50KCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgd2lkdGgoKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKIHByb3RlY3RlZDoKLSAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmLCBEb2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9
IDApOworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJM
JiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAw
KTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRnJhbWVTZXQoKSBjb25zdCBmaW5hbDsKQEAgLTY1
LDkgKzY1LDkgQEAgcHJpdmF0ZToKICAgICBUcmVlU2NvcGVPcmRlcmVkTWFwIG1fd2luZG93TmFt
ZWRJdGVtOwogfTsKIAotaW5saW5lIFJlZjxIVE1MRG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitpbmxpbmUgUmVmPEhUTUxEb2N1bWVu
dD4gSFRNTERvY3VtZW50OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxE
b2N1bWVudChmcmFtZSwgdXJsLCBIVE1MRG9jdW1lbnRDbGFzcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgSFRNTERvY3VtZW50
Q2xhc3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTQgKzE5Niwx
NCBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgZG9jdW1lbnQoKS5m
aW5pc2hlZFBhcnNpbmcoKTsKIH0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgdXJs
LCBJbWFnZURvY3VtZW50Q2xhc3MpCitJbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KEZyYW1l
JiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6
IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNldHRpbmdzLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykK
ICAgICAsIG1faW1hZ2VFbGVtZW50KG51bGxwdHIpCiAgICAgLCBtX2ltYWdlU2l6ZUlzS25vd24o
ZmFsc2UpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX2RpZFNocmlua0ltYWdl
KGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKGZyYW1lLnNldHRpbmdz
KCkuc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpICYmIGZyYW1lLmlzTWFpbkZyYW1lKCkp
CisgICAgLCBtX3Nob3VsZFNocmlua0ltYWdlKHNldHRpbmdzLnNocmlua3NTdGFuZGFsb25lSW1h
Z2VzVG9GaXQoKSAmJiBmcmFtZS5pc01haW5GcmFtZSgpKQogewogICAgIHNldENvbXBhdGliaWxp
dHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tD
b21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgJ
KHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBJbWFnZURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZURvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7
CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBJbWFnZURvY3Vt
ZW50KEZyYW1lJiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4
IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG8KICAgICBmaW5pc2go
KTsKIH0KICAgICAKLU1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3Vt
ZW50Q2xhc3MpCitNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVu
dChmcmFtZSwgc2V0dGluZ3MsIHVybCwgTWVkaWFEb2N1bWVudENsYXNzKQogewogICAgIHNldENv
bXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwog
ICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURv
Y3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhRG9jdW1lbnQpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCisgICAgc3RhdGljIFJlZjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1
cmwpKTsKICAgICB9CiAgICAgdmlydHVhbCB+TWVkaWFEb2N1bWVudCgpOwogCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fb3V0Z29pbmdSZWZlcnJlcjsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0
dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDggKzE0MSw4IEBAIHZvaWQgUGx1Z2luRG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKEQKICAgICB9CiB9CiAKLVBsdWdpbkRvY3VtZW50OjpQ
bHVnaW5Eb2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERv
Y3VtZW50KCZmcmFtZSwgdXJsLCBQbHVnaW5Eb2N1bWVudENsYXNzKQorUGx1Z2luRG9jdW1lbnQ6
OlBsdWdpbkRvY3VtZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBj
b25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNldHRpbmdzLCB1cmws
IFBsdWdpbkRvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1l
bnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlN
b2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCShyZXZpc2lvbiAy
NjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgV2lkZ2V0OwogY2xhc3MgUGx1Z2luRG9jdW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFBsdWdpbkRvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBsdWdpbkRvY3Vt
ZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVm
PFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbHVnaW5Eb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIFdpZGdldCogcGx1Z2luV2lkZ2V0KCk7CkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2lu
RG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSYs
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZVBhcnNlcigpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dERvY3VtZW50KTsKIAotVGV4
dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBUZXh0RG9jdW1lbnRDbGFzcykKK1RleHREb2N1
bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVy
bCwgVGV4dERvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1l
bnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlN
b2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0RG9jdW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFRleHREb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0RG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8VGV4
dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Ms
IGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4
dERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIFRleHREb2N1bWVudChGcmFt
ZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAgICAgCiAgICAgUmVmPERvY3VtZW50
UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDExICs3NiwxMSBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVu
dChjb25zCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBuZXdEb2N1bWVudDsKICAgICBpZiAobV9k
b2N1bWVudC5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX2RvY3VtZW50LnNldHRpbmdzKCksIFVSTCgpKTsK
ICAgICBlbHNlIGlmIChtX2RvY3VtZW50LmlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdE
b2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBVUkwoKSk7CisgICAg
ICAgIG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIG1fZG9j
dW1lbnQuc2V0dGluZ3MoKSwgVVJMKCkpOwogICAgIGVsc2UgaWYgKG1fZG9jdW1lbnQuaXNTVkdE
b2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgVVJMKCkpOworICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSk7CiAKICAgICBBU1NFUlQobmV3
RG9jdW1lbnQpOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gcGFyc2VyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTAsMTQgKzExMCwxNCBAQCBib29sIERvY3VtZW50V3JpdGVyOjpiZWdpbigpCiBSZWY8
RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCi0gICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gUGx1
Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgbV9mcmFtZS0+c2V0dGluZ3MoKSwgdXJsKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BE
Rk1JTUVUeXBlKG1fbWltZVR5cGUpICYmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpIHx8ICFtX2Zy
YW1lLT5zZXR0aW5ncygpLnVzZUltYWdlRG9jdW1lbnRGb3JTdWJmcmFtZVBERigpKSkKLSAgICAg
ICAgcmV0dXJuIFNpbmtEb2N1bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICBy
ZXR1cm4gU2lua0RvY3VtZW50OjpjcmVhdGUoKm1fZnJhbWUsIG1fZnJhbWUtPnNldHRpbmdzKCks
IHVybCk7CiAjZW5kaWYKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmhhc0hU
TUxWaWV3KCkpCi0gICAgICAgIHJldHVybiBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFj
ZWhvbGRlcigqbV9mcmFtZSwgdXJsKTsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBE
b2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcigqbV9mcmFtZSwgbV9mcmFtZS0+
c2V0dGluZ3MoKSwgdXJsKTsKKyAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURv
Y3VtZW50KG1fbWltZVR5cGUsIG1fZnJhbWUsIG1fZnJhbWUtPnNldHRpbmdzKCksIHVybCk7CiB9
CiAKIGJvb2wgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IFVSTCYgdXJsUmVmZXJlbmNlLCBi
b29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKQEAgLTEzNCw3ICsxMzQsNyBA
QCBib29sIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVyCiAgICAgLy8gSWYgdGhl
IG5ldyBkb2N1bWVudCBpcyBmb3IgYSBQbHVnaW4gYnV0IHdlJ3JlIHN1cHBvc2VkIHRvIGJlIHNh
bmRib3hlZCBmcm9tIFBsdWdpbnMsCiAgICAgLy8gdGhlbiByZXBsYWNlIHRoZSBkb2N1bWVudCB3
aXRoIG9uZSB3aG9zZSBwYXJzZXIgd2lsbCBpZ25vcmUgdGhlIGluY29taW5nIGRhdGEgKGJ1ZyAz
OTMyMykKICAgICBpZiAoZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+
aXNTYW5kYm94ZWQoU2FuZGJveFBsdWdpbnMpKQotICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1
bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCB1cmwpOworICAgICAgICBkb2N1bWVudCA9IFNpbmtEb2N1
bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCBtX2ZyYW1lLT5zZXR0aW5ncygpLCB1cmwpOwogCiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29uc3VsdCB0aGUgY29udGVudCBzZWN1cml0eSBwb2xp
Y3kgaGVyZSBhYm91dCBibG9ja2VkIHBsdWctaW5zPwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU2lua0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAg
cHJpdmF0ZToKICAgICB9CiB9OwogCi1TaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgdXJsKQor
U2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQorICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgc2V0
dGluZ3MsIHVybCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGli
aWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNpbmtEb2N1bWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
U2lua0RvY3VtZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbmtEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZjxTaW5rRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29u
c3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW5rRG9j
dW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW5rRG9j
dW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lu
a0RvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgU2lua0RvY3VtZW50KEZyYW1lJiwg
Y29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlUGFyc2VyKCkgZmluYWw7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjgwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGlubGluZSBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzbwogICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChjYWNoZWRSZXNv
dXJjZS5lcnJvcigpKTsKIH0KIAotc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNv
b2tpZUphcikKK3N0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgpAQCAtMTIxLDkgKzEyMSw5IEBA
IHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0
KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlOgotICAgICAgICByZXR1cm4gbmV3
IENhY2hlZFNWR0RvY3VtZW50KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3Qp
LCBzZXNzaW9uSUQsIGNvb2tpZUphciwgc2V0dGluZ3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdG
b250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRTVkdGb250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2ll
SmFyLCBzZXR0aW5ncyk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291
cmNlOgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vz
c2lvbklELCBjb29raWVKYXIpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkJlYWNv
bjoKQEAgLTE1MCw2ICsxNTAsNDUgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNv
dXJjZShDYQogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgQ2FjaGVkUmVzb3VyY2Uq
IGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgeworICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6CisgICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkSW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCks
IHJlc291cmNlLmNvb2tpZUphcigpKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigp
KTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6CisgICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkU2NyaXB0KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgp
LCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVu
dChXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVudCY+KHJlc291
cmNlKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRm9udFJlc291cmNlOgor
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0ZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc3RhdGlj
X2Nhc3Q8Q2FjaGVkU1ZHRm9udCY+KHJlc291cmNlKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Rm9udFJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigp
KTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpCZWFjb246CisgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UGluZzoKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpN
ZWRpYVJlc291cmNlOgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNl
OgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZFJh
d1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnR5cGUoKSwgcmVzb3VyY2Uuc2Vz
c2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFhTTFN0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lv
bklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNlbmRpZgorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNv
dXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TGlua1ByZWZldGNo
LCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgorICAgICAgICByZXR1cm4g
bmV3IENhY2hlZFRleHRUcmFjayhXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQo
KSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ogor
ICAgICAgICByZXR1cm4gbmV3IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShyZXF1
ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNlbmRp
ZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9jdW1lbnQobnVsbHB0cikKICAgICAs
IG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCkBAIC02NzMsMTQgKzcxMiwxNCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNSZXNvdXJjZVN1aXRhYmxlRm9yCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXImIGNvb2tpZUph
cikKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXImIGNvb2tpZUphciwg
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmICghaXNSZXNvdXJjZVN1aXRhYmxl
Rm9yRGlyZWN0UmV1c2UocmVzb3VyY2UsIHJlcXVlc3QpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0
Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwotICAgICAgICBy
ZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNlLnR5cGUoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKHJl
cXVlc3QpLCBjb29raWVKYXIpOworICAgICAgICByZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNl
LnR5cGUoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIsIHNldHRpbmdz
KTsKICAgICB9CiAKLSAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gY3JlYXRlUmVzb3VyY2UocmVz
b3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsICZjb29raWVKYXIpOwor
ICAgIGF1dG8gcmVzb3VyY2VIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS50eXBlKCks
IFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgJmNvb2tpZUphciwgc2V0dGluZ3MpOwogICAg
IHJlc291cmNlSGFuZGxlLT5sb2FkRnJvbShyZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNl
SGFuZGxlOwogfQpAQCAtODQwLDcgKzg3OSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWMKICAgICAgICAgaWYgKGJsb2NrZWRMb2FkKSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJjZTogUmVzb3Vy
Y2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiLCBmcmFtZSk7CiAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Ci0gICAgICAgICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gY3Jl
YXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgcGFnZS5zZXNzaW9uSUQoKSwgJnBh
Z2UuY29va2llSmFyKCkpOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVx
dWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksICZwYWdlLmNvb2tpZUphcigpLCBwYWdlLnNldHRpbmdz
KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CiAgICAg
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250
ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlc291cmNlUmVx
dWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRl
bnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0
aW9uIikpKTsKQEAgLTkxMyw3ICs5NTIsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjCiAgICAgY2FzZSBMb2FkOgogICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAg
ICAgICAgICBsb2dNZW1vcnlDYWNoZVJlc291cmNlUmVxdWVzdCgmZnJhbWUsIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6bWVtb3J5Q2FjaGVFbnRyeURlY2lzaW9uS2V5KCksIERpYWdub3N0aWNMb2dn
aW5nS2V5czo6dW51c2VkS2V5KCkpOwotICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0
eXBlLCBwYWdlLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIpOworICAg
ICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCBwYWdlLnNlc3Npb25JRCgpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBjb29raWVKYXIsIHBhZ2Uuc2V0dGluZ3MoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUmV2YWxpZGF0ZToKICAgICAgICAgaWYgKHJlc291cmNlKQpAQCAtOTMwLDcg
Kzk2OSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWMKICAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZXJyb3IpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJl
cXVlc3QoKnJlc291cmNlLCByZXF1ZXN0KSkgewotICAgICAgICAgICAgcmVzb3VyY2UgPSB1cGRh
dGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdCgqcmVzb3VyY2UsIFdURk1vdmUocmVx
dWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksIGNvb2tpZUphcik7CisgICAgICAgICAgICByZXNvdXJj
ZSA9IHVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KCpyZXNvdXJjZSwgV1RG
TW92ZShyZXF1ZXN0KSwgcGFnZS5zZXNzaW9uSUQoKSwgY29va2llSmFyLCBwYWdlLnNldHRpbmdz
KCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlLT5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJj
ZTo6U3RhdHVzOjpDYWNoZWQpCiAgICAgICAgICAgICAgICAgcG9saWN5ID0gTG9hZDsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTEwMTgsNyArMTA1Nyw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWMKICAgICBBU1NFUlQoIXJlc291cmNlLnJlc291cmNlVG9SZXZhbGlk
YXRlKCkpOwogICAgIEFTU0VSVChyZXNvdXJjZS5hbGxvd3NDYWNoaW5nKCkpOwogCi0gICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVz
b3VyY2UocmVzb3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9u
SUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKFdURk1vdmUocmVxdWVz
dCksIHJlc291cmNlKTsKIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZSAlcCBj
cmVhdGVkIHRvIHJldmFsaWRhdGUgJXAiLCBuZXdSZXNvdXJjZS5nZXQoKSwgJnJlc291cmNlKTsK
ICAgICBuZXdSZXNvdXJjZS0+c2V0UmVzb3VyY2VUb1JldmFsaWRhdGUoJnJlc291cmNlKTsKQEAg
LTEwMzEsNyArMTA3MCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWMKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgQ29va2llSmFyJiBjb29raWVKYXIpCitDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IENvb2tpZUphciYgY29v
a2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgYXV0byYgbWVtb3J5Q2Fj
aGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgQVNTRVJUKCFyZXF1ZXN0LmFsbG93
c0NhY2hpbmcoKSB8fCAhbWVtb3J5Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCkKQEAgLTEwMzksNyArMTA3OCw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKIAogICAgIExPRyhSZXNvdXJjZUxvYWRp
bmcsICJMb2FkaW5nIENhY2hlZFJlc291cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkubGF0aW4xKCku
ZGF0YSgpKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNv
dXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwg
JmNvb2tpZUphcik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklE
LCAmY29va2llSmFyLCBzZXR0aW5ncyk7CiAKICAgICBpZiAocmVzb3VyY2UtPmFsbG93c0NhY2hp
bmcoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJjZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgRm9yUHJlbG9hZCA9IEZvclByZWxvYWQ6Ok5vLCBJbWFnZUxvYWRpbmcgPSBJbWFn
ZUxvYWRpbmc6OkltbWVkaWF0ZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVk
UmVzb3VyY2UmKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9h
ZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvb2tpZUphciYpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFBB
TDo6U2Vzc2lvbklELCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgQ29va2llSmFyJiwg
Y29uc3QgU2V0dGluZ3MmKTsKIAogICAgIHZvaWQgcHJlcGFyZUZldGNoKENhY2hlZFJlc291cmNl
OjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHVwZGF0ZUhUVFBSZXF1
ZXN0SGVhZGVycyhGcmFtZUxvYWRlciYsIENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFJldmFsaWRh
dGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5
cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291
cmNlLCBGb3JQcmVsb2FkLCBJbWFnZUxvYWRpbmcpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRV
cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVz
dChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciYpOworICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVz
dChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciYsIGNvbnN0IFNldHRpbmdzJik7CiAKICAg
ICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUo
Y29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZUVy
cm9yJik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlw
ZSwgY29uc3QgVVJMJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEzICsyMywyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNh
Y2hlZFNWR0RvY3VtZW50LmgiCiAKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0RvY3VtZW50
OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikK
K0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29r
aWVKYXIqIGNvb2tpZUphciwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogQ2FjaGVk
UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlwZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgc2Vz
c2lvbklELCBjb29raWVKYXIpCiAgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCit7
Cit9CisKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBDYWNoZWRTVkdEb2N1bWVudCYgcmVzb3VyY2UpCisgICAgOiBD
YWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwg
cmVzb3VyY2UuY29va2llSmFyKCksIHJlc291cmNlLm1fc2V0dGluZ3MuZ2V0KCkpCiB7CiB9CiAK
QEAgLTQ5LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhT
aAogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KLSAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgcmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MuZ2V0KCksIHJlc3BvbnNlKCkudXJsKCkp
OwogICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2V0dGluZ3M7CisKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50IGZpbmFsIDogcHVibGljIENh
Y2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29r
aWVKYXIqKTsKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBjb25zdCBT
ZXR0aW5ncyYpOworICAgIGV4cGxpY2l0IENhY2hlZFNWR0RvY3VtZW50KENhY2hlZFJlc291cmNl
UmVxdWVzdCYmLCBDYWNoZWRTVkdEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkNhY2hlZFNWR0Rv
Y3VtZW50KCk7CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CkBAIC00NCw2ICs0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKKyAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE3ICszMiwyNCBAQAogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiU1ZHVG9PVEZGb250Q29udmVyc2lv
bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0Zv
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQm
IHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCitDYWNoZWRTVkdGb250OjpD
YWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBT
ZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNoZWRGb250KFdURk1vdmUocmVxdWVzdCksIHNl
c3Npb25JRCwgY29va2llSmFyLCBUeXBlOjpTVkdGb250UmVzb3VyY2UpCiAgICAgLCBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQobnVsbHB0cikKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCit7
Cit9CisKK0NhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgQ2FjaGVkU1ZHRm9udCYgcmVzb3VyY2UpCisgICAgOiBDYWNoZWRTVkdGb250
KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVK
YXIoKSwgcmVzb3VyY2UubV9zZXR0aW5ncy5nZXQoKSkKIHsKIH0KIApAQCAtNjYsNyArNzMsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhCiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBkdXJpbmcgcmVuZGVyIHRyZWUgdXBkYXRlcyB3
aGVuIGV2ZW50cyBhcmUgZm9yYmlkZGVuLgogICAgICAgICAgICAgLy8gRnJhbWVsZXNzIGRvY3Vt
ZW50IGNhbid0IHJ1biBzY3JpcHRzIG9yIGNhbGwgYmFjayB0byB0aGUgY2xpZW50IHNvIHRoaXMg
aXMgc2FmZS4KLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50
OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLmdldCgpLCBVUkwo
KSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCShyZXZpc2lvbiAyNjgwMjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxMCArMzAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1ZHRm9udEZhY2VFbGVtZW50OworY2xhc3MgU2V0dGluZ3M7CiAKIGNsYXNzIENhY2hlZFNWR0Zv
bnQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkU1ZHRm9u
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBD
b29raWVKYXIqKTsKKyAgICBDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciosIGNvbnN0IFNldHRpbmdzJik7
CisgICAgQ2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkU1ZHRm9u
dCYpOwogCiAgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpIG92ZXJyaWRlOwogCkBAIC01MCw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVu
dD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNw
cAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VF
dmVudExpc3RlbmVyUGFzcwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLWJvb2wgUXVp
cmtzOjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEoKSBjb25zdAorYm9vbCBRdWlya3M6
OnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJrKCkgY29uc3QKIHsKICAgICBpZiAo
IW5lZWRzUXVpcmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUXVpcmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50TGlzdGVuZXImKTsKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0gICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVk
aWEoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJr
KCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUVsZW1lbnRGdWxsc2Ny
ZWVuUXVpcmsoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlz
aW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQwLDEwICs5NDAsNiBAQCBpc0xvZ2dlZEluQVBJRW5hYmxlZDoKIGVudGVy
S2V5SGludEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKLWxlZ2FjeUdldFVzZXJNZWRpYUVu
YWJsZWQ6Ci0gIGluaXRpYWw6IGZhbHNlCi0gIGNvbmRpdGlvbmFsOiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCiAjIEZJWE1FOiBTZWVtcyB0byBiZSB1bnVzZWQuIFJlbW92ZSBvbmNlIHZlcmlmaWVk
LgogaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIEZyYW1lOjppbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjCiB7CiAgICAg
bV9sb2FkZXItPmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KHVybCk7CiAKLSAgICBhdXRvIGRv
Y3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KCp0aGlzLCB1
cmwpOworICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVk
RG9jdW1lbnQoKnRoaXMsIHNldHRpbmdzKCksIHVybCk7CiAgICAgZG9jdW1lbnQtPnNldENvbXBh
dGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OkxpbWl0ZWRRdWlya3NNb2Rl
KTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7CiAgICAgc2V0RG9jdW1lbnQoZG9j
dW1lbnQuY29weVJlZigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChTVkdEb2N1bWVudCk7CiAKLVNWR0RvY3VtZW50OjpTVkdE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogWE1MRG9jdW1lbnQo
ZnJhbWUsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCisg
ICAgOiBYTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykK
IHsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29u
c3QgRmxvYXRQCiAKIFJlZjxEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCkp
OworICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MoKSwgdXJsKCkpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIzICsz
MCwyMyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnQgZmluYWwgOiBw
dWJsaWMgWE1MRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHRG9jdW1l
bnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSos
IGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSos
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBib29sIHpvb21BbmRQYW5FbmFi
bGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7
CiAgICAgdm9pZCB1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgU1ZH
RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogCiAgICAgUmVm
PERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBGbG9hdFNpemUgbV9wYW5uaW5nT2Zmc2V0OwogfTsKIAotaW5saW5lIFJlZjxTVkdE
b2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQoraW5saW5lIFJlZjxTVkdEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0RvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTIgKzU2LDEzIEBAIHN0YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBh
Z2UKIHsKICAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwogCisgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKwogICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpOwogICAgIG1haW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWRE
b2N1bWVudCh7IH0pOwotICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVu
ZGVyZWRQbGFjZWhvbGRlcihtYWluRnJhbWUsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIGRv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1l
LCBtYWluRnJhbWUuc2V0dGluZ3MoKSwgZGF0YS5zY3JpcHRVUkwpOwogICAgIGRvY3VtZW50LT5j
cmVhdGVET01XaW5kb3coKTsKIAotICAgIGRvY3VtZW50LT5tdXRhYmxlU2V0dGluZ3MoKS5zZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3koc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICBkb2N1bWVu
dC0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIGF1dG8gb3JpZ2luID0g
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dl
YkNvcmUveG1sL0RPTVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE0ICsyMSwxOCBA
QAogCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpblBvbGljeS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaW5saW5lIERPTVBhcnNlcjo6RE9NUGFyc2VyKERvY3VtZW50JiBjb250ZXh0RG9jdW1l
bnQpCiAgICAgOiBtX2NvbnRleHREb2N1bWVudChtYWtlV2Vha1B0cihjb250ZXh0RG9jdW1lbnQp
KQorICAgICwgbV9zZXR0aW5ncyhjb250ZXh0RG9jdW1lbnQuc2V0dGluZ3MoKSkKIHsKIH0KIAor
RE9NUGFyc2VyOjp+RE9NUGFyc2VyKCkgPSBkZWZhdWx0OworCiBSZWY8RE9NUGFyc2VyPiBET01Q
YXJzZXI6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERPTVBhcnNlcihjb250ZXh0RG9jdW1lbnQpKTsKQEAgLTM4LDcgKzQyLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50Pj4gRE9NUGFyc2VyOjpwYQogewogICAgIGlmIChj
b250ZW50VHlwZSAhPSAidGV4dC9odG1sIiAmJiBjb250ZW50VHlwZSAhPSAidGV4dC94bWwiICYm
IGNvbnRlbnRUeXBlICE9ICJhcHBsaWNhdGlvbi94bWwiICYmIGNvbnRlbnRUeXBlICE9ICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiICYmIGNvbnRlbnRUeXBlICE9ICJpbWFnZS9zdmcreG1sIikKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwotICAgIGF1dG8gZG9jdW1lbnQg
PSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIG51bGxwdHIs
IFVSTCB7IH0pOworICAgIGF1dG8gZG9jdW1lbnQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29udGVudFR5cGUsIG51bGxwdHIsIG1fc2V0dGluZ3MuZ2V0KCksIFVSTCB7IH0p
OwogICAgIGlmIChtX2NvbnRleHREb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQtPnNldENvbnRl
eHREb2N1bWVudCgqbV9jb250ZXh0RG9jdW1lbnQuZ2V0KCkpOwogICAgIGRvY3VtZW50LT5zZXRD
b250ZW50KHN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCShyZXZpc2lvbiAyNjgw
MjEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDE2ICsyNCwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIFNldHRpbmdzOwogCiBjbGFzcyBET01QYXJzZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxE
T01QYXJzZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERPTVBhcnNlcj4gY3JlYXRlKERv
Y3VtZW50JiBjb250ZXh0RG9jdW1lbnQpOworICAgIH5ET01QYXJzZXIoKTsKKwogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxEb2N1bWVudD4+IHBhcnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01QYXJz
ZXIoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCk7CiAKICAgICBXZWFrUHRyPERvY3VtZW50PiBt
X2NvbnRleHREb2N1bWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGlu
Z3M7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MSw5ICsxODEsOSBAQCBFeGNlcHRpb25PcjxEb2N1bWVudCo+
IFhNTEh0dHBSZXF1ZXN0OjpyCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxs
cHRyOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGlzSFRNTCkKLSAgICAgICAg
ICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBtX3Jlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQg
PSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBjb250ZXh0LnNldHRpbmdzKCksIG1fcmVz
cG9uc2UudXJsKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcmVzcG9u
c2VEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9yZXNwb25zZS51cmwo
KSk7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBjb250ZXh0LnNldHRpbmdzKCksIG1fcmVzcG9uc2UudXJsKCkpOwogICAg
ICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50LT5vdmVycmlkZUxhc3RNb2RpZmllZChtX3Jlc3Bv
bnNlLmxhc3RNb2RpZmllZCgpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+c2V0
Q29udGV4dERvY3VtZW50KGNvbnRleHQpOwogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50
LT5zZXRTZWN1cml0eU9yaWdpblBvbGljeShjb250ZXh0LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjY4MDIx
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MiwxMCArNzIsMTAgQEAgUmVmPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVE
b2N1bQogCiAgICAgUmVmUHRyPERvY3VtZW50PiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZU1JTUVU
eXBlID09ICJ0ZXh0L3BsYWluIikgewotICAgICAgICByZXN1bHQgPSBYTUxEb2N1bWVudDo6Y3Jl
YXRlWEhUTUwoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6
IFVSTCgpKTsKKyAgICAgICAgcmVzdWx0ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1l
LCBvd25lckRvY3VtZW50LT5zZXR0aW5ncygpLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1
bWVudC0+dXJsKCkgOiBVUkwoKSk7CiAgICAgICAgIHRyYW5zZm9ybVRleHRTdHJpbmdUb1hIVE1M
RG9jdW1lbnRTdHJpbmcoZG9jdW1lbnRTb3VyY2UpOwogICAgIH0gZWxzZQotICAgICAgICByZXN1
bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZy
YW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSk7Cisg
ICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VN
SU1FVHlwZSwgZnJhbWUsIG93bmVyRG9jdW1lbnQtPnNldHRpbmdzKCksIHNvdXJjZUlzRG9jdW1l
bnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKIAogICAgIC8vIEJlZm9yZSBwYXJz
aW5nLCB3ZSBuZWVkIHRvIHNhdmUgJiBkZXRhY2ggdGhlIG9sZCBkb2N1bWVudCBhbmQgZ2V0IHRo
ZSBuZXcgZG9jdW1lbnQKICAgICAvLyBpbiBwbGFjZS4gV2UgaGF2ZSB0byBkbyB0aGlzIG9ubHkg
aWYgd2UncmUgcmVuZGVyaW5nIHRoZSByZXN1bHQgZG9jdW1lbnQuCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjgwNTgpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0x
MC0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0IHR5
cGU9ImRhdGV0aW1lLWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGluc2lk
ZSBTaGFkb3dET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjk4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
cmVhdGVEb2N1bWVudCk6CisgICAgICAgIFVwZGF0ZSB0byBwYXNzIGEgU2V0dGluZ3Mgb2JqZWN0
IHRvIERvY3VtZW50OjpjcmVhdGUgd2hpY2ggaXMgbm93IHJlcXVpcmVkLgorCiAyMDIwLTEwLTA2
ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjY3Mzk5KTogW1dQRV0gQnVpbGQgYnJva2VuIHdpdGggRU5BQkxFX0FDQ0VT
U0lCSUxJVFk9T0ZGCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9j
dW1lbnRPcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxIdG1sRWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUG9zaXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFkb3dSb290Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg+CkBAIC01NSw3ICs1
Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIFJlZjxEb2N1bWVudD4gY3Jl
YXRlRG9jdW1lbnQoKQogewogICAgIEhUTUxOYW1lczo6aW5pdCgpOwotICAgIGF1dG8gZG9jdW1l
bnQgPSBEb2N1bWVudDo6Y3JlYXRlKGFib3V0QmxhbmtVUkwoKSk7CisgICAgYXV0byBzZXR0aW5n
cyA9IFNldHRpbmdzOjpjcmVhdGUobnVsbHB0cik7CisgICAgYXV0byBkb2N1bWVudCA9IERvY3Vt
ZW50OjpjcmVhdGUoc2V0dGluZ3MuZ2V0KCksIGFib3V0QmxhbmtVUkwoKSk7CiAgICAgYXV0byBk
b2N1bWVudEVsZW1lbnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
ZG9jdW1lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50RWxlbWVudCk7CiAgICAgYXV0byBib2R5ID0g
SFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410701</attachid>
            <date>2020-10-06 15:18:39 -0700</date>
            <delta_ts>2020-10-06 17:27:06 -0700</delta_ts>
            <desc>Tests should fail</desc>
            <filename>bug-216985-20201006151838.patch</filename>
            <type>text/plain</type>
            <size>7061</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI2ODA3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIwLTEwLTA2ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICA8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiPiBu
b3Qgc2hvdyBjYWxlbmRhciBVSSB3aGVuIGl0J3MgaW5zaWRlIFNoYWRvd0RPTQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTg1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82OTY2MDI3Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdGhhdCBzaG93IHRoYXQgZGF0ZS90aW1lIGlucHV0
IGVsZW1lbnRzIGFyZSB0aGUgc2FtZSB3aGV0aGVyIHRoZXkgY29tZSBmcm9tIGEgdGVtcGxhdGUK
KyAgICAgICAgZG9jdW1lbnQgb3IgdGhlIG1haW4gZG9jdW1lbnQuCisKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1
bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0
ZXRpbWVsb2NhbC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZy
YW1lbGVzcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL21vbnRo
L21vbnRoLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvbW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3Mt
ZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1l
L3RpbWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3MtZG9j
dW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMjAtMTAtMDYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdIEVuYWJsZSBzb21lIGxh
eW91dCB0ZXN0cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1m
cmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLWZy
b20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzIEBACis8Ym9keT4KKzxpbnB1dCB0eXBlPSJkYXRlIiB2YWx1ZT0iMTk5OS0wMS0xMSIg
PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1m
cmFtZWxlc3MtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLWZyb20tZnJhbWVsZXNzLWRvY3Vt
ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8Ym9keT4KKzxzY3JpcHQ+
CisvLyBUaGlzIHRlc3RzIHRoYXQgYW4gPGlucHV0IHR5cGU9ImRhdGUiPiBjcmVhdGVkIGluIGEg
dGVtcGxhdGUgZG9jdW1lbnQgKGUuZy4gb25lIHdpdGhvdXQgYSBmcmFtZSkKKy8vIGlzIGlkZW50
aWNhbCB0byBvbmUgY3JlYXRlZCBpbiB0aGUgbWFpbiBkb2N1bWVudC4KK2xldCB0ZW1wbGF0ZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7Cit0ZW1wbGF0ZS5pbm5lckhUTUwg
PSAnPGlucHV0IHR5cGU9ImRhdGUiIHZhbHVlPSIxOTk5LTAxLTExIj4nOworZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZXRpbWVsb2NhbC9k
YXRldGltZWxvY2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRldGltZWxvY2FsL2RhdGV0aW1lbG9j
YWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9t
LWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMyBAQAorPGJvZHk+Cis8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiIHZhbHVlPSIxOTk5
LTAxLTExVDE5OjMwIj4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
ZXRpbWVsb2NhbC9kYXRldGltZWxvY2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRldGltZWxvY2FsL2RhdGV0aW1l
bG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1l
bGVzcy1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPGJvZHk+
Cis8c2NyaXB0PgorLy8gVGhpcyB0ZXN0cyB0aGF0IGFuIDxpbnB1dCB0eXBlPSJkYXRldGltZS1s
b2NhbCI+IGNyZWF0ZWQgaW4gYSB0ZW1wbGF0ZSBkb2N1bWVudCAoZS5nLiBvbmUgd2l0aG91dCBh
IGZyYW1lKQorLy8gaXMgaWRlbnRpY2FsIHRvIG9uZSBjcmVhdGVkIGluIHRoZSBtYWluIGRvY3Vt
ZW50LgorbGV0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTsK
K3RlbXBsYXRlLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiIHZhbHVl
PSIxOTk5LTAxLTExVDE5OjMwIj4nOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wbGF0
ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQt
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21vbnRo
L21vbnRoLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tb250aC9tb250aC1mcm9tLWZyYW1lbGVzcy1k
b2N1bWVudC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJv
ZHk+Cis8aW5wdXQgdHlwZT0ibW9udGgiIHZhbHVlPSIxOTk5LTAxIiA+Cis8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZyb20tZnJhbWVsZXNzLWRvY3Vt
ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tb250aC9tb250
aC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvbW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKzxib2R5PgorPHNjcmlwdD4KKy8vIFRoaXMg
dGVzdHMgdGhhdCBhbiA8aW5wdXQgdHlwZT0ibW9udGgiPiBjcmVhdGVkIGluIGEgdGVtcGxhdGUg
ZG9jdW1lbnQgKGUuZy4gb25lIHdpdGhvdXQgYSBmcmFtZSkKKy8vIGlzIGlkZW50aWNhbCB0byBv
bmUgY3JlYXRlZCBpbiB0aGUgbWFpbiBkb2N1bWVudC4KK2xldCB0ZW1wbGF0ZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7Cit0ZW1wbGF0ZS5pbm5lckhUTUwgPSAnPGlucHV0
IHR5cGU9Im1vbnRoIiB2YWx1ZT0iMTk5OS0wMSI+JzsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQodGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1k
b2N1bWVudC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGltZS90aW1lLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxl
c3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAK
Kzxib2R5PgorPGlucHV0IHR5cGU9InRpbWUiIHZhbHVlPSIyMjo1MzowNSI+Cis8L2JvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1kb2N1
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS90aW1l
LWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKzxib2R5PgorPHNjcmlwdD4KKy8vIFRoaXMgdGVz
dHMgdGhhdCBhbiA8aW5wdXQgdHlwZT0idGltZSI+IGNyZWF0ZWQgaW4gYSB0ZW1wbGF0ZSBkb2N1
bWVudCAoZS5nLiBvbmUgd2l0aG91dCBhIGZyYW1lKQorLy8gaXMgaWRlbnRpY2FsIHRvIG9uZSBj
cmVhdGVkIGluIHRoZSBtYWluIGRvY3VtZW50LgorbGV0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndGVtcGxhdGUnKTsKK3RlbXBsYXRlLmlubmVySFRNTCA9ICc8aW5wdXQgdHlw
ZT0idGltZSIgdmFsdWU9IjIyOjUzOjA1Ij4nOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0
ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3Vt
ZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93
ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dlZWsvd2Vlay1mcm9tLWZyYW1lbGVzcy1k
b2N1bWVudC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJv
ZHk+Cis8aW5wdXQgdHlwZT0id2VlayIgdmFsdWU9IjE5ODItVzI1Ij4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJv
bS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3dlZWsvd2Vlay1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPGJvZHk+Cis8c2NyaXB0PgorLy8gVGhpcyB0ZXN0cyB0
aGF0IGFuIDxpbnB1dCB0eXBlPSJ3ZWVrIj4gY3JlYXRlZCBpbiBhIHRlbXBsYXRlIGRvY3VtZW50
IChlLmcuIG9uZSB3aXRob3V0IGEgZnJhbWUpCisvLyBpcyBpZGVudGljYWwgdG8gb25lIGNyZWF0
ZWQgaW4gdGhlIG1haW4gZG9jdW1lbnQuCitsZXQgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd0ZW1wbGF0ZScpOwordGVtcGxhdGUuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJ3
ZWVrIiB2YWx1ZT0iMTk4Mi1XMjUiPic7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBs
YXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>
<flag name="commit-queue"
          id="426729"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410715</attachid>
            <date>2020-10-06 17:02:33 -0700</date>
            <delta_ts>2020-10-06 20:24:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216985-20201006170232.patch</filename>
            <type>text/plain</type>
            <size>75269</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODA1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBAQAorMjAyMC0xMC0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0IHR5cGU9ImRhdGV0aW1l
LWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGluc2lkZSBTaGFkb3dET00K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlzc3VlIGhlcmUgd2FzIHRoYXQgZnJhbWVs
ZXNzIGRvY3VtZW50cywgc3VjaCBhcyB0aG9zZSBjcmVhdGVkIHZpYSB0aGUKKyAgICAgICAgPHRl
bXBsYXRlPiBlbGVtZW50IG9yIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1
bWVudCguLi4pIHdlcmUKKyAgICAgICAgbm90IGFibGUgdG8gYWNjZXNzIHRoZSByZWFsIFNldHRp
bmdzIG9iamVjdCwgc28gd2VyZSBjcmVhdGluZyB0aGVpciBvd24gd2hpY2gKKyAgICAgICAgb25s
eSBjb250YWluZWQgdGhlIGRlZmF1bHQgdmFsdWVzLiBTbywgdGhlIHNvbHV0aW9uIGlzIHRvIGVu
c3VyZSB3ZSBwYXNzCisgICAgICAgIHRoZSByZWFsIFNldHRpbmdzIG9iamVjdCB0byB0aGUgRG9j
dW1lbnQgY29uc3RydWN0b3JzIGV2ZW4gd2hlbiB0aGUgRnJhbWUgaXMKKyAgICAgICAgbnVsbC4K
KyAgICAgICAgCisgICAgICAgIFRvIGRvIHRoaXMgcmVxdWlyZXMgYSBiaXQgb2YgcGlwaW5nIFNl
dHRpbmdzIGFyb3VuZCwgYnV0IGFsc28gc29tZSBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgTm93
LCB0aGUgU2V0dGluZ3Mgb3duZWQgYnkgRG9jdW1lbnQgaXMgZnVsbHkgaW1tdXRhYmxlLCB3aXRo
IHRoZSBtdXRhYmxlU2V0dGluZ3MoKQorICAgICAgICBhY2Nlc3NvciBiZWluZyByZW1vdmVkLCBh
cyBpdCB3YXMgbm90IGFjdHVhbGx5IG5lZWRlZC4gVGhlIHR3byB1c2VzIG9mIG11dGFibGUgCisg
ICAgICAgIFNldHRpbmdzIHdlcmUgZm9yIFNlcnZpY2VXb3JrZXIgY3JlYXRpb24sIHdoZXJlIHdl
IGNhbiBqdXN0IHVzZSB0aGUgbXV0YWJsZSBhY2Nlc3NvcgorICAgICAgICBmcm9tIFBhZ2UgaW5z
dGVhZCwgYW5kIGluIHRoZSBEb2N1bWVudCBjb25zdHJ1Y3Rvciwgd2hlcmUgdGhlIExlZ2FjeUdl
dFVzZXJNZWRpYUVuYWJsZWQKKyAgICAgICAgc2V0dGluZyB3YXMgYmVpbmcgZW5hYmxlZCBiYXNl
ZCBvbiBhIHF1aXJrLiBUaGlzIHdhcyBub3Qgb25seSBpbmNvcnJlY3QgKGFzIGl0IHdvdWxkCisg
ICAgICAgIGVmZmVjdCBtb3JlIHRoYW4ganVzdCB3aGF0IHRoZSBxdWlyayBpbnRlbmRlZCkgYnV0
IHVubmVjZXNzYXJ5LCBhcyB3ZSBjYW4gbWFrZSB0aGUKKyAgICAgICAgYmluZGluZ3MgYWNjZXNz
IHRoZSBxdWlyayBkaXJlY3RseS4KKworICAgICAgICBUaGUgb25lIHNvbWV3aGF0IGNvbXBsZXgg
Y2FzZSB3YXMgZm9yIENhY2hlZFNWR0RvY3VtZW50IGFuZCBDYWNoZWRTVkdGb250IGZvciB3aGlj
aAorICAgICAgICBJIGhhZCB0byB0aHJlYWQgc2V0dGluZ3MgdGhyb3VnaCBDYWNoZWRSZXNvdXJj
ZUxvYWRlciBhbmQgaGF2ZSB0aGUgQ2FjaGVkU1ZHRG9jdW1lbnQgCisgICAgICAgIGFuZCBDYWNo
ZWRTVkdGb250IGhvbGQgb250byB0aGUgU2V0dGluZ3Mgb2JqZWN0IHVudGlsIGl0IHdhcyB0aW1l
IHRvIGNvbnN0cnVjdCB0aGVpcgorICAgICAgICBkb2N1bWVudHMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzUnVudGltZUNo
ZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAg
QWRkIHN1cHBvcnQgYmFjayBmb3IgRW5hYmxlZEJ5UXVpcmsuCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvcitNZWRpYURldmljZXMuaWRsOgorICAgICAgICBTd2l0Y2gg
dG8gRW5hYmxlZEJ5UXVpcms9c2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1lZGlhLgorCisgICAg
ICAgICogcGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjpzaG91bGRF
bmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpR
dWlya3M6OnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGFnZS9RdWlya3MuaDoKKyAgICAgICAgUmVuYW1lIHF1aXJrIHRvIGVuZCBpbiAi
UXVpcmsiIHRvIHdvcmsgd2l0aCB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICog
cGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICBSZW1vdmUgbm93IHVudXNlZCBsZWdhY3lHZXRV
c2VyTWVkaWFFbmFibGVkIHNldHRpbmdzLgorCisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1Rl
bXBsYXRlcy9TZXR0aW5ncy5oLmVyYjoKKyAgICAgICAgRXhwb3J0IHRoZSBzZXR0aW5ncyBjb250
cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IHRlc3RzLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgU3dpdGNoIHRvIHVzaW5nIHRoZSBtdXRhYmxlIHNldHRpbmdzIGZyb20gUGFnZS4KKworICAg
ICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVYTUxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUhUTUxEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjptX3NlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVO
b25SZW5kZXJlZFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjbG9u
ZURvY3VtZW50V2l0aG91dENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpt
dXRhYmxlU2V0dGluZ3MpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnQ6OlhNTERvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlE
b2N1bWVudCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnQ6OkhUTUxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNs
b25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTERv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9j
dW1lbnQ6OkltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YURvY3VtZW50OjpNZWRpYURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9QbHVnaW5E
b2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvVGV4dERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KToKKyAgICAgICAgKiBodG1sL1RleHRE
b2N1bWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRX
cml0ZXI6OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVy
OjpiZWdpbik6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL1Np
bmtEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVu
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2
YWxpZGF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OkNhY2hlZFNWR0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
Lmg6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRy
ZW4gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OkRPTVBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyk6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5o
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgICogeG1sL1hTTFRQ
cm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9j
dW1lbnRGcm9tU291cmNlKToKKyAgICAgICAgVGhyZWFkIHNldHRpbmdzIGludG8gYWxsIHRoZSBw
bGFjZXMuCisKIDIwMjAtMTAtMDYgIEx1bWluZyBZaW4gIDxsdW1pbmdfeWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIEJ1bXAgcmVwb3J0ZWQgY3VycmVudCBzaGlwcGluZyByZWxlYXNl
IFVBIHRvIDEwXzE1XzcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yK01lZGlhRGV2aWNlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3IrTWVkaWFEZXZpY2VzLmlkbAkocmV2aXNpb24g
MjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3Ir
TWVkaWFEZXZpY2VzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNSArMzYsNSBAQAogICAgIElt
cGxlbWVudGVkQnk9TmF2aWdhdG9yTWVkaWFEZXZpY2VzCiBdIHBhcnRpYWwgaW50ZXJmYWNlIE5h
dmlnYXRvciB7CiAgICAgW1NhbWVPYmplY3QsIFNlY3VyZUNvbnRleHQsIENvbnRleHRBbGxvd3NN
ZWRpYURldmljZXNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYURldmljZXMgbWVkaWFEZXZpY2Vz
OwotICAgIFtDdXN0b20sIEVuYWJsZWRCeVNldHRpbmc9TGVnYWN5R2V0VXNlck1lZGlhXSB1bmRl
ZmluZWQgZ2V0VXNlck1lZGlhKG9iamVjdCBjb25zdHJhaW50cywgb2JqZWN0PyBzdWNjZXNzQ2Fs
bGJhY2ssIG9iamVjdD8gZXJyb3JDYWxsYmFjayk7CisgICAgW0N1c3RvbSwgRW5hYmxlZEJ5UXVp
cms9c2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1lZGlhXSB1bmRlZmluZWQgZ2V0VXNlck1lZGlh
KG9iamVjdCBjb25zdHJhaW50cywgb2JqZWN0PyBzdWNjZXNzQ2FsbGJhY2ssIG9iamVjdD8gZXJy
b3JDYWxsYmFjayk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1Rl
bXBsYXRlcy9TZXR0aW5ncy5oLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3Jp
cHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJiCShyZXZpc2lvbiAyNjgwMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJi
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBTZXR0
aW5ncyA6IHB1YmxpYyBTZXR0aW5nc0Jhc2UsIHB1YmxpYyBSZWZDb3VudGVkPFNldHRpbmdzPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0dGluZ3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNldHRpbmdzPiBjcmVhdGUoUGFnZSopOwot
ICAgIH5TZXR0aW5ncygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2V0dGluZ3M+
IGNyZWF0ZShQYWdlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgflNldHRpbmdzKCk7CiAKIDwlLSBm
b3IgQHNldHRpbmcgaW4gQHVuY29uZGl0aW9uYWxTZXR0aW5nIGRvIC0lPgogICAgIDwlLSBpZiBA
c2V0dGluZy5oYXNDb21wbGV4R2V0dGVyPyAtJT4KQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgog
PCUtIGVuZCAtJT4KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXR0aW5ncyhQYWdlKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2V0dGluZ3MoUGFnZSopOwogCiA8JS0gZm9yIEBz
ZXR0aW5nIGluIEBpbnNwZWN0b3JPdmVycmlkZVNldHRpbmdzIGRvIC0lPgogICAgIE9wdGlvbmFs
PDwlPSBAc2V0dGluZy50eXBlICU+PiBtXzwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE5OTYs
NiArMTk5Niw3IEBAIHN1YiBOZWVkc1J1bnRpbWVDaGVjawogICAgICAgICB8fCAkY29udGV4dC0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvckNvbnRleHR9CiAgICAgICAgIHx8ICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9CiAgICAgICAgIHx8ICRj
b250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfQorICAgICAgICB8
fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5UXVpcmt9CiAgICAgICAg
IHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEaXNhYmxlZEJ5UXVpcmt9CiAgICAg
ICAgIHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250ZXh0fQogICAg
ICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tRW5hYmxlZH07CkBA
IC00MDc3LDYgKzQwNzgsMjAgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaQogICAgICAgICBwdXNoKEBjb25qdW5jdHMsICIke2NsYXNzTmFtZX0iIC4gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJGNvbnRleHQtPm5hbWUpIC4gIklzRW5hYmxlZCgpIik7CiAgICAg
fQogCisgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlRdWly
a30pIHsKKyAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEVuYWJsZWRCeVF1
aXJrLiIpIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEaXNhYmxlZEJ5UXVpcmt9
IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRG9j
dW1lbnQuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiUXVpcmtzLmgiKTsKKworICAg
ICAgICBhc3NlcnQoIkVuYWJsZWRCeVF1aXJrIGNhbiBvbmx5IGJlIHVzZWQgYnkgaW50ZXJmYWNl
cyBvbmx5IGV4cG9zZWQgdG8gdGhlIFdpbmRvdyIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0V4cG9zZWR9ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4
cG9zZWR9IG5lICJXaW5kb3ciOworCisgICAgICAgIG15IEBmbGFncyA9IHNwbGl0KC8mLywgJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVF1aXJrfSk7CisgICAgICAgIGZv
cmVhY2ggbXkgJGZsYWcgKEBmbGFncykgeworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAi
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFs
T2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnF1aXJrcygpLiIgLiBU
b01ldGhvZE5hbWUoJGZsYWcpIC4gIlF1aXJrKCkiKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJsZWRCeVF1aXJrfSkgewog
ICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRGlzYWJsZWRCeVF1aXJrLiIp
IGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEaXNhYmxlZEJ5UXVpcmt9IGVxICJW
QUxVRV9JU19NSVNTSU5HIjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjAsNiArMTYwLDExIEBACiAgICAgICAgICJEZWZhdWx0RGVmaW5lT3duUHJvcGVy
dHkiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAg
ICAgICB9LAorICAgICAgICAiRGlzYWJsZWRCeVF1aXJrIjogeworICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJhdHRyaWJ1
dGUiLCAib3BlcmF0aW9uIiwgImNvbnN0YW50IiwgImRpY3Rpb25hcnktbWVtYmVyIiwgImluY2x1
ZGVzIl0sCisgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCisgICAgICAgICAgICAic3VwcG9y
dHNDb25qdW5jdGlvbiI6IHRydWUKKyAgICAgICAgfSwKICAgICAgICAgIkRvTm90Q2hlY2tDb25z
dGFudHMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQog
ICAgICAgICB9LApAQCAtMTc1LDYgKzE4MCwxMSBAQAogICAgICAgICAiRG9jdW1lbnRFdmVudEhh
bmRsZXIiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXQog
ICAgICAgICB9LAorICAgICAgICAiRW5hYmxlZEJ5UXVpcmsiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJp
YnV0ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIiLCAiaW5j
bHVkZXMiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBw
b3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICAiRW5hYmxlZEF0UnVu
dGltZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJk
aWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFudCIs
ICJpdGVyYWJsZSIsICJpbmNsdWRlcyJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLApA
QCAtMTg1LDEwICsxOTUsNiBAQAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAogICAgICAg
ICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAgICAgICAgIH0sCi0gICAgICAgICJE
aXNhYmxlZEJ5UXVpcmsiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAi
Y29uc3RhbnQiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQotICAgICAgICB9LAogICAg
ICAgICAiRW5hYmxlZEZvckNvbnRleHQiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhdHRyaWJ1dGUiLCAiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYsMTggKzc2LDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudFR5cGU+PiBET01JbXBsZW0K
ICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlmaWVkTmFt
ZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8WE1MRG9jdW1l
bnQ+IGNyZWF0ZVhNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJKQorc3RhdGlj
IGlubGluZSBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhNTERvY3VtZW50KGNvbnN0IFN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgaWYgKG5hbWVz
cGFjZVVSSSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQotICAgICAgICByZXR1cm4gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIHJldHVybiBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIHNldHRpbmdzLCBVUkwoKSk7CiAgICAgaWYgKG5hbWVzcGFj
ZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQotICAgICAgICByZXR1cm4gWE1M
RG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpKTsKLSAgICByZXR1cm4gWE1MRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIHJldHVybiBYTUxEb2N1bWVu
dDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgc2V0dGluZ3MsIFVSTCgpKTsKKyAgICByZXR1cm4gWE1M
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBzZXR0aW5ncywgVVJMKCkpOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8WE1MRG9jdW1lbnQ+PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
RG9jdW1lbnRUeXBlKiBkb2N1bWVudFR5cGUpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IGNyZWF0
ZVhNTERvY3VtZW50KG5hbWVzcGFjZVVSSSk7CisgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZVhN
TERvY3VtZW50KG5hbWVzcGFjZVVSSSwgbV9kb2N1bWVudC5zZXR0aW5ncygpKTsKICAgICBkb2N1
bWVudC0+c2V0Q29udGV4dERvY3VtZW50KG1fZG9jdW1lbnQuY29udGV4dERvY3VtZW50KCkpOwog
ICAgIGRvY3VtZW50LT5zZXRTZWN1cml0eU9yaWdpblBvbGljeShtX2RvY3VtZW50LnNlY3VyaXR5
T3JpZ2luUG9saWN5KCkpOwogCkBAIC0xMTksNyArMTE5LDcgQEAgUmVmPENTU1N0eWxlU2hlZXQ+
IERPTUltcGxlbWVudGF0aW9uOjpjcgogCiBSZWY8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgYXV0
byBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBh
dXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5z
ZXR0aW5ncygpLCBVUkwoKSk7CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsKICAgICBkb2N1bWVudC0+
d3JpdGUobnVsbHB0ciwgeyAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5
PjwvYm9keT48L2h0bWw+Il9zIH0pOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKQEAgLTEz
Myw3ICsxMzMsNyBAQCBSZWY8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlCiAg
ICAgcmV0dXJuIGRvY3VtZW50OwogfQogCi1SZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCitSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRp
bmdzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogSW5lbGVnYW50IHRvIGhhdmUg
dGhpcyBoZXJlIGp1c3QgYmVjYXVzZSB0aGlzIGlzIHRoZSBob21lIG9mIERPTSBBUElzIGZvciBj
cmVhdGluZyBkb2N1bWVudHMuCiAgICAgLy8gVGhpcyBpcyBpbnRlcm5hbCwgbm90IGEgRE9NIEFQ
SS4gTWF5YmUgd2Ugc2hvdWxkIHB1dCBpdCBpbiBhIG5ldyBjbGFzcyBjYWxsZWQgRG9jdW1lbnRG
YWN0b3J5LApAQCAtMTQxLDU3ICsxNDEsNTcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlRAogCiAgICAgLy8gUGx1Zy1pbnMgY2Fubm90IHRha2Ugb3ZlciBmb3IgSFRN
TCwgWEhUTUwsIHBsYWluIHRleHQsIG9yIG5vbi1QREYgaW1hZ2VzLgogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9odG1sIikpCi0gICAgICAgIHJldHVy
biBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEhUTUxE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpKQotICAg
ICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCB1cmwpOworICAgICAg
ICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvcGxhaW4i
KSkKLSAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAg
ICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwog
ICAgIGJvb2wgaXNJbWFnZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZnJhbWUgJiYgaXNJbWFnZSAmJiAhTUlNRVR5cGVSZWdpc3Ry
eTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIEltYWdl
RG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CisgICAgICAgIHJldHVybiBJbWFnZURvY3Vt
ZW50OjpjcmVhdGUoKmZyYW1lLCBzZXR0aW5ncywgdXJsKTsKIAogICAgIC8vIFRoZSAiaW1hZ2Ug
ZG9jdW1lbnRzIGZvciBzdWJmcmFtZSBQREZzIiBtb2RlIHdpbGwgb3ZlcnJpZGUgYSBQREYgcGx1
Zy1pbi4KICAgICBpZiAoZnJhbWUgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpICYmIE1JTUVUeXBl
UmVnaXN0cnk6OmlzUERGTUlNRVR5cGUodHlwZSkgJiYgZnJhbWUtPnNldHRpbmdzKCkudXNlSW1h
Z2VEb2N1bWVudEZvclN1YmZyYW1lUERGKCkpCi0gICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50
OjpjcmVhdGUoKmZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3Jl
YXRlKCpmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMudHlw
ZSA9IENvbnRlbnRUeXBlIHsgdHlwZSB9OwogICAgIHBhcmFtZXRlcnMudXJsID0gdXJsOwogICAg
IGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQotICAgICAgICByZXR1cm4gTWVkaWFEb2N1
bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVudDo6
Y3JlYXRlKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZUUERJ
UikKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImFwcGxpY2F0
aW9uL3gtZnRwLWRpcmVjdG9yeSIpKQotICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogI2VuZGlmCiAKICAgICBpZiAoZnJh
bWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3Vt
ZW50KHR5cGUpKQotICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUs
IHVybCk7CisgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgc2V0
dGluZ3MsIHVybCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIHRoZSByZWxhdGl2ZWx5IGNv
c3RseSBsb29rdXAgdGhhdCByZXF1aXJlcyBpbml0aWFsaXppbmcgdGhlIHBsdWctaW4gZGF0YWJh
c2UuCiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgYXV0byBhbGxv
d2VkUGx1Z2luVHlwZXMgPSBmcmFtZS0+bG9hZGVyKCkuYXJlUGx1Z2luc0VuYWJsZWQoKQogICAg
ICAgICAgICAgPyBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zIDogUGx1Z2luRGF0YTo6T25seUFwcGxp
Y2F0aW9uUGx1Z2luczsKICAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS5z
dXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKQotICAg
ICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOworICAg
ICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCBzZXR0aW5ncywg
dXJsKTsKICAgICB9CiAKICAgICAvLyBJdGVtcyBsaXN0ZWQgaGVyZSwgYWZ0ZXIgdGhlIHBsdWct
aW4gY2hlY2tzLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwbHVnLWlucy4KICAgICAvLyBGb3IgZXhh
bXBsZSwgcGx1Zy1pbnMgY2FuIHRha2Ugb3ZlciBzdXBwb3J0IGZvciBQREYgb3IgU1ZHLgogICAg
IGlmIChmcmFtZSAmJiBpc0ltYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3Jl
YXRlKCpmcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgq
ZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRN
SU1FVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwpOworICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRp
bmdzLCB1cmwpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
aW1hZ2Uvc3ZnK3htbCIpKQotICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShmcmFt
ZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRp
bmdzLCB1cmwpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKHR5cGUp
KSB7Ci0gICAgICAgIGF1dG8gZG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1
cmwpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwg
c2V0dGluZ3MsIHVybCk7CiAgICAgICAgIGRvY3VtZW50LT5vdmVycmlkZU1JTUVUeXBlKHR5cGUp
OwogICAgICAgICByZXR1cm4gZG9jdW1lbnQ7CiAgICAgfQotICAgIHJldHVybiBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHNldHRpbmdzLCB1cmwpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOwogCi0gICAgc3Rh
dGljIFJlZjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
RnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29u
c3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiwxMSArNTMyLDExIEBAIHN0
YXRpYyBpbmxpbmUgaW50IGN1cnJlbnRPcmllbnRhdGlvbihGcmEKICAgICByZXR1cm4gMDsKIH0K
IAotRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3Vt
ZW50Q2xhc3NGbGFncyBkb2N1bWVudENsYXNzZXMsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdz
KQorRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRp
bmdzLCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MpCiAgICAgOiBDb250YWluZXJOb2RlKCp0aGlzLCBD
cmVhdGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSgqdGhpcykKICAgICAsIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcihmcmFtZSkKLSAgICAsIG1fc2V0dGluZ3MoZnJhbWUgPyBSZWY8U2V0dGlu
Z3M+KGZyYW1lLT5zZXR0aW5ncygpKSA6IFNldHRpbmdzOjpjcmVhdGUobnVsbHB0cikpCisgICAg
LCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWly
a3M+KCp0aGlzKSkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxD
YWNoZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKG51bGxwdHIpKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNp
b24pCkBAIC02MTAsMjIgKzYxMCwxOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBVCiAgICAgICAgIG5vZGVMaXN0QW5kQ29sbGVjdGlvbkNvdW50ID0gMDsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkRXZlbnRMaXN0ZW5lcnNUb05vZGUoKnRoaXMp
OwotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9zZXR0aW5ncy0+c2V0TGVnYWN5R2V0
VXNlck1lZGlhRW5hYmxlZChxdWlya3MoKS5zaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEo
KSk7Ci0jZW5kaWYKIH0KIAogUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50
JiBjb250ZXh0RG9jdW1lbnQpCiB7Ci0gICAgYXV0byBkb2N1bWVudCA9IGFkb3B0UmVmKCpuZXcg
RG9jdW1lbnQobnVsbHB0ciwgVVJMKCkpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRSZWYo
Km5ldyBEb2N1bWVudChudWxscHRyLCBjb250ZXh0RG9jdW1lbnQubV9zZXR0aW5ncy5nZXQoKSwg
VVJMKCkpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVu
dCk7CiAgICAgZG9jdW1lbnQtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KGNvbnRleHREb2N1bWVu
dC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKICAgICByZXR1cm4gZG9jdW1lbnQ7CiB9CiAKLVJl
ZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUm
IGZyYW1lLCBjb25zdCBVUkwmIHVybCkKK1JlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZU5v
blJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvY3VtZW50
KCZmcmFtZSwgdXJsLCBEZWZhdWx0RG9jdW1lbnRDbGFzcywgTm9uUmVuZGVyZWRQbGFjZWhvbGRl
cikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvY3VtZW50KCZmcmFtZSwgc2V0dGluZ3Ms
IHVybCwgRGVmYXVsdERvY3VtZW50Q2xhc3MsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpKTsKIH0K
IAogRG9jdW1lbnQ6On5Eb2N1bWVudCgpCkBAIC00MDEwLDEwICs0MDA3LDEwIEBAIFJlZjxEb2N1
bWVudD4gRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXQKIHsKICAgICBpZiAoaXNYTUxEb2N1bWVu
dCgpKSB7CiAgICAgICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgdXJsKCkpOwotICAgICAgICByZXR1
cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCB1cmwoKSk7CisgICAgICAgICAgICByZXR1
cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIG1fc2V0dGluZ3MuZ2V0KCksIHVy
bCgpKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0
aW5ncy5nZXQoKSwgdXJsKCkpOwogICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKHVybCgpKTsKKyAg
ICByZXR1cm4gY3JlYXRlKG1fc2V0dGluZ3MuZ2V0KCksIHVybCgpKTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6Y2xvbmVEYXRhRnJvbURvY3VtZW50KGNvbnN0IERvY3VtZW50JiBvdGhlcikKQEAgLTcx
NDIsOSArNzEzOSw5IEBAIERvY3VtZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWUK
ICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAg
aWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGFib3V0QmxhbmtVUkwoKSk7CisgICAgICAgIG1fdGVt
cGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3Mu
Z2V0KCksIGFib3V0QmxhbmtVUkwoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RlbXBsYXRlRG9j
dW1lbnQgPSBjcmVhdGUoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3Vt
ZW50ID0gY3JlYXRlKG1fc2V0dGluZ3MuZ2V0KCksIGFib3V0QmxhbmtVUkwoKSk7CiAKICAgICBt
X3RlbXBsYXRlRG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChjb250ZXh0RG9jdW1lbnQoKSk7
CiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRUZW1wbGF0ZURvY3VtZW50SG9zdCh0aGlzKTsg
Ly8gYmFsYW5jZWQgaW4gZHRvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAy
NjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzM5LDggKzMzOSw4IEBAIGNsYXNzIERvY3VtZW50CiAgICAgLCBwdWJsaWMgQ2FudmFzT2Jz
ZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKERvY3VtZW50LCBXRUJD
T1JFX0VYUE9SVCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlKGNv
bnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIoRnJhbWUmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBj
cmVhdGUoY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPERvY3Vt
ZW50PiBjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKEZyYW1lJiwgY29uc3QgU2V0dGluZ3Mm
LCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoRG9jdW1lbnQm
KTsKIAogICAgIHZpcnR1YWwgfkRvY3VtZW50KCk7CkBAIC01NTYsNyArNTU2LDYgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lVmlldyogdmlldygpIGNvbnN0OyAvLyBDYW4gYmUg
bnVsbC4KICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBwYWdlKCkgY29uc3Q7IC8vIENhbiBiZSBu
dWxsLgogICAgIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3MuZ2V0KCk7IH0KLSAgICBTZXR0aW5ncyYgbXV0YWJsZVNldHRpbmdzKCkgeyByZXR1cm4g
bV9zZXR0aW5ncy5nZXQoKTsgfQogICAgIEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3Io
KSBjb25zdDsKIAogICAgIGNvbnN0IFF1aXJrcyYgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9x
dWlya3M7IH0KQEAgLTE1OTMsNyArMTU5Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIgPSAxIDw8IDEgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSos
IGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1
bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIERvY3Vt
ZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzRmxh
Z3MgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAw
KTsKIAogICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmco
KTsgfQogCkBAIC0xNjk0LDcgKzE2OTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRMb2dN
ZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBXVEZMb2dMZXZlbCwgVmVjdG9yPEpTT05Mb2dW
YWx1ZT4mJikgZmluYWw7CiAKLSAgICBjb25zdCBSZWY8U2V0dGluZ3M+IG1fc2V0dGluZ3M7Cisg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCiAgICAgVW5pcXVlUmVm
PFF1aXJrcz4gbV9xdWlya3M7CiAKQEAgLTIxNjIsOSArMjE2MSw5IEBAIGlubGluZSBBWE9iamVj
dENhY2hlKiBEb2N1bWVudDo6ZXhpc3RpbmcKICAgICByZXR1cm4gZXhpc3RpbmdBWE9iamVjdENh
Y2hlU2xvdygpOwogfQogCi1pbmxpbmUgUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsKQoraW5saW5lIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERvY3VtZW50KG51bGxwdHIsIHVybCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERvY3VtZW50KG51bGxwdHIsIHNldHRpbmdzLCB1cmwpKTsKIH0KIAogaW5saW5lIHZvaWQg
RG9jdW1lbnQ6OmludmFsaWRhdGVBY2Nlc3NLZXlDYWNoZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1hNTERv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIwICszMiwyMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBYTUxEb2N1bWVudCA6IHB1YmxpYyBEb2N1bWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChYTUxEb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxY
TUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3Rh
dGljIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFhNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQorICAgIHN0YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBm
cmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3VtZW50KGZyYW1lLCB1cmwsIFhIVE1M
RG9jdW1lbnRDbGFzcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVu
dChmcmFtZSwgc2V0dGluZ3MsIHVybCwgWEhUTUxEb2N1bWVudENsYXNzKSk7CiAgICAgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgWE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwg
dW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzID0gRGVmYXVsdERvY3VtZW50Q2xhc3MpCi0gICAgICAg
IDogRG9jdW1lbnQoZnJhbWUsIHVybCwgWE1MRG9jdW1lbnRDbGFzcyB8IGRvY3VtZW50Q2xhc3Nl
cykKLSAgICB7IH0KKyAgICBYTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdz
JiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcyA9IERl
ZmF1bHREb2N1bWVudENsYXNzKQorICAgICAgICA6IERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywg
dXJsLCBYTUxEb2N1bWVudENsYXNzIHwgZG9jdW1lbnRDbGFzc2VzKQorICAgIHsKKyAgICB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
Miw4ICs0MjIsOCBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2goCiAg
ICAgSFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1l
bnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0g
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBE
aXJlY3RvcnlEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywg
Y29uc3QgVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwp
CiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIExvZ0ZUUC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxT
dGF0ZTo6T247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGVFBEaXJlY3RvcnlEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRlRQRGlyZWN0b3J5RG9jdW1l
bnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8RlRQRGlyZWN0
b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cywgY29uc3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
VFBEaXJlY3RvcnlEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAg
fQogCiBwcml2YXRlOgotICAgIEZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJM
Jik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNv
bnN0IFVSTCYpOwogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJp
ZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDEzICs4NSwxMyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SFRNTERvY3VtZW50CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlZjxIVE1MRG9j
dW1lbnQ+IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorUmVmPEhUTUxEb2N1bWVudD4gSFRNTERvY3VtZW50OjpjcmVh
dGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRp
bmdzLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MRG9j
dW1lbnQoJmZyYW1lLCB1cmwsIEhUTUxEb2N1bWVudENsYXNzLCBTeW50aGVzaXplZCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNldHRpbmdzLCB1cmws
IEhUTUxEb2N1bWVudENsYXNzLCBTeW50aGVzaXplZCkpOwogfQogCi1IVE1MRG9jdW1lbnQ6OkhU
TUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxh
Z3MgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKLSAgICA6IERv
Y3VtZW50KGZyYW1lLCB1cmwsIGRvY3VtZW50Q2xhc3NlcyB8IEhUTUxEb2N1bWVudENsYXNzLCBj
b25zdHJ1Y3Rpb25GbGFncykKK0hUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFz
c0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MpCisgICAg
OiBEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MsIGNvbnN0cnVjdGlvbkZsYWdzKQogewogICAgIGNsZWFyWE1MVmVyc2lvbigp
OwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIGJvb2wgSFRNTERvY3VtZW50Ojppc0ZyYW1lU2V0KCkg
Y29uc3QKIAogUmVmPERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0
Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCkpOwor
ICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MoKSwgdXJsKCkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDgg
KzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTERvY3VtZW50IDogcHVibGlj
IERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxEb2N1bWVudCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSosIGNvbnN0
IFVSTCYpOwotICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGVTeW50aGVzaXplZERv
Y3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGlj
IFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQoRnJhbWUmLCBjb25z
dCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwgfkhUTUxEb2N1bWVudCgpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHdpZHRoKCk7CkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3Qg
VVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3Mg
PSAwKTsKKyAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVS
TCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IDAsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0g
MCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3QgZmluYWw7CkBAIC02
NSw5ICs2NSw5IEBAIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlT3JkZXJlZE1hcCBtX3dpbmRvd05h
bWVkSXRlbTsKIH07CiAKLWlubGluZSBSZWY8SFRNTERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6OmNy
ZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQoraW5saW5lIFJlZjxIVE1MRG9jdW1l
bnQ+IEhUTUxEb2N1bWVudDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
RG9jdW1lbnQoZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3MpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwsIEhUTUxEb2N1bWVu
dENsYXNzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDE0ICsxOTYs
MTQgQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIGRvY3VtZW50KCku
ZmluaXNoZWRQYXJzaW5nKCk7CiB9CiAKLUltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJh
bWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHVy
bCwgSW1hZ2VEb2N1bWVudENsYXNzKQorSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCisgICAg
OiBIVE1MRG9jdW1lbnQoJmZyYW1lLCBzZXR0aW5ncywgdXJsLCBJbWFnZURvY3VtZW50Q2xhc3Mp
CiAgICAgLCBtX2ltYWdlRWxlbWVudChudWxscHRyKQogICAgICwgbV9pbWFnZVNpemVJc0tub3du
KGZhbHNlKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9kaWRTaHJpbmtJbWFn
ZShmYWxzZSkKICNlbmRpZgotICAgICwgbV9zaG91bGRTaHJpbmtJbWFnZShmcmFtZS5zZXR0aW5n
cygpLnNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQoKSAmJiBmcmFtZS5pc01haW5GcmFtZSgp
KQorICAgICwgbV9zaG91bGRTaHJpbmtJbWFnZShzZXR0aW5ncy5zaHJpbmtzU3RhbmRhbG9uZUlt
YWdlc1RvRml0KCkgJiYgZnJhbWUuaXNNYWluRnJhbWUoKSkKIHsKICAgICBzZXRDb21wYXRpYmls
aXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsKICAgICBsb2Nr
Q29tcGF0aWJpbGl0eU1vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5o
CShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50
OwogY2xhc3MgSW1hZ2VEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VEb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKKyAgICBzdGF0aWMgUmVmPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkp
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxl
bWVudCgpIGNvbnN0OwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBJbWFnZURvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgSW1hZ2VEb2N1
bWVudChGcmFtZSYsIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBSZWY8RG9j
dW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQs
OCBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvCiAgICAgZmluaXNo
KCk7CiB9CiAgICAgCi1NZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1
bWVudENsYXNzKQorTWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIHNldHRpbmdzLCB1cmwsIE1lZGlhRG9jdW1lbnRDbGFzcykKIHsKICAgICBzZXRD
b21wYXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpRdWlya3NNb2RlKTsK
ICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFEb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5oCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBNZWRpYURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYURvY3VtZW50KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQorICAgIHN0YXRpYyBSZWY8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywg
dXJsKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfk1lZGlhRG9jdW1lbnQoKTsKIApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG91dGdvaW5nUmVmZXJyZXIoKSBjb25zdCB7IHJl
dHVybiBtX291dGdvaW5nUmVmZXJyZXI7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50
KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgTWVkaWFEb2N1bWVudChGcmFtZSosIGNvbnN0IFNl
dHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50
LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIFBsdWdpbkRv
Y3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhECiAgICAgfQogfQogCi1QbHVnaW5Eb2N1bWVudDo6
UGx1Z2luRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6IEhUTUxE
b2N1bWVudCgmZnJhbWUsIHVybCwgUGx1Z2luRG9jdW1lbnRDbGFzcykKK1BsdWdpbkRvY3VtZW50
OjpQbHVnaW5Eb2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywg
Y29uc3QgVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoJmZyYW1lLCBzZXR0aW5ncywgdXJs
LCBQbHVnaW5Eb2N1bWVudENsYXNzKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3Vt
ZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5
TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAkocmV2aXNpb24g
MjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIFdpZGdldDsKIGNsYXNzIFBsdWdpbkRvY3Vt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChQbHVnaW5Eb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQbHVnaW5Eb2N1
bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJl
ZjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzLCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBsdWdpbkRvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBXaWRnZXQqIHBsdWdpbldpZGdldCgpOwpAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZExvYWRQbHVnaW5NYW51YWxseTsgfQogCiBwcml2YXRlOgotICAgIFBsdWdp
bkRvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CisgICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUm
LCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogCiAgICAgUmVmPERvY3VtZW50UGFyc2Vy
PiBjcmVhdGVQYXJzZXIoKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHREb2N1bWVudCk7CiAKLVRl
eHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0g
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgVGV4dERvY3VtZW50Q2xhc3MpCitUZXh0RG9j
dW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cywgY29uc3QgVVJMJiB1cmwpCisgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1
cmwsIFRleHREb2N1bWVudENsYXNzKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3Vt
ZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5
TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCShyZXZpc2lvbiAyNjgw
MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dERvY3Vt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChUZXh0RG9jdW1lbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dERvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmPFRl
eHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
LCBjb25zdCBVUkwmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHREb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHREb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKKyAgICBUZXh0RG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogICAgIAogICAgIFJlZjxEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1l
bnQoY29ucwogewogICAgIFJlZlB0cjxEb2N1bWVudD4gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG1f
ZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgICAgIG5ld0RvY3VtZW50ID0gSFRN
TERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSk7
CiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC5pc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbmV3
RG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAg
ICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBtX2Rv
Y3VtZW50LnNldHRpbmdzKCksIFVSTCgpKTsKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LmlzU1ZH
RG9jdW1lbnQoKSkKLSAgICAgICAgbmV3RG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKG51
bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRl
KG51bGxwdHIsIG1fZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCkpOwogCiAgICAgQVNTRVJUKG5l
d0RvY3VtZW50KTsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IHBhcnNlcjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkocmV2aXNpb24gMjY4MDIxKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKQogUmVm
PERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNo
b3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KG1fbWltZVR5cGUpKQotICAgICAgICByZXR1cm4g
UGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgdXJsKTsKKyAgICAgICAgcmV0dXJuIFBs
dWdpbkRvY3VtZW50OjpjcmVhdGUoKm1fZnJhbWUsIG1fZnJhbWUtPnNldHRpbmdzKCksIHVybCk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShtX21pbWVUeXBlKSAmJiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSB8fCAhbV9m
cmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50Rm9yU3ViZnJhbWVQREYoKSkpCi0gICAg
ICAgIHJldHVybiBTaW5rRG9jdW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgdXJsKTsKKyAgICAgICAg
cmV0dXJuIFNpbmtEb2N1bWVudDo6Y3JlYXRlKCptX2ZyYW1lLCBtX2ZyYW1lLT5zZXR0aW5ncygp
LCB1cmwpOwogI2VuZGlmCiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNI
VE1MVmlldygpKQotICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxh
Y2Vob2xkZXIoKm1fZnJhbWUsIHVybCk7Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVEb2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4g
RG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoKm1fZnJhbWUsIG1fZnJhbWUt
PnNldHRpbmdzKCksIHVybCk7CisgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCBtX2ZyYW1lLT5zZXR0aW5ncygpLCB1cmwpOwog
fQogCiBib29sIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwg
Ym9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCkBAIC0xMzQsNyArMTM0LDcg
QEAgYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cgogICAgIC8vIElmIHRo
ZSBuZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBzdXBwb3NlZCB0byBiZSBz
YW5kYm94ZWQgZnJvbSBQbHVnaW5zLAogICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9jdW1lbnQg
d2l0aCBvbmUgd2hvc2UgcGFyc2VyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRhIChidWcg
MzkzMjMpCiAgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQt
PmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKLSAgICAgICAgZG9jdW1lbnQgPSBTaW5rRG9j
dW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgdXJsKTsKKyAgICAgICAgZG9jdW1lbnQgPSBTaW5rRG9j
dW1lbnQ6OmNyZWF0ZSgqbV9mcmFtZSwgbV9mcmFtZS0+c2V0dGluZ3MoKSwgdXJsKTsKIAogICAg
IC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNvbnRlbnQgc2VjdXJpdHkgcG9s
aWN5IGhlcmUgYWJvdXQgYmxvY2tlZCBwbHVnLWlucz8KIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1NpbmtEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1Myw4IEBA
IHByaXZhdGU6CiAgICAgfQogfTsKIAotU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUm
IGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHVybCkK
K1NpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudCgmZnJhbWUsIHNl
dHRpbmdzLCB1cmwpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRDb21wYXRp
YmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCShyZXZpc2lvbiAyNjgwMjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEzICszMiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaW5rRG9jdW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFNpbmtEb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaW5rRG9jdW1lbnQ+IGNy
ZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8U2lua0Rv
Y3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNv
bnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lua0Rv
Y3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2lua0Rv
Y3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNp
bmtEb2N1bWVudChGcmFtZSYsIGNvbnN0IFVSTCYpOworICAgIFNpbmtEb2N1bWVudChGcmFtZSYs
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAKICAgICBSZWY8RG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZVBhcnNlcigpIGZpbmFsOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjY4MDIx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVzb3Vy
Y2VFcnJvck9yPENhY2hlZFJlc28KICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoY2FjaGVkUmVz
b3VyY2UuZXJyb3IoKSk7CiB9CiAKLXN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBj
b29raWVKYXIpCitzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBj
b25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToKQEAgLTEyMSw5ICsxMjEsOSBA
QCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNjcmlw
dChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIGNvb2tpZUphcik7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5l
dyBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIGNvb2tpZUph
cik7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0
KSwgc2Vzc2lvbklELCBjb29raWVKYXIsIHNldHRpbmdzKTsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpTVkdGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU1ZH
Rm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIGNvb2tpZUphcik7CisgICAgICAgIHJl
dHVybiBuZXcgQ2FjaGVkU1ZHRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsIGNvb2tp
ZUphciwgc2V0dGluZ3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNv
dXJjZToKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRGb250KFdURk1vdmUocmVxdWVzdCksIHNl
c3Npb25JRCwgY29va2llSmFyKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpCZWFj
b246CkBAIC0xNTAsNiArMTUwLDQ1IEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVz
b3VyY2UoQ2EKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIENhY2hlZFJlc291cmNl
KiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKCkpIHsKKyAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgorICAgICAgICByZXR1
cm4gbmV3IENhY2hlZEltYWdlKFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgp
LCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
Q1NTU3R5bGVTaGVldDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KFdU
Rk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIo
KSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgorICAgICAgICByZXR1
cm4gbmV3IENhY2hlZFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQo
KSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU1ZHRG9jdW1l
bnQoV1RGTW92ZShyZXF1ZXN0KSwgc3RhdGljX2Nhc3Q8Q2FjaGVkU1ZHRG9jdW1lbnQmPihyZXNv
dXJjZSkpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNWR0ZvbnRSZXNvdXJjZToK
KyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdGb250KFdURk1vdmUocmVxdWVzdCksIHN0YXRp
Y19jYXN0PENhY2hlZFNWR0ZvbnQmPihyZXNvdXJjZSkpOworICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OkZvbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRGb250KFdU
Rk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIo
KSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6QmVhY29uOgorICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlR5cGU6OlBpbmc6CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
TWVkaWFSZXNvdXJjZToKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpSYXdSZXNvdXJj
ZToKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJY29uOgorICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRS
YXdSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS50eXBlKCksIHJlc291cmNlLnNl
c3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisjaWYgRU5BQkxFKFhTTFQpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6WFNMU3R5bGVTaGVldDoKKyAgICAgICAgcmV0dXJu
IG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Np
b25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisjZW5kaWYKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUeXBlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRj
aCwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZToKKyAgICAgICAgcmV0dXJu
IG5ldyBDYWNoZWRUZXh0VHJhY2soV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklE
KCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdDoK
KyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KFdURk1vdmUocmVx
dWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisjZW5k
aWYKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIENhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIpCiAgICAgOiBtX2RvY3VtZW50KG51bGxwdHIpCiAgICAg
LCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQpAQCAtNjczLDE0ICs3MTIsMTQgQEAg
c3RhdGljIGlubGluZSBib29sIGlzUmVzb3VyY2VTdWl0YWJsZUZvcgogICAgIHJldHVybiB0cnVl
OwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyJiBjb29raWVK
YXIpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyJiBjb29raWVKYXIs
IGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBpZiAoIWlzUmVzb3VyY2VTdWl0YWJs
ZUZvckRpcmVjdFJldXNlKHJlc291cmNlLCByZXF1ZXN0KSkgewogICAgICAgICByZXF1ZXN0LnNl
dENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKTsKLSAgICAgICAg
cmV0dXJuIGxvYWRSZXNvdXJjZShyZXNvdXJjZS50eXBlKCksIHNlc3Npb25JRCwgV1RGTW92ZShy
ZXF1ZXN0KSwgY29va2llSmFyKTsKKyAgICAgICAgcmV0dXJuIGxvYWRSZXNvdXJjZShyZXNvdXJj
ZS50eXBlKCksIHNlc3Npb25JRCwgV1RGTW92ZShyZXF1ZXN0KSwgY29va2llSmFyLCBzZXR0aW5n
cyk7CiAgICAgfQogCi0gICAgYXV0byByZXNvdXJjZUhhbmRsZSA9IGNyZWF0ZVJlc291cmNlKHJl
c291cmNlLnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCAmY29va2llSmFyKTsK
KyAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UudHlwZSgp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsICZjb29raWVKYXIsIHNldHRpbmdzKTsKICAg
ICByZXNvdXJjZUhhbmRsZS0+bG9hZEZyb20ocmVzb3VyY2UpOwogICAgIHJldHVybiByZXNvdXJj
ZUhhbmRsZTsKIH0KQEAgLTg0MCw3ICs4NzksNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjCiAgICAgICAgIGlmIChibG9ja2VkTG9hZCkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJyZXF1ZXN0UmVzb3VyY2U6IFJlc291
cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyIiwgZnJhbWUpOwogICAgICAgICAgICAgaWYg
KHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgewotICAgICAgICAg
ICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNy
ZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksICZw
YWdlLmNvb2tpZUphcigpKTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJl
cXVlc3QpLCBwYWdlLnNlc3Npb25JRCgpLCAmcGFnZS5jb29raWVKYXIoKSwgcGFnZS5zZXR0aW5n
cygpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICAgICAgICAg
IHJlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpMb2FkRXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJlc291cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoQ29u
dGVudEV4dGVuc2lvbnM6OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXNvdXJjZVJl
cXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250
ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlw
dGlvbiIpKSk7CkBAIC05MTMsNyArOTUyLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhYwogICAgIGNhc2UgTG9hZDoKICAgICAgICAgaWYgKHJlc291cmNlKQogICAg
ICAgICAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoJmZyYW1lLCBEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6Om1lbW9yeUNhY2hlRW50cnlEZWNpc2lvbktleSgpLCBEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OnVudXNlZEtleSgpKTsKLSAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2Uo
dHlwZSwgcGFnZS5zZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgY29va2llSmFyKTsKKyAg
ICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcGFnZS5zZXNzaW9uSUQoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgY29va2llSmFyLCBwYWdlLnNldHRpbmdzKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFJldmFsaWRhdGU6CiAgICAgICAgIGlmIChyZXNvdXJjZSkKQEAgLTkzMCw3
ICs5NjksNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1vdmUoKmVycm9yKSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRS
ZXF1ZXN0KCpyZXNvdXJjZSwgcmVxdWVzdCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gdXBk
YXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoKnJlc291cmNlLCBXVEZNb3ZlKHJl
cXVlc3QpLCBwYWdlLnNlc3Npb25JRCgpLCBjb29raWVKYXIpOworICAgICAgICAgICAgcmVzb3Vy
Y2UgPSB1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdCgqcmVzb3VyY2UsIFdU
Rk1vdmUocmVxdWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksIGNvb2tpZUphciwgcGFnZS5zZXR0aW5n
cygpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+c3RhdHVzKCkgIT0gQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1czo6Q2FjaGVkKQogICAgICAgICAgICAgICAgIHBvbGljeSA9IExvYWQ7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC0xMDE4LDcgKzEwNTcsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjCiAgICAgQVNTRVJUKCFyZXNvdXJjZS5yZXNvdXJjZVRvUmV2YWxp
ZGF0ZSgpKTsKICAgICBBU1NFUlQocmVzb3VyY2UuYWxsb3dzQ2FjaGluZygpKTsKIAotICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHJlc291cmNlLnR5cGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lv
bklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gbmV3UmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShXVEZNb3ZlKHJlcXVl
c3QpLCByZXNvdXJjZSk7CiAKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAg
Y3JlYXRlZCB0byByZXZhbGlkYXRlICVwIiwgbmV3UmVzb3VyY2UuZ2V0KCksICZyZXNvdXJjZSk7
CiAgICAgbmV3UmVzb3VyY2UtPnNldFJlc291cmNlVG9SZXZhbGlkYXRlKCZyZXNvdXJjZSk7CkBA
IC0xMDMxLDcgKzEwNzAsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
Q2FjCiAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IENvb2tpZUphciYgY29va2llSmFyKQorQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2Fk
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBDb29raWVKYXImIGNv
b2tpZUphciwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGF1dG8mIG1lbW9yeUNh
Y2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgIEFTU0VSVCghcmVxdWVzdC5hbGxv
d3NDYWNoaW5nKCkgfHwgIW1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQpCkBAIC0xMDM5LDcgKzEwNzgsNyBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjCiAKICAgICBMT0coUmVzb3VyY2VMb2Fk
aW5nLCAiTG9hZGluZyBDYWNoZWRSZXNvdXJjZSBmb3IgJyVzJy4iLCByZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLmxhdGluMSgp
LmRhdGEoKSk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVz
b3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQs
ICZjb29raWVKYXIpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBy
ZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25J
RCwgJmNvb2tpZUphciwgc2V0dGluZ3MpOwogCiAgICAgaWYgKHJlc291cmNlLT5hbGxvd3NDYWNo
aW5nKCkpCiAgICAgICAgIG1lbW9yeUNhY2hlLmFkZCgqcmVzb3VyY2UpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4+IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYsIEZvclByZWxvYWQgPSBGb3JQcmVsb2FkOjpObywgSW1hZ2VMb2FkaW5nID0gSW1h
Z2VMb2FkaW5nOjpJbW1lZGlhdGUpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIENhY2hl
ZFJlc291cmNlJik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxv
YWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUEFMOjpTZXNzaW9uSUQsIENhY2hlZFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBDb29raWVKYXImKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBQ
QUw6OlNlc3Npb25JRCwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvb2tpZUphciYs
IGNvbnN0IFNldHRpbmdzJik7CiAKICAgICB2b2lkIHByZXBhcmVGZXRjaChDYWNoZWRSZXNvdXJj
ZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCB1cGRhdGVIVFRQUmVx
dWVzdEhlYWRlcnMoRnJhbWVMb2FkZXImLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0Jik7CkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICBSZXZhbGlk
YXRpb25Qb2xpY3kgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpU
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNv
dXJjZSwgRm9yUHJlbG9hZCwgSW1hZ2VMb2FkaW5nKSBjb25zdDsKIAogICAgIGJvb2wgc2hvdWxk
VXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gdXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVl
c3QoY29uc3QgQ2FjaGVkUmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXImKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gdXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVl
c3QoY29uc3QgQ2FjaGVkUmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXImLCBjb25zdCBTZXR0aW5ncyYpOwogCiAg
ICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hl
KGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VF
cnJvciYpOwogICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUsIGNvbnN0IFVSTCYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgwMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMyArMjMsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
YWNoZWRTVkdEb2N1bWVudC5oIgogCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRTVkdEb2N1bWVu
dDo6Q2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIp
CitDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29v
a2llSmFyKiBjb29raWVKYXIsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6IENhY2hl
ZFJlc291cmNlKFdURk1vdmUocmVxdWVzdCksIFR5cGU6OlNWR0RvY3VtZW50UmVzb3VyY2UsIHNl
c3Npb25JRCwgY29va2llSmFyKQogICAgICwgbV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIikpCisgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQor
eworfQorCitDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ2FjaGVkU1ZHRG9jdW1lbnQmIHJlc291cmNlKQorICAgIDog
Q2FjaGVkU1ZHRG9jdW1lbnQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCks
IHJlc291cmNlLmNvb2tpZUphcigpLCByZXNvdXJjZS5tX3NldHRpbmdzLmdldCgpKQogewogfQog
CkBAIC00OSw3ICs1Niw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2gKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0
ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFy
ZW50IFVzZUVsZW1lbnQuCi0gICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRl
KG51bGxwdHIsIHJlc3BvbnNlKCkudXJsKCkpOworICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLmdldCgpLCByZXNwb25zZSgpLnVybCgp
KTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFNldHRpbmdzOworCiBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ2FjaGVkU1ZHRG9jdW1lbnQo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgQ29v
a2llSmFyKik7CisgICAgZXhwbGljaXQgQ2FjaGVkU1ZHRG9jdW1lbnQoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgQ29va2llSmFyKiwgY29uc3Qg
U2V0dGluZ3MmKTsKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiwgQ2FjaGVkU1ZHRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdE
b2N1bWVudCgpOwogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudC5nZXQoKTsgfQpAQCAtNDQsNiArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CisgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxNyArMzIsMjQgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlNWR0ZvbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCisjaW5j
bHVkZSAiU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93
ZWRTY29wZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlNWR1RvT1RGRm9udENvbnZlcnNp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRTVkdGb250OjpDYWNoZWRTVkdG
b250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQorQ2FjaGVkU1ZHRm9udDo6
Q2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3Qg
U2V0dGluZ3MmIHNldHRpbmdzKQogICAgIDogQ2FjaGVkRm9udChXVEZNb3ZlKHJlcXVlc3QpLCBz
ZXNzaW9uSUQsIGNvb2tpZUphciwgVHlwZTo6U1ZHRm9udFJlc291cmNlKQogICAgICwgbV9leHRl
cm5hbFNWR0ZvbnRFbGVtZW50KG51bGxwdHIpCisgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQor
eworfQorCitDYWNoZWRTVkdGb250OjpDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIENhY2hlZFNWR0ZvbnQmIHJlc291cmNlKQorICAgIDogQ2FjaGVkU1ZHRm9u
dChXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2ll
SmFyKCksIHJlc291cmNlLm1fc2V0dGluZ3MuZ2V0KCkpCiB7CiB9CiAKQEAgLTY2LDcgKzczLDcg
QEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YQogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgZHVyaW5nIHJlbmRlciB0cmVlIHVwZGF0ZXMg
d2hlbiBldmVudHMgYXJlIGZvcmJpZGRlbi4KICAgICAgICAgICAgIC8vIEZyYW1lbGVzcyBkb2N1
bWVudCBjYW4ndCBydW4gc2NyaXB0cyBvciBjYWxsIGJhY2sgdG8gdGhlIGNsaWVudCBzbyB0aGlz
IGlzIHNhZmUuCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBTVkdEb2N1bWVu
dDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncy5nZXQoKSwgVVJM
KCkpOwogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAkocmV2aXNpb24gMjY4MDIx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNWR0ZvbnRGYWNlRWxlbWVudDsKK2NsYXNzIFNldHRpbmdzOwogCiBjbGFzcyBDYWNoZWRTVkdG
b250IGZpbmFsIDogcHVibGljIENhY2hlZEZvbnQgewogcHVibGljOgotICAgIENhY2hlZFNWR0Zv
bnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3Qg
Q29va2llSmFyKik7CisgICAgQ2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29raWVKYXIqLCBjb25zdCBTZXR0aW5ncyYp
OworICAgIENhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIENhY2hlZFNWR0Zv
bnQmKTsKIAogICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKSBvdmVycmlkZTsKIApAQCAtNTAsNiArNTIsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1l
bnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5h
bFNWR0ZvbnRFbGVtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5n
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5j
cHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODM5LDcgKzgzOSw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3MKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1ib29sIFF1
aXJrczo6c2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1lZGlhKCkgY29uc3QKK2Jvb2wgUXVpcmtz
OjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyaygpIGNvbnN0CiB7CiAgICAgaWYg
KCFuZWVkc1F1aXJrcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1F1aXJrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiwgY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudExpc3RlbmVyJik7CiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGJvb2wgc2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1l
ZGlhKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWly
aygpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIHNob3VsZERpc2FibGVFbGVtZW50RnVsbHNj
cmVlblF1aXJrKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlh
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCShyZXZp
c2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHdvcmtp
bmcgY29weSkKQEAgLTk0MCwxMCArOTQwLDYgQEAgaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiBlbnRl
cktleUhpbnRFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCi1sZWdhY3lHZXRVc2VyTWVkaWFF
bmFibGVkOgotICBpbml0aWFsOiBmYWxzZQotICBjb25kaXRpb25hbDogRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQogIyBGSVhNRTogU2VlbXMgdG8gYmUgdW51c2VkLiBSZW1vdmUgb25jZSB2ZXJpZmll
ZC4KIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkocmV2aXNpb24gMjY4MDIxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDcg
KzgzLDcgQEAgdm9pZCBGcmFtZTo6aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoYwogewogICAg
IG1fbG9hZGVyLT5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh1cmwpOwogCi0gICAgYXV0byBk
b2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCgqdGhpcywg
dXJsKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXpl
ZERvY3VtZW50KCp0aGlzLCBzZXR0aW5ncygpLCB1cmwpOwogICAgIGRvY3VtZW50LT5zZXRDb21w
YXRpYmlsaXR5TW9kZShEb2N1bWVudENvbXBhdGliaWxpdHlNb2RlOjpMaW1pdGVkUXVpcmtzTW9k
ZSk7CiAgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRvdygpOwogICAgIHNldERvY3VtZW50KGRv
Y3VtZW50LmNvcHlSZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU1ZHRG9jdW1lbnQpOwogCi1TVkdEb2N1bWVudDo6U1ZH
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6IFhNTERvY3VtZW50
KGZyYW1lLCB1cmwsIFNWR0RvY3VtZW50Q2xhc3MpCitTVkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQor
ICAgIDogWE1MRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwsIFNWR0RvY3VtZW50Q2xhc3Mp
CiB7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTVkdEb2N1bWVudDo6dXBkYXRlUGFuKGNv
bnN0IEZsb2F0UAogCiBSZWY8RG9jdW1lbnQ+IFNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0
aG91dENoaWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgp
KTsKKyAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHNldHRpbmdzKCksIHVybCgpKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyMyAr
MzAsMjMgQEAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNWR0RvY3VtZW50IGZpbmFsIDog
cHVibGljIFhNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR0RvY3Vt
ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUq
LCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgUmVmPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUq
LCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogCiAgICAgYm9vbCB6b29tQW5kUGFuRW5h
YmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRQYW4oY29uc3QgRmxvYXRQb2ludCYgc3RhcnQp
OwogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIFNW
R0RvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogICAgIFJl
ZjxEb2N1bWVudD4gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgRmxvYXRTaXplIG1fcGFubmluZ09mZnNldDsKIH07CiAKLWlubGluZSBSZWY8U1ZH
RG9jdW1lbnQ+IFNWR0RvY3VtZW50OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKK2lubGluZSBSZWY8U1ZHRG9jdW1lbnQ+IFNWR0RvY3VtZW50OjpjcmVhdGUoRnJhbWUqIGZy
YW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDEyICs1NiwxMyBAQCBzdGF0aWMgaW5saW5lIFVuaXF1ZVJlZjxQYWdlPiBjcmVhdGVQ
YWdlCiB7CiAgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZVJlZjxQYWdlPihXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKTsKIAorICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CisKICAgICBhdXRvJiBtYWluRnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsKICAgICBtYWluRnJhbWUubG9hZGVyKCkuaW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQoeyB9KTsKLSAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZU5vblJl
bmRlcmVkUGxhY2Vob2xkZXIobWFpbkZyYW1lLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byBk
b2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGVOb25SZW5kZXJlZFBsYWNlaG9sZGVyKG1haW5GcmFt
ZSwgbWFpbkZyYW1lLnNldHRpbmdzKCksIGRhdGEuc2NyaXB0VVJMKTsKICAgICBkb2N1bWVudC0+
Y3JlYXRlRE9NV2luZG93KCk7CiAKLSAgICBkb2N1bWVudC0+bXV0YWJsZVNldHRpbmdzKCkuc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgZG9jdW1l
bnQtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBhdXRvIG9yaWdpbiA9
IGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAJKHJldmlzaW9uIDI2ODAyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTgg
QEAKIAogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5Qb2xpY3kuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGlubGluZSBET01QYXJzZXI6OkRPTVBhcnNlcihEb2N1bWVudCYgY29udGV4dERvY3Vt
ZW50KQogICAgIDogbV9jb250ZXh0RG9jdW1lbnQobWFrZVdlYWtQdHIoY29udGV4dERvY3VtZW50
KSkKKyAgICAsIG1fc2V0dGluZ3MoY29udGV4dERvY3VtZW50LnNldHRpbmdzKCkpCiB7CiB9CiAK
K0RPTVBhcnNlcjo6fkRPTVBhcnNlcigpID0gZGVmYXVsdDsKKwogUmVmPERPTVBhcnNlcj4gRE9N
UGFyc2VyOjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBET01QYXJzZXIoY29udGV4dERvY3VtZW50KSk7CkBAIC0zOCw3ICs0Miw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudD4+IERPTVBhcnNlcjo6cGEKIHsKICAgICBpZiAo
Y29udGVudFR5cGUgIT0gInRleHQvaHRtbCIgJiYgY29udGVudFR5cGUgIT0gInRleHQveG1sIiAm
JiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRpb24veG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBw
bGljYXRpb24veGh0bWwreG1sIiAmJiBjb250ZW50VHlwZSAhPSAiaW1hZ2Uvc3ZnK3htbCIpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBhdXRvIGRvY3VtZW50
ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRy
LCBVUkwgeyB9KTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRyLCBtX3NldHRpbmdzLmdldCgpLCBVUkwgeyB9
KTsKICAgICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5zZXRDb250
ZXh0RG9jdW1lbnQoKm1fY29udGV4dERvY3VtZW50LmdldCgpKTsKICAgICBkb2N1bWVudC0+c2V0
Q29udGVudChzdHJpbmcpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaAkocmV2aXNpb24gMjY4
MDIxKQorKysgU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwxNiArMjQsMjAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBTZXR0aW5nczsKIAogY2xhc3MgRE9NUGFyc2VyIDogcHVibGljIFJlZkNvdW50ZWQ8
RE9NUGFyc2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxET01QYXJzZXI+IGNyZWF0ZShE
b2N1bWVudCYgY29udGV4dERvY3VtZW50KTsKKyAgICB+RE9NUGFyc2VyKCk7CisKICAgICBFeGNl
cHRpb25PcjxSZWY8RG9jdW1lbnQ+PiBwYXJzZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NUGFy
c2VyKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpOwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4g
bV9jb250ZXh0RG9jdW1lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShy
ZXZpc2lvbiAyNjgwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOSArMTgxLDkgQEAgRXhjZXB0aW9uT3I8RG9jdW1lbnQq
PiBYTUxIdHRwUmVxdWVzdDo6cgogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVs
bHB0cjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpc0hUTUwpCi0gICAgICAg
ICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0
ciwgbV9yZXNwb25zZS51cmwoKSk7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50
ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgY29udGV4dC5zZXR0aW5ncygpLCBtX3Jl
c3BvbnNlLnVybCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3Jlc3Bv
bnNlRG9jdW1lbnQgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fcmVzcG9uc2UudXJs
KCkpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IFhNTERvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgY29udGV4dC5zZXR0aW5ncygpLCBtX3Jlc3BvbnNlLnVybCgpKTsKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+b3ZlcnJpZGVMYXN0TW9kaWZpZWQobV9yZXNw
b25zZS5sYXN0TW9kaWZpZWQoKSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQtPnNl
dENvbnRleHREb2N1bWVudChjb250ZXh0KTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVu
dC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koY29udGV4dC5zZWN1cml0eU9yaWdpblBvbGljeSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDI2ODAy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsMTAgKzcyLDEwIEBAIFJlZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRl
RG9jdW0KIAogICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0OwogICAgIGlmIChzb3VyY2VNSU1F
VHlwZSA9PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgcmVzdWx0ID0gWE1MRG9jdW1lbnQ6OmNy
ZWF0ZVhIVE1MKGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkg
OiBVUkwoKSk7CisgICAgICAgIHJlc3VsdCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFt
ZSwgb3duZXJEb2N1bWVudC0+c2V0dGluZ3MoKSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9j
dW1lbnQtPnVybCgpIDogVVJMKCkpOwogICAgICAgICB0cmFuc2Zvcm1UZXh0U3RyaW5nVG9YSFRN
TERvY3VtZW50U3RyaW5nKGRvY3VtZW50U291cmNlKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVz
dWx0ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBm
cmFtZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOwor
ICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNl
TUlNRVR5cGUsIGZyYW1lLCBvd25lckRvY3VtZW50LT5zZXR0aW5ncygpLCBzb3VyY2VJc0RvY3Vt
ZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSk7CiAKICAgICAvLyBCZWZvcmUgcGFy
c2luZywgd2UgbmVlZCB0byBzYXZlICYgZGV0YWNoIHRoZSBvbGQgZG9jdW1lbnQgYW5kIGdldCB0
aGUgbmV3IGRvY3VtZW50CiAgICAgLy8gaW4gcGxhY2UuIFdlIGhhdmUgdG8gZG8gdGhpcyBvbmx5
IGlmIHdlJ3JlIHJlbmRlcmluZyB0aGUgcmVzdWx0IGRvY3VtZW50LgpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4MDU4KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MTAtMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIDxpbnB1dCB0
eXBlPSJkYXRldGltZS1sb2NhbCI+IG5vdCBzaG93IGNhbGVuZGFyIFVJIHdoZW4gaXQncyBpbnNp
ZGUgU2hhZG93RE9NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY5ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NjYwMjczPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlRG9jdW1lbnQpOgorICAgICAgICBVcGRhdGUgdG8gcGFzcyBhIFNldHRpbmdzIG9iamVj
dCB0byBEb2N1bWVudDo6Y3JlYXRlIHdoaWNoIGlzIG5vdyByZXF1aXJlZC4KKwogMjAyMC0xMC0w
NiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjI2NzM5OSk6IFtXUEVdIEJ1aWxkIGJyb2tlbiB3aXRoIEVOQUJMRV9BQ0NF
U1NJQklMSVRZPU9GRgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rv
Y3VtZW50T3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAkocmV2aXNpb24gMjY4MDIxKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSHRtbEVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Bvc2l0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhZG93Um9vdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oPgpAQCAtNTUsNyAr
NTYsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNy
ZWF0ZURvY3VtZW50KCkKIHsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKLSAgICBhdXRvIGRvY3Vt
ZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShhYm91dEJsYW5rVVJMKCkpOworICAgIGF1dG8gc2V0dGlu
Z3MgPSBTZXR0aW5nczo6Y3JlYXRlKG51bGxwdHIpOworICAgIGF1dG8gZG9jdW1lbnQgPSBEb2N1
bWVudDo6Y3JlYXRlKHNldHRpbmdzLmdldCgpLCBhYm91dEJsYW5rVVJMKCkpOwogICAgIGF1dG8g
ZG9jdW1lbnRFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IGRvY3VtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudEVsZW1lbnQpOwogICAgIGF1dG8gYm9keSA9
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
ODA3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1IEBACisyMDIwLTEwLTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAg
ICAgICA8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiPiBub3Qgc2hvdyBjYWxlbmRhciBVSSB3
aGVuIGl0J3MgaW5zaWRlIFNoYWRvd0RPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTY2MDI3
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdHMgdGhhdCBzaG93IHRoYXQgZGF0ZS90aW1lIGlucHV0IGVsZW1lbnRzIGFyZSB0aGUgc2Ft
ZSB3aGV0aGVyIHRoZXkgY29tZSBmcm9tIGEgdGVtcGxhdGUKKyAgICAgICAgZG9jdW1lbnQgb3Ig
dGhlIG1haW4gZG9jdW1lbnQuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGUvZGF0ZS1mcm9t
LWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1l
bGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZyb20tZnJhbWVsZXNz
LWRvY3VtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvbW9u
dGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3Mt
ZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJv
bS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisK
IDIwMjAtMTAtMDYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWEgaW4gR1BVIFByb2Nlc3NdIEVuYWJsZSBzb21lIGxheW91dCB0ZXN0cwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvZGF0
ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50
LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8Ym9keT4KKzxp
bnB1dCB0eXBlPSJkYXRlIiB2YWx1ZT0iMTk5OS0wMS0xMSIgPgorPC9ib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZy
YW1lbGVzcy1kb2N1bWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZGF0ZS9kYXRlLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5IEBACis8Ym9keT4KKzxzY3JpcHQ+CisvLyBUaGlzIHRlc3RzIHRoYXQg
YW4gPGlucHV0IHR5cGU9ImRhdGUiPiBjcmVhdGVkIGluIGEgdGVtcGxhdGUgZG9jdW1lbnQgKGUu
Zy4gb25lIHdpdGhvdXQgYSBmcmFtZSkKKy8vIGlzIGlkZW50aWNhbCB0byBvbmUgY3JlYXRlZCBp
biB0aGUgbWFpbiBkb2N1bWVudC4KK2xldCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3RlbXBsYXRlJyk7Cit0ZW1wbGF0ZS5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9ImRhdGUi
IHZhbHVlPSIxOTk5LTAxLTExIj4nOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wbGF0
ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZXRpbWVsb2NhbC9kYXRldGltZWxvY2FsLWZyb20tZnJh
bWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRldGltZWxvY2FsL2RhdGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9j
dW1lbnQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+Cis8aW5w
dXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiIHZhbHVlPSIxOTk5LTAxLTExVDE5OjMwIj4KKzwvYm9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZXRpbWVsb2NhbC9kYXRldGltZWxv
Y2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kYXRldGltZWxvY2FsL2RhdGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3Mt
ZG9jdW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rh
dGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPGJvZHk+Cis8c2NyaXB0PgorLy8gVGhpcyB0
ZXN0cyB0aGF0IGFuIDxpbnB1dCB0eXBlPSJkYXRldGltZS1sb2NhbCI+IGNyZWF0ZWQgaW4gYSB0
ZW1wbGF0ZSBkb2N1bWVudCAoZS5nLiBvbmUgd2l0aG91dCBhIGZyYW1lKQorLy8gaXMgaWRlbnRp
Y2FsIHRvIG9uZSBjcmVhdGVkIGluIHRoZSBtYWluIGRvY3VtZW50LgorbGV0IHRlbXBsYXRlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTsKK3RlbXBsYXRlLmlubmVySFRNTCA9
ICc8aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiIHZhbHVlPSIxOTk5LTAxLTExVDE5OjMwIj4n
OworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0
cnVlKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZyb20tZnJhbWVsZXNz
LWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tb250aC9tb250aC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+Cis8aW5wdXQgdHlwZT0ibW9u
dGgiIHZhbHVlPSIxOTk5LTAxIiA+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL21vbnRoL21vbnRoLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tb250aC9tb250aC1mcm9tLWZyYW1lbGVzcy1kb2N1
bWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbW9udGgv
bW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkgQEAKKzxib2R5PgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdHMgdGhhdCBhbiA8aW5wdXQg
dHlwZT0ibW9udGgiPiBjcmVhdGVkIGluIGEgdGVtcGxhdGUgZG9jdW1lbnQgKGUuZy4gb25lIHdp
dGhvdXQgYSBmcmFtZSkKKy8vIGlzIGlkZW50aWNhbCB0byBvbmUgY3JlYXRlZCBpbiB0aGUgbWFp
biBkb2N1bWVudC4KK2xldCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBs
YXRlJyk7Cit0ZW1wbGF0ZS5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9Im1vbnRoIiB2YWx1ZT0i
MTk5OS0wMSI+JzsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcGxhdGUuY29udGVudC5j
bG9uZU5vZGUodHJ1ZSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS90aW1lLWZyb20tZnJh
bWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorPGlucHV0IHR5cGU9
InRpbWUiIHZhbHVlPSIyMjo1MzowNSI+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS90aW1lLWZyb20tZnJhbWVsZXNzLWRvY3Vt
ZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lL3Rp
bWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDkgQEAKKzxib2R5PgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdHMgdGhhdCBhbiA8aW5wdXQgdHlw
ZT0idGltZSI+IGNyZWF0ZWQgaW4gYSB0ZW1wbGF0ZSBkb2N1bWVudCAoZS5nLiBvbmUgd2l0aG91
dCBhIGZyYW1lKQorLy8gaXMgaWRlbnRpY2FsIHRvIG9uZSBjcmVhdGVkIGluIHRoZSBtYWluIGRv
Y3VtZW50LgorbGV0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUn
KTsKK3RlbXBsYXRlLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0idGltZSIgdmFsdWU9IjIyOjUz
OjA1Ij4nOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25l
Tm9kZSh0cnVlKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxl
c3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3dlZWsvd2Vlay1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+Cis8aW5wdXQgdHlwZT0id2Vl
ayIgdmFsdWU9IjE5ODItVzI1Ij4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dlZWsvd2Vlay1m
cm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBA
QAorPGJvZHk+Cis8c2NyaXB0PgorLy8gVGhpcyB0ZXN0cyB0aGF0IGFuIDxpbnB1dCB0eXBlPSJ3
ZWVrIj4gY3JlYXRlZCBpbiBhIHRlbXBsYXRlIGRvY3VtZW50IChlLmcuIG9uZSB3aXRob3V0IGEg
ZnJhbWUpCisvLyBpcyBpZGVudGljYWwgdG8gb25lIGNyZWF0ZWQgaW4gdGhlIG1haW4gZG9jdW1l
bnQuCitsZXQgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpOwor
dGVtcGxhdGUuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJ3ZWVrIiB2YWx1ZT0iMTk4Mi1XMjUi
Pic7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2Rl
KHRydWUpKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410727</attachid>
            <date>2020-10-06 20:24:04 -0700</date>
            <delta_ts>2020-10-06 21:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216985-20201006202404.patch</filename>
            <type>text/plain</type>
            <size>70410</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBAQAorMjAyMC0xMC0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0IHR5cGU9ImRhdGV0aW1l
LWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGluc2lkZSBTaGFkb3dET00K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvZGF0ZS9kYXRlLWZyb20t
ZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvZGF0ZXRp
bWVsb2NhbC9kYXRldGltZWxvY2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZm9ybXMvbW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90aW1lL3RpbWUtZnJvbS1mcmFtZWxlc3Mt
ZG9jdW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1m
cmFtZWxlc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgIFRoZSBpc3N1ZSBoZXJlIHdhcyB0aGF0
IGZyYW1lbGVzcyBkb2N1bWVudHMsIHN1Y2ggYXMgdGhvc2UgY3JlYXRlZCB2aWEgdGhlCisgICAg
ICAgIDx0ZW1wbGF0ZT4gZWxlbWVudCBvciBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVI
VE1MRG9jdW1lbnQoLi4uKSB3ZXJlCisgICAgICAgIG5vdCBhYmxlIHRvIGFjY2VzcyB0aGUgcmVh
bCBTZXR0aW5ncyBvYmplY3QsIHNvIHdlcmUgY3JlYXRpbmcgdGhlaXIgb3duIHdoaWNoCisgICAg
ICAgIG9ubHkgY29udGFpbmVkIHRoZSBkZWZhdWx0IHZhbHVlcy4gU28sIHRoZSBzb2x1dGlvbiBp
cyB0byBlbnN1cmUgd2UgcGFzcworICAgICAgICB0aGUgcmVhbCBTZXR0aW5ncyBvYmplY3QgdG8g
dGhlIERvY3VtZW50IGNvbnN0cnVjdG9ycyBldmVuIHdoZW4gdGhlIEZyYW1lIGlzCisgICAgICAg
IG51bGwuCisgICAgICAgIAorICAgICAgICBUbyBkbyB0aGlzIHJlcXVpcmVzIGEgYml0IG9mIHBp
cGluZyBTZXR0aW5ncyBhcm91bmQsIGJ1dCBhbHNvIHNvbWUgc2ltcGxpZmljYXRpb24uCisgICAg
ICAgIE5vdywgdGhlIFNldHRpbmdzIG93bmVkIGJ5IERvY3VtZW50IGlzIGZ1bGx5IGltbXV0YWJs
ZSwgd2l0aCB0aGUgbXV0YWJsZVNldHRpbmdzKCkKKyAgICAgICAgYWNjZXNzb3IgYmVpbmcgcmVt
b3ZlZCwgYXMgaXQgd2FzIG5vdCBhY3R1YWxseSBuZWVkZWQuIFRoZSB0d28gdXNlcyBvZiBtdXRh
YmxlIAorICAgICAgICBTZXR0aW5ncyB3ZXJlIGZvciBTZXJ2aWNlV29ya2VyIGNyZWF0aW9uLCB3
aGVyZSB3ZSBjYW4ganVzdCB1c2UgdGhlIG11dGFibGUgYWNjZXNzb3IKKyAgICAgICAgZnJvbSBQ
YWdlIGluc3RlYWQsIGFuZCBpbiB0aGUgRG9jdW1lbnQgY29uc3RydWN0b3IsIHdoZXJlIHRoZSBM
ZWdhY3lHZXRVc2VyTWVkaWFFbmFibGVkCisgICAgICAgIHNldHRpbmcgd2FzIGJlaW5nIGVuYWJs
ZWQgYmFzZWQgb24gYSBxdWlyay4gVGhpcyB3YXMgbm90IG9ubHkgaW5jb3JyZWN0IChhcyBpdCB3
b3VsZAorICAgICAgICBlZmZlY3QgbW9yZSB0aGFuIGp1c3Qgd2hhdCB0aGUgcXVpcmsgaW50ZW5k
ZWQpIGJ1dCB1bm5lY2Vzc2FyeSwgYXMgd2UgY2FuIG1ha2UgdGhlCisgICAgICAgIGJpbmRpbmdz
IGFjY2VzcyB0aGUgcXVpcmsgZGlyZWN0bHkuCisKKyAgICAgICAgVGhlIG9uZSBzb21ld2hhdCBj
b21wbGV4IGNhc2Ugd2FzIGZvciBDYWNoZWRTVkdEb2N1bWVudCBhbmQgQ2FjaGVkU1ZHRm9udCBm
b3Igd2hpY2gKKyAgICAgICAgSSBoYWQgdG8gdGhyZWFkIHNldHRpbmdzIHRocm91Z2ggQ2FjaGVk
UmVzb3VyY2VMb2FkZXIgYW5kIGhhdmUgdGhlIENhY2hlZFNWR0RvY3VtZW50IAorICAgICAgICBh
bmQgQ2FjaGVkU1ZHRm9udCBob2xkIG9udG8gdGhlIFNldHRpbmdzIG9iamVjdCB1bnRpbCBpdCB3
YXMgdGltZSB0byBjb25zdHJ1Y3QgdGhlaXIKKyAgICAgICAgZG9jdW1lbnRzLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChOZWVkc1J1
bnRpbWVDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0
cmluZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246Cisg
ICAgICAgIEFkZCBzdXBwb3J0IGJhY2sgZm9yIEVuYWJsZWRCeVF1aXJrLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3IrTWVkaWFEZXZpY2VzLmlkbDoKKyAgICAgICAg
U3dpdGNoIHRvIEVuYWJsZWRCeVF1aXJrPXNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYS4K
KworICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6
c2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1lZGlhUXVpcmsgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVpcmtzOjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgIFJlbmFtZSBxdWlyayB0byBl
bmQgaW4gIlF1aXJrIiB0byB3b3JrIHdpdGggdGhlIGJpbmRpbmdzIGdlbmVyYXRvci4KKworICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgUmVtb3ZlIG5vdyB1bnVzZWQgbGVn
YWN5R2V0VXNlck1lZGlhRW5hYmxlZCBzZXR0aW5ncy4KKworICAgICAgICAqIFNjcmlwdHMvU2V0
dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmI6CisgICAgICAgIEV4cG9ydCB0aGUgc2V0dGlu
Z3MgY29udHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBzbyBpdCBjYW4gYmUgdXNlZCBieSB0ZXN0cy4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcik6
CisgICAgICAgIFN3aXRjaCB0byB1c2luZyB0aGUgbXV0YWJsZSBzZXR0aW5ncyBmcm9tIFBhZ2Uu
CisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlWE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRp
b246OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVIVE1MRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5o
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6bV9zZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0dGluZ3MgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bXV0YWJsZVNldHRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vWE1MRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TERvY3VtZW50OjpYTUxEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGly
ZWN0b3J5RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnQ6OmNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50OjpIVE1MRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0hUTUxEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9NZWRpYURv
Y3VtZW50Lmg6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwv
UGx1Z2luRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL1RleHREb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudCk6CisgICAgICAgICogaHRt
bC9UZXh0RG9jdW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudCk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFdyaXRlcjo6YmVnaW4pOgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQpOgorICAgICAgICAqIGxv
YWRlci9TaW5rRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0
aEN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJldmFsaWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OkNhY2hlZFNWR0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdGb250OjpDYWNoZWRTVkdGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OmluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OlNWR0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91
dENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RvY3VtZW50OjpjcmVhdGUpOgorICAgICAgICAqIHhtbC9ET01QYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGFyc2VyOjpET01QYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NUGFyc2VyOjpwYXJzZUZyb21TdHJpbmcpOgorICAgICAgICAqIHhtbC9ET01Q
YXJzZXIuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNy
ZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisgICAgICAgIFRocmVhZCBzZXR0aW5ncyBpbnRvIGFs
bCB0aGUgcGxhY2VzLgorCiAyMDIwLTEwLTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIGZvciBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5yZWdpc3RlclByb2Nlc3NvcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvcitNZWRpYURldmljZXMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yK01lZGlhRGV2aWNlcy5pZGwJ
KHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yK01lZGlhRGV2aWNlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDUgKzM2LDUg
QEAKICAgICBJbXBsZW1lbnRlZEJ5PU5hdmlnYXRvck1lZGlhRGV2aWNlcwogXSBwYXJ0aWFsIGlu
dGVyZmFjZSBOYXZpZ2F0b3IgewogICAgIFtTYW1lT2JqZWN0LCBTZWN1cmVDb250ZXh0LCBDb250
ZXh0QWxsb3dzTWVkaWFEZXZpY2VzXSByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFEZXZpY2VzIG1l
ZGlhRGV2aWNlczsKLSAgICBbQ3VzdG9tLCBFbmFibGVkQnlTZXR0aW5nPUxlZ2FjeUdldFVzZXJN
ZWRpYV0gdW5kZWZpbmVkIGdldFVzZXJNZWRpYShvYmplY3QgY29uc3RyYWludHMsIG9iamVjdD8g
c3VjY2Vzc0NhbGxiYWNrLCBvYmplY3Q/IGVycm9yQ2FsbGJhY2spOworICAgIFtDdXN0b20sIEVu
YWJsZWRCeVF1aXJrPXNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYV0gdW5kZWZpbmVkIGdl
dFVzZXJNZWRpYShvYmplY3QgY29uc3RyYWludHMsIG9iamVjdD8gc3VjY2Vzc0NhbGxiYWNrLCBv
YmplY3Q/IGVycm9yQ2FsbGJhY2spOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMv
U2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgkocmV2aXNpb24g
MjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0
aW5ncy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBQYWdlOwog
Y2xhc3MgU2V0dGluZ3MgOiBwdWJsaWMgU2V0dGluZ3NCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxT
ZXR0aW5ncz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRpbmdzKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXR0aW5ncz4gY3JlYXRl
KFBhZ2UqKTsKLSAgICB+U2V0dGluZ3MoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNldHRpbmdzPiBjcmVhdGUoUGFnZSopOworICAgIFdFQkNPUkVfRVhQT1JUIH5TZXR0aW5ncygp
OwogCiA8JS0gZm9yIEBzZXR0aW5nIGluIEB1bmNvbmRpdGlvbmFsU2V0dGluZyBkbyAtJT4KICAg
ICA8JS0gaWYgQHNldHRpbmcuaGFzQ29tcGxleEdldHRlcj8gLSU+CkBAIC03OSw3ICs3OSw3IEBA
IHB1YmxpYzoKIDwlLSBlbmQgLSU+CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2V0dGluZ3Mo
UGFnZSopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKIAog
PCUtIGZvciBAc2V0dGluZyBpbiBAaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAg
ICBPcHRpb25hbDw8JT0gQHNldHRpbmcudHlwZSAlPj4gbV88JT0gQHNldHRpbmcubmFtZSAlPklu
c3BlY3Rvck92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTk2LDYgKzE5OTYsNyBAQCBzdWIgTmVlZHNSdW50aW1lQ2hlY2sKICAgICAgICAgfHwg
JGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JDb250ZXh0fQogICAgICAg
ICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldvcmxkfQogICAg
ICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30K
KyAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVF1aXJr
fQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJsZWRCeVF1
aXJrfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJlQ29u
dGV4dH0KICAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUVu
YWJsZWR9OwpAQCAtNDA3Nyw2ICs0MDc4LDIwIEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmkKICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiJHtjbGFzc05hbWV9IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjb250ZXh0LT5uYW1lKSAuICJJc0VuYWJsZWQo
KSIpOwogICAgIH0KIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEJ5UXVpcmt9KSB7CisgICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBF
bmFibGVkQnlRdWlyay4iKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJs
ZWRCeVF1aXJrfSBlcSAiVkFMVUVfSVNfTUlTU0lORyI7CisKKyAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkRvY3VtZW50LmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlF1aXJrcy5o
Iik7CisKKyAgICAgICAgYXNzZXJ0KCJFbmFibGVkQnlRdWlyayBjYW4gb25seSBiZSB1c2VkIGJ5
IGludGVyZmFjZXMgb25seSBleHBvc2VkIHRvIHRoZSBXaW5kb3ciKSBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFeHBvc2VkfSBuZSAiV2luZG93IjsKKworICAgICAgICBteSBAZmxhZ3MgPSBzcGxp
dCgvJi8sICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlRdWlya30pOwor
ICAgICAgICBmb3JlYWNoIG15ICRmbGFnIChAZmxhZ3MpIHsKKyAgICAgICAgICAgIHB1c2goQGNv
bmp1bmN0cywgImRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigi
IC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5xdWly
a3MoKS4iIC4gVG9NZXRob2ROYW1lKCRmbGFnKSAuICJRdWlyaygpIik7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rpc2FibGVkQnlR
dWlya30pIHsKICAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIERpc2FibGVk
QnlRdWlyay4iKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJsZWRCeVF1
aXJrfSBlcSAiVkFMVUVfSVNfTUlTU0lORyI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyNjgxMTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCwxMSBAQAogICAgICAgICAiRGVmYXVsdERlZmlu
ZU93blByb3BlcnR5IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0KICAgICAgICAgfSwKKyAgICAgICAgIkRpc2FibGVkQnlRdWlyayI6IHsKKyAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0i
LCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFudCIsICJkaWN0aW9uYXJ5LW1lbWJl
ciIsICJpbmNsdWRlcyJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAorICAgICAgICAg
ICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCisgICAgICAgIH0sCiAgICAgICAgICJEb05v
dENoZWNrQ29uc3RhbnRzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50
ZXJmYWNlIl0KICAgICAgICAgfSwKQEAgLTE3NSw2ICsxODAsMTEgQEAKICAgICAgICAgIkRvY3Vt
ZW50RXZlbnRIYW5kbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0
cmlidXRlIl0KICAgICAgICAgfSwKKyAgICAgICAgIkVuYWJsZWRCeVF1aXJrIjogeworICAgICAg
ICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImRpY3Rpb25hcnkiLCAiZW51
bSIsICJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIiwgImNvbnN0YW50IiwgImRpY3Rpb25hcnktbWVt
YmVyIiwgImluY2x1ZGVzIl0sCisgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCisgICAgICAg
ICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKKyAgICAgICAgfSwKICAgICAgICAgIkVu
YWJsZWRBdFJ1bnRpbWUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAi
Y29uc3RhbnQiLCAiaXRlcmFibGUiLCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2YWx1ZXMi
OiBbIioiXSwKQEAgLTE4NSwxMCArMTk1LDYgQEAKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XSwKICAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQogICAgICAgICB9LAot
ICAgICAgICAiRGlzYWJsZWRCeVF1aXJrIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiaW50ZXJmYWNlIiwgImRpY3Rpb25hcnkiLCAiZW51bSIsICJhdHRyaWJ1dGUiLCAib3Bl
cmF0aW9uIiwgImNvbnN0YW50Il0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KLSAgICAg
ICAgfSwKICAgICAgICAgIkVuYWJsZWRGb3JDb250ZXh0IjogewogICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHJldmlzaW9uIDI2ODEx
MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDE4ICs3NiwxOCBAQCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4g
RE9NSW1wbGVtCiAgICAgcmV0dXJuIERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHF1
YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVm
PFhNTERvY3VtZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVS
SSkKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAg
IGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAg
cmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICByZXR1
cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBzZXR0aW5ncywgVVJMKCkpOwogICAgIGlm
IChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkKLSAgICAgICAg
cmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBVUkwoKSk7Ci0gICAgcmV0
dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICByZXR1cm4g
WE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIHNldHRpbmdzLCBVUkwoKSk7CisgICAg
cmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MsIFVSTCgpKTsKIH0K
IAogRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9jdW1lbnRUeXBlKQogewotICAgIGF1dG8gZG9jdW1l
bnQgPSBjcmVhdGVYTUxEb2N1bWVudChuYW1lc3BhY2VVUkkpOworICAgIGF1dG8gZG9jdW1lbnQg
PSBjcmVhdGVYTUxEb2N1bWVudChuYW1lc3BhY2VVUkksIG1fZG9jdW1lbnQuc2V0dGluZ3MoKSk7
CiAgICAgZG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChtX2RvY3VtZW50LmNvbnRleHREb2N1
bWVudCgpKTsKICAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVu
dC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIFJlZjxDU1NT
dHlsZVNoZWV0PiBET01JbXBsZW1lbnRhdGlvbjo6Y3IKIAogUmVmPEhUTUxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewotICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwo
KSk7CisgICAgYXV0byBkb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1f
ZG9jdW1lbnQuc2V0dGluZ3MoKSwgVVJMKCkpOwogICAgIGRvY3VtZW50LT5vcGVuKCk7CiAgICAg
ZG9jdW1lbnQtPndyaXRlKG51bGxwdHIsIHsgIjwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjwv
aGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiJfcyB9KTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgp
KSB7CkBAIC0xMzMsNDggKzEzMyw0OCBAQCBSZWY8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlCiAgICAgcmV0dXJuIGRvY3VtZW50OwogfQogCi1SZWY8RG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCitSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBGcmFtZSogZnJhbWUsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6
IEluZWxlZ2FudCB0byBoYXZlIHRoaXMgaGVyZSBqdXN0IGJlY2F1c2UgdGhpcyBpcyB0aGUgaG9t
ZSBvZiBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLgogICAgIC8vIFRoaXMgaXMgaW50
ZXJuYWwsIG5vdCBhIERPTSBBUEkuIE1heWJlIHdlIHNob3VsZCBwdXQgaXQgaW4gYSBuZXcgY2xh
c3MgY2FsbGVkIERvY3VtZW50RmFjdG9yeSwKICAgICAvLyBiZWNhdXNlIG9mIHRoZSBhbmFsb2d5
IHdpdGggSFRNTEVsZW1lbnRGYWN0b3J5LgogCiAgICAgLy8gUGx1Zy1pbnMgY2Fubm90IHRha2Ug
b3ZlciBmb3IgSFRNTCwgWEhUTUwsIHBsYWluIHRleHQsIG9yIG5vbi1QREYgaW1hZ2VzLgotICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9odG1sIikpCi0g
ICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpKQotICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCB1cmwp
OwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9wbGFp
biIpKQotICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7Ci0g
ICAgYm9vbCBpc0ltYWdlID0gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKHR5cGUpOwotICAgIGlmIChmcmFtZSAmJiBpc0ltYWdlICYmICFNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpKQorICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZSwgInRleHQvaHRtbCIpKQorICAgICAgICByZXR1
cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdzLCB1cmwpOworICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb250ZW50VHlwZSwgImFwcGxpY2F0aW9uL3ho
dG1sK3htbCIpKQorICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1l
LCBzZXR0aW5ncywgdXJsKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29udGVudFR5cGUsICJ0ZXh0L3BsYWluIikpCisgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CisgICAgYm9vbCBpc0ltYWdlID0gTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBp
ZiAoZnJhbWUgJiYgaXNJbWFnZSAmJiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3Jp
cHRNSU1FVHlwZShjb250ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50Ojpj
cmVhdGUoKmZyYW1lLCB1cmwpOwogCiAgICAgLy8gVGhlICJpbWFnZSBkb2N1bWVudHMgZm9yIHN1
YmZyYW1lIFBERnMiIG1vZGUgd2lsbCBvdmVycmlkZSBhIFBERiBwbHVnLWluLgotICAgIGlmIChm
cmFtZSAmJiAhZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZN
SU1FVHlwZSh0eXBlKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS51c2VJbWFnZURvY3VtZW50Rm9yU3Vi
ZnJhbWVQREYoKSkKKyAgICBpZiAoZnJhbWUgJiYgIWZyYW1lLT5pc01haW5GcmFtZSgpICYmIE1J
TUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoY29udGVudFR5cGUpICYmIGZyYW1lLT5zZXR0
aW5ncygpLnVzZUltYWdlRG9jdW1lbnRGb3JTdWJmcmFtZVBERigpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogI2lmIEVOQUJMRShWSURFTykK
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1l
dGVycy50eXBlID0gQ29udGVudFR5cGUgeyB0eXBlIH07CisgICAgcGFyYW1ldGVycy50eXBlID0g
Q29udGVudFR5cGUgeyBjb250ZW50VHlwZSB9OwogICAgIHBhcmFtZXRlcnMudXJsID0gdXJsOwog
ICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkKQotICAgICAgICByZXR1cm4gTWVkaWFE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZU
UERJUikKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImFwcGxp
Y2F0aW9uL3gtZnRwLWRpcmVjdG9yeSIpKQotICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoY29udGVudFR5cGUsICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSkKKyAg
ICAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNldHRpbmdz
LCB1cmwpOwogI2VuZGlmCiAKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKQorICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQo
Y29udGVudFR5cGUpKQogICAgICAgICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZSgqZnJh
bWUsIHVybCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIHRoZSByZWxhdGl2ZWx5IGNvc3Rs
eSBsb29rdXAgdGhhdCByZXF1aXJlcyBpbml0aWFsaXppbmcgdGhlIHBsdWctaW4gZGF0YWJhc2Uu
CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgYXV0byBhbGxvd2Vk
UGx1Z2luVHlwZXMgPSBmcmFtZS0+bG9hZGVyKCkuYXJlUGx1Z2luc0VuYWJsZWQoKQogICAgICAg
ICAgICAgPyBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zIDogUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0
aW9uUGx1Z2luczsKLSAgICAgICAgaWYgKGZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS5zdXBw
b3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKQorICAgICAg
ICBpZiAoZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpLnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVU
eXBlKGNvbnRlbnRUeXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKQogICAgICAgICAgICAgcmV0dXJu
IFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOwogICAgIH0KIApAQCAtMTgyLDE2
ICsxODIsMTYgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRAogICAg
IC8vIEZvciBleGFtcGxlLCBwbHVnLWlucyBjYW4gdGFrZSBvdmVyIHN1cHBvcnQgZm9yIFBERiBv
ciBTVkcuCiAgICAgaWYgKGZyYW1lICYmIGlzSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURv
Y3VtZW50OjpjcmVhdGUoKmZyYW1lLCB1cmwpOwotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1RleHRNSU1FVHlwZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRl
KGZyYW1lLCB1cmwpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBl
LCAiaW1hZ2Uvc3ZnK3htbCIpKQotICAgICAgICByZXR1cm4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShm
cmFtZSwgdXJsKTsKLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSh0eXBl
KSkgewotICAgICAgICBhdXRvIGRvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwg
dXJsKTsKLSAgICAgICAgZG9jdW1lbnQtPm92ZXJyaWRlTUlNRVR5cGUodHlwZSk7CisgICAgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnRlbnRUeXBlKSkKKyAgICAgICAg
cmV0dXJuIFRleHREb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBzZXR0aW5ncywgdXJsKTsKKyAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29udGVudFR5cGUsICJpbWFnZS9zdmcr
eG1sIikpCisgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCBzZXR0aW5n
cywgdXJsKTsKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShjb250ZW50
VHlwZSkpIHsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHNldHRpbmdzLCB1cmwpOworICAgICAgICBkb2N1bWVudC0+b3ZlcnJpZGVNSU1FVHlwZShj
b250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybiBkb2N1bWVudDsKICAgICB9Ci0gICAgcmV0dXJu
IEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOworICAgIHJldHVybiBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZShmcmFtZSwgc2V0dGluZ3MsIHVybCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCShyZXZpc2lvbiAyNjgxMTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzRmVhdHVyZSgpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0
ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7
CiAKLSAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+
IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIEZyYW1lKiwgY29uc3Qg
U2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1
bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDEx
ICs1MzIsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgY3VycmVudE9yaWVudGF0aW9uKEZyYQogICAg
IHJldHVybiAwOwogfQogCi1Eb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29u
c3RydWN0aW9uRmxhZ3MpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBT
ZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKICAgICA6IENvbnRhaW5l
ck5vZGUoKnRoaXMsIENyZWF0ZURvY3VtZW50KQogICAgICwgVHJlZVNjb3BlKCp0aGlzKQogICAg
ICwgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKGZyYW1lKQotICAgICwgbV9zZXR0aW5ncyhmcmFt
ZSA/IFJlZjxTZXR0aW5ncz4oZnJhbWUtPnNldHRpbmdzKCkpIDogU2V0dGluZ3M6OmNyZWF0ZShu
dWxscHRyKSkKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3F1aXJrcyhtYWtl
VW5pcXVlUmVmPFF1aXJrcz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlciht
X2ZyYW1lID8gUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291
cmNlTG9hZGVyOjpjcmVhdGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19n
bG9iYWxUcmVlVmVyc2lvbikKQEAgLTYxMCwxNCArNjEwLDExIEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFUKICAgICAgICAgbm9kZUxpc3RBbmRDb2xsZWN0aW9uQ291
bnQgPSAwOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRFdmVudExpc3RlbmVy
c1RvTm9kZSgqdGhpcyk7Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3NldHRpbmdz
LT5zZXRMZWdhY3lHZXRVc2VyTWVkaWFFbmFibGVkKHF1aXJrcygpLnNob3VsZEVuYWJsZUxlZ2Fj
eUdldFVzZXJNZWRpYSgpKTsKLSNlbmRpZgogfQogCiBSZWY8RG9jdW1lbnQ+IERvY3VtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCkKIHsKLSAgICBhdXRvIGRvY3VtZW50ID0g
YWRvcHRSZWYoKm5ldyBEb2N1bWVudChudWxscHRyLCBVUkwoKSkpOworICAgIGF1dG8gZG9jdW1l
bnQgPSBhZG9wdFJlZigqbmV3IERvY3VtZW50KG51bGxwdHIsIGNvbnRleHREb2N1bWVudC5tX3Nl
dHRpbmdzLCBVUkwoKSkpOwogICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoY29udGV4
dERvY3VtZW50KTsKICAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koY29udGV4
dERvY3VtZW50LnNlY3VyaXR5T3JpZ2luUG9saWN5KCkpOwogICAgIHJldHVybiBkb2N1bWVudDsK
QEAgLTYyNSw3ICs2MjIsNyBAQCBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1l
bnQmCiAKIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xk
ZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEb2N1bWVudCgmZnJhbWUsIHVybCwgRGVmYXVsdERvY3VtZW50Q2xhc3MsIE5vblJlbmRl
cmVkUGxhY2Vob2xkZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudCgmZnJh
bWUsIGZyYW1lLnNldHRpbmdzKCksIHVybCwgRGVmYXVsdERvY3VtZW50Q2xhc3MsIE5vblJlbmRl
cmVkUGxhY2Vob2xkZXIpKTsKIH0KIAogRG9jdW1lbnQ6On5Eb2N1bWVudCgpCkBAIC00MDEwLDEw
ICs0MDA3LDEwIEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXQKIHsK
ICAgICBpZiAoaXNYTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChpc1hIVE1MRG9jdW1lbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwg
dXJsKCkpOwotICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCB1cmwo
KSk7CisgICAgICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIs
IG1fc2V0dGluZ3MsIHVybCgpKTsKKyAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9zZXR0aW5ncywgdXJsKCkpOwogICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKHVy
bCgpKTsKKyAgICByZXR1cm4gY3JlYXRlKG1fc2V0dGluZ3MsIHVybCgpKTsKIH0KIAogdm9pZCBE
b2N1bWVudDo6Y2xvbmVEYXRhRnJvbURvY3VtZW50KGNvbnN0IERvY3VtZW50JiBvdGhlcikKQEAg
LTcxNDIsOSArNzEzOSw5IEBAIERvY3VtZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1
bWUKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAg
ICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhU
TUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGFib3V0QmxhbmtVUkwoKSk7CisgICAgICAgIG1f
dGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGlu
Z3MsIGFib3V0QmxhbmtVUkwoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1l
bnQgPSBjcmVhdGUoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50
ID0gY3JlYXRlKG1fc2V0dGluZ3MsIGFib3V0QmxhbmtVUkwoKSk7CiAKICAgICBtX3RlbXBsYXRl
RG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChjb250ZXh0RG9jdW1lbnQoKSk7CiAgICAgbV90
ZW1wbGF0ZURvY3VtZW50LT5zZXRUZW1wbGF0ZURvY3VtZW50SG9zdCh0aGlzKTsgLy8gYmFsYW5j
ZWQgaW4gZHRvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNjgxMTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcg
KzM0MCw3IEBAIGNsYXNzIERvY3VtZW50CiAgICAgLCBwdWJsaWMgQ2FudmFzT2JzZXJ2ZXIgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKERvY3VtZW50LCBXRUJDT1JFX0VYUE9S
VCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlKGNvbnN0IFVSTCYp
OworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZShjb25zdCBTZXR0aW5ncyYsIGNvbnN0
IFVSTCYpOwogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vo
b2xkZXIoRnJhbWUmLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKIApAQCAtNTU3LDcgKzU1Nyw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsgLy8gQ2FuIGJlIG51bGwuCiAgICAgV0VC
Q09SRV9FWFBPUlQgUGFnZSogcGFnZSgpIGNvbnN0OyAvLyBDYW4gYmUgbnVsbC4KICAgICBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9
Ci0gICAgU2V0dGluZ3MmIG11dGFibGVTZXR0aW5ncygpIHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0
KCk7IH0KICAgICBFZGl0aW5nQmVoYXZpb3IgZWRpdGluZ0JlaGF2aW9yKCkgY29uc3Q7CiAKICAg
ICBjb25zdCBRdWlya3MmIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpcmtzOyB9CkBAIC0x
NTk1LDcgKzE1OTQsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVj
dGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8
PCAxIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBE
b2N1bWVudENsYXNzRmxhZ3MgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQgY29uc3Ry
dWN0aW9uRmxhZ3MgPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudChGcmFtZSosIGNv
bnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gRGVmYXVsdERv
Y3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CiAKICAgICB2b2lk
IGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIApAQCAtMTY5
OCw3ICsxNjk3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBX
VEZMb2dDaGFubmVsJiwgV1RGTG9nTGV2ZWwsIFZlY3RvcjxKU09OTG9nVmFsdWU+JiYpIGZpbmFs
OwogCi0gICAgY29uc3QgUmVmPFNldHRpbmdzPiBtX3NldHRpbmdzOworICAgIGNvbnN0IFJlZjxj
b25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKIAogICAgIFVuaXF1ZVJlZjxRdWlya3M+IG1fcXVp
cmtzOwogCkBAIC0yMTY2LDkgKzIxNjUsOSBAQCBpbmxpbmUgQVhPYmplY3RDYWNoZSogRG9jdW1l
bnQ6OmV4aXN0aW5nCiAgICAgcmV0dXJuIGV4aXN0aW5nQVhPYmplY3RDYWNoZVNsb3coKTsKIH0K
IAotaW5saW5lIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShjb25zdCBVUkwmIHVybCkK
K2lubGluZSBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1
bWVudChudWxscHRyLCB1cmwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudChu
dWxscHRyLCBzZXR0aW5ncywgdXJsKSk7CiB9CiAKIGlubGluZSB2b2lkIERvY3VtZW50OjppbnZh
bGlkYXRlQWNjZXNzS2V5Q2FjaGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50LmgJKHJl
dmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwyMCArMzIsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
WE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoWE1MRG9jdW1lbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8WE1MRG9jdW1lbnQ+IGNy
ZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8WE1MRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29u
c3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBYTUxEb2N1
bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhNTERvY3Vt
ZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxYTUxE
b2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBz
dGF0aWMgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFNl
dHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBYTUxEb2N1bWVudChmcmFtZSwgdXJsLCBYSFRNTERvY3VtZW50Q2xhc3Mp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWE1MRG9jdW1lbnQoZnJhbWUsIHNldHRp
bmdzLCB1cmwsIFhIVE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IFhNTERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcyA9IERlZmF1bHREb2N1bWVudENsYXNzKQotICAgICAgICA6IERvY3VtZW50KGZy
YW1lLCB1cmwsIFhNTERvY3VtZW50Q2xhc3MgfCBkb2N1bWVudENsYXNzZXMpCi0gICAgeyB9Cisg
ICAgWE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNv
bnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMgPSBEZWZhdWx0RG9jdW1lbnRD
bGFzcykKKyAgICAgICAgOiBEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgWE1MRG9jdW1l
bnRDbGFzcyB8IGRvY3VtZW50Q2xhc3NlcykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsOCArNDIyLDggQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6ZmluaXNoKAogICAgIEhUTUxEb2N1bWVu
dFBhcnNlcjo6ZmluaXNoKCk7CiB9CiAKLUZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3Rv
cnlEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3Vt
ZW50KGZyYW1lLCB1cmwpCitGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJs
KQorICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKQogewogI2lmICFMT0df
RElTQUJMRUQKICAgICBMb2dGVFAuc3RhdGUgPSBXVEZMb2dDaGFubmVsU3RhdGU6Ok9uOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAkocmV2aXNpb24g
MjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRlRQRGlyZWN0b3J5RG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZUUERpcmVjdG9yeURvY3VtZW50KTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmPEZUUERpcmVjdG9yeURvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYg
dXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRlRQRGlyZWN0b3J5RG9j
dW1lbnQoZnJhbWUsIHVybCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGVFBEaXJl
Y3RvcnlEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIEZUUERp
cmVjdG9yeURvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25zdCBVUkwmKTsKICAg
ICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NywxMSArODcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVmPEhUTUxEb2N1
bWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTERvY3Vt
ZW50KCZmcmFtZSwgdXJsLCBIVE1MRG9jdW1lbnRDbGFzcywgU3ludGhlc2l6ZWQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MRG9jdW1lbnQoJmZyYW1lLCBmcmFtZS5zZXR0aW5ncygp
LCB1cmwsIEhUTUxEb2N1bWVudENsYXNzLCBTeW50aGVzaXplZCkpOwogfQogCi1IVE1MRG9jdW1l
bnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENs
YXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncykKLSAg
ICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIGRvY3VtZW50Q2xhc3NlcyB8IEhUTUxEb2N1bWVudENs
YXNzLCBjb25zdHJ1Y3Rpb25GbGFncykKK0hUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCwgRG9jdW1l
bnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhc3NlcywgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3Mp
CisgICAgOiBEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwg
SFRNTERvY3VtZW50Q2xhc3MsIGNvbnN0cnVjdGlvbkZsYWdzKQogewogICAgIGNsZWFyWE1MVmVy
c2lvbigpOwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIGJvb2wgSFRNTERvY3VtZW50Ojppc0ZyYW1l
U2V0KCkgY29uc3QKIAogUmVmPERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRX
aXRob3V0Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJs
KCkpOworICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgc2V0dGluZ3MoKSwgdXJsKCkpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHJldmlzaW9uIDI2ODExMikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTERvY3VtZW50IDog
cHVibGljIERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxEb2N1bWVu
dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSos
IGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUq
LCBjb25zdCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTERvY3Vt
ZW50PiBjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CiAgICAg
dmlydHVhbCB+SFRNTERvY3VtZW50KCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAKIHByb3RlY3RlZDoKLSAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBE
b2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwor
ICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJiwgRG9j
dW1lbnRDbGFzc0ZsYWdzID0gMCwgdW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKIAog
cHJpdmF0ZToKICAgICBib29sIGlzRnJhbWVTZXQoKSBjb25zdCBmaW5hbDsKQEAgLTY1LDkgKzY1
LDkgQEAgcHJpdmF0ZToKICAgICBUcmVlU2NvcGVPcmRlcmVkTWFwIG1fd2luZG93TmFtZWRJdGVt
OwogfTsKIAotaW5saW5lIFJlZjxIVE1MRG9jdW1lbnQ+IEhUTUxEb2N1bWVudDo6Y3JlYXRlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitpbmxpbmUgUmVmPEhUTUxEb2N1bWVudD4gSFRN
TERvY3VtZW50OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3Ms
IGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxEb2N1bWVu
dChmcmFtZSwgdXJsLCBIVE1MRG9jdW1lbnRDbGFzcykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwgSFRNTERvY3VtZW50Q2xhc3Mp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9p
ZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogfQogCiBJbWFnZURvY3VtZW50OjpJbWFn
ZURvY3VtZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1l
bnQoJmZyYW1lLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykKKyAgICA6IEhUTUxEb2N1bWVudCgm
ZnJhbWUsIGZyYW1lLnNldHRpbmdzKCksIHVybCwgSW1hZ2VEb2N1bWVudENsYXNzKQogICAgICwg
bV9pbWFnZUVsZW1lbnQobnVsbHB0cikKICAgICAsIG1faW1hZ2VTaXplSXNLbm93bihmYWxzZSkK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURv
Y3VtZW50LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgTWVk
aWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG8KICAgICBmaW5pc2goKTsKIH0KICAgICAK
LU1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKLSAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3VtZW50Q2xhc3MpCitN
ZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzLCBjb25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0
dGluZ3MsIHVybCwgTWVkaWFEb2N1bWVudENsYXNzKQogewogICAgIHNldENvbXBhdGliaWxpdHlN
b2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tDb21w
YXRpYmlsaXR5TW9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgJKHJl
dmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IE1lZGlhRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKE1lZGlhRG9jdW1lbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAg
c3RhdGljIFJlZjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0
aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHNldHRpbmdzLCB1cmwpKTsKICAgICB9
CiAgICAgdmlydHVhbCB+TWVkaWFEb2N1bWVudCgpOwogCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0Z29p
bmdSZWZlcnJlcjsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmKTsKKyAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgU2V0dGluZ3MmLCBjb25z
dCBVUkwmKTsKIAogICAgIFJlZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJp
ZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyNjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6
OmFwcGVuZEJ5dGVzKEQKIH0KIAogUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1l
JiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQoJmZyYW1lLCB1cmws
IFBsdWdpbkRvY3VtZW50Q2xhc3MpCisgICAgOiBIVE1MRG9jdW1lbnQoJmZyYW1lLCBmcmFtZS5z
ZXR0aW5ncygpLCB1cmwsIFBsdWdpbkRvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJp
bGl0eU1vZGUoRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9j
a0NvbXBhdGliaWxpdHlNb2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyNjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dERvY3VtZW50KTsKIAotVGV4dERv
Y3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKLSAgICA6
IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBUZXh0RG9jdW1lbnRDbGFzcykKK1RleHREb2N1bWVu
dDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzLCBj
b25zdCBVUkwmIHVybCkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgc2V0dGluZ3MsIHVybCwg
VGV4dERvY3VtZW50Q2xhc3MpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGUoRG9jdW1lbnRD
b21wYXRpYmlsaXR5TW9kZTo6UXVpcmtzTW9kZSk7CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2Rl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHJldmlzaW9uIDI2ODExMikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0RG9jdW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFRleHREb2N1bWVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0RG9jdW1lbnQ+IGNy
ZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWY8VGV4dERv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNv
bnN0IFVSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dERv
Y3VtZW50KGZyYW1lLCB1cmwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dERv
Y3VtZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRl
eHREb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIFRleHREb2N1bWVudChGcmFtZSos
IGNvbnN0IFNldHRpbmdzJiwgY29uc3QgVVJMJik7CiAgICAgCiAgICAgUmVmPERvY3VtZW50UGFy
c2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc2LDExICs3NiwxMSBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChj
b25zCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBuZXdEb2N1bWVudDsKICAgICBpZiAobV9kb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVu
dDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX2RvY3VtZW50LnNldHRpbmdzKCksIFVSTCgpKTsKICAg
ICBlbHNlIGlmIChtX2RvY3VtZW50LmlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICBuZXdEb2N1
bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChudWxscHRyLCBVUkwoKSk7CisgICAgICAg
IG5ld0RvY3VtZW50ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIG1fZG9jdW1l
bnQuc2V0dGluZ3MoKSwgVVJMKCkpOwogICAgIGVsc2UgaWYgKG1fZG9jdW1lbnQuaXNTVkdEb2N1
bWVudCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0
ciwgVVJMKCkpOworICAgICAgICBuZXdEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygpLCBVUkwoKSk7CiAKICAgICBBU1NFUlQobmV3RG9j
dW1lbnQpOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gcGFyc2VyOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiAyNjgxMTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTcsNyArMTE3LDcgQEAgUmVmPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9j
dQogI2VuZGlmCiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNIVE1MVmll
dygpKQogICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xk
ZXIoKm1fZnJhbWUsIHVybCk7Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwpOworICAgIHJldHVybiBET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlwZSwgbV9mcmFtZSwgbV9mcmFtZS0+c2V0
dGluZ3MoKSwgdXJsKTsKIH0KIAogYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJM
JiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2ODEx
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiB9OwogCiBTaW5rRG9jdW1lbnQ6OlNpbmtE
b2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQotICAgIDogSFRNTERvY3VtZW50
KCZmcmFtZSwgdXJsKQorICAgIDogSFRNTERvY3VtZW50KCZmcmFtZSwgZnJhbWUuc2V0dGluZ3Mo
KSwgdXJsKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGU6OlF1aXJrc01vZGUpOwogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyNjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcg
QEAgc3RhdGljIGlubGluZSBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzbwogICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChjYWNoZWRSZXNvdXJjZS5lcnJvcigpKTsKIH0KIAotc3RhdGljIENhY2hl
ZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKK3N0YXRpYyBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gY3JlYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIsIGNvbnN0IFNldHRpbmdz
JiBzZXR0aW5ncykKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgpAQCAtMTIxLDkgKzEyMSw5IEBAIHN0YXRpYyBDYWNo
ZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpTY3JpcHQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KFdURk1vdmUocmVx
dWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpTVkdEb2N1bWVudFJlc291cmNlOgotICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0Rv
Y3VtZW50KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQs
IGNvb2tpZUphciwgc2V0dGluZ3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNW
R0ZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTVkdGb250KFdURk1vdmUo
cmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNo
ZWRTVkdGb250KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyLCBzZXR0aW5n
cyk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOgogICAgICAg
ICByZXR1cm4gbmV3IENhY2hlZEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCBjb29r
aWVKYXIpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkJlYWNvbjoKQEAgLTE1MCw2
ICsxNTAsNDUgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAg
IHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IGNyZWF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUo
KSkgeworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6CisgICAg
ICAgIHJldHVybiBuZXcgQ2FjaGVkSW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vz
c2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpUeXBlOjpDU1NTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0eWxl
U2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNv
b2tpZUphcigpKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6CisgICAg
ICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNl
c3Npb25JRCgpLCByZXNvdXJjZS5jb29raWVKYXIoKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRT
VkdEb2N1bWVudChXVEZNb3ZlKHJlcXVlc3QpLCBzdGF0aWNfY2FzdDxDYWNoZWRTVkdEb2N1bWVu
dCY+KHJlc291cmNlKSk7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRm9udFJl
c291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZFNWR0ZvbnQoV1RGTW92ZShyZXF1ZXN0
KSwgc3RhdGljX2Nhc3Q8Q2FjaGVkU1ZHRm9udCY+KHJlc291cmNlKSk7CisgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3IENhY2hl
ZEZvbnQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNv
b2tpZUphcigpKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpCZWFjb246CisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UGluZzoKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpUeXBlOjpNZWRpYVJlc291cmNlOgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJh
d1Jlc291cmNlOgorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgorICAgICAgICByZXR1cm4gbmV3
IENhY2hlZFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnR5cGUoKSwgcmVz
b3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNpZiBFTkFCTEUoWFNM
VCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpYU0xTdHlsZVNoZWV0OgorICAgICAg
ICByZXR1cm4gbmV3IENhY2hlZFhTTFN0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzb3Vy
Y2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigpKTsKKyNlbmRpZgorICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBD
YWNoZWRSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TGlu
a1ByZWZldGNoLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOwor
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgorICAgICAg
ICByZXR1cm4gbmV3IENhY2hlZFRleHRUcmFjayhXVEZNb3ZlKHJlcXVlc3QpLCByZXNvdXJjZS5z
ZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCkpOworI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0OgorICAgICAgICByZXR1cm4gbmV3IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUphcigp
KTsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKICAgICA6IG1fZG9jdW1lbnQobnVsbHB0
cikKICAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCkBAIC02NzMsMTQgKzcx
MiwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNvdXJjZVN1aXRhYmxlRm9yCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3Qo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIm
IGNvb2tpZUphcikKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QoY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXImIGNv
b2tpZUphciwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIGlmICghaXNSZXNvdXJj
ZVN1aXRhYmxlRm9yRGlyZWN0UmV1c2UocmVzb3VyY2UsIHJlcXVlc3QpKSB7CiAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpOwot
ICAgICAgICByZXR1cm4gbG9hZFJlc291cmNlKHJlc291cmNlLnR5cGUoKSwgc2Vzc2lvbklELCBX
VEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIpOworICAgICAgICByZXR1cm4gbG9hZFJlc291cmNl
KHJlc291cmNlLnR5cGUoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKHJlcXVlc3QpLCBjb29raWVKYXIs
IHNldHRpbmdzKTsKICAgICB9CiAKLSAgICBhdXRvIHJlc291cmNlSGFuZGxlID0gY3JlYXRlUmVz
b3VyY2UocmVzb3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQsICZjb29r
aWVKYXIpOworICAgIGF1dG8gcmVzb3VyY2VIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJj
ZS50eXBlKCksIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCwgJmNvb2tpZUphciwgc2V0dGlu
Z3MpOwogICAgIHJlc291cmNlSGFuZGxlLT5sb2FkRnJvbShyZXNvdXJjZSk7CiAgICAgcmV0dXJu
IHJlc291cmNlSGFuZGxlOwogfQpAQCAtODQwLDcgKzg3OSw3IEBAIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWMKICAgICAgICAgaWYgKGJsb2NrZWRMb2FkKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJj
ZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiLCBmcmFtZSk7CiAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Ci0g
ICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291
cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgcGFnZS5zZXNzaW9u
SUQoKSwgJnBhZ2UuY29va2llSmFyKCkpOworICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2Ug
PSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBwYWdlLnNlc3Npb25JRCgp
LCAmcGFnZS5jb29raWVKYXIoKSwgcGFnZS5zZXR0aW5ncygpKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIHJlc291cmNlLT5lcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzOjpMb2FkRXJyb3IpOwogICAgICAgICAgICAgICAgIHJlc291cmNlLT5z
ZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoQ29udGVudEV4dGVuc2lvbnM6OldlYktpdENv
bnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXNvdXJjZVJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJy
b3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CkBAIC05MTMsNyArOTUy
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhYwogICAgIGNhc2Ug
TG9hZDoKICAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAgICAgICAgbG9nTWVtb3J5Q2FjaGVS
ZXNvdXJjZVJlcXVlc3QoJmZyYW1lLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1lbW9yeUNhY2hl
RW50cnlEZWNpc2lvbktleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVudXNlZEtleSgpKTsK
LSAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcGFnZS5zZXNzaW9uSUQoKSwg
V1RGTW92ZShyZXF1ZXN0KSwgY29va2llSmFyKTsKKyAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVz
b3VyY2UodHlwZSwgcGFnZS5zZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgY29va2llSmFy
LCBwYWdlLnNldHRpbmdzKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJldmFsaWRhdGU6
CiAgICAgICAgIGlmIChyZXNvdXJjZSkKQEAgLTkzMCw3ICs5NjksNyBAQCBSZXNvdXJjZUVycm9y
T3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKFdURk1vdmUoKmVycm9yKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNob3Vs
ZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KCpyZXNvdXJjZSwgcmVxdWVz
dCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gdXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3Vy
cmVudFJlcXVlc3QoKnJlc291cmNlLCBXVEZNb3ZlKHJlcXVlc3QpLCBwYWdlLnNlc3Npb25JRCgp
LCBjb29raWVKYXIpOworICAgICAgICAgICAgcmVzb3VyY2UgPSB1cGRhdGVDYWNoZWRSZXNvdXJj
ZVdpdGhDdXJyZW50UmVxdWVzdCgqcmVzb3VyY2UsIFdURk1vdmUocmVxdWVzdCksIHBhZ2Uuc2Vz
c2lvbklEKCksIGNvb2tpZUphciwgcGFnZS5zZXR0aW5ncygpKTsKICAgICAgICAgICAgIGlmIChy
ZXNvdXJjZS0+c3RhdHVzKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6Q2FjaGVkKQogICAg
ICAgICAgICAgICAgIHBvbGljeSA9IExvYWQ7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDE4LDcg
KzEwNTcsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjCiAgICAg
QVNTRVJUKCFyZXNvdXJjZS5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKICAgICBBU1NFUlQocmVz
b3VyY2UuYWxsb3dzQ2FjaGluZygpKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHJlc291cmNlLnR5cGUoKSwg
V1RGTW92ZShyZXF1ZXN0KSwgcmVzb3VyY2Uuc2Vzc2lvbklEKCksIHJlc291cmNlLmNvb2tpZUph
cigpKTsKKyAgICBhdXRvIG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UoV1RGTW92ZShyZXF1
ZXN0KSwgcmVzb3VyY2UpOwogCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlICVw
IGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5ld1Jlc291cmNlLmdldCgpLCAmcmVzb3VyY2Up
OwogICAgIG5ld1Jlc291cmNlLT5zZXRSZXNvdXJjZVRvUmV2YWxpZGF0ZSgmcmVzb3VyY2UpOwpA
QCAtMTAzMSw3ICsxMDcwLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IENhYwogICAgIHJldHVybiBuZXdSZXNvdXJjZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBDb29raWVKYXImIGNvb2tpZUphcikKK0NhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9h
ZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgQ29va2llSmFyJiBj
b29raWVKYXIsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBhdXRvJiBtZW1vcnlD
YWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICBBU1NFUlQoIXJlcXVlc3QuYWxs
b3dzQ2FjaGluZygpIHx8ICFtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKQpAQCAtMTAzOSw3ICsxMDc4LDcgQEAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogCiAgICAgTE9HKFJlc291cmNlTG9h
ZGluZywgIkxvYWRpbmcgQ2FjaGVkUmVzb3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEo
KS5kYXRhKCkpOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklE
LCAmY29va2llSmFyKTsKKyAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwg
V1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklELCAmY29va2llSmFyLCBzZXR0aW5ncyk7CiAKICAg
ICBpZiAocmVzb3VyY2UtPmFsbG93c0NhY2hpbmcoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUuYWRk
KCpyZXNvdXJjZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgRm9yUHJlbG9hZCA9IEZvclByZWxv
YWQ6Ok5vLCBJbWFnZUxvYWRpbmcgPSBJbWFnZUxvYWRpbmc6OkltbWVkaWF0ZSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkUmVzb3VyY2UmKTsKLSAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBl
LCBQQUw6OlNlc3Npb25JRCwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IENvb2tpZUph
ciYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFBBTDo6U2Vzc2lvbklELCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgQ29va2llSmFyJiwgY29uc3QgU2V0dGluZ3MmKTsKIAogICAgIHZvaWQg
cHJlcGFyZUZldGNoKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2b2lkIHVwZGF0ZUhUVFBSZXF1ZXN0SGVhZGVycyhGcmFtZUxvYWRlciYsIENhY2hl
ZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENh
Y2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlLCBGb3JQcmVsb2FkLCBJbWFnZUxvYWRpbmcp
IGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRVcGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50
UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVz
dCYpOwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNo
ZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUph
ciYpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNo
ZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUph
ciYsIGNvbnN0IFNldHRpbmdzJik7CiAKICAgICBib29sIHNob3VsZENvbnRpbnVlQWZ0ZXJOb3Rp
ZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jiwg
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZUVycm9yJik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJl
Q29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywyMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
b25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdE
b2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3QgU2V0dGlu
Z3MmIHNldHRpbmdzKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgVHlw
ZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZSwgc2Vzc2lvbklELCBjb29raWVKYXIpCiAgICAgLCBtX2Rl
Y29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKKyAg
ICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCit7Cit9CisKK0NhY2hlZFNWR0RvY3VtZW50OjpDYWNo
ZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDYWNoZWRTVkdE
b2N1bWVudCYgcmVzb3VyY2UpCisgICAgOiBDYWNoZWRTVkdEb2N1bWVudChXVEZNb3ZlKHJlcXVl
c3QpLCByZXNvdXJjZS5zZXNzaW9uSUQoKSwgcmVzb3VyY2UuY29va2llSmFyKCksIHJlc291cmNl
Lm1fc2V0dGluZ3MpCiB7CiB9CiAKQEAgLTQ5LDcgKzU2LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhTaAogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVu
dCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KLSAgICAgICAgbV9kb2N1bWVudCA9
IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgcmVzcG9uc2UoKS51cmwoKSk7CisgICAgICAg
IG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJl
c3BvbnNlKCkudXJsKCkpOwogICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAkocmV2
aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU2V0dGluZ3M7CisKIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50IGZp
bmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDYWNo
ZWRTVkdEb2N1bWVudChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmLCBjb25zdCBDb29raWVKYXIqKTsKKyAgICBleHBsaWNpdCBDYWNoZWRTVkdEb2N1bWVudChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBDb29r
aWVKYXIqLCBjb25zdCBTZXR0aW5ncyYpOworICAgIGV4cGxpY2l0IENhY2hlZFNWR0RvY3VtZW50
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBDYWNoZWRTVkdEb2N1bWVudCYpOwogICAgIHZpcnR1
YWwgfkNhY2hlZFNWR0RvY3VtZW50KCk7CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CkBAIC00NCw2ICs0Nyw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKKyAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGlu
Z3M+IG1fc2V0dGluZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCShyZXZpc2lvbiAy
NjgxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwyNCBAQAogI2luY2x1ZGUgIlNWR0RvY3VtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdUb09URkZvbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFNWR0Zv
bnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCitD
YWNoZWRTVkdGb250OjpDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29v
a2llSmFyLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgOiBDYWNoZWRGb250KFdURk1v
dmUocmVxdWVzdCksIHNlc3Npb25JRCwgY29va2llSmFyLCBUeXBlOjpTVkdGb250UmVzb3VyY2Up
CiAgICAgLCBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQobnVsbHB0cikKKyAgICAsIG1fc2V0dGlu
Z3Moc2V0dGluZ3MpCit7Cit9CisKK0NhY2hlZFNWR0ZvbnQ6OkNhY2hlZFNWR0ZvbnQoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ2FjaGVkU1ZHRm9udCYgcmVzb3VyY2UpCisgICAg
OiBDYWNoZWRTVkdGb250KFdURk1vdmUocmVxdWVzdCksIHJlc291cmNlLnNlc3Npb25JRCgpLCBy
ZXNvdXJjZS5jb29raWVKYXIoKSwgcmVzb3VyY2UubV9zZXR0aW5ncykKIHsKIH0KIApAQCAtNjYs
NyArNzMsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBkdXJpbmcgcmVuZGVyIHRyZWUg
dXBkYXRlcyB3aGVuIGV2ZW50cyBhcmUgZm9yYmlkZGVuLgogICAgICAgICAgICAgLy8gRnJhbWVs
ZXNzIGRvY3VtZW50IGNhbid0IHJ1biBzY3JpcHRzIG9yIGNhbGwgYmFjayB0byB0aGUgY2xpZW50
IHNvIHRoaXMgaXMgc2FmZS4KLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNW
R0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOworICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCBV
UkwoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCShyZXZpc2lvbiAyNjgx
MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU1ZHRm9udEZhY2VFbGVtZW50OworY2xhc3MgU2V0dGluZ3M7CiAKIGNsYXNzIENhY2hlZFNW
R0ZvbnQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkRm9udCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVkU1ZH
Rm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25z
dCBDb29raWVKYXIqKTsKKyAgICBDYWNoZWRTVkdGb250KENhY2hlZFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IENvb2tpZUphciosIGNvbnN0IFNldHRpbmdz
Jik7CisgICAgQ2FjaGVkU1ZHRm9udChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkU1ZH
Rm9udCYpOwogCiAgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpIG92ZXJyaWRlOwogCkBAIC01MCw2ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1h
a2VFdmVudExpc3RlbmVyUGFzcwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLWJvb2wg
UXVpcmtzOjpzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWEoKSBjb25zdAorYm9vbCBRdWly
a3M6OnNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJrKCkgY29uc3QKIHsKICAgICBp
ZiAoIW5lZWRzUXVpcmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUXVpcmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuaAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50TGlzdGVuZXImKTsKIAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2Vy
TWVkaWEoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1
aXJrKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUVsZW1lbnRGdWxs
c2NyZWVuUXVpcmsoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJl
dmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29y
a2luZyBjb3B5KQpAQCAtOTQwLDEwICs5NDAsNiBAQCBpc0xvZ2dlZEluQVBJRW5hYmxlZDoKIGVu
dGVyS2V5SGludEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKLWxlZ2FjeUdldFVzZXJNZWRp
YUVuYWJsZWQ6Ci0gIGluaXRpYWw6IGZhbHNlCi0gIGNvbmRpdGlvbmFsOiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCiAjIEZJWE1FOiBTZWVtcyB0byBiZSB1bnVzZWQuIFJlbW92ZSBvbmNlIHZlcmlm
aWVkLgogaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjY4MTEyKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChTVkdEb2N1bWVudCk7CiAKLVNWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsKQotICAgIDogWE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgU1ZHRG9jdW1l
bnRDbGFzcykKK1NWR0RvY3VtZW50OjpTVkdEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNl
dHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCisgICAgOiBYTUxEb2N1bWVudChmcmFt
ZSwgc2V0dGluZ3MsIHVybCwgU1ZHRG9jdW1lbnRDbGFzcykKIHsKIH0KIApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQCiAKIFJlZjxEb2N1
bWVudD4gU1ZHRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdAog
ewotICAgIHJldHVybiBjcmVhdGUobnVsbHB0ciwgdXJsKCkpOworICAgIHJldHVybiBjcmVhdGUo
bnVsbHB0ciwgc2V0dGluZ3MoKSwgdXJsKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuaAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIzICszMCwyMyBAQCBjbGFzcyBTVkdTVkdF
bGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgWE1MRG9jdW1lbnQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHRG9jdW1lbnQpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0
YXRpYyBSZWY8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSosIGNvbnN0IFNldHRpbmdzJiwgY29u
c3QgVVJMJik7CiAKICAgICBib29sIHpvb21BbmRQYW5FbmFibGVkKCkgY29uc3Q7CiAgICAgdm9p
ZCBzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFydCk7CiAgICAgdm9pZCB1cGRhdGVQYW4o
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNWR0Rv
Y3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBTZXR0aW5ncyYsIGNvbnN0IFVSTCYpOwogCiAgICAgUmVmPERvY3VtZW50PiBjbG9uZURvY3Vt
ZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgbV9w
YW5uaW5nT2Zmc2V0OwogfTsKIAotaW5saW5lIFJlZjxTVkdEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQoraW5saW5lIFJlZjxTVkdEb2N1
bWVudD4gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBz
ZXR0aW5ncywgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
RG9jdW1lbnQoZnJhbWUsIHVybCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0RvY3Vt
ZW50KGZyYW1lLCBzZXR0aW5ncywgdXJsKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAkocmV2aXNpb24gMjY4
MTEyKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTIgKzU2LDEzIEBAIHN0
YXRpYyBpbmxpbmUgVW5pcXVlUmVmPFBhZ2U+IGNyZWF0ZVBhZ2UKIHsKICAgICBhdXRvIHBhZ2Ug
PSBtYWtlVW5pcXVlUmVmPFBhZ2U+KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCisgICAgcGFn
ZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RvcmFnZUJsb2NraW5nUG9s
aWN5KTsKKwogICAgIGF1dG8mIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgIG1h
aW5GcmFtZS5sb2FkZXIoKS5pbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCh7IH0pOwogICAgIGF1
dG8gZG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihtYWlu
RnJhbWUsIGRhdGEuc2NyaXB0VVJMKTsKICAgICBkb2N1bWVudC0+Y3JlYXRlRE9NV2luZG93KCk7
CiAKLSAgICBkb2N1bWVudC0+bXV0YWJsZVNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgZG9jdW1lbnQtPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGEucmVnaXN0cmF0aW9u
LmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL0RPTVBh
cnNlci5jcHAJKHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTggQEAKIAogI2luY2x1ZGUgIkRP
TUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBET01Q
YXJzZXI6OkRPTVBhcnNlcihEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogICAgIDogbV9jb250
ZXh0RG9jdW1lbnQobWFrZVdlYWtQdHIoY29udGV4dERvY3VtZW50KSkKKyAgICAsIG1fc2V0dGlu
Z3MoY29udGV4dERvY3VtZW50LnNldHRpbmdzKCkpCiB7CiB9CiAKK0RPTVBhcnNlcjo6fkRPTVBh
cnNlcigpID0gZGVmYXVsdDsKKwogUmVmPERPTVBhcnNlcj4gRE9NUGFyc2VyOjpjcmVhdGUoRG9j
dW1lbnQmIGNvbnRleHREb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01Q
YXJzZXIoY29udGV4dERvY3VtZW50KSk7CkBAIC0zOCw3ICs0Miw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxEb2N1bWVudD4+IERPTVBhcnNlcjo6cGEKIHsKICAgICBpZiAoY29udGVudFR5cGUgIT0gInRl
eHQvaHRtbCIgJiYgY29udGVudFR5cGUgIT0gInRleHQveG1sIiAmJiBjb250ZW50VHlwZSAhPSAi
YXBwbGljYXRpb24veG1sIiAmJiBjb250ZW50VHlwZSAhPSAiYXBwbGljYXRpb24veGh0bWwreG1s
IiAmJiBjb250ZW50VHlwZSAhPSAiaW1hZ2Uvc3ZnK3htbCIpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBhdXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRp
b246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRUeXBlLCBudWxscHRyLCBVUkwgeyB9KTsKKyAgICBh
dXRvIGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnRlbnRU
eXBlLCBudWxscHRyLCBtX3NldHRpbmdzLCBVUkwgeyB9KTsKICAgICBpZiAobV9jb250ZXh0RG9j
dW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoKm1fY29udGV4dERv
Y3VtZW50LmdldCgpKTsKICAgICBkb2N1bWVudC0+c2V0Q29udGVudChzdHJpbmcpOwpJbmRleDog
U291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3htbC9ET01QYXJzZXIuaAkocmV2aXNpb24gMjY4MTEyKQorKysgU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMjAgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTZXR0aW5nczsKIAogY2xh
c3MgRE9NUGFyc2VyIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NUGFyc2VyPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxET01QYXJzZXI+IGNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50
KTsKKyAgICB+RE9NUGFyc2VyKCk7CisKICAgICBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnQ+PiBw
YXJzZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NUGFyc2VyKERvY3VtZW50JiBjb250ZXh0RG9j
dW1lbnQpOwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9jb250ZXh0RG9jdW1lbnQ7CisgICAg
Y29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyNjgxMTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
OSArMTgxLDkgQEAgRXhjZXB0aW9uT3I8RG9jdW1lbnQqPiBYTUxIdHRwUmVxdWVzdDo6cgogICAg
ICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChpc0hUTUwpCi0gICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9yZXNwb25zZS51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgY29udGV4dC5zZXR0aW5ncygpLCBtX3Jlc3BvbnNlLnVybCgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBYTUxEb2N1bWVu
dDo6Y3JlYXRlKG51bGxwdHIsIG1fcmVzcG9uc2UudXJsKCkpOworICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2VEb2N1bWVudCA9IFhNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgY29udGV4dC5z
ZXR0aW5ncygpLCBtX3Jlc3BvbnNlLnVybCgpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1
bWVudC0+b3ZlcnJpZGVMYXN0TW9kaWZpZWQobV9yZXNwb25zZS5sYXN0TW9kaWZpZWQoKSk7CiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChjb250ZXh0
KTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xp
Y3koY29udGV4dC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDI2ODExMikKKysrIFNvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTAgKzcyLDEwIEBAIFJl
ZjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW0KIAogICAgIFJlZlB0cjxEb2N1
bWVudD4gcmVzdWx0OwogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpIHsK
LSAgICAgICAgcmVzdWx0ID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKGZyYW1lLCBzb3VyY2VJ
c0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSk7CisgICAgICAgIHJlc3Vs
dCA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTChmcmFtZSwgb3duZXJEb2N1bWVudC0+c2V0dGlu
Z3MoKSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOwog
ICAgICAgICB0cmFuc2Zvcm1UZXh0U3RyaW5nVG9YSFRNTERvY3VtZW50U3RyaW5nKGRvY3VtZW50
U291cmNlKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1JTUVUeXBlLCBmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/
IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOworICAgICAgICByZXN1bHQgPSBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBvd25lckRv
Y3VtZW50LT5zZXR0aW5ncygpLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJs
KCkgOiBVUkwoKSk7CiAKICAgICAvLyBCZWZvcmUgcGFyc2luZywgd2UgbmVlZCB0byBzYXZlICYg
ZGV0YWNoIHRoZSBvbGQgZG9jdW1lbnQgYW5kIGdldCB0aGUgbmV3IGRvY3VtZW50CiAgICAgLy8g
aW4gcGxhY2UuIFdlIGhhdmUgdG8gZG8gdGhpcyBvbmx5IGlmIHdlJ3JlIHJlbmRlcmluZyB0aGUg
cmVzdWx0IGRvY3VtZW50LgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4MTEyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDYgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRldGltZS1sb2NhbCI+IG5v
dCBzaG93IGNhbGVuZGFyIFVJIHdoZW4gaXQncyBpbnNpZGUgU2hhZG93RE9NCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5ODUKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5NjYwMjczPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAgICBV
cGRhdGUgdG8gcGFzcyBhIFNldHRpbmdzIG9iamVjdCB0byBEb2N1bWVudDo6Y3JlYXRlIHdoaWNo
IGlzIG5vdyByZXF1aXJlZC4KKwogMjAyMC0xMC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbG9hZGluZyBhIHZpZXcgaW4gaXRzIHByb2Nlc3NUZXJtaW5h
dGlvbkhhbmRsZXIgZG9lcyBub3Qgd29yayByZWxpYWJseSB3aGVuIHVzaW5nIHJlbGF0ZWQgdmll
d3MKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9j
dW1lbnRPcmRlci5jcHAJKHJldmlzaW9uIDI2ODExMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEh0bWxFbGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3NpdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YWRvd1Jvb3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaD4KQEAgLTU1LDcgKzU2LDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVu
dCgpCiB7CiAgICAgSFRNTE5hbWVzOjppbml0KCk7Ci0gICAgYXV0byBkb2N1bWVudCA9IERvY3Vt
ZW50OjpjcmVhdGUoYWJvdXRCbGFua1VSTCgpKTsKKyAgICBhdXRvIHNldHRpbmdzID0gU2V0dGlu
Z3M6OmNyZWF0ZShudWxscHRyKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0
ZShzZXR0aW5ncy5nZXQoKSwgYWJvdXRCbGFua1VSTCgpKTsKICAgICBhdXRvIGRvY3VtZW50RWxl
bWVudCA9IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBkb2N1bWVudC0+
YXBwZW5kQ2hpbGQoZG9jdW1lbnRFbGVtZW50KTsKICAgICBhdXRvIGJvZHkgPSBIVE1MQm9keUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjgwNzcpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAy
MC0xMC0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgPGlucHV0
IHR5cGU9ImRhdGV0aW1lLWxvY2FsIj4gbm90IHNob3cgY2FsZW5kYXIgVUkgd2hlbiBpdCdzIGlu
c2lkZSBTaGFkb3dET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNjk4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2NjAyNzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHRlc3RzIHRoYXQgc2hv
dyB0aGF0IGRhdGUvdGltZSBpbnB1dCBlbGVtZW50cyBhcmUgdGhlIHNhbWUgd2hldGhlciB0aGV5
IGNvbWUgZnJvbSBhIHRlbXBsYXRlCisgICAgICAgIGRvY3VtZW50IG9yIHRoZSBtYWluIGRvY3Vt
ZW50LgorCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1mcmFtZWxlc3MtZG9j
dW1lbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRlL2Rh
dGUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9kYXRldGltZWxvY2FsL2RhdGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRldGltZWxvY2Fs
L2RhdGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9tb250aC9tb250aC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZyb20t
ZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGlt
ZS90aW1lLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvdGltZS90aW1lLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRv
Y3VtZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvd2Vlay93
ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTEwLTA2ICBQ
ZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBQ
cm9jZXNzXSBFbmFibGUgc29tZSBsYXlvdXQgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZGF0ZS9kYXRlLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1mcmFtZWxl
c3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2RhdGUvZGF0ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPGJvZHk+Cis8aW5wdXQgdHlwZT0iZGF0
ZSIgdmFsdWU9IjE5OTktMDEtMTEiID4KKzwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZGF0ZS9kYXRlLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2RhdGUtZnJvbS1mcmFtZWxlc3MtZG9jdW1l
bnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvZGF0
ZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OSBAQAorPGJvZHk+Cis8c2NyaXB0PgorLy8gVGhpcyB0ZXN0cyB0aGF0IGFuIDxpbnB1dCB0eXBl
PSJkYXRlIj4gY3JlYXRlZCBpbiBhIHRlbXBsYXRlIGRvY3VtZW50IChlLmcuIG9uZSB3aXRob3V0
IGEgZnJhbWUpCisvLyBpcyBpZGVudGljYWwgdG8gb25lIGNyZWF0ZWQgaW4gdGhlIG1haW4gZG9j
dW1lbnQuCitsZXQgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScp
OwordGVtcGxhdGUuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJkYXRlIiB2YWx1ZT0iMTk5OS0w
MS0xMSI+JzsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcGxhdGUuY29udGVudC5jbG9u
ZU5vZGUodHJ1ZSkpOworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVu
dC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0
ZXRpbWVsb2NhbC9kYXRldGltZWxvY2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRldGltZWxv
Y2FsL2RhdGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorPGlucHV0IHR5cGU9ImRhdGV0
aW1lLWxvY2FsIiB2YWx1ZT0iMTk5OS0wMS0xMVQxOTozMCI+Cis8L2JvZHk+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGV0aW1lbG9jYWwvZGF0ZXRpbWVsb2NhbC1mcm9tLWZyYW1l
bGVzcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZGF0ZXRpbWVsb2NhbC9kYXRldGltZWxvY2FsLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRldGltZWxvY2FsL2Rh
dGV0aW1lbG9jYWwtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDkgQEAKKzxib2R5PgorPHNjcmlwdD4KKy8vIFRoaXMgdGVzdHMgdGhhdCBhbiA8
aW5wdXQgdHlwZT0iZGF0ZXRpbWUtbG9jYWwiPiBjcmVhdGVkIGluIGEgdGVtcGxhdGUgZG9jdW1l
bnQgKGUuZy4gb25lIHdpdGhvdXQgYSBmcmFtZSkKKy8vIGlzIGlkZW50aWNhbCB0byBvbmUgY3Jl
YXRlZCBpbiB0aGUgbWFpbiBkb2N1bWVudC4KK2xldCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7Cit0ZW1wbGF0ZS5pbm5lckhUTUwgPSAnPGlucHV0IHR5cGU9
ImRhdGV0aW1lLWxvY2FsIiB2YWx1ZT0iMTk5OS0wMS0xMVQxOTozMCI+JzsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQodGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZy
b20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9tb250aC9tb250aC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBl
Y3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbW9udGgv
bW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorPGlucHV0IHR5cGU9Im1vbnRoIiB2YWx1ZT0iMTk5
OS0wMSIgPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tb250aC9tb250
aC1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbW9udGgvbW9udGgtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21vbnRoL21vbnRoLWZyb20tZnJh
bWVsZXNzLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8Ym9k
eT4KKzxzY3JpcHQ+CisvLyBUaGlzIHRlc3RzIHRoYXQgYW4gPGlucHV0IHR5cGU9Im1vbnRoIj4g
Y3JlYXRlZCBpbiBhIHRlbXBsYXRlIGRvY3VtZW50IChlLmcuIG9uZSB3aXRob3V0IGEgZnJhbWUp
CisvLyBpcyBpZGVudGljYWwgdG8gb25lIGNyZWF0ZWQgaW4gdGhlIG1haW4gZG9jdW1lbnQuCits
ZXQgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpOwordGVtcGxh
dGUuaW5uZXJIVE1MID0gJzxpbnB1dCB0eXBlPSJtb250aCIgdmFsdWU9IjE5OTktMDEiPic7Citk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUp
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1l
L3RpbWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVu
dC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGltZS90aW1lLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzIEBACis8Ym9keT4KKzxpbnB1dCB0eXBlPSJ0aW1lIiB2YWx1ZT0i
MjI6NTM6MDUiPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90aW1lL3Rp
bWUtZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RpbWUvdGltZS1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGltZS90aW1lLWZyb20tZnJhbWVs
ZXNzLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8Ym9keT4K
KzxzY3JpcHQ+CisvLyBUaGlzIHRlc3RzIHRoYXQgYW4gPGlucHV0IHR5cGU9InRpbWUiPiBjcmVh
dGVkIGluIGEgdGVtcGxhdGUgZG9jdW1lbnQgKGUuZy4gb25lIHdpdGhvdXQgYSBmcmFtZSkKKy8v
IGlzIGlkZW50aWNhbCB0byBvbmUgY3JlYXRlZCBpbiB0aGUgbWFpbiBkb2N1bWVudC4KK2xldCB0
ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7Cit0ZW1wbGF0ZS5p
bm5lckhUTUwgPSAnPGlucHV0IHR5cGU9InRpbWUiIHZhbHVlPSIyMjo1MzowNSI+JzsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dlZWsvd2Vl
ay1mcm9tLWZyYW1lbGVzcy1kb2N1bWVudC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50LWV4
cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93ZWVr
L3dlZWstZnJvbS1mcmFtZWxlc3MtZG9jdW1lbnQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMgQEAKKzxib2R5PgorPGlucHV0IHR5cGU9IndlZWsiIHZhbHVlPSIxOTgy
LVcyNSI+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dlZWsvd2Vlay1m
cm9tLWZyYW1lbGVzcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvd2Vlay93ZWVrLWZyb20tZnJhbWVsZXNzLWRvY3VtZW50Lmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93ZWVrL3dlZWstZnJvbS1mcmFtZWxlc3Mt
ZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKzxib2R5PgorPHNj
cmlwdD4KKy8vIFRoaXMgdGVzdHMgdGhhdCBhbiA8aW5wdXQgdHlwZT0id2VlayI+IGNyZWF0ZWQg
aW4gYSB0ZW1wbGF0ZSBkb2N1bWVudCAoZS5nLiBvbmUgd2l0aG91dCBhIGZyYW1lKQorLy8gaXMg
aWRlbnRpY2FsIHRvIG9uZSBjcmVhdGVkIGluIHRoZSBtYWluIGRvY3VtZW50LgorbGV0IHRlbXBs
YXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTsKK3RlbXBsYXRlLmlubmVy
SFRNTCA9ICc8aW5wdXQgdHlwZT0id2VlayIgdmFsdWU9IjE5ODItVzI1Ij4nOworZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7Cis8L3Nj
cmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>