<?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>236062</bug_id>
          
          <creation_ts>2022-02-03 00:22:56 -0800</creation_ts>
          <short_desc>Setup a custom URL scheme for PDF.js resources</short_desc>
          <delta_ts>2022-02-21 10:40:13 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>235969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836786</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-03 00:22:56 -0800</bug_when>
    <thetext>A custom URL scheme</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836787</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 00:23:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/88422488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839575</commentid>
    <comment_count>2</comment_count>
      <attachid>451509</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 02:31:47 -0800</bug_when>
    <thetext>Created attachment 451509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839597</commentid>
    <comment_count>3</comment_count>
      <attachid>451509</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 04:29:10 -0800</bug_when>
    <thetext>Comment on attachment 451509
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=235981 takes care of populating this folder at build-time.

Why not doing https://bugs.webkit.org/show_bug.cgi?id=235981 first and then https://bugs.webkit.org/show_bug.cgi?id=236062
This would allow to enable tests when landing this patch.

&gt; Source/WebCore/loader/MixedContentChecker.cpp:68
&gt; +    if (frame.ownerElement() &amp;&amp; frame.ownerElement()-&gt;document().isPDFDocument() &amp;&amp; url.protocolIs(&quot;webkit-pdfjs-viewer&quot;))

There are a lot of protocolIs(&quot;webkit-pdfjs-viewer&quot;), might be worth adding a isPDFJsURL(const URL&amp;) for instance.

&gt; Source/WebCore/loader/MixedContentChecker.cpp:95
&gt; +    if (frame.document()-&gt;isPDFDocument() &amp;&amp; url.protocolIs(&quot;webkit-pdfjs-viewer&quot;))

Maybe we can teach WebKit to consider webkit-pdfjs-viewer is secure through our legacy scheme handlers.

&gt; Source/WebCore/loader/cocoa/PDFJSResourceLoader.mm:55
&gt; +    loadQueue().dispatch([protectedLoader = Ref { loader }, url]() mutable {

Need to isolatedCopy the url to be thread safe.
Something like url = url.isolatedCopy().

&gt; Source/WebCore/loader/cocoa/PDFJSResourceLoader.mm:56
&gt; +        NSString *relativePath = [@&quot;pdfjs/&quot; stringByAppendingString: (static_cast&lt;NSURL*&gt;(url).path)];

It seems this is mostly PDFJS agnostic. Maybe we could generalise this by adding a few parameters to loadResource, and rename it to something like loadResourceFromBundle.

&gt; Source/WebCore/loader/cocoa/PDFJSResourceLoader.mm:60
&gt; +        NSData *data = [NSData dataWithContentsOfFile:path];

auto * for all 3 variables?

&gt; Source/WebCore/loader/cocoa/PDFJSResourceLoader.mm:63
&gt; +            RunLoop::main().dispatch([protectedLoader = WTFMove(protectedLoader), url] {

Ditto for isolating copy the URL.
Something like url = WTFMove(url).isolatedCopy() to remove a memory copy.
Or we could try merging both dispatch in one by dispatch capturing a RefPtr&lt;FragmentedSharedBuffer&gt;

&gt; Source/WebCore/loader/cocoa/PDFJSResourceLoader.mm:69
&gt; +        RunLoop::main().dispatch([protectedLoader = WTFMove(protectedLoader), url, buffer = FragmentedSharedBuffer::create(data)] {

Can probably use SharedBuffer instead of FragmentedSharedBuffer.
Ditto for isolating copy the URL.

&gt; Source/WebCore/platform/LegacySchemeRegistry.cpp:83
&gt; +            &quot;webkit-pdfjs-viewer&quot;,

Why is this needed?
Maybe we can try making webkit-pdfjs-viewer a little bit more than that. Something like part of builtinSecureSchemes and builtinSchemesWithUniqueOrigins.
Worth some additional thoughts there.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:279
&gt; +        return false;

We could try to fail webkit-pdfjs-viewer loads here if load is a=subresource load and its document is not PDF.

Doing those checks here might allow removing some of the other checks in WebCore.
It might be worth adding some tests like: fetch(&quot;webkit-pdfjs-viewer://xxx&quot;) and see whether it fails for regular http/https loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839645</commentid>
    <comment_count>4</comment_count>
      <attachid>451509</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 07:33:04 -0800</bug_when>
    <thetext>Comment on attachment 451509
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=235981 takes care of populating this folder at build-time.
&gt; 
&gt; Why not doing https://bugs.webkit.org/show_bug.cgi?id=235981 first and then https://bugs.webkit.org/show_bug.cgi?id=236062
&gt; This would allow to enable tests when landing this patch.

https://bugs.webkit.org/show_bug.cgi?id=235981 is blocked on bundle size concerns. We&apos;d like to land this first for prototyping, and to unblock other subtasks too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839650</commentid>
    <comment_count>5</comment_count>
      <attachid>451531</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 07:38:18 -0800</bug_when>
    <thetext>Created attachment 451531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839653</commentid>
    <comment_count>6</comment_count>
      <attachid>451532</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 07:40:52 -0800</bug_when>
    <thetext>Created attachment 451532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839654</commentid>
    <comment_count>7</comment_count>
      <attachid>451533</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 07:43:39 -0800</bug_when>
    <thetext>Created attachment 451533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839662</commentid>
    <comment_count>8</comment_count>
      <attachid>451533</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 08:03:57 -0800</bug_when>
    <thetext>Comment on attachment 451533
Patch

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:173
&gt; +    bool isInPDFDocumentFrame = m_frame.ownerElement() &amp;&amp; m_frame.ownerElement()-&gt;document().isPDFDocument();

What about main frame loads?

&gt; Source/WebCore/loader/PolicyChecker.cpp:174
&gt; +    if (isInPDFDocumentFrame &amp;&amp; !request.isNull() &amp;&amp; request.url().protocolIs(&quot;webkit-pdfjs-viewer&quot;)) {

I would guess there cannot be a case where request is null but request url protocol is matching viewer, so we can probably remove !request.isNull() check.

&gt; Source/WebCore/loader/ResourceLoader.cpp:881
&gt; +    }

Maybe we can write it this way:
if (options().mode == FetchOptions::Mode::Navigate)
    return true;

auto* frame = resourceLoader.frame();
auto* document = frame ? frame-&gt;document() : nullptr;
return document ? document-&gt;isPDFDocument() : false;

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.h:30
&gt; +void loadResourceFromBundle(WebCore::ResourceLoader&amp;, const String&amp;);

s/WebCore:://.
and forward declare ResourceLoader. Might want to add String forward declaration as well.

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:55
&gt; +    loadQueue().dispatch([protectedLoader = Ref { loader }, url = url.isolatedCopy(), subdirectory = subdirectory.isolatedCopy()]() mutable {

url = loader.request().url().isolatedCopy() to reduce count churning.

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:69
&gt; +            auto mimeType = MIMETypeRegistry::mimeTypeForPath(url.path().toString());

Given mimeTypeForPath is only looking at the suffix, can we do: MIMETypeRegistry::mimeTypeForPath(url.string()) as a small optimization?

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:74
&gt; +            response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);

Is it needed?
AccessControlAllowOrigin is only used for XHR/fetch and maybe the loads will be considered same origin.

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:75
&gt; +            protectedLoader-&gt;deliverResponseAndData(response, buffer.ptr());

WTFMove(buffer) and make the lambda mutable.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:275
&gt; +bool WebLoaderStrategy::tryLoadingUsingPDFJSHandler(ResourceLoader&amp; resourceLoader, const WebResourceLoader::TrackingParameters&amp; trackingParameters)

trackingParameters not needed.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:277
&gt; +    if (!resourceLoader.isPDFJSResourceLoad())

Given we do this check in ResourceLoader, I would only do the scheme check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839667</commentid>
    <comment_count>9</comment_count>
      <attachid>451533</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 08:08:26 -0800</bug_when>
    <thetext>Comment on attachment 451533
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=235981 takes care of populating this folder at build-time.

Please update change log according latest patch.

&gt; Source/WebKit/ChangeLog:8
&gt; +        The code handling the scheme is under WebCore::PDFJSResourceLoader.

Ditto.

&gt; Source/WebCore/loader/ResourceLoader.h:162
&gt; +    WEBCORE_EXPORT bool isPDFJSResourceLoad() const;

Could be #if PLATFORM(COCOA)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839726</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 09:36:51 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; Comment on attachment 451533 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451533&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/PolicyChecker.cpp:173
&gt; &gt; +    bool isInPDFDocumentFrame = m_frame.ownerElement() &amp;&amp; m_frame.ownerElement()-&gt;document().isPDFDocument();
&gt; 
&gt; What about main frame loads?

We want to disallow main frame loads.

&gt; &gt; Source/WebCore/loader/PolicyChecker.cpp:174
&gt; &gt; +    if (isInPDFDocumentFrame &amp;&amp; !request.isNull() &amp;&amp; request.url().protocolIs(&quot;webkit-pdfjs-viewer&quot;)) {
&gt; 
&gt; I would guess there cannot be a case where request is null but request url
&gt; protocol is matching viewer, so we can probably remove !request.isNull()
&gt; check.

Yep, removed the check.

&gt; &gt; Source/WebCore/loader/ResourceLoader.cpp:881
&gt; &gt; +    }
&gt; 
&gt; Maybe we can write it this way:
&gt; if (options().mode == FetchOptions::Mode::Navigate)
&gt;     return true;
&gt; 
&gt; auto* frame = resourceLoader.frame();
&gt; auto* document = frame ? frame-&gt;document() : nullptr;
&gt; return document ? document-&gt;isPDFDocument() : false;

Simplified the existing method.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.h:30
&gt; &gt; +void loadResourceFromBundle(WebCore::ResourceLoader&amp;, const String&amp;);
&gt; 
&gt; s/WebCore:://.
&gt; and forward declare ResourceLoader. Might want to add String forward
&gt; declaration as well.

Done.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:55
&gt; &gt; +    loadQueue().dispatch([protectedLoader = Ref { loader }, url = url.isolatedCopy(), subdirectory = subdirectory.isolatedCopy()]() mutable {
&gt; 
&gt; url = loader.request().url().isolatedCopy() to reduce count churning.

Done.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:69
&gt; &gt; +            auto mimeType = MIMETypeRegistry::mimeTypeForPath(url.path().toString());
&gt; 
&gt; Given mimeTypeForPath is only looking at the suffix, can we do:
&gt; MIMETypeRegistry::mimeTypeForPath(url.string()) as a small optimization?

This doesn&apos;t seem to work. I&apos;ll investigate.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:74
&gt; &gt; +            response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);
&gt; 
&gt; Is it needed?
&gt; AccessControlAllowOrigin is only used for XHR/fetch and maybe the loads will
&gt; be considered same origin.

Yes, otherwise images can&apos;t load.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:75
&gt; &gt; +            protectedLoader-&gt;deliverResponseAndData(response, buffer.ptr());
&gt; 
&gt; WTFMove(buffer) and make the lambda mutable.

Done.

&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:275
&gt; &gt; +bool WebLoaderStrategy::tryLoadingUsingPDFJSHandler(ResourceLoader&amp; resourceLoader, const WebResourceLoader::TrackingParameters&amp; trackingParameters)
&gt; 
&gt; trackingParameters not needed.

They are actually needed for the
`WEBLOADERSTRATEGY_RELEASE_LOG(&quot;tryLoadingUsingPDFJSHandler: URL will be scheduled with the PDFJS url scheme handler&quot;);` macro.

&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:277
&gt; &gt; +    if (!resourceLoader.isPDFJSResourceLoad())
&gt; 
&gt; Given we do this check in ResourceLoader, I would only do the scheme check
&gt; here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839729</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 09:38:45 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 451533 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451533&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=235981 takes care of populating this folder at build-time.
&gt; 
&gt; Please update change log according latest patch.
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; +        The code handling the scheme is under WebCore::PDFJSResourceLoader.
&gt; 
&gt; Ditto.

Done.

&gt; &gt; Source/WebCore/loader/ResourceLoader.h:162
&gt; &gt; +    WEBCORE_EXPORT bool isPDFJSResourceLoad() const;
&gt; 
&gt; Could be #if PLATFORM(COCOA)?

I don&apos;t feel strongly, though this could be cross platform if other platforms implement a BundleResourceLoader too. Right now, this function returns false for non Cocoa platforms which should be good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839732</commentid>
    <comment_count>12</comment_count>
      <attachid>451553</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 09:43:11 -0800</bug_when>
    <thetext>Created attachment 451553
[fast-cq] Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839743</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 09:50:42 -0800</bug_when>
    <thetext>Committed r289549 (247080@main): &lt;https://commits.webkit.org/247080@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451553.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839744</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-10 09:52:25 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=451553&amp;action=review

&gt; Source/WebCore/loader/SubresourceLoader.h:55
&gt; +    SecurityOrigin* origin() const { return m_origin.get(); }

const SecurityOrigin* origin() const

&gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:45
&gt; +    static auto&amp; queue = WorkQueue::create(&quot;org.WebCore.BundleResourceLoader&quot;, WorkQueue::QOS::Utility).leakRef();

org.WebKit.BundleResourceLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839801</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-10 10:48:01 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/SubresourceLoader.h:55
&gt; &gt; +    SecurityOrigin* origin() const { return m_origin.get(); }
&gt; 
&gt; const SecurityOrigin* origin() const

This caused other build problems.

&gt; &gt; Source/WebCore/loader/cocoa/BundleResourceLoader.mm:45
&gt; &gt; +    static auto&amp; queue = WorkQueue::create(&quot;org.WebCore.BundleResourceLoader&quot;, WorkQueue::QOS::Utility).leakRef();
&gt; 
&gt; org.WebKit.BundleResourceLoader

Fixed in https://commits.webkit.org/r289553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840690</commentid>
    <comment_count>16</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2022-02-12 07:19:03 -0800</bug_when>
    <thetext>(In reply to EWS from comment #13)
&gt; Committed r289549 (247080@main): &lt;https://commits.webkit.org/247080@main&gt;

Seems like this broke a layout-test on ios-wk2 https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Furl%2Ftoascii.window.html

e.g.:
https://build.webkit.org/results/Apple-iPadOS-15-Simulator-Release-WK2-Tests/r289589%20(1019)/results.html
Diff:
https://build.webkit.org/results/Apple-iPadOS-15-Simulator-Release-WK2-Tests/r289589%20(1019)/imported/w3c/web-platform-tests/url/toascii.window-diff.txt
-FAIL xn--teÅ¡la (using URL) assert_throws_js: function &quot;() =&gt; makeURL(&quot;url&quot;, hostTest.input)&quot; did not throw
-FAIL xn--teÅ¡la (using URL.host) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using URL.hostname) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;a&gt;) assert_equals: expected &quot;&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;a&gt;.host) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;a&gt;.hostname) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;area&gt;) assert_equals: expected &quot;&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;area&gt;.host) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
-FAIL xn--teÅ¡la (using &lt;area&gt;.hostname) assert_equals: expected &quot;x&quot; but got &quot;xn--teala&quot;
+PASS xn--teÅ¡la (using URL)
+PASS xn--teÅ¡la (using URL.host)
+PASS xn--teÅ¡la (using URL.hostname)
+PASS xn--teÅ¡la (using &lt;a&gt;)
+PASS xn--teÅ¡la (using &lt;a&gt;.host)
+PASS xn--teÅ¡la (using &lt;a&gt;.hostname)
+PASS xn--teÅ¡la (using &lt;area&gt;)
+PASS xn--teÅ¡la (using &lt;area&gt;.host)
+PASS xn--teÅ¡la (using &lt;area&gt;.hostname)
 PASS xn--zca.xn--zca (using URL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841763</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-15 09:42:08 -0800</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #15)
&gt; (In reply to Alex Christensen from comment #14)
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=451553&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/SubresourceLoader.h:55
&gt; &gt; &gt; +    SecurityOrigin* origin() const { return m_origin.get(); }
&gt; &gt; 
&gt; &gt; const SecurityOrigin* origin() const
&gt; 
&gt; This caused other build problems.
We need to fix those other build problems.  Does this help?

const SecurityOrigin* origin() const { return m_origin.get(); }
SecurityOrigin* origin() { return m_origin.get(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844269</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-21 10:40:13 -0800</bug_when>
    <thetext>I&apos;m doing this in https://bugs.webkit.org/show_bug.cgi?id=236983</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451509</attachid>
            <date>2022-02-10 02:31:47 -0800</date>
            <delta_ts>2022-02-10 07:38:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236062-20220210113146.patch</filename>
            <type>text/plain</type>
            <size>18979</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhYTcwMjkyYzhkMmI1
OGFhOTMxODFjZmM4YTFkODZiODA4YmYwNi4uZWRhODM1MzBhMzk5ZWYwYjBmMjJmNWZmYjQyYjI5
NmU1MDZmM2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAyLTEwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYmtpdC1wZGZqcy12aWV3
ZXIgc2NoZW1lIGZvciBQREYuanMgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29kZSBoYW5kbGluZyB0aGUgc2NoZW1lIGlzIHVu
ZGVyIFdlYkNvcmU6OlBERkpTUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEl0IHJlYWRzIGZpbGVz
IGZyb20gdGhlIHBkZmpzLyBzdWItZm9sZGVyIGluIHRoZSBXZWJDb3JlLmZyYW1ld29yayByZXNv
dXJjZXMgZm9sZGVyLgorICAgICAgICBSaWdodCBub3csIHRoaXMgc3ViLWZvbGRlciBkb2VzIG5v
dCBleGlzdCB5ZXQsIGJ1dCB0aGlzIHNjaGVtZSBjYW4gYmUgdGVzdGVkIGJ5IG1hbnVhbGx5IHBv
cHVsYXRpbmcgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5ODEgdGFrZXMgY2FyZSBvZiBwb3B1bGF0aW5nIHRoaXMgZm9sZGVyIGF0IGJ1aWxk
LXRpbWUuCisKKyAgICAgICAgTm90ZTogVGhpcyBzY2hlbWUgY2FuIG9ubHkgYmUgbG9hZGVkIGlu
c2lkZSBhIFBERkRvY3VtZW50IDxpZnJhbWU+CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlz
cGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVj
a2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAq
IGxvYWRlci9jb2NvYS9QREZKU1Jlc291cmNlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9jb2NvYS9QREZKU1Jlc291cmNlTG9hZGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBERkpTUmVzb3VyY2VMb2FkZXI6OmxvYWRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
REZKU1Jlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL0xl
Z2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hl
bWVzKToKKwogMjAyMi0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIG1p
c2hhbmRsZXMgZmFpbHVyZSB0byBjcmVhdGUgV2ViS2l0VGV4dENvbWJpbmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGJiYjc1ZjUwMzQxYTI4NjI0M2FiYjA2MDRiYWU1M2NhNmJhMTY2NTUuLjdlOTZjN2IyMWE0Y2Q4
YWE5MWFkYTVjZjNjNWVjMzI0ZDljODhkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjItMDItMTAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
a2l0LXBkZmpzLXZpZXdlciBzY2hlbWUgZm9yIFBERi5qcyByZXNvdXJjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjb2RlIGhhbmRsaW5nIHRo
ZSBzY2hlbWUgaXMgdW5kZXIgV2ViQ29yZTo6UERGSlNSZXNvdXJjZUxvYWRlci4KKyAgICAgICAg
SXQgcmVhZHMgZmlsZXMgZnJvbSB0aGUgcGRmanMvIHN1Yi1mb2xkZXIgaW4gdGhlIFdlYkNvcmUu
ZnJhbWV3b3JrIHJlc291cmNlcyBmb2xkZXIuCisgICAgICAgIFJpZ2h0IG5vdywgdGhpcyBzdWIt
Zm9sZGVyIGRvZXMgbm90IGV4aXN0IHlldCwgYnV0IHRoaXMgc2NoZW1lIGNhbiBiZSB0ZXN0ZWQg
YnkgbWFudWFsbHkgcG9wdWxhdGluZyBpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTk4MSB0YWtlcyBjYXJlIG9mIHBvcHVsYXRpbmcgdGhpcyBm
b2xkZXIgYXQgYnVpbGQtdGltZS4KKworICAgICAgICBOb3RlOiBUaGlzIHNjaGVtZSBjYW4gb25s
eSBiZSBsb2FkZWQgaW5zaWRlIGEgUERGRG9jdW1lbnQgPGlmcmFtZT4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nUERGSlNIYW5kbGVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKwogMjAyMi0wMi0wOSAgSiBQ
YXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBTcGVjaWZ5
IExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwIHdoZW4gaW1wb3J0aW5nIGNyZWRlbnRpYWxz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAzM2E4OTY1MjBmNzhkNWI4M2NiODRmMTgxZmE3
NmJlM2UxMDU0OTQyLi5iNjczNjk5NDU0YWJhNTBiYzRkYjUxOGU1NzJjMjllZTVlYTQ2YjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4NCw2ICsxODQsNyBAQCBpbnNwZWN0b3IvbWFj
L1BhZ2VEZWJ1Z2dlck1hYy5tbQogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0KIGxvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KK2xvYWRlci9jb2NvYS9QREZKU1Jlc291cmNlTG9h
ZGVyLm1tCiBsb2FkZXIvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQogbG9h
ZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0KIGxvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDA5MjBkZTQwOTgwYzg1NTkxNDNmNTJkMjJmNmU2YTgyZDNjNjUz
OTYuLjM0ZjA3YjNkN2UwOTI4MmZkMDZlZTQ4MTQ3ODc5NWRiYjJiYmNiOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0MDAs
NiArOTQwMCw4IEBACiAJCTQ5QUUyRDk1MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGN1bGF0aW9uVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDlBRjJENkIxNDQzNUQyMTAwMTZBNzg0IC8qIExlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
OUM3OEIxODI3QjQwRUY0MDBERkFDOTQgLyogUERGSlNSZXNvdXJjZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQREZKU1Jlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ5Qzc4QjFBMjdCNDBFRjQwMERGQUM5NCAvKiBQREZKU1Jlc291cmNlTG9hZGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUERGSlNSZXNvdXJjZUxvYWRlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5ODAxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTEJ1ZmZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgxMTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTV2ViR0xCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5ODQx
MDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMRnJhbWVidWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNDYsNiArMjUwNDgsOCBAQAogCQk3RTRERTEwQjE5OEIx
MDgxMDA1MUNCMDIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTQ5Qzc4QjE4MjdCNDBFRjQwMERGQUM5NCAvKiBQREZKU1Jlc291cmNlTG9h
ZGVyLmggKi8sCisJCQkJNDlDNzhCMUEyN0I0MEVGNDAwREZBQzk0IC8qIFBERkpTUmVzb3VyY2VM
b2FkZXIubW0gKi8sCiAJCQkJN0VEQUFGQzgxOUEyQ0JEMTAwMzRERkQxIC8qIERpc2tDYWNoZU1v
bml0b3JDb2NvYS5oICovLAogCQkJCTdFNERFMTBDMTk4QjEwQjYwMDUxQ0IwMiAvKiBEaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW0gKi8sCiAJCQkJNTdGMUM4RTMyNURDNkVFNzAwRThGNkVBIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCmluZGV4IDNkODQwY2I2MjE0Nzc4MmFlYTJjMWU1NTNhMjBmYWY1ZjYxNjc1M2EuLmQx
MjBjNWE5ZmU5Mjg3YmNhMzI4N2FiZGIwY2RmZDI0ZmU0ZWNhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UERGRG9jdW1lbnQuY3BwCkBAIC05NCw4ICs5NCw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gUERG
RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCkKIHsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSBhYm91dDpibGFuayB3aXRo
IGFjdHVhbCB2aWV3ZXIgVVJMCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAiYWJvdXQ6Ymxhbms/Zmls
ZT0iOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93
ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRtbEVs
ZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwogICAg
IHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggMjE5MGQ5N2I4ZDhhMWRkZTIxYjM3YWIy
ODQyMTFhYmI1MTVjOTRmMC4uOGMyZmY1NzI4YjM5Y2Y5ZWQxMjc3ZTg2YTcwYzYwOTQ3YjFkYTZi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApA
QCAtNjQsNiArNjQsMTAgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5z
ZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmlnaW4KICAgICBpZiAoIWlzTWl4
ZWRDb250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAor
ICAgIC8vIFBERkRvY3VtZW50IGlmcmFtZSBzaG91bGQgYmUgYWxsb3dlZCB0byBkaXNwbGF5ICJ3
ZWJraXQtcGRmanMtdmlld2VyIiBVUkxzCisgICAgaWYgKGZyYW1lLm93bmVyRWxlbWVudCgpICYm
IGZyYW1lLm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpLmlzUERGRG9jdW1lbnQoKSAmJiB1cmwu
cHJvdG9jb2xJcygid2Via2l0LXBkZmpzLXZpZXdlciIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93UnVubmluZ09yRGlzcGxheWluZ0luc2VjdXJlQ29udGVudCh1cmwpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTg3LDYgKzkxLDEwIEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6
Y2FuUnVuSW5zZWN1cmVDb250ZW50KEZyYW1lJiBmcmFtZSwgU2VjdXJpdHlPcmlnaW4mIHNlCiAg
ICAgaWYgKCFpc01peGVkQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKKyAgICAvLyBQREZEb2N1bWVudCBzaG91bGQgYmUgYWxsb3dlZCB0byBydW4g
IndlYmtpdC1wZGZqcy12aWV3ZXIiIHJlc291cmNlcworICAgIGlmIChmcmFtZS5kb2N1bWVudCgp
LT5pc1BERkRvY3VtZW50KCkgJiYgdXJsLnByb3RvY29sSXMoIndlYmtpdC1wZGZqcy12aWV3ZXIi
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1J1bm5pbmdPckRpc3BsYXlpbmdJbnNlY3VyZUNv
bnRlbnQodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2ZjA3
NjY4NGYwZC4uNjljMDI4OWVjYWRkZWNhODYzMTdlNzZjYmUwN2ZjNDNmNDA5NzI1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTY5LDYgKzE2OSwxMyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogCiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIAorICAgIC8vIE9ubHkgdGhlIFBERkRvY3Vt
ZW50IGlmcmFtZSBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIHRvIHdlYmtpdC1wZGZqcy12aWV3ZXIg
VVJMcworICAgIGJvb2wgaXNJblBERkRvY3VtZW50RnJhbWUgPSBtX2ZyYW1lLm93bmVyRWxlbWVu
dCgpICYmIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkuaXNQREZEb2N1bWVudCgp
OworICAgIGlmIChpc0luUERGRG9jdW1lbnRGcmFtZSAmJiAhcmVxdWVzdC5pc051bGwoKSAmJiBy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndlYmtpdC1wZGZqcy12aWV3ZXIiKSkgeworICAgICAg
ICBQT0xJQ1lDSEVDS0VSX1JFTEVBU0VfTE9HKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRp
bnVpbmcgYmVjYXVzZSBQREZKUyBVUkwiKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51
ZUxvYWQpOworICAgIH0KKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxv
dyBRdWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4K
ICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVl
c3QudXJsKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBkYzQyOTgwZTliMjVmNTllZGU2MTdkMTg2M2RmNWJhNDY5NzZhNjE1Li5mZDQ3YzE1OTdjY2Q4
ZTNhYjM2NWRiNjdiNjk2ZWU0NThjYjI5ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTYzLDYgKzYzLDEwIEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZl
cnRlci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJQREZKU1Jl
c291cmNlTG9hZGVyLmgiCisjZW5kaWYKKwogI3VuZGVmIFJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HCiAjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+
cGFnZUlEKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVf
SUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+ZnJhbWVJRCgpKSA6IEZyYW1l
SWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQpAQCAtMjM0LDYgKzIzOCwxMyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndlYmtpdC1wZGZq
cy12aWV3ZXIiKSkgeworICAgICAgICBQREZKU1Jlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2Uo
KnRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoU09VUCkK
ICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAg
ICAgbG9hZEdSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL1BERkpTUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Q
REZKU1Jlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiOWRjZWVjMmI5YmUzNjY0ZWRiMTk1
OTUxNjBlN2JiMDM5Mzc1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9QREZKU1Jlc291cmNlTG9hZGVyLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgUERGSlNS
ZXNvdXJjZUxvYWRlciB7Cit2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYpOworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1BERkpT
UmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUERGSlNSZXNv
dXJjZUxvYWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzBhNmI2MTAxNTEyNDdmMzg5NmQzMDkxMzliM2Q2
MDFjMjRlYmRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1BERkpTUmVzb3VyY2VMb2FkZXIubW0KQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBERkpTUmVzb3VyY2VM
b2FkZXIuaCIKKworI2ltcG9ydCAiSFRUUEhlYWRlck1hcC5oIgorI2ltcG9ydCAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgorI2ltcG9ydCAiUmVzb3VyY2VM
b2FkZXIuaCIKKyNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1
ZmZlci5oIgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFBERkpTUmVzb3VyY2VMb2FkZXIg
eworCitzdGF0aWMgV29ya1F1ZXVlJiBsb2FkUXVldWUoKQoreworICAgIHN0YXRpYyBhdXRvJiBx
dWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJvcmcuV2ViQ29yZS5QREZKU1Jlc291cmNlTG9hZGVy
IiwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcXVldWU7
Cit9CisKK3ZvaWQgbG9hZFJlc291cmNlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gdXJsID0gbG9hZGVyLnJlcXVl
c3QoKS51cmwoKTsKKworICAgIGxvYWRRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRMb2FkZXIg
PSBSZWYgeyBsb2FkZXIgfSwgdXJsXSgpIG11dGFibGUgeworICAgICAgICBOU1N0cmluZyAqcmVs
YXRpdmVQYXRoID0gW0AicGRmanMvIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzogKHN0YXRpY19j
YXN0PE5TVVJMKj4odXJsKS5wYXRoKV07CisKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtO
U0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07CisgICAg
ICAgIE5TU3RyaW5nICpwYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6cmVsYXRpdmVQYXRo
IG9mVHlwZTpuaWxdOworICAgICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6cGF0aF07CisKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZExvYWRlciA9IFdURk1vdmUocHJvdGVj
dGVkTG9hZGVyKSwgdXJsXSB7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkTG9hZGVyLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJV
UkwgaXMgaW52YWxpZCJfcyB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRMb2FkZXIgPSBXVEZNb3ZlKHByb3RlY3RlZExvYWRlciksIHVybCwgYnVmZmVyID0gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpXSB7CisgICAgICAgICAgICBhdXRvIG1pbWVU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKHN0YXRpY19jYXN0PE5TVVJM
Kj4odXJsKS5wYXRoKTsKKyAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1
cmwsIG1pbWVUeXBlLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGJ1ZmZlci0+c2l6ZSgpKSwgTUlN
RVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpID8gIlVURi04Il9zIDogbnVs
bHB0ciB9OworICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKKyAg
ICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyJfcyk7CisgICAgICAgICAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsK
KyAgICAgICAgICAgIHJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
QWNjZXNzQ29udHJvbEFsbG93T3JpZ2luLCAiKiIpOworICAgICAgICAgICAgcHJvdGVjdGVkTG9h
ZGVyLT5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlLCBidWZmZXIucHRyKCkpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA0MDI4NTNjNDg5NTIzMmZmNTNkZjJjMjM4
NzMyMDI5OWU1ZmMzZGQ4Li42ZDhhYmVlMmY1YmZmYWMxMWNkZGM1NzQ3YmUzM2E0N2I1NDk0Yjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnku
Y3BwCkBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWls
dGluU2NoZW1lcygpCiAKICAgICAgICAgLy8gT3RoZXIgbWlzYyBzY2hlbWVzIHRoYXQgdGhlIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5IGRvZXNuJ3Qga25vdyBhYm91dC4KICAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IG90aGVyU2NoZW1lc1tdID0geworICAgICAgICAgICAgIndlYmtpdC1w
ZGZqcy12aWV3ZXIiLAogICAgICAgICAgICAgIndlYmtpdC1mYWtlLXVybCIsCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICAgICAgInNhZmFyaS1leHRlbnNpb24iLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4
IGEzZTk0NzczNTY2NGIyY2MxNDYxZTcxOTM3YTUzZDhhOTQ0NmFlYmUuLjQ4NmYyZWY2YjUxMjJm
ZGFjNzViZWVjMGY1MmY4NGRmYTJmYjNkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTIzMSw2ICsyMzEs
OSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKHRy
eUxvYWRpbmdVc2luZ1BERkpTSGFuZGxlcihyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0
ZXJzKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hl
bWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKSB7CiAgICAgICAg
IFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJl
IHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyIpOwogCkBAIC0yNjksNiArMjcyLDIy
IEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRs
ZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
V2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1BERkpTSGFuZGxlcihSZXNvdXJjZUxv
YWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1Bh
cmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVycykKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAoIXJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJ3ZWJraXQt
cGRmanMtdmlld2VyIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExPRyhOZXR3b3Jr
U2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
LCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBQREZKUyByZXNvdXJjZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXRUJMT0FERVJTVFJB
VEVHWV9SRUxFQVNFX0xPRygidHJ5TG9hZGluZ1VzaW5nUERGSlNIYW5kbGVyOiBVUkwgd2lsbCBi
ZSBzY2hlZHVsZWQgd2l0aCB0aGUgUERGSlMgdXJsIHNjaGVtZSBoYW5kbGVyIik7CisKKyAgICBz
dGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBzdGF0aWMgdm9pZCBhZGRQYXJhbWV0ZXJz
U2hhcmVkKGNvbnN0IEZyYW1lKiBmcmFtZSwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgPSBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5n
bGV0b24oKS5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IDIyOTBkOTg3YzM2ZjY4MjQ1YjA4ZmIyYjg2MzE5ZDRkNWE2OGU0YTMuLmUwN2ExNWM1OWVk
NzM3OGIwODA2OWE0YTliOTMwZTE4MjUzNTcwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtOTksNyArOTksOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJuYWxseUZhaWxlZExvYWRUaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCBzdGFydExvY2FsTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwogICAgIGJv
b2wgdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmKTsKLSAgICAK
KyAgICBib29sIHRyeUxvYWRpbmdVc2luZ1BERkpTSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmKTsKKwog
ICAgIHN0cnVjdCBTeW5jTG9hZFJlc3VsdCB7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451531</attachid>
            <date>2022-02-10 07:38:18 -0800</date>
            <delta_ts>2022-02-10 07:57:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236062-20220210163816.patch</filename>
            <type>text/plain</type>
            <size>13830</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhYTcwMjkyYzhkMmI1
OGFhOTMxODFjZmM4YTFkODZiODA4YmYwNi4uOWZmNzRjZmZlMWNiM2ZiZGViZGRhOTg4MTdjNzVk
YTQ3NDAwZjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTEwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYmtpdC1wZGZqcy12aWV3
ZXIgc2NoZW1lIGZvciBQREYuanMgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29kZSBoYW5kbGluZyB0aGUgc2NoZW1lIGlzIHVu
ZGVyIFdlYkNvcmU6OlBERkpTUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEl0IHJlYWRzIGZpbGVz
IGZyb20gdGhlIHBkZmpzLyBzdWItZm9sZGVyIGluIHRoZSBXZWJDb3JlLmZyYW1ld29yayByZXNv
dXJjZXMgZm9sZGVyLgorICAgICAgICBSaWdodCBub3csIHRoaXMgc3ViLWZvbGRlciBkb2VzIG5v
dCBleGlzdCB5ZXQsIGJ1dCB0aGlzIHNjaGVtZSBjYW4gYmUgdGVzdGVkIGJ5IG1hbnVhbGx5IHBv
cHVsYXRpbmcgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5ODEgdGFrZXMgY2FyZSBvZiBwb3B1bGF0aW5nIHRoaXMgZm9sZGVyIGF0IGJ1aWxk
LXRpbWUuCisKKyAgICAgICAgTm90ZTogVGhpcyBzY2hlbWUgY2FuIG9ubHkgYmUgbG9hZGVkIGlu
c2lkZSBhIFBERkRvY3VtZW50IDxpZnJhbWU+CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNr
TmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6aXNQREZKU1Jlc291cmNlTG9hZCBjb25zdCk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblNlY3VyZVNjaGVtZXMpOgorCiAyMDIyLTAyLTA5ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVh
bWVyXSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgbWlzaGFuZGxlcyBmYWlsdXJlIHRvIGNy
ZWF0ZSBXZWJLaXRUZXh0Q29tYmluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmJiNzVmNTAzNDFhMjg2MjQzYWJi
MDYwNGJhZTUzY2E2YmExNjY1NS4uN2U5NmM3YjIxYTRjZDhhYTkxYWRhNWNmM2M1ZWMzMjRkOWM4
OGQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMi0xMCAgVGltIE5ndXllbiAg
PG50aW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWJraXQtcGRmanMtdmlld2VyIHNjaGVt
ZSBmb3IgUERGLmpzIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2MDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGNvZGUgaGFuZGxpbmcgdGhlIHNjaGVtZSBpcyB1bmRlciBXZWJD
b3JlOjpQREZKU1Jlc291cmNlTG9hZGVyLgorICAgICAgICBJdCByZWFkcyBmaWxlcyBmcm9tIHRo
ZSBwZGZqcy8gc3ViLWZvbGRlciBpbiB0aGUgV2ViQ29yZS5mcmFtZXdvcmsgcmVzb3VyY2VzIGZv
bGRlci4KKyAgICAgICAgUmlnaHQgbm93LCB0aGlzIHN1Yi1mb2xkZXIgZG9lcyBub3QgZXhpc3Qg
eWV0LCBidXQgdGhpcyBzY2hlbWUgY2FuIGJlIHRlc3RlZCBieSBtYW51YWxseSBwb3B1bGF0aW5n
IGl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
OTgxIHRha2VzIGNhcmUgb2YgcG9wdWxhdGluZyB0aGlzIGZvbGRlciBhdCBidWlsZC10aW1lLgor
CisgICAgICAgIE5vdGU6IFRoaXMgc2NoZW1lIGNhbiBvbmx5IGJlIGxvYWRlZCBpbnNpZGUgYSBQ
REZEb2N1bWVudCA8aWZyYW1lPgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2Fk
aW5nVXNpbmdQREZKU0hhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oOgorCiAyMDIyLTAyLTA5ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFNwZWNpZnkgTG9jYWxBdXRoZW50aWNhdG9yQWNj
ZXNzR3JvdXAgd2hlbiBpbXBvcnRpbmcgY3JlZGVudGlhbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDMzYTg5NjUyMGY3OGQ1YjgzY2I4NGYxODFmYTc2YmUzZTEwNTQ5NDIuLmYxYjczOGU1
NTZhYzNkOGJkMWVkN2FhZmFiMGMyMzhkZGE5ZDc0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMTgzLDYgKzE4Myw3IEBAIGhpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1tCiBpbnNw
ZWN0b3IvbWFjL1BhZ2VEZWJ1Z2dlck1hYy5tbQogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0KK2xv
YWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5tbQogbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQogbG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29j
b2EubW0KIGxvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDkyMGRl
NDA5ODBjODU1OTE0M2Y1MmQyMmY2ZTZhODJkM2M2NTM5Ni4uZTYzN2YzZmQ2MTFlZDBhMWY3YmE1
Y2ViYjAxNjVkNTY0M2EzZWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM4NCw2ICs5Mzg0LDggQEAKIAkJNDk1ODc4MjAx
MkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NjlCMEYwMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRU
ZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDk2OUIwRjExM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRlc3RpbmdUcmFuc2Zvcm1T
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk3MEZDODAyN0I1NERG
QTAwQzI1MDE3IC8qIEJ1bmRsZVJlc291cmNlTG9hZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQnVuZGxlUmVzb3VyY2VMb2FkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5NzBGQzgxMjdCNTRERkIwMEMyNTAxNyAvKiBCdW5kbGVSZXNvdXJjZUxvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCdW5kbGVSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OTk4QUVDNDEzRjlEMEVBMDA5MEIxQUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5OEFF
QzUxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OThBRUNCMTNGOUQ2QzkwMDkwQjFBQSAv
KiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwNDYsNiArMjUwNDgsOCBAQAogCQk3RTRE
RTEwQjE5OEIxMDgxMDA1MUNCMDIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQ5NzBGQzgxMjdCNTRERkIwMEMyNTAxNyAvKiBCdW5kbGVS
ZXNvdXJjZUxvYWRlci5oICovLAorCQkJCTQ5NzBGQzgwMjdCNTRERkEwMEMyNTAxNyAvKiBCdW5k
bGVSZXNvdXJjZUxvYWRlci5tbSAqLywKIAkJCQk3RURBQUZDODE5QTJDQkQxMDAzNERGRDEgLyog
RGlza0NhY2hlTW9uaXRvckNvY29hLmggKi8sCiAJCQkJN0U0REUxMEMxOThCMTBCNjAwNTFDQjAy
IC8qIERpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSAqLywKIAkJCQk1N0YxQzhFMzI1REM2RUU3MDBF
OEY2RUEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbSAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QREZEb2N1bWVudC5jcHAKaW5kZXggM2Q4NDBjYjYyMTQ3NzgyYWVhMmMxZTU1M2EyMGZhZjVm
NjE2NzUzYS4uZDEyMGM1YTlmZTkyODdiY2EzMjg3YWJkYjBjZGZkMjRmZTRlY2FiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKQEAgLTk0LDggKzk0LDcgQEAgUmVmPERvY3VtZW50
UGFyc2VyPiBQREZEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIAogdm9pZCBQREZEb2N1bWVudDo6
Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogewotICAgIC8vIEZJWE1FOiBSZXBsYWNlIGFib3V0
OmJsYW5rIHdpdGggYWN0dWFsIHZpZXdlciBVUkwKLSAgICBhdXRvIHZpZXdlclVSTCA9ICJhYm91
dDpibGFuaz9maWxlPSI7CisgICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdl
cjovL3BkZmpzL3dlYi92aWV3ZXIuaHRtbD9maWxlPSI7CiAgICAgYXV0byByb290RWxlbWVudCA9
IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKICAgICBhcHBlbmRDaGlsZChyb290RWxl
bWVudCk7CiAgICAgcm9vdEVsZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCBjM2ZiYjU2OTk5OWEwNjY3MTg4ZWFiZTFh
NDYwZTZmMDc2Njg0ZjBkLi42OWMwMjg5ZWNhZGRlY2E4NjMxN2U3NmNiZTA3ZmM0M2Y0MDk3MjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xNjksNiArMTY5
LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBv
bGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAKICAgICBsb2FkZXItPnNldExhc3RDaGVj
a2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwogCisgICAgLy8gT25seSB0aGUg
UERGRG9jdW1lbnQgaWZyYW1lIGlzIGFsbG93ZWQgdG8gbmF2aWdhdGUgdG8gd2Via2l0LXBkZmpz
LXZpZXdlciBVUkxzCisgICAgYm9vbCBpc0luUERGRG9jdW1lbnRGcmFtZSA9IG1fZnJhbWUub3du
ZXJFbGVtZW50KCkgJiYgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5pc1BERkRv
Y3VtZW50KCk7CisgICAgaWYgKGlzSW5QREZEb2N1bWVudEZyYW1lICYmICFyZXF1ZXN0LmlzTnVs
bCgpICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid2Via2l0LXBkZmpzLXZpZXdlciIpKSB7
CisgICAgICAgIFBPTElDWUNIRUNLRVJfUkVMRUFTRV9MT0coImNoZWNrTmF2aWdhdGlvblBvbGlj
eTogY29udGludWluZyBiZWNhdXNlIFBERkpTIFVSTCIpOworICAgICAgICByZXR1cm4gZnVuY3Rp
b24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246
OkNvbnRpbnVlTG9hZCk7CisgICAgfQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8gQWx3
YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJMcyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wg
c2NoZW1lLgogICAgIGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNrTG9va1ByZXZpZXdV
UkwocmVxdWVzdC51cmwoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGRjNDI5ODBlOWIyNWY1OWVkZTYxN2QxODYzZGY1YmE0Njk3NmE2MTUuLjYwNjk2
YmYwNmVlMTkyOTEwMmI1ZTZmYmFlYjVlNjk1NjI4OGFhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtNjMsNiArNjQsMTAgQEAKICNpbmNsdWRlICJQcmV2aWV3Q29u
dmVydGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkJ1bmRs
ZVJlc291cmNlTG9hZGVyLmgiCisjZW5kaWYKKwogI3VuZGVmIFJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUo
KS0+cGFnZUlEKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJB
TUVfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+ZnJhbWVJRCgpKSA6IEZy
YW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQpAQCAtMjM0LDYgKzIzOSwxMyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBpZiAoaXNQREZKU1Jlc291cmNlTG9hZCgpKSB7CisgICAgICAgIEJ1
bmRsZVJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2VGcm9tQnVuZGxlKCp0aGlzLCAicGRmanMv
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogI2lmIFVTRShTT1VQKQogICAg
IGlmIChtX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJcygicmVzb3VyY2UiKSkgewogICAgICAgICBs
b2FkR1Jlc291cmNlKCk7CkBAIC04NTUsNiArODY3LDIxIEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6
OmlzUXVpY2tMb29rUmVzb3VyY2UoKSBjb25zdAogfQogI2VuZGlmCiAKK2Jvb2wgUmVzb3VyY2VM
b2FkZXI6OmlzUERGSlNSZXNvdXJjZUxvYWQoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+b3duZXJFbGVtZW50KCkgfHwgIWZyYW1l
KCktPm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpLmlzUERGRG9jdW1lbnQoKSkgeworICAgICAg
ICBhdXRvKiBzdWJSZXNvdXJjZUxvYWRlciA9IGR5bmFtaWNEb3duY2FzdDxTdWJyZXNvdXJjZUxv
YWRlcj4odGhpcyk7CisKKyAgICAgICAgaWYgKCFzdWJSZXNvdXJjZUxvYWRlci0+b3JpZ2luKCkg
fHwgc3ViUmVzb3VyY2VMb2FkZXItPm9yaWdpbigpLT5wcm90b2NvbCgpICE9ICJ3ZWJraXQtcGRm
anMtdmlld2VyIikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICN1bmRlZiBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxMDk4ZTRmMjc4ODljZGE3YjNhOWNm
ZDRkNTQ2YWUyZmQ5YTdjNTZmLi41NjBmMWY4NzRjNGIzMjg4NzY5ODNlNGRiMDY5ZGE1YTk2MzVi
YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTU5LDYgKzE1
OSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGRlZmVycmVkUmVxdWVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRSZXF1ZXN0OyB9CiAgICAgUmVzb3VyY2VSZXF1
ZXN0IHRha2VEZWZlcnJlZFJlcXVlc3QoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGVmZXJy
ZWRSZXF1ZXN0LCB7IH0pOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUERGSlNSZXNv
dXJjZUxvYWQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlc291cmNlTG9hZGVyKEZyYW1l
JiwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaAppbmRleCAzZGJkNTMzOGFmZTQ5YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFl
ZDRkLi4zOWExYTg5NjgzMDYyYjJiODA3YTc3N2Q5YjczMTg1OGNlOTE4OTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZXNvdXJjZTsgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBIVFRQSGVh
ZGVyTWFwKiBvcmlnaW5hbEhlYWRlcnMoKSBjb25zdDsKIAotICAgIFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4oKSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQorICAgIFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCBzdGFydExvYWRpbmcoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IDQwMjg1
M2M0ODk1MjMyZmY1M2RmMmMyMzg3MzIwMjk5ZTVmYzNkZDguLmM5MjIzZmQ4OWRhZTIwNzUyNDI0
YWY1YzBjNzE2OWE0ZDQ2M2Y3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTE0Miw2ICsxNDIsOSBAQCBzdGF0aWMgU3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKICAgICAgICAgIndzcyJf
cywKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAgInJlc291cmNl
Il9zLAorI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICJ3ZWJraXQtcGRmanMt
dmlld2VyIl9zLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAppbmRleCBhM2U5NDc3MzU2NjRiMmNjMTQ2MWU3MTkzN2E1M2Q4YTk0NDZhZWJlLi4zYzE2OTBj
YjM2Yjc2OTUwMjM2Zjk2NGJjYTg5MTdkZWNmN2UyZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMzEs
NiArMjMxLDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICB9CiAjZW5kaWYKIAorICAg
IGlmICh0cnlMb2FkaW5nVXNpbmdQREZKU0hhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5n
UGFyYW1ldGVycykpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5n
VVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSkgewog
ICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBVUkwg
d2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MiKTsKIApAQCAtMjY5LDYg
KzI3MiwxOCBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdVUkxTY2hl
bWVIYW5kbGVyKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZQogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdQREZKU0hhbmRsZXIoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJh
Y2tpbmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMpCit7CisgICAgaWYgKCFyZXNvdXJj
ZUxvYWRlci5pc1BERkpTUmVzb3VyY2VMb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBQREZKUyByZXNv
dXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygidHJ5TG9hZGluZ1VzaW5nUERGSlNIYW5k
bGVyOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgUERGSlMgdXJsIHNjaGVtZSBoYW5k
bGVyIik7CisKKyAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnJhbWUq
IGZyYW1lLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLmNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMjI5MGQ5ODdjMzZmNjgy
NDViMDhmYjJiODYzMTlkNGQ1YTY4ZTRhMy4uZTA3YTE1YzU5ZWQ3Mzc4YjA4MDY5YTRhOWI5MzBl
MTgyNTM1NzA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC05OSw3ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnRlcm5hbGx5RmFpbGVkTG9hZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0TG9jYWxM
b2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CiAgICAgYm9vbCB0cnlMb2FkaW5nVXNpbmdV
UkxTY2hlbWVIYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVzb3Vy
Y2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYpOwotICAgIAorICAgIGJvb2wgdHJ5TG9hZGlu
Z1VzaW5nUERGSlNIYW5kbGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVz
b3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYpOworCiAgICAgc3RydWN0IFN5bmNMb2Fk
UmVzdWx0IHsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcjsK
</data>
<flag name="commit-queue"
          id="478303"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451532</attachid>
            <date>2022-02-10 07:40:52 -0800</date>
            <delta_ts>2022-02-10 07:43:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236062-20220210164050.patch</filename>
            <type>text/plain</type>
            <size>19689</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhYTcwMjkyYzhkMmI1
OGFhOTMxODFjZmM4YTFkODZiODA4YmYwNi4uOTQyNTFlNzQ0OThiOTI2YmU2ODFmNDE0OTA2YzFl
MDRiZDYyMjYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAyLTEwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYmtpdC1wZGZqcy12aWV3
ZXIgc2NoZW1lIGZvciBQREYuanMgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29kZSBoYW5kbGluZyB0aGUgc2NoZW1lIGlzIHVu
ZGVyIFdlYkNvcmU6OlBERkpTUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEl0IHJlYWRzIGZpbGVz
IGZyb20gdGhlIHBkZmpzLyBzdWItZm9sZGVyIGluIHRoZSBXZWJDb3JlLmZyYW1ld29yayByZXNv
dXJjZXMgZm9sZGVyLgorICAgICAgICBSaWdodCBub3csIHRoaXMgc3ViLWZvbGRlciBkb2VzIG5v
dCBleGlzdCB5ZXQsIGJ1dCB0aGlzIHNjaGVtZSBjYW4gYmUgdGVzdGVkIGJ5IG1hbnVhbGx5IHBv
cHVsYXRpbmcgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5ODEgdGFrZXMgY2FyZSBvZiBwb3B1bGF0aW5nIHRoaXMgZm9sZGVyIGF0IGJ1aWxk
LXRpbWUuCisKKyAgICAgICAgTm90ZTogVGhpcyBzY2hlbWUgY2FuIG9ubHkgYmUgbG9hZGVkIGlu
c2lkZSBhIFBERkRvY3VtZW50IDxpZnJhbWU+CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0J1bmRsZVJl
c291cmNlTG9hZGVyLm1tOiBBZGRlZAorICAgICAgICAqIGxvYWRlci9jb2NvYS9CdW5kbGVSZXNv
dXJjZUxvYWRlci5oOiBBZGRlZAorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmln
YXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmlzUERGSlNSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKToKKwogMjAyMi0wMi0wOSAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0g
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIG1pc2hhbmRsZXMgZmFpbHVyZSB0byBjcmVhdGUg
V2ViS2l0VGV4dENvbWJpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiYjc1ZjUwMzQxYTI4NjI0M2FiYjA2MDRi
YWU1M2NhNmJhMTY2NTUuLjdlOTZjN2IyMWE0Y2Q4YWE5MWFkYTVjZjNjNWVjMzI0ZDljODhkOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDItMTAgIFRpbSBOZ3V5ZW4gIDxudGlt
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Via2l0LXBkZmpzLXZpZXdlciBzY2hlbWUgZm9y
IFBERi5qcyByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBjb2RlIGhhbmRsaW5nIHRoZSBzY2hlbWUgaXMgdW5kZXIgV2ViQ29yZTo6
UERGSlNSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgSXQgcmVhZHMgZmlsZXMgZnJvbSB0aGUgcGRm
anMvIHN1Yi1mb2xkZXIgaW4gdGhlIFdlYkNvcmUuZnJhbWV3b3JrIHJlc291cmNlcyBmb2xkZXIu
CisgICAgICAgIFJpZ2h0IG5vdywgdGhpcyBzdWItZm9sZGVyIGRvZXMgbm90IGV4aXN0IHlldCwg
YnV0IHRoaXMgc2NoZW1lIGNhbiBiZSB0ZXN0ZWQgYnkgbWFudWFsbHkgcG9wdWxhdGluZyBpdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk4MSB0
YWtlcyBjYXJlIG9mIHBvcHVsYXRpbmcgdGhpcyBmb2xkZXIgYXQgYnVpbGQtdGltZS4KKworICAg
ICAgICBOb3RlOiBUaGlzIHNjaGVtZSBjYW4gb25seSBiZSBsb2FkZWQgaW5zaWRlIGEgUERGRG9j
dW1lbnQgPGlmcmFtZT4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1Vz
aW5nUERGSlNIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaDoKKwogMjAyMi0wMi0wOSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBTcGVjaWZ5IExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dy
b3VwIHdoZW4gaW1wb3J0aW5nIGNyZWRlbnRpYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzM2E4OTY1MjBmNzhkNWI4M2NiODRmMTgxZmE3NmJlM2UxMDU0OTQyLi5mMWI3MzhlNTU2YWMz
ZDhiZDFlZDdhYWZhYjBjMjM4ZGRhOWQ3NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTE4Myw2ICsxODMsNyBAQCBoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQogaW5zcGVjdG9y
L21hYy9QYWdlRGVidWdnZXJNYWMubW0KIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCitsb2FkZXIv
Y29jb2EvQnVuZGxlUmVzb3VyY2VMb2FkZXIubW0KIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EubW0KIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1t
CiBsb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5MjBkZTQwOTgw
Yzg1NTkxNDNmNTJkMjJmNmU2YTgyZDNjNjUzOTYuLmU2MzdmM2ZkNjExZWQwYTFmN2JhNWNlYmIw
MTY1ZDU2NDNhM2VkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzODQsNiArOTM4NCw4IEBACiAJCTQ5NTg3ODIwMTJBNTdE
REYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5NjlCMEYxMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NzBGQzgwMjdCNTRERkEwMEMy
NTAxNyAvKiBCdW5kbGVSZXNvdXJjZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1
bmRsZVJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTcw
RkM4MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnVuZGxlUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OThBRUM1MTNG
OUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk4QUVDQjEzRjlENkM5MDA5MEIxQUEgLyogSlNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDQ2LDYgKzI1MDQ4LDggQEAKIAkJN0U0REUxMEIx
OThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0OTcwRkM4MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3Vy
Y2VMb2FkZXIuaCAqLywKKwkJCQk0OTcwRkM4MDI3QjU0REZBMDBDMjUwMTcgLyogQnVuZGxlUmVz
b3VyY2VMb2FkZXIubW0gKi8sCiAJCQkJN0VEQUFGQzgxOUEyQ0JEMTAwMzRERkQxIC8qIERpc2tD
YWNoZU1vbml0b3JDb2NvYS5oICovLAogCQkJCTdFNERFMTBDMTk4QjEwQjYwMDUxQ0IwMiAvKiBE
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gKi8sCiAJCQkJNTdGMUM4RTMyNURDNkVFNzAwRThGNkVB
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERG
RG9jdW1lbnQuY3BwCmluZGV4IDNkODQwY2I2MjE0Nzc4MmFlYTJjMWU1NTNhMjBmYWY1ZjYxNjc1
M2EuLmQxMjBjNWE5ZmU5Mjg3YmNhMzI4N2FiZGIwY2RmZDI0ZmU0ZWNhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC05NCw4ICs5NCw3IEBAIFJlZjxEb2N1bWVudFBhcnNl
cj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKCkKIHsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSBhYm91dDpibGFu
ayB3aXRoIGFjdHVhbCB2aWV3ZXIgVVJMCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAiYWJvdXQ6Ymxh
bms/ZmlsZT0iOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1M
SHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQp
OwogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2
ZjA3NjY4NGYwZC4uNjljMDI4OWVjYWRkZWNhODYzMTdlNzZjYmUwN2ZjNDNmNDA5NzI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTY5LDYgKzE2OSwxMyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogCiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIAorICAgIC8vIE9ubHkgdGhlIFBERkRv
Y3VtZW50IGlmcmFtZSBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIHRvIHdlYmtpdC1wZGZqcy12aWV3
ZXIgVVJMcworICAgIGJvb2wgaXNJblBERkRvY3VtZW50RnJhbWUgPSBtX2ZyYW1lLm93bmVyRWxl
bWVudCgpICYmIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkuaXNQREZEb2N1bWVu
dCgpOworICAgIGlmIChpc0luUERGRG9jdW1lbnRGcmFtZSAmJiAhcmVxdWVzdC5pc051bGwoKSAm
JiByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndlYmtpdC1wZGZqcy12aWV3ZXIiKSkgeworICAg
ICAgICBQT0xJQ1lDSEVDS0VSX1JFTEVBU0VfTE9HKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNv
bnRpbnVpbmcgYmVjYXVzZSBQREZKUyBVUkwiKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdU
Rk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250
aW51ZUxvYWQpOworICAgIH0KKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBh
bGxvdyBRdWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVt
ZS4KICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
cXVlc3QudXJsKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBkYzQyOTgwZTliMjVmNTllZGU2MTdkMTg2M2RmNWJhNDY5NzZhNjE1Li42MDY5NmJmMDZl
ZTE5MjkxMDJiNWU2ZmJhZWI1ZTY5NTYyODhhYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKQEAgLTYzLDYgKzY0LDEwIEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRl
ci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJCdW5kbGVSZXNv
dXJjZUxvYWRlci5oIgorI2VuZGlmCisKICN1bmRlZiBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RwogI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBh
Z2VJRCgpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lE
ICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlk
ZW50aWZpZXIoKSkudG9VSW50NjQoKSkKQEAgLTIzNCw2ICsyMzksMTMgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgaWYgKGlzUERGSlNSZXNvdXJjZUxvYWQoKSkgeworICAgICAgICBCdW5kbGVS
ZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpzLyIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAgICBpZiAo
bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAgICAgbG9hZEdS
ZXNvdXJjZSgpOwpAQCAtODU1LDYgKzg2NywyMSBAQCBib29sIFJlc291cmNlTG9hZGVyOjppc1F1
aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVy
Ojppc1BERkpTUmVzb3VyY2VMb2FkKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCktPm93bmVyRWxlbWVudCgpIHx8ICFmcmFtZSgpLT5v
d25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5pc1BERkRvY3VtZW50KCkpIHsKKyAgICAgICAgYXV0
byogc3ViUmVzb3VyY2VMb2FkZXIgPSBkeW5hbWljRG93bmNhc3Q8U3VicmVzb3VyY2VMb2FkZXI+
KHRoaXMpOworCisgICAgICAgIGlmICghc3ViUmVzb3VyY2VMb2FkZXItPm9yaWdpbigpIHx8IHN1
YlJlc291cmNlTG9hZGVyLT5vcmlnaW4oKS0+cHJvdG9jb2woKSAhPSAid2Via2l0LXBkZmpzLXZp
ZXdlciIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0
NmFlMmZkOWE3YzU2Zi4uNTYwZjFmODc0YzRiMzI4ODc2OTgzZTRkYjA2OWRhNWE5NjM1YmM2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE1OSw2ICsxNTksOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWZlcnJlZFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX2RlZmVycmVkUmVxdWVzdDsgfQogICAgIFJlc291cmNlUmVxdWVzdCB0
YWtlRGVmZXJyZWRSZXF1ZXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2RlZmVycmVkUmVx
dWVzdCwgeyB9KTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BERkpTUmVzb3VyY2VM
b2FkKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBSZXNvdXJjZUxvYWRlcihGcmFtZSYsIFJl
c291cmNlTG9hZGVyT3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgKaW5kZXggM2RiZDUzMzhhZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZC4u
MzlhMWE4OTY4MzA2MmIyYjgwN2E3NzdkOWI3MzE4NThjZTkxODk3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVzb3VyY2U7IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgSFRUUEhlYWRlck1h
cCogb3JpZ2luYWxIZWFkZXJzKCkgY29uc3Q7CiAKLSAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHZvaWQgc3RhcnRMb2FkaW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1bmRsZVJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDc3NjRjNzE5OWJiMWZkNDVhMDQzMDgzNmJkYTcyYzA1Zjc3M2YzMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5oCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIEJ1bmRsZVJlc291cmNlTG9hZGVyIHsKK3ZvaWQgbG9hZFJlc291
cmNlRnJvbUJ1bmRsZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFN0cmluZyYpOwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1bmRsZVJlc291
cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1bmRsZVJlc291cmNl
TG9hZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Mjc2ZDU3OGZhMDc2YTk4YTE4YWYxZTI0MWJlYTdmM2Y1
ZjRiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvQnVu
ZGxlUmVzb3VyY2VMb2FkZXIubW0KQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkJ1bmRsZVJlc291cmNlTG9h
ZGVyLmgiCisKKyNpbXBvcnQgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbXBvcnQgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKKyNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKKyNpbXBvcnQgIlJlc291cmNlTG9h
ZGVyLmgiCisjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXIuaCIKKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBCdW5kbGVSZXNvdXJjZUxvYWRlciB7
CisKK3N0YXRpYyBXb3JrUXVldWUmIGxvYWRRdWV1ZSgpCit7CisgICAgc3RhdGljIGF1dG8mIHF1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIm9yZy5XZWJDb3JlLkJ1bmRsZVJlc291cmNlTG9hZGVy
IiwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcXVldWU7
Cit9CisKK3ZvaWQgbG9hZFJlc291cmNlRnJvbUJ1bmRsZShSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBTdHJpbmcmIHN1YmRpcmVjdG9yeSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgYXV0byB1cmwgPSBsb2FkZXIucmVxdWVzdCgpLnVybCgpOworCisgICAg
bG9hZFF1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZExvYWRlciA9IFJlZiB7IGxvYWRlciB9LCB1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHN1YmRpcmVjdG9yeSA9IHN1YmRpcmVjdG9yeS5pc29s
YXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byAqcmVsYXRpdmVQYXRoID0gW3N1
YmRpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzogdXJsLnBhdGgoKS50b1N0cmluZygp
XTsKKyAgICAgICAgYXV0byAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVy
OkAiY29tLmFwcGxlLldlYkNvcmUiXTsKKyAgICAgICAgYXV0byAqcGF0aCA9IFtidW5kbGUgcGF0
aEZvclJlc291cmNlOnJlbGF0aXZlUGF0aCBvZlR5cGU6bmlsXTsKKyAgICAgICAgYXV0byAqZGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpwYXRoXTsKKworICAgICAgICBpZiAo
IWRhdGEpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
TG9hZGVyID0gV1RGTW92ZShwcm90ZWN0ZWRMb2FkZXIpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRMb2FkZXItPmRpZEZhaWwo
UmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIlVSTCBp
cyBpbnZhbGlkIl9zIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZExv
YWRlciA9IFdURk1vdmUocHJvdGVjdGVkTG9hZGVyKSwgdXJsID0gV1RGTW92ZSh1cmwpLmlzb2xh
dGVkQ29weSgpLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKV0geworICAgICAg
ICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aCh1
cmwucGF0aCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSB7IHVybCwgbWltZVR5cGUsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYnVmZmVyLT5zaXpl
KCkpLCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkgPyAiVVRGLTgi
X3MgOiBudWxscHRyIH07CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOworICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKKyAg
ICAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5l
dHdvcmspOworICAgICAgICAgICAgcmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpBY2Nlc3NDb250cm9sQWxsb3dPcmlnaW4sICIqIik7CisgICAgICAgICAgICBwcm90
ZWN0ZWRMb2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIGJ1ZmZlci5wdHIo
KSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IDQwMjg1M2M0ODk1MjMyZmY1
M2RmMmMyMzg3MzIwMjk5ZTVmYzNkZDguLmM5MjIzZmQ4OWRhZTIwNzUyNDI0YWY1YzBjNzE2OWE0
ZDQ2M2Y3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5jcHAKQEAgLTE0Miw2ICsxNDIsOSBAQCBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxp
dGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKICAgICAgICAgIndzcyJfcywKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAgInJlc291cmNlIl9zLAorI2VuZGlm
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICJ3ZWJraXQtcGRmanMtdmlld2VyIl9zLAog
I2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBhM2U5
NDc3MzU2NjRiMmNjMTQ2MWU3MTkzN2E1M2Q4YTk0NDZhZWJlLi4zYzE2OTBjYjM2Yjc2OTUwMjM2
Zjk2NGJjYTg5MTdkZWNmN2UyZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMzEsNiArMjMxLDkgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICB9CiAjZW5kaWYKIAorICAgIGlmICh0cnlMb2Fk
aW5nVXNpbmdQREZKU0hhbmRsZXIocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFu
ZGxlcihyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSkgewogICAgICAgICBXRUJM
T0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hl
ZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MiKTsKIApAQCAtMjY5LDYgKzI3MiwxOCBAQCBi
b29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKFJl
c291cmNlTG9hZGVyJiByZXNvdXJjZQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYkxv
YWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdQREZKU0hhbmRsZXIoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0
ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMpCit7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRlci5pc1BE
RkpTUmVzb3VyY2VMb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBQREZKUyByZXNvdXJjZS4iLCByZXNv
dXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXRUJMT0FERVJT
VFJBVEVHWV9SRUxFQVNFX0xPRygidHJ5TG9hZGluZ1VzaW5nUERGSlNIYW5kbGVyOiBVUkwgd2ls
bCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgUERGSlMgdXJsIHNjaGVtZSBoYW5kbGVyIik7CisKKyAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnJhbWUqIGZyYW1lLCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBwYXJhbWV0ZXJz
LmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMjI5MGQ5ODdjMzZmNjgyNDViMDhmYjJiODYz
MTlkNGQ1YTY4ZTRhMy4uZTA3YTE1YzU5ZWQ3Mzc4YjA4MDY5YTRhOWI5MzBlMTgyNTM1NzA4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCkBAIC05OSw3ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRlcm5hbGx5
RmFpbGVkTG9hZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0TG9jYWxMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJik7CiAgICAgYm9vbCB0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5k
bGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRy
YWNraW5nUGFyYW1ldGVycyYpOwotICAgIAorICAgIGJvb2wgdHJ5TG9hZGluZ1VzaW5nUERGSlNI
YW5kbGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6
OlRyYWNraW5nUGFyYW1ldGVycyYpOworCiAgICAgc3RydWN0IFN5bmNMb2FkUmVzdWx0IHsKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451533</attachid>
            <date>2022-02-10 07:43:39 -0800</date>
            <delta_ts>2022-02-10 08:08:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236062-20220210164337.patch</filename>
            <type>text/plain</type>
            <size>19775</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhYTcwMjkyYzhkMmI1
OGFhOTMxODFjZmM4YTFkODZiODA4YmYwNi4uOTQyNTFlNzQ0OThiOTI2YmU2ODFmNDE0OTA2YzFl
MDRiZDYyMjYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAyLTEwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYmtpdC1wZGZqcy12aWV3
ZXIgc2NoZW1lIGZvciBQREYuanMgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY29kZSBoYW5kbGluZyB0aGUgc2NoZW1lIGlzIHVu
ZGVyIFdlYkNvcmU6OlBERkpTUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEl0IHJlYWRzIGZpbGVz
IGZyb20gdGhlIHBkZmpzLyBzdWItZm9sZGVyIGluIHRoZSBXZWJDb3JlLmZyYW1ld29yayByZXNv
dXJjZXMgZm9sZGVyLgorICAgICAgICBSaWdodCBub3csIHRoaXMgc3ViLWZvbGRlciBkb2VzIG5v
dCBleGlzdCB5ZXQsIGJ1dCB0aGlzIHNjaGVtZSBjYW4gYmUgdGVzdGVkIGJ5IG1hbnVhbGx5IHBv
cHVsYXRpbmcgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzU5ODEgdGFrZXMgY2FyZSBvZiBwb3B1bGF0aW5nIHRoaXMgZm9sZGVyIGF0IGJ1aWxk
LXRpbWUuCisKKyAgICAgICAgTm90ZTogVGhpcyBzY2hlbWUgY2FuIG9ubHkgYmUgbG9hZGVkIGlu
c2lkZSBhIFBERkRvY3VtZW50IDxpZnJhbWU+CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0J1bmRsZVJl
c291cmNlTG9hZGVyLm1tOiBBZGRlZAorICAgICAgICAqIGxvYWRlci9jb2NvYS9CdW5kbGVSZXNv
dXJjZUxvYWRlci5oOiBBZGRlZAorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmln
YXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmlzUERGSlNSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKToKKwogMjAyMi0wMi0wOSAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0g
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIG1pc2hhbmRsZXMgZmFpbHVyZSB0byBjcmVhdGUg
V2ViS2l0VGV4dENvbWJpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiYjc1ZjUwMzQxYTI4NjI0M2FiYjA2MDRi
YWU1M2NhNmJhMTY2NTUuLjdlOTZjN2IyMWE0Y2Q4YWE5MWFkYTVjZjNjNWVjMzI0ZDljODhkOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDItMTAgIFRpbSBOZ3V5ZW4gIDxudGlt
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Via2l0LXBkZmpzLXZpZXdlciBzY2hlbWUgZm9y
IFBERi5qcyByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBjb2RlIGhhbmRsaW5nIHRoZSBzY2hlbWUgaXMgdW5kZXIgV2ViQ29yZTo6
UERGSlNSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgSXQgcmVhZHMgZmlsZXMgZnJvbSB0aGUgcGRm
anMvIHN1Yi1mb2xkZXIgaW4gdGhlIFdlYkNvcmUuZnJhbWV3b3JrIHJlc291cmNlcyBmb2xkZXIu
CisgICAgICAgIFJpZ2h0IG5vdywgdGhpcyBzdWItZm9sZGVyIGRvZXMgbm90IGV4aXN0IHlldCwg
YnV0IHRoaXMgc2NoZW1lIGNhbiBiZSB0ZXN0ZWQgYnkgbWFudWFsbHkgcG9wdWxhdGluZyBpdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk4MSB0
YWtlcyBjYXJlIG9mIHBvcHVsYXRpbmcgdGhpcyBmb2xkZXIgYXQgYnVpbGQtdGltZS4KKworICAg
ICAgICBOb3RlOiBUaGlzIHNjaGVtZSBjYW4gb25seSBiZSBsb2FkZWQgaW5zaWRlIGEgUERGRG9j
dW1lbnQgPGlmcmFtZT4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1Vz
aW5nUERGSlNIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaDoKKwogMjAyMi0wMi0wOSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBTcGVjaWZ5IExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dy
b3VwIHdoZW4gaW1wb3J0aW5nIGNyZWRlbnRpYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCAzM2E4OTY1MjBmNzhkNWI4M2NiODRmMTgxZmE3NmJlM2UxMDU0OTQyLi5mMWI3MzhlNTU2YWMz
ZDhiZDFlZDdhYWZhYjBjMjM4ZGRhOWQ3NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTE4Myw2ICsxODMsNyBAQCBoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQogaW5zcGVjdG9y
L21hYy9QYWdlRGVidWdnZXJNYWMubW0KIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCitsb2FkZXIv
Y29jb2EvQnVuZGxlUmVzb3VyY2VMb2FkZXIubW0KIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EubW0KIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1t
CiBsb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5MjBkZTQwOTgw
Yzg1NTkxNDNmNTJkMjJmNmU2YTgyZDNjNjUzOTYuLmU2MzdmM2ZkNjExZWQwYTFmN2JhNWNlYmIw
MTY1ZDU2NDNhM2VkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzODQsNiArOTM4NCw4IEBACiAJCTQ5NTg3ODIwMTJBNTdE
REYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5NjlCMEYxMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NzBGQzgwMjdCNTRERkEwMEMy
NTAxNyAvKiBCdW5kbGVSZXNvdXJjZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1
bmRsZVJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTcw
RkM4MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnVuZGxlUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OThBRUM1MTNG
OUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk4QUVDQjEzRjlENkM5MDA5MEIxQUEgLyogSlNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDQ2LDYgKzI1MDQ4LDggQEAKIAkJN0U0REUxMEIx
OThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0OTcwRkM4MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3Vy
Y2VMb2FkZXIuaCAqLywKKwkJCQk0OTcwRkM4MDI3QjU0REZBMDBDMjUwMTcgLyogQnVuZGxlUmVz
b3VyY2VMb2FkZXIubW0gKi8sCiAJCQkJN0VEQUFGQzgxOUEyQ0JEMTAwMzRERkQxIC8qIERpc2tD
YWNoZU1vbml0b3JDb2NvYS5oICovLAogCQkJCTdFNERFMTBDMTk4QjEwQjYwMDUxQ0IwMiAvKiBE
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gKi8sCiAJCQkJNTdGMUM4RTMyNURDNkVFNzAwRThGNkVB
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERG
RG9jdW1lbnQuY3BwCmluZGV4IDNkODQwY2I2MjE0Nzc4MmFlYTJjMWU1NTNhMjBmYWY1ZjYxNjc1
M2EuLmQxMjBjNWE5ZmU5Mjg3YmNhMzI4N2FiZGIwY2RmZDI0ZmU0ZWNhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC05NCw4ICs5NCw3IEBAIFJlZjxEb2N1bWVudFBhcnNl
cj4gUERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKCkKIHsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSBhYm91dDpibGFu
ayB3aXRoIGFjdHVhbCB2aWV3ZXIgVVJMCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAiYWJvdXQ6Ymxh
bms/ZmlsZT0iOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1M
SHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQp
OwogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2
ZjA3NjY4NGYwZC4uNjljMDI4OWVjYWRkZWNhODYzMTdlNzZjYmUwN2ZjNDNmNDA5NzI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTY5LDYgKzE2OSwxMyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogCiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIAorICAgIC8vIE9ubHkgdGhlIFBERkRv
Y3VtZW50IGlmcmFtZSBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIHRvIHdlYmtpdC1wZGZqcy12aWV3
ZXIgVVJMcworICAgIGJvb2wgaXNJblBERkRvY3VtZW50RnJhbWUgPSBtX2ZyYW1lLm93bmVyRWxl
bWVudCgpICYmIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkuaXNQREZEb2N1bWVu
dCgpOworICAgIGlmIChpc0luUERGRG9jdW1lbnRGcmFtZSAmJiAhcmVxdWVzdC5pc051bGwoKSAm
JiByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndlYmtpdC1wZGZqcy12aWV3ZXIiKSkgeworICAg
ICAgICBQT0xJQ1lDSEVDS0VSX1JFTEVBU0VfTE9HKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNv
bnRpbnVpbmcgYmVjYXVzZSBQREZKUyBVUkwiKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdU
Rk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250
aW51ZUxvYWQpOworICAgIH0KKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBh
bGxvdyBRdWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVt
ZS4KICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
cXVlc3QudXJsKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBkYzQyOTgwZTliMjVmNTllZGU2MTdkMTg2M2RmNWJhNDY5NzZhNjE1Li4yN2FkZTYzMjI5
MjkzNGY0ODJjMTU4NzMzYTMwYTMzMjljYzAxY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKQEAgLTYzLDYgKzY0LDEwIEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRl
ci5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJCdW5kbGVSZXNv
dXJjZUxvYWRlci5oIgorI2VuZGlmCisKICN1bmRlZiBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RwogI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBh
Z2VJRCgpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lE
ICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlk
ZW50aWZpZXIoKSkudG9VSW50NjQoKSkKQEAgLTIzNCw2ICsyMzksMTMgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgaWYgKGlzUERGSlNSZXNvdXJjZUxvYWQoKSkgeworICAgICAgICBCdW5kbGVS
ZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpzLyIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAgICBpZiAo
bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAgICAgbG9hZEdS
ZXNvdXJjZSgpOwpAQCAtODU1LDYgKzg2NywyNCBAQCBib29sIFJlc291cmNlTG9hZGVyOjppc1F1
aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVy
Ojppc1BERkpTUmVzb3VyY2VMb2FkKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAoIW1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3ZWJraXQtcGRmanMtdmlld2VyIikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+
b3duZXJFbGVtZW50KCkgfHwgIWZyYW1lKCktPm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpLmlz
UERGRG9jdW1lbnQoKSkgeworICAgICAgICBhdXRvKiBzdWJSZXNvdXJjZUxvYWRlciA9IGR5bmFt
aWNEb3duY2FzdDxTdWJyZXNvdXJjZUxvYWRlcj4odGhpcyk7CisKKyAgICAgICAgaWYgKCFzdWJS
ZXNvdXJjZUxvYWRlci0+b3JpZ2luKCkgfHwgc3ViUmVzb3VyY2VMb2FkZXItPm9yaWdpbigpLT5w
cm90b2NvbCgpICE9ICJ3ZWJraXQtcGRmanMtdmlld2VyIikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICN1bmRlZiBSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCAxMDk4ZTRmMjc4ODljZGE3YjNhOWNmZDRkNTQ2YWUyZmQ5YTdjNTZmLi41NjBmMWY4NzRjNGIz
Mjg4NzY5ODNlNGRiMDY5ZGE1YTk2MzViYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTU5LDYgKzE1OSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIGRlZmVycmVkUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRSZXF1
ZXN0OyB9CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHRha2VEZWZlcnJlZFJlcXVlc3QoKSB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fZGVmZXJyZWRSZXF1ZXN0LCB7IH0pOyB9CiAKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzUERGSlNSZXNvdXJjZUxvYWQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgog
ICAgIFJlc291cmNlTG9hZGVyKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzZGJkNTMzOGFmZTQ5
YjQ3ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkLi4zOWExYTg5NjgzMDYyYjJiODA3YTc3N2Q5Yjcz
MTg1OGNlOTE4OTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXNvdXJjZTsgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBIVFRQSGVhZGVyTWFwKiBvcmlnaW5hbEhlYWRlcnMoKSBjb25zdDsK
IAotICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsg
fQorICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5n
ZXQoKTsgfQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBzdGFydExvYWRpbmco
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1
bmRsZVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvQnVuZGxl
UmVzb3VyY2VMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Nzc2NGM3MTk5YmIxZmQ0NWEwNDMwODM2YmRh
NzJjMDVmNzczZjMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0J1bmRsZVJlc291cmNlTG9hZGVyLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgQnVuZGxlUmVz
b3VyY2VMb2FkZXIgewordm9pZCBsb2FkUmVzb3VyY2VGcm9tQnVuZGxlKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyJiwgY29uc3QgU3RyaW5nJik7Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvQnVuZGxlUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvQnVuZGxlUmVzb3VyY2VMb2FkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgyNzZk
NTc4ZmEwNzZhOThhMThhZjFlMjQxYmVhN2YzZjVmNGJkNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5tbQpAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiQnVuZGxlUmVzb3VyY2VMb2FkZXIuaCIKKworI2ltcG9ydCAiSFRUUEhlYWRl
ck1hcC5oIgorI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiUmVzb3VyY2VF
cnJvci5oIgorI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbXBvcnQgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCA8d3RmL1J1bkxvb3Au
aD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIEJ1bmRsZVJlc291cmNlTG9hZGVyIHsKKworc3RhdGljIFdvcmtRdWV1ZSYgbG9hZFF1
ZXVlKCkKK3sKKyAgICBzdGF0aWMgYXV0byYgcXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgib3Jn
LldlYkNvcmUuQnVuZGxlUmVzb3VyY2VMb2FkZXIiLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSku
bGVha1JlZigpOworICAgIHJldHVybiBxdWV1ZTsKK30KKwordm9pZCBsb2FkUmVzb3VyY2VGcm9t
QnVuZGxlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFN0cmluZyYgc3ViZGlyZWN0b3J5
KQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBhdXRvIHVybCA9IGxv
YWRlci5yZXF1ZXN0KCkudXJsKCk7CisKKyAgICBsb2FkUXVldWUoKS5kaXNwYXRjaChbcHJvdGVj
dGVkTG9hZGVyID0gUmVmIHsgbG9hZGVyIH0sIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3Vi
ZGlyZWN0b3J5ID0gc3ViZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvICpyZWxhdGl2ZVBhdGggPSBbc3ViZGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOiB1cmwucGF0aCgpLnRvU3RyaW5nKCldOworICAgICAgICBhdXRvICpidW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViQ29yZSJdOworICAg
ICAgICBhdXRvICpwYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6cmVsYXRpdmVQYXRoIG9m
VHlwZTpuaWxdOworICAgICAgICBhdXRvICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZGaWxlOnBhdGhdOworCisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRMb2FkZXIgPSBXVEZNb3ZlKHByb3RlY3RlZExv
YWRlciksIHVybCA9IFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAg
ICAgIHByb3RlY3RlZExvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiVVJMIGlzIGludmFsaWQiX3MgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkTG9hZGVyID0gV1RGTW92ZShwcm90ZWN0ZWRMb2Fk
ZXIpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpXSB7CisgICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKHVybC5wYXRoKCkudG9TdHJpbmcoKSk7CisgICAg
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBtaW1lVHlwZSwgc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihidWZmZXItPnNpemUoKSksIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4
dE1JTUVUeXBlKG1pbWVUeXBlKSA/ICJVVEYtOCJfcyA6IG51bGxwdHIgfTsKKyAgICAgICAgICAg
IHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CisgICAgICAgICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOworICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNl
KFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CisgICAgICAgICAgICByZXNwb25z
ZS5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd09y
aWdpbiwgIioiKTsKKyAgICAgICAgICAgIHByb3RlY3RlZExvYWRlci0+ZGVsaXZlclJlc3BvbnNl
QW5kRGF0YShyZXNwb25zZSwgYnVmZmVyLnB0cigpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3Ry
eS5jcHAKaW5kZXggNDAyODUzYzQ4OTUyMzJmZjUzZGYyYzIzODczMjAyOTllNWZjM2RkOC4uYzky
MjNmZDg5ZGFlMjA3NTI0MjRhZjVjMGM3MTY5YTRkNDYzZjc2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMTQyLDYgKzE0Miw5
IEBAIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNlY3VyZVNjaGVtZXMo
KQogICAgICAgICAid3NzIl9zLAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQog
ICAgICAgICAicmVzb3VyY2UiX3MsCisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAg
ICAgIndlYmtpdC1wZGZqcy12aWV3ZXIiX3MsCiAjZW5kaWYKICAgICB9OwogICAgIHJldHVybiBz
Y2hlbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzZTk0NzczNTY2NGIyY2MxNDYxZTcxOTM3YTUzZDhh
OTQ0NmFlYmUuLjNjMTY5MGNiMzZiNzY5NTAyMzZmOTY0YmNhODkxN2RlY2Y3ZTJkZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKQEAgLTIzMSw2ICsyMzEsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAg
IH0KICNlbmRpZgogCisgICAgaWYgKHRyeUxvYWRpbmdVc2luZ1BERkpTSGFuZGxlcihyZXNvdXJj
ZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2lu
Z1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyIpOwogCkBAIC0yNjksNiArMjcyLDE4IEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxv
YWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2lu
Z1BERkpTSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFdlYlJl
c291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVycykKK3sK
KyAgICBpZiAoIXJlc291cmNlTG9hZGVyLmlzUERGSlNSZXNvdXJjZUxvYWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3Mp
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxl
ZCBhcyBhIFBERkpTIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJ0cnlMb2Fk
aW5nVXNpbmdQREZKU0hhbmRsZXI6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBQREZK
UyB1cmwgc2NoZW1lIGhhbmRsZXIiKTsKKworICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9h
ZGVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgYWRkUGFyYW1ldGVyc1No
YXJlZChjb25zdCBGcmFtZSogZnJhbWUsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewogICAgIHBhcmFtZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkID0gQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xl
dG9uKCkuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRl
eCAyMjkwZDk4N2MzNmY2ODI0NWIwOGZiMmI4NjMxOWQ0ZDVhNjhlNGEzLi5lMDdhMTVjNTllZDcz
NzhiMDgwNjlhNGE5YjkzMGUxODI1MzU3MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTk5LDcgKzk5LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGludGVybmFsbHlGYWlsZWRMb2FkVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc3RhcnRMb2NhbExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKICAgICBib29s
IHRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJik7Ci0gICAgCisg
ICAgYm9vbCB0cnlMb2FkaW5nVXNpbmdQREZKU0hhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJik7CisKICAg
ICBzdHJ1Y3QgU3luY0xvYWRSZXN1bHQgewogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yOwo=
</data>
<flag name="review"
          id="478301"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451553</attachid>
            <date>2022-02-10 09:43:11 -0800</date>
            <delta_ts>2022-02-10 09:50:45 -0800</delta_ts>
            <desc>[fast-cq] Patch for landing</desc>
            <filename>bug-236062-20220210184309.patch</filename>
            <type>text/plain</type>
            <size>19575</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFhYTcwMjkyYzhkMmI1
OGFhOTMxODFjZmM4YTFkODZiODA4YmYwNi4uNTczMDAxZmM1NTZiYmY4ZTQ1Y2UwMTgyOWVjNjlm
NWM2MWUzOWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTEwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYmtpdC1wZGZqcy12aWV3
ZXIgc2NoZW1lIGZvciBQREYuanMgcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNjIKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIFRoZSBjb2RlIGhhbmRsaW5nIHRoZSBzY2hlbWUgaXMgdW5k
ZXIgV2ViQ29yZTo6QnVuZGxlUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEl0IHJlYWRzIGZpbGVz
IGZyb20gdGhlIHBkZmpzLyBzdWItZm9sZGVyIGluIHRoZSBXZWJDb3JlLmZyYW1ld29yayByZXNv
dXJjZXMgZm9sZGVyLgorICAgICAgICBSaWdodCBub3csIHRoaXMgc3ViLWZvbGRlciBkb2VzIG5v
dCBleGlzdCB5ZXQsIGJ1dCB0aGlzIHNjaGVtZSBjYW4gYmUgdGVzdGVkIGJ5IG1hbnVhbGx5IHBv
cHVsYXRpbmcgaXQuCisKKyAgICAgICAgQnVnIDIzNTk4MSB3aWxsIHRha2UgY2FyZSBvZiBwb3B1
bGF0aW5nIHRoaXMgZm9sZGVyIGF0IGJ1aWxkLXRpbWUuCisKKyAgICAgICAgTm90ZTogVGhpcyBz
Y2hlbWUgY2FuIG9ubHkgYmUgbG9hZGVkIGluc2lkZSBhIFBERkRvY3VtZW50IDxpZnJhbWU+CisK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL1BERkRvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0J1bmRsZVJlc291cmNlTG9hZGVyLm1tOiBBZGRlZAorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5oOiBBZGRlZAorICAgICAgICAq
IGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmlzUERGSlNSZXNvdXJj
ZUxvYWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hl
bWVzKToKKwogMjAyMi0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIG1p
c2hhbmRsZXMgZmFpbHVyZSB0byBjcmVhdGUgV2ViS2l0VGV4dENvbWJpbmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGJiYjc1ZjUwMzQxYTI4NjI0M2FiYjA2MDRiYWU1M2NhNmJhMTY2NTUuLjM1ZjNjZDBjMDY0MWU3
ZTc5NjhhZjA5MjQ4MDRlOGFjYTE1YWZhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjItMDItMTAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
a2l0LXBkZmpzLXZpZXdlciBzY2hlbWUgZm9yIFBERi5qcyByZXNvdXJjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjA2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGhlIGNvZGUgaGFuZGxpbmcgdGhl
IHNjaGVtZSBpcyB1bmRlciBXZWJDb3JlOjpCdW5kbGVSZXNvdXJjZUxvYWRlci4KKyAgICAgICAg
SXQgcmVhZHMgZmlsZXMgZnJvbSB0aGUgcGRmanMvIHN1Yi1mb2xkZXIgaW4gdGhlIFdlYkNvcmUu
ZnJhbWV3b3JrIHJlc291cmNlcyBmb2xkZXIuCisgICAgICAgIFJpZ2h0IG5vdywgdGhpcyBzdWIt
Zm9sZGVyIGRvZXMgbm90IGV4aXN0IHlldCwgYnV0IHRoaXMgc2NoZW1lIGNhbiBiZSB0ZXN0ZWQg
YnkgbWFudWFsbHkgcG9wdWxhdGluZyBpdC4KKworICAgICAgICBCdWcgMjM1OTgxIHdpbGwgdGFr
ZSBjYXJlIG9mIHBvcHVsYXRpbmcgdGhpcyBmb2xkZXIgYXQgYnVpbGQtdGltZS4KKworICAgICAg
ICBOb3RlOiBUaGlzIHNjaGVtZSBjYW4gb25seSBiZSBsb2FkZWQgaW5zaWRlIGEgUERGRG9jdW1l
bnQgPGlmcmFtZT4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5n
UERGSlNIYW5kbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaDoKKwogMjAyMi0wMi0wOSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkF1dGhuXSBTcGVjaWZ5IExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3Vw
IHdoZW4gaW1wb3J0aW5nIGNyZWRlbnRpYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAz
M2E4OTY1MjBmNzhkNWI4M2NiODRmMTgxZmE3NmJlM2UxMDU0OTQyLi5mMWI3MzhlNTU2YWMzZDhi
ZDFlZDdhYWZhYjBjMjM4ZGRhOWQ3NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE4
Myw2ICsxODMsNyBAQCBoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQogaW5zcGVjdG9yL21h
Yy9QYWdlRGVidWdnZXJNYWMubW0KIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCitsb2FkZXIvY29j
b2EvQnVuZGxlUmVzb3VyY2VMb2FkZXIubW0KIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tCiBs
b2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5MjBkZTQwOTgwYzg1
NTkxNDNmNTJkMjJmNmU2YTgyZDNjNjUzOTYuLmU2MzdmM2ZkNjExZWQwYTFmN2JhNWNlYmIwMTY1
ZDU2NDNhM2VkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkzODQsNiArOTM4NCw4IEBACiAJCTQ5NTg3ODIwMTJBNTdEREYw
MDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTY5QjBGMDEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhp
dFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5NjlCMEYxMTNEMEIzM0YwMERGMzUyMSAvKiBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NzBGQzgwMjdCNTRERkEwMEMyNTAx
NyAvKiBCdW5kbGVSZXNvdXJjZUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRs
ZVJlc291cmNlTG9hZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTcwRkM4
MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVuZGxlUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OThBRUM1MTNGOUQw
RUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk4QUVDQjEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MDQ2LDYgKzI1MDQ4LDggQEAKIAkJN0U0REUxMEIxOThC
MTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0OTcwRkM4MTI3QjU0REZCMDBDMjUwMTcgLyogQnVuZGxlUmVzb3VyY2VM
b2FkZXIuaCAqLywKKwkJCQk0OTcwRkM4MDI3QjU0REZBMDBDMjUwMTcgLyogQnVuZGxlUmVzb3Vy
Y2VMb2FkZXIubW0gKi8sCiAJCQkJN0VEQUFGQzgxOUEyQ0JEMTAwMzRERkQxIC8qIERpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oICovLAogCQkJCTdFNERFMTBDMTk4QjEwQjYwMDUxQ0IwMiAvKiBEaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0gKi8sCiAJCQkJNTdGMUM4RTMyNURDNkVFNzAwRThGNkVBIC8q
IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9j
dW1lbnQuY3BwCmluZGV4IDNkODQwY2I2MjE0Nzc4MmFlYTJjMWU1NTNhMjBmYWY1ZjYxNjc1M2Eu
LmQxMjBjNWE5ZmU5Mjg3YmNhMzI4N2FiZGIwY2RmZDI0ZmU0ZWNhYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuY3BwCkBAIC05NCw4ICs5NCw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4g
UERGRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCkKIHsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSBhYm91dDpibGFuayB3
aXRoIGFjdHVhbCB2aWV3ZXIgVVJMCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAiYWJvdXQ6Ymxhbms/
ZmlsZT0iOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZq
cy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0iOwogICAgIGF1dG8gcm9vdEVsZW1lbnQgPSBIVE1MSHRt
bEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwog
ICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKaW5kZXggYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2ZjA3
NjY4NGYwZC4uYjI0ZjFkNDdkNGZiMDUxNWIzZDMwY2Y0Zjg2Mjg5NzBmN2U0MGZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTY5LDYgKzE2OSwxMyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogCiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKIAorICAgIC8vIE9ubHkgdGhlIFBERkRvY3Vt
ZW50IGlmcmFtZSBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIHRvIHdlYmtpdC1wZGZqcy12aWV3ZXIg
VVJMcworICAgIGJvb2wgaXNJblBERkRvY3VtZW50RnJhbWUgPSBtX2ZyYW1lLm93bmVyRWxlbWVu
dCgpICYmIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkuaXNQREZEb2N1bWVudCgp
OworICAgIGlmIChpc0luUERGRG9jdW1lbnRGcmFtZSAmJiByZXF1ZXN0LnVybCgpLnByb3RvY29s
SXMoIndlYmtpdC1wZGZqcy12aWV3ZXIiKSkgeworICAgICAgICBQT0xJQ1lDSEVDS0VSX1JFTEVB
U0VfTE9HKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSBQREZKUyBV
UkwiKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0
ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxvYWQpOworICAgIH0KKwogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVk
IFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KICAgICBpZiAoIXJlcXVlc3QuaXNO
dWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBkYzQyOTgwZTliMjVmNTllZGU2
MTdkMTg2M2RmNWJhNDY5NzZhNjE1Li4xYWRjM2MzY2RiOWJhZmY5YzQzMzYyMTM2ZGU4N2M2MDU3
MmZmZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTYzLDYgKzY0
LDEwIEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpbmNsdWRlICJCdW5kbGVSZXNvdXJjZUxvYWRlci5oIgorI2VuZGlmCisK
ICN1bmRlZiBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwogI2RlZmluZSBQQUdFX0lEICgoZnJh
bWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBhZ2VJRCgpKSA6IFBhZ2VJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZh
dWx0KGZyYW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkK
QEAgLTIzNCw2ICsyMzksMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGlzUERGSlNS
ZXNvdXJjZUxvYWQoKSkgeworICAgICAgICBCdW5kbGVSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291
cmNlRnJvbUJ1bmRsZSgqdGhpcywgInBkZmpzLyIpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29s
SXMoInJlc291cmNlIikpIHsKICAgICAgICAgbG9hZEdSZXNvdXJjZSgpOwpAQCAtODU1LDYgKzg2
NywxOSBAQCBib29sIFJlc291cmNlTG9hZGVyOjppc1F1aWNrTG9va1Jlc291cmNlKCkgY29uc3QK
IH0KICNlbmRpZgogCitib29sIFJlc291cmNlTG9hZGVyOjppc1BERkpTUmVzb3VyY2VMb2FkKCkg
Y29uc3QKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoIW1fcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJ3ZWJraXQtcGRmanMtdmlld2VyIikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5vd25lckVsZW1lbnQo
KSA/ICZmcmFtZSgpLT5vd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmlzUERGRG9jdW1lbnQoKSA6IGZhbHNlOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMTA5OGU0ZjI3ODg5Y2RhN2IzYTljZmQ0ZDU0NmFlMmZk
OWE3YzU2Zi4uZTU1MWQwZGMyMTk4MWI2ODljNDRhYzZkNjRlYTE2ODI4NGVkOTYyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE1OSw2ICsxNTksOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWZlcnJlZFJlcXVlc3QoKSBjb25zdCB7
IHJldHVybiBtX2RlZmVycmVkUmVxdWVzdDsgfQogICAgIFJlc291cmNlUmVxdWVzdCB0YWtlRGVm
ZXJyZWRSZXF1ZXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2RlZmVycmVkUmVxdWVzdCwg
eyB9KTsgfQogCisgICAgYm9vbCBpc1BERkpTUmVzb3VyY2VMb2FkKCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICBSZXNvdXJjZUxvYWRlcihGcmFtZSYsIFJlc291cmNlTG9hZGVyT3B0aW9ucyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggM2RiZDUz
MzhhZmU0OWI0Nzg1N2Q1MzQwOTc4ODc1MmVhYTFhZWQ0ZC4uMzlhMWE4OTY4MzA2MmIyYjgwN2E3
NzdkOWI3MzE4NThjZTkxODk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVzb3VyY2U7IH07CiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgSFRUUEhlYWRlck1hcCogb3JpZ2luYWxIZWFkZXJzKCkg
Y29uc3Q7CiAKLSAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW4u
Z2V0KCk7IH0KKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9v
cmlnaW4uZ2V0KCk7IH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc3RhcnRM
b2FkaW5nKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0J1bmRsZVJlc291cmNlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwMDlkOGFjOWI4Y2I2NWI1YmEw
MDFkNTNiYzczZjhjY2ExZjRlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9CdW5kbGVSZXNvdXJjZUxvYWRlci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3Vy
Y2VMb2FkZXI7CisKK25hbWVzcGFjZSBCdW5kbGVSZXNvdXJjZUxvYWRlciB7Cit2b2lkIGxvYWRS
ZXNvdXJjZUZyb21CdW5kbGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBTdHJpbmcmKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1bmRsZVJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0J1bmRsZVJlc291cmNlTG9h
ZGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3NTJjZDI3YTA5MzI4ZjA2Njk4MDBlOTlmNGEzMDRhZDhhMTgz
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvQnVuZGxl
UmVzb3VyY2VMb2FkZXIubW0KQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkJ1bmRsZVJlc291cmNlTG9hZGVy
LmgiCisKKyNpbXBvcnQgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKKyNpbXBvcnQgIlJlc291cmNlTG9hZGVy
LmgiCisjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBCdW5kbGVSZXNvdXJjZUxvYWRlciB7CisK
K3N0YXRpYyBXb3JrUXVldWUmIGxvYWRRdWV1ZSgpCit7CisgICAgc3RhdGljIGF1dG8mIHF1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIm9yZy5XZWJDb3JlLkJ1bmRsZVJlc291cmNlTG9hZGVyIiwg
V29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcXVldWU7Cit9
CisKK3ZvaWQgbG9hZFJlc291cmNlRnJvbUJ1bmRsZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
b25zdCBTdHJpbmcmIHN1YmRpcmVjdG9yeSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgbG9hZFF1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZExvYWRlciA9IFJlZiB7
IGxvYWRlciB9LCB1cmwgPSBsb2FkZXIucmVxdWVzdCgpLnVybCgpLmlzb2xhdGVkQ29weSgpLCBz
dWJkaXJlY3RvcnkgPSBzdWJkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gKnJlbGF0aXZlUGF0aCA9IFtzdWJkaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRp
bmdTdHJpbmc6IHVybC5wYXRoKCkudG9TdHJpbmcoKV07CisgICAgICAgIGF1dG8gKmJ1bmRsZSA9
IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07Cisg
ICAgICAgIGF1dG8gKnBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpyZWxhdGl2ZVBhdGgg
b2ZUeXBlOm5pbF07CisgICAgICAgIGF1dG8gKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6cGF0aF07CisKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZExvYWRlciA9IFdURk1vdmUocHJvdGVjdGVk
TG9hZGVyKSwgdXJsID0gV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgICAg
ICAgICAgcHJvdGVjdGVkTG9hZGVyLT5kaWRGYWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCB1cmwsICJVUkwgaXMgaW52YWxpZCJfcyB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRMb2FkZXIgPSBXVEZNb3ZlKHByb3RlY3RlZExv
YWRlciksIHVybCA9IFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSwgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIG1pbWVU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKHVybC5wYXRoKCkudG9TdHJp
bmcoKSk7CisgICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBtaW1l
VHlwZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihidWZmZXItPnNpemUoKSksIE1JTUVUeXBlUmVn
aXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKSA/ICJVVEYtOCJfcyA6IG51bGxwdHIgfTsK
KyAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CisgICAgICAgICAg
ICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOworICAgICAgICAgICAgcmVzcG9u
c2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CisKKyAgICAg
ICAgICAgIC8vIEFsbG93IGltYWdlcyB0byBsb2FkLgorICAgICAgICAgICAgcmVzcG9uc2UuYWRk
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sQWxsb3dPcmlnaW4s
ICIqIik7CisKKyAgICAgICAgICAgIHByb3RlY3RlZExvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5k
RGF0YShyZXNwb25zZSwgV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3Ry
eS5jcHAKaW5kZXggNDAyODUzYzQ4OTUyMzJmZjUzZGYyYzIzODczMjAyOTllNWZjM2RkOC4uYzky
MjNmZDg5ZGFlMjA3NTI0MjRhZjVjMGM3MTY5YTRkNDYzZjc2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMTQyLDYgKzE0Miw5
IEBAIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNlY3VyZVNjaGVtZXMo
KQogICAgICAgICAid3NzIl9zLAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQog
ICAgICAgICAicmVzb3VyY2UiX3MsCisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAg
ICAgIndlYmtpdC1wZGZqcy12aWV3ZXIiX3MsCiAjZW5kaWYKICAgICB9OwogICAgIHJldHVybiBz
Y2hlbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzZTk0NzczNTY2NGIyY2MxNDYxZTcxOTM3YTUzZDhh
OTQ0NmFlYmUuLjg5ZjViMDQ2OTY0NjA4ODdmM2NjNDYwNGJmYjJlMzk3OWYxYzdhZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKQEAgLTIzMSw2ICsyMzEsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAg
IH0KICNlbmRpZgogCisgICAgaWYgKHRyeUxvYWRpbmdVc2luZ1BERkpTSGFuZGxlcihyZXNvdXJj
ZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyLCB0cmFja2lu
Z1BhcmFtZXRlcnMpKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyIpOwogCkBAIC0yNjksNiArMjcyLDE4IEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxv
YWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2lu
Z1BERkpTSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFdlYlJl
c291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVycykKK3sK
KyAgICBpZiAoIXJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJ3ZWJr
aXQtcGRmanMtdmlld2VyIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBQREZKUyByZXNvdXJjZS4iLCByZXNv
dXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXRUJMT0FERVJT
VFJBVEVHWV9SRUxFQVNFX0xPRygidHJ5TG9hZGluZ1VzaW5nUERGSlNIYW5kbGVyOiBVUkwgd2ls
bCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgUERGSlMgdXJsIHNjaGVtZSBoYW5kbGVyIik7CisKKyAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyB2b2lkIGFkZFBhcmFtZXRlcnNTaGFyZWQoY29uc3QgRnJhbWUqIGZyYW1lLCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBwYXJhbWV0ZXJz
LmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMjI5MGQ5ODdjMzZmNjgyNDViMDhmYjJiODYz
MTlkNGQ1YTY4ZTRhMy4uZTA3YTE1YzU5ZWQ3Mzc4YjA4MDY5YTRhOWI5MzBlMTgyNTM1NzA4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCkBAIC05OSw3ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRlcm5hbGx5
RmFpbGVkTG9hZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0TG9jYWxMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJik7CiAgICAgYm9vbCB0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5k
bGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRy
YWNraW5nUGFyYW1ldGVycyYpOwotICAgIAorICAgIGJvb2wgdHJ5TG9hZGluZ1VzaW5nUERGSlNI
YW5kbGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6
OlRyYWNraW5nUGFyYW1ldGVycyYpOworCiAgICAgc3RydWN0IFN5bmNMb2FkUmVzdWx0IHsKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>