<?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>204204</bug_id>
          
          <creation_ts>2019-11-14 15:15:38 -0800</creation_ts>
          <short_desc>Changes to clip-path and filter SVG elements referenced by CSS don&apos;t trigger repaints</short_desc>
          <delta_ts>2021-09-02 16:55:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196731</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202643</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126207</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ben</cc>
    
    <cc>b.houdusse</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1590340</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-14 15:15:38 -0800</bug_when>
    <thetext>Attachment shows a bug where a dynamic change to a polygon used in -webkit-clip-path doesn&apos;t trigger a repaint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590341</commentid>
    <comment_count>1</comment_count>
      <attachid>383576</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-14 15:15:55 -0800</bug_when>
    <thetext>Created attachment 383576
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590346</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-14 15:24:03 -0800</bug_when>
    <thetext>Dirk, how is this supposed to work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590353</commentid>
    <comment_count>3</comment_count>
    <who name="bdc">ben</who>
    <bug_when>2019-11-14 15:53:08 -0800</bug_when>
    <thetext>Thanks Simon!

Just to clarify: this bug happens no matter if it&apos;s a polygon, a path, etc. used as a clip-path but, I&apos;m sure you figured that out :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590440</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-11-14 23:30:00 -0800</bug_when>
    <thetext>Simon, there is no mechanism that could handle the update.
Support for -webkit-clip-path referencing SVG elements is really a snapshot.
The referenced object knows nothing about a CSS Clip-path that makes use of it.
For SVG clipPath elements these updates would be handled via the SVGResources mechanism...

We should investigate to re-use this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788779</commentid>
    <comment_count>5</comment_count>
      <attachid>436842</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-30 20:57:41 -0700</bug_when>
    <thetext>Created attachment 436842
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788958</commentid>
    <comment_count>6</comment_count>
      <attachid>436905</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-31 10:30:19 -0700</bug_when>
    <thetext>Created attachment 436905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789143</commentid>
    <comment_count>7</comment_count>
      <attachid>436960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-31 16:11:07 -0700</bug_when>
    <thetext>Created attachment 436960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789148</commentid>
    <comment_count>8</comment_count>
      <attachid>436960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-31 16:21:11 -0700</bug_when>
    <thetext>Comment on attachment 436960
Patch

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

&gt; Source/WebCore/rendering/RenderElement.cpp:2300
&gt; +// This needs to run when the entire render tree has been constructed, so can&apos;t be called from styleDidChange.

This comment is wrong (the code just looks for elements now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789269</commentid>
    <comment_count>9</comment_count>
      <attachid>436960</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-01 02:03:07 -0700</bug_when>
    <thetext>Comment on attachment 436960
Patch

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

r=me with stable test

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:39
&gt; +class CSSSVGResourceElementClient final : public SVGResourceElementClient {

Why subclassing? Do we expect other SVGResourceElementClients?

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:50
&gt; +    RenderElement&amp; m_clientRenderer;

Ryosuke would tell you to use WeakPtr

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:92
&gt; +HashMap&lt;AtomString, QualifiedName&gt; ReferencedSVGResources::referencedSVGResourceIDs(const RenderStyle&amp; style)
&gt; +{
&gt; +    HashMap&lt;AtomString, QualifiedName&gt; referencedResourceIDToTagNameMap;
&gt; +    if (is&lt;ReferenceClipPathOperation&gt;(style.clipPath())) {
&gt; +        auto&amp; clipPath = downcast&lt;ReferenceClipPathOperation&gt;(*style.clipPath());
&gt; +        if (!clipPath.fragment().isEmpty())
&gt; +            referencedResourceIDToTagNameMap.add(clipPath.fragment(), SVGNames::clipPathTag);
&gt; +    }

Wouldn&apos;t HashSet&lt;std::pair&lt;AtomString, QualifiedName&gt;&gt; be a more natural type for this? Or just Vector&lt;std::pair&lt;&gt;&gt; as they are going to be stuffed into a HashMap later anyway.

I think with HashMap referencing a wrong type with a fragment breaks any further correct use of the the same fragment.

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:123
&gt; +        m_elementClients.ensure(targetID, [&amp;] {
&gt; +            auto client = WTF::makeUnique&lt;CSSSVGResourceElementClient&gt;(m_renderer);
&gt; +            element-&gt;addReferencingCSSClient(*client);
&gt; +            return client;
&gt; +        });

For symmetry it might be nice to have helper for add case too (to pair with removeClientForTarget)

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:133
&gt; +// SVG code uses getRenderSVGResourceById&lt;&gt;, but that works in terms of renderers. We need to find resources
&gt; +// before the render tree is fully constructed, so this works on Elements.

It seems unfortunate to have two mechanisms for this. Like how do we even know they produce the same results? Can we have just one?

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:147
&gt; +    if (referenceFilter.fragment().isEmpty())
&gt; +        return nullptr;
&gt; +    AtomString targetID = referenceFilter.fragment();

could either move the local to the beginning and test for it, or just get rid of it entirely.

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:156
&gt; +    if (clipPath.fragment().isEmpty())
&gt; +        return nullptr;
&gt; +    AtomString targetID = clipPath.fragment();

Same here.

&gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:158
&gt; +    // For some reason, SVG stores a cache of id -&gt; renderer, rather than just using getElementById() and renderer().
&gt; +    return getRenderSVGResourceById&lt;RenderSVGResourceClipper&gt;(document, targetID);

y tho</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789792</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-02 11:21:00 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #9)
&gt; Comment on attachment 436960 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436960&amp;action=review
&gt; 
&gt; r=me with stable test
&gt; 
&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:39
&gt; &gt; +class CSSSVGResourceElementClient final : public SVGResourceElementClient {
&gt; 
&gt; Why subclassing? Do we expect other SVGResourceElementClients?

I wanted to avoid adding more Renderer references to Element code (for LFC).

&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:50
&gt; &gt; +    RenderElement&amp; m_clientRenderer;
&gt; 
&gt; Ryosuke would tell you to use WeakPtr

I could, though the lifetime of this object is strongly tied to the Renderer.


&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:92
&gt; &gt; +HashMap&lt;AtomString, QualifiedName&gt; ReferencedSVGResources::referencedSVGResourceIDs(const RenderStyle&amp; style)
&gt; &gt; +{
&gt; &gt; +    HashMap&lt;AtomString, QualifiedName&gt; referencedResourceIDToTagNameMap;
&gt; &gt; +    if (is&lt;ReferenceClipPathOperation&gt;(style.clipPath())) {
&gt; &gt; +        auto&amp; clipPath = downcast&lt;ReferenceClipPathOperation&gt;(*style.clipPath());
&gt; &gt; +        if (!clipPath.fragment().isEmpty())
&gt; &gt; +            referencedResourceIDToTagNameMap.add(clipPath.fragment(), SVGNames::clipPathTag);
&gt; &gt; +    }
&gt; 
&gt; Wouldn&apos;t HashSet&lt;std::pair&lt;AtomString, QualifiedName&gt;&gt; be a more natural
&gt; type for this? Or just Vector&lt;std::pair&lt;&gt;&gt; as they are going to be stuffed
&gt; into a HashMap later anyway.
&gt; 
&gt; I think with HashMap referencing a wrong type with a fragment breaks any
&gt; further correct use of the the same fragment.

Good point, I&apos;ll make a test for that and fix this.

&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:133
&gt; &gt; +// SVG code uses getRenderSVGResourceById&lt;&gt;, but that works in terms of renderers. We need to find resources
&gt; &gt; +// before the render tree is fully constructed, so this works on Elements.
&gt; 
&gt; It seems unfortunate to have two mechanisms for this. Like how do we even
&gt; know they produce the same results? Can we have just one?

I wish I knew. This is historical SVG resource cruft.

&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:147
&gt; &gt; +    if (referenceFilter.fragment().isEmpty())
&gt; &gt; +        return nullptr;
&gt; &gt; +    AtomString targetID = referenceFilter.fragment();
&gt; 
&gt; could either move the local to the beginning and test for it, or just get
&gt; rid of it entirely.

Right.

&gt; &gt; Source/WebCore/rendering/ReferencedSVGResources.cpp:158
&gt; &gt; +    // For some reason, SVG stores a cache of id -&gt; renderer, rather than just using getElementById() and renderer().
&gt; &gt; +    return getRenderSVGResourceById&lt;RenderSVGResourceClipper&gt;(document, targetID);
&gt; 
&gt; y tho

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789813</commentid>
    <comment_count>11</comment_count>
      <attachid>437177</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-02 11:59:36 -0700</bug_when>
    <thetext>Created attachment 437177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789982</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-02 16:54:37 -0700</bug_when>
    <thetext>Committed r281967 (241274@main): &lt;https://commits.webkit.org/241274@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437177.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789984</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-02 16:55:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/82699249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>383576</attachid>
            <date>2019-11-14 15:15:55 -0800</date>
            <delta_ts>2019-11-14 15:15:55 -0800</delta_ts>
            <desc>Test</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>565</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPlRlc3Q8L3RpdGxl
PgoKPHN0eWxlPgogIGJvZHkgewogICAgbWFyZ2luOiAwOwogIH0KICBkaXYgewogICAgaGVpZ2h0
OiA1MDBweDsKICAgIGJhY2tncm91bmQ6IGJsYWNrOwogICAgLXdlYmtpdC1jbGlwLXBhdGg6IHVy
bCgjY2xpcCk7CiAgfQogIHN2ZyB7CiAgICB3aWR0aDogMDsKICAgIGhlaWdodDogMDsKICB9Cjwv
c3R5bGU+Cgo8ZGl2PjwvZGl2PgoKPHN2ZyB2aWV3Qm94PSIwIDAgMSAxIj4KICA8Y2xpcFBhdGgg
aWQ9ImNsaXAiIGNsaXBQYXRoVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KICAgIDxwb2x5Z29u
IHBvaW50cz0iMCwwIDAuNSwwLjUgMSwwIiAvPgogIDwvY2xpcFBhdGg+Cjwvc3ZnPgoKPHNjcmlw
dD4KICBjb25zdCBwb2x5Z29uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigicG9seWdvbiIpOwog
IGNvbnN0IHBvaW50cyA9ICIwLDAgMC41LDEgMSwwIjsKICBzZXRUaW1lb3V0KCgpID0+IHBvbHln
b24uc2V0QXR0cmlidXRlKCJwb2ludHMiLCBwb2ludHMpLCAyMDAwKTsKPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436842</attachid>
            <date>2021-08-30 20:57:41 -0700</date>
            <delta_ts>2021-08-31 10:30:17 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-204204-20210830205740.patch</filename>
            <type>text/plain</type>
            <size>35773</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwMTU2NTA4NWU3NDZi
MDAzOWE5OGJjYjhkODE3NGIzYjBlYmE5Zi4uNTBlYWVhNzZiZDA3ZGI4NzA1MWVlZjg5MDU0MzBi
YjkzOWZmYzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA4LTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0aW5nIGEg
cG9seWdvbiByZWZlcmVuY2VkIGJ5IGNsaXAtcGF0aCBkb2Vzbid0IHJlcGFpbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDIwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDo6cmVzb3VyY2VDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6
flJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNW
R1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRTVkdSZXNvdXJjZUlEcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRhdGVSZWZlcmVuY2VkUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OmVsZW1lbnRG
b3JSZXNvdXJjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6
OnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmVu
c3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6Y2xlYXJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphcHBseUZpbHRlcnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpSZW5kZXJPYmplY3RSYXJlRGF0YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6UmVuZGVyT2JqZWN0UmFyZURhdGE6OlJlbmRlck9iamVjdFJhcmVEYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnJlZmVyZW5jaW5nQ1NTQ2xpZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjphZGRSZWZlcmVuY2luZ0NTU0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpyZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVudCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6cmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpyZWZlcmVuY2luZ0NT
U0NsaWVudHMgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQu
aDogQWRkZWQuCisKIDIwMjEtMDgtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGVmaW5lIEVOQUJMRV9DT05URU5UX0NIQU5HRV9PQlNFUlZFUiBm
b3IgSU9TX0ZBTUlMWSBhbmQgdXNlIGl0IHRvIHdyYXAgY29udGVudCBvYnNlcnZhdGlvbiBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGY0MGQ0OGJlMDYxN2Y5ZjI0ZDMxN2IxZDM1M2QwYTc0OGY2M2Zl
Y2UuLmYwODZjMTBlOTRkNThjMTAwOTE1OTQ5OTNjYWUwODNkNTc4NzM3Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yMTgwLDYgKzIxODAsNyBAQCByZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5j
cHAKIHJlbmRlcmluZy9NYXJrZWRUZXh0LmNwcAogcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3Bw
CiByZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAorcmVuZGVyaW5nL1JlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMuY3BwCiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MTZmYTAzYzZhZTEyY2I3MWJhNTdkMmNlNmJjNWFjNGE4MzllYmRhZi4uM2Q4YzdmNjk4ZGUwY2My
NDhlNmVlMjMwYzk5NmRiODFiZjU3ZmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjI5MSw2ICs2MjkxLDkgQEAKIAkJMEZC
RkNFMjYyNTZDQkQ5QTAwQTBCNDg5IC8qIERpc3BsYXlCb3hDbGlwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlCb3hDbGlwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA1MTY4
MjE5QjVFQkUwMDMxQzM5RSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDUxNkEyMTlCNUVC
RTAwMzFDMzlFIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyNzZCODI2REFGOUI3MDA5M0U4RUQgLyogUmVm
ZXJlbmNlZFNWR1Jlc291cmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzI3NkJBMjZEQUY5RTkwMDkz
RThFRCAvKiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkMyNzZCQzI2REIxOTAwMDA5M0U4RUQgLyogU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1Jlc291cmNlRWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkM0QjAwNDIyQjlBMDJDMDBDRjNCMUUgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkM0QjAwNTIyQjlBMDJEMDBDRjNCMUUgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM2OTJCQTI1N0MwRjQwMDA5OEUzRjkgLyogU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRpb25LaW5ldGlj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI4Miw2ICsyNjI4NSw3IEBACiAJ
CQkJQjIyMjc5MDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50LmlkbCAqLywKIAkJ
CQlCMjIyNzkwQTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUmVuZGVyaW5nSW50ZW50LmggKi8sCiAJ
CQkJQjIyMjc5MEIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1JlbmRlcmluZ0ludGVudC5pZGwgKi8s
CisJCQkJMEZDMjc2QkMyNkRCMTkwMDAwOTNFOEVEIC8qIFNWR1Jlc291cmNlRWxlbWVudENsaWVu
dC5oICovLAogCQkJCUIyMjI3OTBDMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50
LmNwcCAqLywKIAkJCQlCMjIyNzkwRDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxlbWVu
dC5oICovLAogCQkJCUIyMjI3OTBFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50
LmlkbCAqLywKQEAgLTI5NTE0LDYgKzI5NTE4LDggQEAKIAkJCQkwODg1MDY3RTExREEwNDVCMDAx
ODJCOTggLyogUGFpbnRQaGFzZS5oICovLAogCQkJCUIyQjFGNzE0MEQwMENBQTgwMDRBRUE2NCAv
KiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovLAogCQkJCUIyQjFGNzE1MEQwMENBQTgwMDRB
RUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCAqLywKKwkJCQkwRkMyNzZCQTI2REFGOUU5
MDA5M0U4RUQgLyogUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAgKi8sCisJCQkJMEZDMjc2Qjgy
NkRBRjlCNzAwOTNFOEVEIC8qIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaCAqLywKIAkJCQlCNTlF
RDIzQTE4MjcyNjc5MDA2RDU2NEMgLyogUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oICovLAogCQkJ
CTdDRDQ5NENBMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmNwcCAqLywKIAkJ
CQk3Q0Q0OTRDQjFBODZFQjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5oICovLApAQCAt
MzI0NDMsNiArMzI0NDksNyBAQAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUwNzUwMiAvKiBJbmxp
bmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlFRDMyNzAwQzU5OTRF
IC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjI0MDA1MjNERkYxMjgwMDc5
NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMUMzMjI3RDI2RDk1
OENFMDAzMjhGNEQgLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGNkVFNzQzMjZENDRFRTMwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5l
TGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZF
QSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzMzMDksNyArMzMz
MTYsNiBAQAogCQkJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxN0I0OTIxMTZBOUI4RkYwMDFDODgzOSAvKiBKU1RyYW5zaXRp
b25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBENUQwQTkwREVFMTAwMEZGMjE1IC8q
IEpTVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTFDMzIyN0QyNkQ5NThDRTAwMzI4
RjREIC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlD
RjA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjUz
MDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggM2Jm
Nzg2Y2NmZTMyNGU2NDY2MjUyMGZhNzZiNzI0NGY5ZWI2ZDQwMy4uNjRlOTgzODRhZjAwNGVmNjk5
YmM2MmU2YTZjOTc3NTZmNTljNjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGRU1lcmdlLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKQEAgLTcy
LDI2ICs3MywxNCBAQCBHcmFwaGljc0NvbnRleHQqIENTU0ZpbHRlcjo6aW5wdXRDb250ZXh0KCkK
IAogUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCwgUmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJPcGVyYXRpb24pCiB7Ci0gICAgYXV0byogY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBmaWx0ZXJPcGVyYXRpb24uY2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UoKTsKLSAgICBhdXRvKiBjYWNoZWRTVkdEb2N1bWVudCA9IGNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlID8gY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmRvY3VtZW50KCkg
OiBudWxscHRyOwotCi0gICAgLy8gSWYgd2UgaGF2ZSBhbiBTVkcgZG9jdW1lbnQsIHRoaXMgaXMg
YW4gZXh0ZXJuYWwgcmVmZXJlbmNlLiBPdGhlcndpc2UKLSAgICAvLyB3ZSBsb29rIHVwIHRoZSBy
ZWZlcmVuY2VkIG5vZGUgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50OwotICAgIGlmICghY2FjaGVkU1ZHRG9jdW1lbnQpCi0gICAgICAgIGRvY3VtZW50ID0g
JnJlbmRlcmVyLmRvY3VtZW50KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50ID0gY2Fj
aGVkU1ZHRG9jdW1lbnQtPmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRvKiBmaWx0ZXIgPSBkb2N1
bWVudC0+Z2V0RWxlbWVudEJ5SWQoZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCkpOwotICAgIGlm
ICghZmlsdGVyKSB7CisgICAgYXV0byogZmlsdGVyRWxlbWVudCA9IHJlbmRlcmVyLmVuc3VyZVJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMoKS5yZWZlcmVuY2VkRmlsdGVyRWxlbWVudChyZW5kZXJlci5k
b2N1bWVudCgpLCBmaWx0ZXJPcGVyYXRpb24pOworICAgIGlmICghZmlsdGVyRWxlbWVudCkgewor
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJDU1NGaWx0ZXIgIiA8
PCB0aGlzIDw8ICIgYnVpbGRSZWZlcmVuY2VGaWx0ZXI6IGZhaWxlZCB0byBmaW5kIGZpbHRlciBy
ZW5kZXJlciwgYWRkaW5nIHBlbmRpbmcgcmVzb3VyY2UgIiA8PCBmaWx0ZXJPcGVyYXRpb24uZnJh
Z21lbnQoKSk7CiAgICAgICAgIC8vIEFsdGhvdWdoIHdlIGRpZCBub3QgZmluZCB0aGUgcmVmZXJl
bmNlZCBmaWx0ZXIsIGl0IG1pZ2h0IGV4aXN0IGxhdGVyIGluIHRoZSBkb2N1bWVudC4KICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2tpcHMgYW5vbnltb3VzIFJlbmRlck9iamVjdHMuIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMzEwODU+CisgICAgICAgIC8vIEZJWE1FOiBVbmNsZWFyIGlmIHRoaXMg
ZG9lcyBhbnl0aGluZy4KICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVt
ZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFBl
bmRpbmdSZXNvdXJjZShmaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSwgKmVsZW1lbnQpOworICAg
ICAgICAgICAgcmVuZGVyZXIuZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkUGVu
ZGluZ1Jlc291cmNlKGZpbHRlck9wZXJhdGlvbi5mcmFnbWVudCgpLCAqZWxlbWVudCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTAxLDcgKzkwLDcgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgRmkKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7CiAgICAgVmVj
dG9yPFJlZjxGaWx0ZXJFZmZlY3Q+PiByZWZlcmVuY2VFZmZlY3RzOwogCi0gICAgZm9yIChhdXRv
JiBlZmZlY3RFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzPigqZmlsdGVyKSkgeworICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6
IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZp
bHRlckVsZW1lbnQpKSB7CiAgICAgICAgIGVmZmVjdCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQoYnVp
bGRlci5nZXQoKSwgKnRoaXMpOwogICAgICAgICBpZiAoIWVmZmVjdCkgewogICAgICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8
PCAiIGJ1aWxkUmVmZXJlbmNlRmlsdGVyOiBmYWlsZWQgdG8gYnVpbGQgZWZmZWN0IGZyb20gIiA8
PCBlZmZlY3RFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmM2YTdiYTYwYTk5ZTJmNTg0MGJi
Y2NhOTNhMzE2ZjdlOWMxNWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZmVyZW5jZWRTVkdSZXNv
dXJjZXMuaCIKKworI2luY2x1ZGUgIkNsaXBQYXRoT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIgor
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKKyNpbmNsdWRlICJTVkdDbGlwUGF0aEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdSZXNv
dXJjZUVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NT
VkdSZXNvdXJjZUVsZW1lbnRDbGllbnQgZmluYWwgOiBwdWJsaWMgU1ZHUmVzb3VyY2VFbGVtZW50
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU1NWR1Jlc291cmNlRWxlbWVu
dENsaWVudCk7CitwdWJsaWM6CisgICAgQ1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50KFJlbmRl
ckVsZW1lbnQmIGNsaWVudFJlbmRlcmVyKQorICAgICAgICA6IG1fY2xpZW50UmVuZGVyZXIoY2xp
ZW50UmVuZGVyZXIpCisgICAgeworICAgIH0KKworICAgIHZvaWQgcmVzb3VyY2VDaGFuZ2VkKFNW
R0VsZW1lbnQmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZW5kZXJFbGVtZW50JiBtX2NsaWVu
dFJlbmRlcmVyOworfTsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU1NWR1Jlc291
cmNlRWxlbWVudENsaWVudCk7CisKK3ZvaWQgQ1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Ojpy
ZXNvdXJjZUNoYW5nZWQoU1ZHRWxlbWVudCYpCit7CisgICAgbV9jbGllbnRSZW5kZXJlci5yZXBh
aW50KCk7Cit9CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzKTsKKworUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6UmVmZXJlbmNlZFNWR1Jlc291cmNl
cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCit7
Cit9CisKK1JlZmVyZW5jZWRTVkdSZXNvdXJjZXM6On5SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkK
K3sKKyAgICBhdXRvJiBkb2N1bWVudCA9IG1fcmVuZGVyZXIuZG9jdW1lbnQoKTsKKyAgICAKKyAg
ICBmb3IgKGF1dG8mIHRhcmdldElEIDogY29weVRvVmVjdG9yKG1fZWxlbWVudENsaWVudHMua2V5
cygpKSkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KGRvY3VtZW50LCB0YXJnZXRJRCk7
Cit9CisKK3ZvaWQgUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgdGFyZ2V0SUQpCit7CisgICAg
YXV0byBjbGllbnQgPSBtX2VsZW1lbnRDbGllbnRzLnRha2UodGFyZ2V0SUQpOworCisgICAgYXV0
byogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldElEKTsKKyAg
ICBpZiAoaXM8U1ZHRWxlbWVudD4odGFyZ2V0RWxlbWVudCkpCisgICAgICAgIGRvd25jYXN0PFNW
R0VsZW1lbnQ+KCp0YXJnZXRFbGVtZW50KS5yZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVudCgqY2xp
ZW50KTsKK30KKworSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBSZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkU1ZHUmVzb3VyY2VJRHMoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQoreworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gcmVmZXJl
bmNlZFJlc291cmNlSURUb1RhZ05hbWVNYXA7CisgICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRo
T3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgeworICAgICAgICBhdXRvJiBjbGlwUGF0aCA9
IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7
CisgICAgICAgIHJlZmVyZW5jZWRSZXNvdXJjZUlEVG9UYWdOYW1lTWFwLmFkZChjbGlwUGF0aC5m
cmFnbWVudCgpLCBTVkdOYW1lczo6Y2xpcFBhdGhUYWcpOworICAgIH0KKworICAgIGlmIChzdHls
ZS5oYXNGaWx0ZXIoKSkgeworICAgICAgICBjb25zdCBhdXRvJiBmaWx0ZXJPcGVyYXRpb25zID0g
c3R5bGUuZmlsdGVyKCk7CisgICAgICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogZmlsdGVyT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkpIHsKKyAgICAgICAgICAgIGF1dG8mIGZpbHRlck9wZXJhdGlv
biA9ICpvcGVyYXRpb247CisgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1
dG8mIHJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VkUmVz
b3VyY2VJRFRvVGFnTmFtZU1hcC5hZGQocmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50
KCksIFNWR05hbWVzOjpmaWx0ZXJUYWcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiByZWZlcmVuY2VkUmVzb3VyY2VJRFRvVGFnTmFtZU1hcDsKK30KKwordm9p
ZCBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRhdGVSZWZlcmVuY2VkUmVzb3VyY2VzKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiYg
cmVmZXJlbmNlZFJlc291cmNlSURzKQoreworICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gb2xkS2V5
czsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1fZWxlbWVudENsaWVudHMua2V5cygpKQorICAgICAg
ICBvbGRLZXlzLmFkZChrZXkpOworCisgICAgZm9yIChhdXRvJiBbdGFyZ2V0SUQsIHRhZ05hbWVd
IDogcmVmZXJlbmNlZFJlc291cmNlSURzKSB7CisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVt
ZW50Rm9yUmVzb3VyY2VJRChkb2N1bWVudCwgdGFyZ2V0SUQsIHRhZ05hbWUpOworICAgICAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBtX2VsZW1lbnRD
bGllbnRzLmVuc3VyZSh0YXJnZXRJRCwgWyZdIHsKKyAgICAgICAgICAgIGF1dG8gY2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+KG1fcmVuZGVyZXIp
OworICAgICAgICAgICAgZWxlbWVudC0+YWRkUmVmZXJlbmNpbmdDU1NDbGllbnQoKmNsaWVudCk7
CisgICAgICAgICAgICByZXR1cm4gY2xpZW50OworICAgICAgICB9KTsKKyAgICAgICAgCisgICAg
ICAgIG9sZEtleXMucmVtb3ZlKHRhcmdldElEKTsKKyAgICB9CisgICAgCisgICAgZm9yIChhdXRv
JiB0YXJnZXRJRCA6IG9sZEtleXMpCisgICAgICAgIHJlbW92ZUNsaWVudEZvclRhcmdldChkb2N1
bWVudCwgdGFyZ2V0SUQpOworfQorCisvLyBTVkcgY29kZSB1c2VzIGdldFJlbmRlclNWR1Jlc291
cmNlQnlJZDw+LCBidXQgdGhhdCB3b3JrcyBpbiB0ZXJtcyBvZiByZW5kZXJlcnMuIFdlIG5lZWQg
dG8gZmluZCByZXNvdXJjZXMKKy8vIGJlZm9yZSB0aGUgcmVuZGVyIHRyZWUgaXMgZnVsbHkgY29u
c3RydWN0ZWQsIHNvIHRoaXMgd29ya3Mgb24gRWxlbWVudHMuCitTVkdFbGVtZW50KiBSZWZlcmVu
Y2VkU1ZHUmVzb3VyY2VzOjplbGVtZW50Rm9yUmVzb3VyY2VJRChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEF0b21TdHJpbmcmIHJlc291cmNlSUQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUpCit7CisgICAgYXV0byogZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJlc291
cmNlSUQpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aGFzVGFnTmFtZSh0YWdOYW1l
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIAorICAgIHJldHVybiBkb3duY2Fz
dDxTVkdFbGVtZW50PihlbGVtZW50KTsKK30KKworU1ZHRmlsdGVyRWxlbWVudCogUmVmZXJlbmNl
ZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZEZpbHRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIHJlZmVyZW5jZUZpbHRlcikKK3sKKyAg
ICBBdG9tU3RyaW5nIHRhcmdldElEID0gcmVmZXJlbmNlRmlsdGVyLmZyYWdtZW50KCk7CisgICAg
YXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JSZXNvdXJjZUlEKGRvY3VtZW50LCB0YXJnZXRJRCwg
U1ZHTmFtZXM6OmZpbHRlclRhZyk7CisgICAgcmV0dXJuIGVsZW1lbnQgPyBkb3duY2FzdDxTVkdG
aWx0ZXJFbGVtZW50PihlbGVtZW50KSA6IG51bGxwdHI7Cit9CisKK1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlciogUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZENsaXBwZXJSZW5kZXJl
cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uJiBj
bGlwUGF0aCkKK3sKKyAgICBBdG9tU3RyaW5nIHRhcmdldElEID0gY2xpcFBhdGguZnJhZ21lbnQo
KTsKKyAgICAvLyBGb3Igc29tZSByZWFzb24sIFNWRyBzdG9yZXMgYSBjYWNoZSBvZiBpZCAtPiBy
ZW5kZXJlciwgcmF0aGVyIHRoYW4ganVzdCB1c2luZyBnZXRFbGVtZW50QnlJZCgpIGFuZCByZW5k
ZXJlcigpLgorICAgIHJldHVybiBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyPihkb2N1bWVudCwgdGFyZ2V0SUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNW
R1Jlc291cmNlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNv
dXJjZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZjJmNzg1NTVmOGM3OWZiY2Q3ZWZkY2I1NjAwMmZmNzM2YzYy
NTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDsKK2NsYXNzIFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uOworY2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOworY2xh
c3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOworY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI7CitjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBTVkdF
bGVtZW50OworY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKKworY2xhc3MgUmVmZXJlbmNlZFNWR1Jl
c291cmNlcyB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzKTsKK3B1YmxpYzoKKyAgICBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQm
KTsKKyAgICB+UmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOworCisgICAgc3RhdGljIEhhc2hNYXA8
QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gcmVmZXJlbmNlZFNWR1Jlc291cmNlSURzKGNvbnN0
IFJlbmRlclN0eWxlJik7CisgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkUmVzb3VyY2VzKERvY3Vt
ZW50JiwgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiYpOworCisgICAg
Ly8gQ2xpcHBpbmcgbmVlZHMgYSByZW5kZXJlciwgZmlsdGVycyB1c2UgYW4gZWxlbWVudC4KKyAg
ICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIHJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIoRG9j
dW1lbnQmLCBjb25zdCBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiYpOworICAgIFNWR0ZpbHRl
ckVsZW1lbnQqIHJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KERvY3VtZW50JiwgY29uc3QgUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uJik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFNWR0VsZW1lbnQq
IGVsZW1lbnRGb3JSZXNvdXJjZUlEKERvY3VtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgcmVzb3Vy
Y2VJRCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSk7CisgICAgdm9pZCByZW1vdmVDbGll
bnRGb3JUYXJnZXQoRG9jdW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJik7CisKKyAgICBSZW5kZXJF
bGVtZW50JiBtX3JlbmRlcmVyOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudD4+IG1fZWxlbWVudENsaWVudHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKaW5kZXggOTQ0ZjhlOGUzZGRlODQyNDA1YTNmMmExN2M4ZjVhNTM3NmNjYjQ2
Ny4uNDAwYjExNmFlNWVmYjUzOWFhYjRjZGM1ZGMxOWVjYWIzNzU3YzEzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF0aFV0aWxp
dGllcy5oIgorI2luY2x1ZGUgIlJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJS
ZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJSZW5kZXJDb3VudGVyLmgiCkBAIC02Nyw2ICs2OCw4IEBACiAjZW5kaWYKICNpbmNsdWRlICJS
ZW5kZXJGcmFnbWVudENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNhcHRpb24uaCIKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgpAQCAtMjI3
Niw2ICsyMjc5LDMzIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cmVzZXRFbmNsb3NpbmdGcmFnbWVu
dGVkRmxvd0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRzCiAgICAgICAgIGNoaWxkLnJl
c2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRDaGlsZEluZm9JbmNsdWRpbmdEZXNjZW5kYW50
cyhmcmFnbWVudGVkRmxvdyk7CiB9CiAKK1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMmIFJlbmRlckVs
ZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKQoreworICAgIGF1dG8mIHJhcmVE
YXRhID0gZW5zdXJlUmFyZURhdGEoKTsKKyAgICBpZiAoIXJhcmVEYXRhLnJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXMpCisgICAgICAgIHJhcmVEYXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM+KCp0aGlzKTsKKyAgICAgICAgCisg
ICAgcmV0dXJuICpyYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOworfQorCit2b2lkIFJl
bmRlckVsZW1lbnQ6OmNsZWFyUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpCit7CisgICAgaWYgKCFo
YXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBlbnN1cmVSYXJlRGF0YSgpLnJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBudWxscHRyOworfQorCisvLyBUaGlzIG5lZWRzIHRvIHJ1
biB3aGVuIHRoZSBlbnRpcmUgcmVuZGVyIHRyZWUgaGFzIGJlZW4gY29uc3RydWN0ZWQsIHNvIGNh
bid0IGJlIGNhbGxlZCBmcm9tIHN0eWxlRGlkQ2hhbmdlLgordm9pZCBSZW5kZXJFbGVtZW50Ojp1
cGRhdGVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKK3sKKyAgICBhdXRvIHJlZmVyZW5jZWRFbGVt
ZW50SURzID0gUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZFNWR1Jlc291cmNlSURz
KHN0eWxlKCkpOworICAgIGlmICghcmVmZXJlbmNlZEVsZW1lbnRJRHMuaXNFbXB0eSgpKQorICAg
ICAgICBlbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkudXBkYXRlUmVmZXJlbmNlZFJlc291
cmNlcyhkb2N1bWVudCgpLCByZWZlcmVuY2VkRWxlbWVudElEcyk7CisgICAgZWxzZQorICAgICAg
ICBjbGVhclJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKK30KKwogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCiBzdGF0aWMgUmVuZGVyT2JqZWN0OjpCbG9ja0NvbnRlbnRIZWlnaHRUeXBlIGlu
Y2x1ZGVOb25GaXhlZEhlaWdodChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMzgzZGNkZGI4YzU1MThk
YTdkZjRlYzI3NDExYTA0MjIzOGJlOTNiNC4uZmFhMzdjYjgzOWU3ZmE3Y2M5ZDBmMGE1MjQyNzIx
Y2JjYWY0ZjNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBA
IC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnREYXRhOwog
Y2xhc3MgQ29udHJvbFN0YXRlczsKIGNsYXNzIEtleWZyYW1lTGlzdDsKK2NsYXNzIFJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXM7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlclN0eWxlOwog
Y2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CkBAIC0yNjIsNiArMjYzLDkgQEAgcHVibGljOgogICAg
IFdlYWtQdHI8UmVuZGVyQmxvY2tGbG93PiBiYWNrZHJvcFJlbmRlcmVyKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRCYWNrZHJvcFJlbmRlcmVyKFJlbmRlckJsb2NrRmxvdyYpOwogCisgICAgdm9pZCB1
cGRhdGVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCk7CisgICAgUmVmZXJlbmNlZFNWR1Jlc291cmNl
cyYgZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51
bSBCYXNlVHlwZUZsYWcgewogICAgICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZyAgPSAx
IDw8IDAsCkBAIC0zNjEsNiArMzY1LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHNob3Vs
ZFdpbGxDaGFuZ2VDcmVhdGVTdGFja2luZ0NvbnRleHQoKSBjb25zdDsKICAgICB2b2lkIGlzc3Vl
UmVwYWludEZvck91dGxpbmVBdXRvKGZsb2F0IG91dGxpbmVTaXplKTsKKyAgICAKKyAgICB2b2lk
IGNsZWFyUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOwogCiAgICAgdW5zaWduZWQgbV9iYXNlVHlw
ZUZsYWdzIDogNjsKICAgICB1bnNpZ25lZCBtX2FuY2VzdG9yTGluZUJveERpcnR5IDogMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVlNmQzYmVmYjcxMTZl
ODIyMzIwMTIwNjNlODU3N2M5ZTYyODcxYjcuLjJhYTkxYjk5MDczN2FiOTA1ZjliNDZlYzFkOTJh
NTdjNTNjN2YxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUgIk92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNs
dWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQW5jZXN0b3JJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIuaCIKQEAgLTMxODUsMTYgKzMxODYsMTggQEAgYm9vbCBSZW5k
ZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKHN0
eWxlLmNsaXBQYXRoKCktPnR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6UmVmZXJlbmNlKSB7
Ci0gICAgICAgIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKiByZWZlcmVuY2VDbGlwUGF0aE9w
ZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKj4oc3R5bGUu
Y2xpcFBhdGgoKSk7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24tPmZyYWdtZW50
KCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5yZW5kZXJlcigpICYmIGlzPFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oZWxlbWVudC0+cmVuZGVyZXIoKSkpIHsKKyAgICAvLyBG
SVhNRTogV3JvbmcgY2FsbCBzaXRlLgorICAgIHJlbmRlcmVyKCkudXBkYXRlUmVmZXJlbmNlZFNW
R1Jlc291cmNlcygpOworCisgICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihz
dHlsZS5jbGlwUGF0aCgpKSkgeworICAgICAgICBhdXRvJiByZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBh
dGgoKSk7CisgICAgICAgIGlmIChhdXRvKiBjbGlwcGVyUmVuZGVyZXIgPSByZW5kZXJlcigpLmVu
c3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKS5yZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKHJl
bmRlcmVyKCkuZG9jdW1lbnQoKSwgcmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24pKSB7CiAgICAg
ICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgIGF1dG8gcmVmZXJlbmNlQm94ID0g
c25hcFJlY3RUb0RldmljZVBpeGVscyhyb290UmVsYXRpdmVCb3VuZHMsIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIGF1dG8gb2Zmc2V0ID0g
cmVmZXJlbmNlQm94LmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShv
ZmZzZXQpOwogICAgICAgICAgICAgRmxvYXRSZWN0IHN2Z1JlZmVyZW5jZUJveCB7IHt9LCByZWZl
cmVuY2VCb3guc2l6ZSgpIH07Ci0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI+KCplbGVtZW50LT5yZW5kZXJlcigpKS5hcHBseUNsaXBwaW5nVG9Db250ZXh0KHJl
bmRlcmVyKCksIHN2Z1JlZmVyZW5jZUJveCwgY29udGV4dCk7CisgICAgICAgICAgICBjbGlwcGVy
UmVuZGVyZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIoKSwgc3ZnUmVmZXJlbmNl
Qm94LCBjb250ZXh0KTsKICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vZmZzZXQpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMyNDksNiArMzI1Miw5IEBA
IEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCwKIAogdm9pZCBSZW5kZXJMYXllcjo6YXBwbHlGaWx0ZXJz
KEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgcGFpbnRpbmdJbmZvLCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gYmVoYXZpb3IsIGNvbnN0
IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKIHsKKyAgICAvLyBGSVhNRTogV3Jvbmcg
Y2FsbCBzaXRlLgorICAgIHJlbmRlcmVyKCkudXBkYXRlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygp
OworCiAgICAgLy8gRklYTUU6IEhhbmRsZSBtb3JlIHRoYW4gb25lIGZyYWdtZW50LgogICAgIENs
aXBSZWN0IGJhY2tncm91bmRSZWN0ID0gbGF5ZXJGcmFnbWVudHMuaXNFbXB0eSgpID8gQ2xpcFJl
Y3QoKSA6IGxheWVyRnJhZ21lbnRzWzBdLmJhY2tncm91bmRSZWN0OwogICAgIGNsaXBUb1JlY3Qo
b3JpZ2luYWxDb250ZXh0LCBwYWludGluZ0luZm8sIGJlaGF2aW9yLCBiYWNrZ3JvdW5kUmVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGFhNTYyNmZh
MzMwZmYwZjg0YjVjODgxNjA2MTJkNWExMTJkM2JmYmUuLjk3YjA5OGZkMTU5NWZjZjdmZjQwYmRk
ODM2MDg0ZWE2MjIzYTY2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNl
dENhY2hlcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CisjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJlbmRlckNo
aWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRnJhZ21lbnRlZEZsb3cuaCIKQEAgLTE5NDYsNiArMTk0NywxNSBAQCB2b2lkIFJlbmRlck9i
amVjdDo6cmVtb3ZlUmFyZURhdGEoKQogICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKIH0KIAor
UmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEo
KQorICAgIDogbV9oYXNSZWZsZWN0aW9uKGZhbHNlKQorICAgICwgbV9pc1JlbmRlckZyYWdtZW50
ZWRGbG93KGZhbHNlKQorICAgICwgbV9oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGZhbHNlKQorewor
fQorCitSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhOjp+UmVuZGVyT2JqZWN0UmFy
ZURhdGEoKSA9IGRlZmF1bHQ7CisKIGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNOb25FbXB0eVZpc2li
bGVSZWN0UmVzcGVjdGluZ1BhcmVudEZyYW1lcygpIGNvbnN0CiB7CiAgICAgYXV0byBlbmNsb3Np
bmdGcmFtZVJlbmRlcmVyID0gW10gKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA0YzU4NDUyZWQxZWI4ZTA2
OWY3YTc5OWExY2NkYjBjNTNjMjE1NTBiLi5mM2M0ZTkxODkyZGQxMjMzMDYwNzQwYTg4ZTM0Yjgy
OTUzYjczZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01
Niw2ICs1Niw3IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBMZWdhY3lJbmxpbmVCb3g7
CiBjbGFzcyBQYXRoOwogY2xhc3MgUG9zaXRpb247CitjbGFzcyBSZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzOwogY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiBj
bGFzcyBSZW5kZXJCbG9jazsKQEAgLTkyNywxOCArOTI4LDE2IEBAIHByaXZhdGU6CiAgICAgY2xh
c3MgUmVuZGVyT2JqZWN0UmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlbmRlck9iamVjdFJhcmVEYXRhKCkKLSAgICAgICAg
ICAgIDogbV9oYXNSZWZsZWN0aW9uKGZhbHNlKQotICAgICAgICAgICAgLCBtX2lzUmVuZGVyRnJh
Z21lbnRlZEZsb3coZmFsc2UpCi0gICAgICAgICAgICAsIG1faGFzT3V0bGluZUF1dG9BbmNlc3Rv
cihmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9CisgICAgICAgIFJlbmRlck9iamVjdFJhcmVE
YXRhKCk7CisgICAgICAgIH5SZW5kZXJPYmplY3RSYXJlRGF0YSgpOworCiAgICAgICAgIEFERF9C
T09MRUFOX0JJVEZJRUxEKGhhc1JlZmxlY3Rpb24sIEhhc1JlZmxlY3Rpb24pOwogICAgICAgICBB
RERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93LCBJc1JlbmRlckZyYWdt
ZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzT3V0bGluZUF1dG9B
bmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAKICAgICAgICAgLy8gRnJvbSBSZW5k
ZXJFbGVtZW50CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2FjaGVkRmly
c3RMaW5lU3R5bGU7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzPiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOwogICAgICAgICBXZWFrUHRyPFJlbmRlckJsb2Nr
Rmxvdz4gYmFja2Ryb3BSZW5kZXJlcjsKICAgICB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCA4YWNiYjMyNzM4
NTc0MTA1OGM5MDFlYjI2NmQzZWM1NWJmNTAzYTc5Li45ZmQzM2YzYzBiOTFmNzE0NTZiYTI1YTJl
ZmQwNmRkMDJkMzlhNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clNWR1Jlc291cmNlU29saWRDb2xvci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2Fj
aGUuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKQEAgLTE1Myw3ICsxNTQsNyBAQCBS
ZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIFJlbmRlclNWR1Jlc291cmNlOjpzaGFyZWRTb2xp
ZFBhaW50aW5nUmVzb3VyY2UoKQogICAgIHJldHVybiBzX3NoYXJlZFNvbGlkUGFpbnRpbmdSZXNv
dXJjZTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRh
dGVEZXBlbmRlbmNpZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGJvb2wgbmVlZHNMYXlvdXQp
CitzdGF0aWMgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBib29sIG5lZWRzTGF5b3V0KQogewogICAgIGlmIChhdXRv
KiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
ZXIocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyID0gcmVzb3VyY2VzLT5maWx0ZXIoKSkKQEAgLTE2OSw3ICsxNzAsOSBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhSZW5kZXJF
bGVtZW50JiByZW5kZQogICAgIGlmICghaXM8U1ZHRWxlbWVudD4ocmVuZGVyZXIuZWxlbWVudCgp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZG93bmNhc3Q8
U1ZHRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSkucmVmZXJlbmNpbmdFbGVtZW50cygpKSB7
CisgICAgUmVmIHN2Z0VsZW1lbnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PigqcmVuZGVyZXIuZWxl
bWVudCgpKTsKKworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHN2Z0VsZW1lbnQtPnJlZmVyZW5j
aW5nRWxlbWVudHMoKSkgewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBXZSBhbGxvdyBjeWNsZXMgaW4gU1ZHRG9jdW1l
bnRFeHRlbnNpb25zIHJlZmVyZW5jZSBzZXRzIGluIG9yZGVyIHRvIGF2b2lkIGV4cGVuc2l2ZQog
ICAgICAgICAgICAgLy8gcmVmZXJlbmNlIGdyYXBoIGFkanVzdG1lbnRzIG9uIGNoYW5nZXMsIHNv
IHdlIG5lZWQgdG8gYnJlYWsgcG9zc2libGUgY3ljbGVzIGhlcmUuCkBAIC0xODIsNiArMTg1LDEy
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5k
ZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRlCiAgICAgICAgICAgICBpbnZhbGlkYXRpbmdEZXBl
bmRlbmNpZXMuZ2V0KCkucmVtb3ZlKGVsZW1lbnQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQor
CisgICAgZm9yIChhdXRvJiBjc3NDbGllbnQgOiBzdmdFbGVtZW50LT5yZWZlcmVuY2luZ0NTU0Ns
aWVudHMoKSkgeworICAgICAgICBpZiAoIWNzc0NsaWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjc3NDbGllbnQtPnJlc291cmNlQ2hhbmdlZChzdmdFbGVtZW50LmdldCgpKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmplY3QmIG9iamVjdCwgYm9vbCBuZWVkc0xh
eW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAyOWMxYjg0MmVmZjI3NjQ4OWVj
ZTU0MWRkNDFmN2VmMDYwNTM5NzE1Li5iYTU0MjYwNmJiMDliYTY5ODg3M2RiZDdhZTA4YTEzZTIy
YWFmZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKKyNpbmNsdWRlICJTVkdS
ZXNvdXJjZUVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHVGl0bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgpAQCAt
MzM2LDYgKzMzNywyNSBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUVsZW1lbnRSZWZlcmVuY2Uo
KQogICAgICAgICBkZXN0aW5hdGlvbi0+cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KCp0aGlzKTsK
IH0KIAorVmVjdG9yPFdlYWtQdHI8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Pj4gU1ZHRWxlbWVu
dDo6cmVmZXJlbmNpbmdDU1NDbGllbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc3ZnUmFyZURh
dGEpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3N2Z1Jh
cmVEYXRhLT5yZWZlcmVuY2luZ0NTU0NsaWVudHMoKSk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6
YWRkUmVmZXJlbmNpbmdDU1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50JiBjbGllbnQp
Cit7CisgICAgZW5zdXJlU1ZHUmFyZURhdGEoKS5hZGRSZWZlcmVuY2luZ0NTU0NsaWVudChjbGll
bnQpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNW
R1Jlc291cmNlRWxlbWVudENsaWVudCYgY2xpZW50KQoreworICAgIGlmICghbV9zdmdSYXJlRGF0
YSkKKyAgICAgICAgcmV0dXJuOworICAgIGVuc3VyZVNWR1JhcmVEYXRhKCkucmVtb3ZlUmVmZXJl
bmNpbmdDU1NDbGllbnQoY2xpZW50KTsKK30KKwogU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6Y29y
cmVzcG9uZGluZ0VsZW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N2Z1JhcmVEYXRhID8g
bV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA6IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAppbmRleCA5NzQ4OGFiMzI3OGE3NjQ4ZmI5YmRmODJkNjk0MTk5ZTdkNTg1
ZWViLi43MDRhZTgwYTk3YjFkNGE0MzljYTJlYzAxNzFhZTMwNjhlZTcyZGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBT
VkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBTVkdFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBT
VkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeTsKK2NsYXNzIFNWR1Jlc291cmNlRWxlbWVudENsaWVu
dDsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiBjbGFzcyBTVkdVc2VFbGVtZW50OwogCkBAIC05OCw2
ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZWZlcmVuY2luZ0VsZW1lbnQoU1ZH
RWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVudFJlZmVyZW5jZSgpOwogCisgICAgVmVj
dG9yPFdlYWtQdHI8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Pj4gcmVmZXJlbmNpbmdDU1NDbGll
bnRzKCkgY29uc3Q7CisgICAgdm9pZCBhZGRSZWZlcmVuY2luZ0NTU0NsaWVudChTVkdSZXNvdXJj
ZUVsZW1lbnRDbGllbnQmKTsKKyAgICB2b2lkIHJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNW
R1Jlc291cmNlRWxlbWVudENsaWVudCYpOworCisKICAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25k
aW5nRWxlbWVudCgpIGNvbnN0OwogICAgIFJlZlB0cjxTVkdVc2VFbGVtZW50PiBjb3JyZXNwb25k
aW5nVXNlRWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVE
YXRhLmgKaW5kZXggZjc0MGRiYzA5NWNjZTVkNmY0MjE3OTA3NDk1NWY2MjEwZGE5OTNjNC4uYmJm
Y2JiMTgxMzcxNDgwYTMxZTQyZDE0NTQwMDAyODBjYzliYTY5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50UmFyZURhdGEuaApAQCAtMTksNiArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIlNWR1Jlc291cmNlRWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNTUsNiArNTYsMTAgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQqIHJl
ZmVyZW5jZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlVGFyZ2V0LmdldCgpOyB9
CiAgICAgdm9pZCBzZXRSZWZlcmVuY2VUYXJnZXQoV2Vha1B0cjxTVkdFbGVtZW50PiYmIGVsZW1l
bnQpIHsgbV9yZWZlcmVuY2VUYXJnZXQgPSBXVEZNb3ZlKGVsZW1lbnQpOyB9CiAKKyAgICB2b2lk
IGFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVudENsaWVudCYgY2xpZW50
KSB7IG1fcmVmZXJlbmNpbmdDU1NDbGllbnRzLmFkZChjbGllbnQpOyB9CisgICAgdm9pZCByZW1v
dmVSZWZlcmVuY2luZ0NTU0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQmIGNsaWVudCkg
eyBtX3JlZmVyZW5jaW5nQ1NTQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsgfQorICAgIGNvbnN0IFdl
YWtIYXNoU2V0PFNWR1Jlc291cmNlRWxlbWVudENsaWVudD4mIHJlZmVyZW5jaW5nQ1NTQ2xpZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNpbmdDU1NDbGllbnRzOyB9CisKICAgICBTVkdF
bGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpIHsgcmV0dXJuIG1fY29ycmVzcG9uZGluZ0Vs
ZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1l
bnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KSB7IG1fY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtl
V2Vha1B0cihjb3JyZXNwb25kaW5nRWxlbWVudCk7IH0KIApAQCAtODYsNiArOTEsOSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1fcmVmZXJlbmNpbmdF
bGVtZW50czsKICAgICBXZWFrUHRyPFNWR0VsZW1lbnQ+IG1fcmVmZXJlbmNlVGFyZ2V0OworCisg
ICAgV2Vha0hhc2hTZXQ8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50PiBtX3JlZmVyZW5jaW5nQ1NT
Q2xpZW50czsKKwogICAgIFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1faW5zdGFuY2VzOwogICAg
IFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9jb3JyZXNwb25kaW5nRWxlbWVudDsKICAgICBib29sIG1f
aW5zdGFuY2VzVXBkYXRlc0Jsb2NrZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1Jlc291cmNlRWxlbWVudENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
c291cmNlRWxlbWVudENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZDM3N2RjMzliZmU4NDA3NjllNzA3
MzZmZDE3MDYxOWMzZTI4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworCitjbGFzcyBTVkdSZXNvdXJjZUVsZW1lbnRD
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50PiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50KCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlQ2hhbmdlZChTVkdFbGVtZW50JikgPSAw
OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436905</attachid>
            <date>2021-08-31 10:30:19 -0700</date>
            <delta_ts>2021-08-31 16:11:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204204-20210831103018.patch</filename>
            <type>text/plain</type>
            <size>34789</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc3ZDM3OTRjZGQ1OTcz
MTQ2N2Q5NWNkYWYyMmVlZDVmNmMyMWQ2ZS4uNjY4NTMxNTY4ZWYzMzM2OTNkYWJhNmE2OTBmMDY5
YmUxOTYwMWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA4LTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0aW5nIGEg
cG9seWdvbiByZWZlcmVuY2VkIGJ5IGNsaXAtcGF0aCBkb2Vzbid0IHJlcGFpbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDIwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDo6cmVzb3VyY2VDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6
flJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNW
R1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRTVkdSZXNvdXJjZUlEcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRhdGVSZWZlcmVuY2VkUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OmVsZW1lbnRG
b3JSZXNvdXJjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6
OnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmVu
c3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6Y2xlYXJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphcHBseUZpbHRlcnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpSZW5kZXJPYmplY3RSYXJlRGF0YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6UmVuZGVyT2JqZWN0UmFyZURhdGE6OlJlbmRlck9iamVjdFJhcmVEYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnJlZmVyZW5jaW5nQ1NTQ2xpZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjphZGRSZWZlcmVuY2luZ0NTU0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpyZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVudCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6cmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpyZWZlcmVuY2luZ0NT
U0NsaWVudHMgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQu
aDogQWRkZWQuCisKIDIwMjEtMDgtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgc2VsZi5zdHJ1Y3R1cmVkQ2xvbmUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAyNGM1MTVjMDU3YjI0ZjBmMmZmNjEyMjllODRiOTRjNmE1NzY5YzQwLi41NDM3MzY5MTUw
ODUzYzVmMThkYzgxYTA5OTA3MzZhNzQ1NWEzNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjE4Niw2
ICsyMTg2LDcgQEAgcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCiByZW5kZXJpbmcv
TWFya2VkVGV4dC5jcHAKIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAogcmVuZGVyaW5nL1Bv
aW50ZXJFdmVudHNIaXRSdWxlcy5jcHAKK3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmNwcAogcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmMWMzZDNhZWZiMDc2
YmNiYjcwMjBhNTUxZTVlMjlmYTRlYzA2NDYuLjA4ZGI3ODZmNTQxZGExMjc5NTFmYzczNTM3Yjky
M2RiMTFmNmFjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYzMDAsNiArNjMwMCw5IEBACiAJCTBGQkZDRTI2MjU2Q0JEOUEw
MEEwQjQ4OSAvKiBEaXNwbGF5Qm94Q2xpcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Qm94Q2xp
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwNTE2ODIxOUI1RUJFMDAzMUMz
OUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA1MTZBMjE5QjVFQkUwMDMxQzM5RSAvKiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZDMjc2QjgyNkRBRjlCNzAwOTNFOEVEIC8qIFJlZmVyZW5jZWRTVkdSZXNv
dXJjZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyNzZCQTI2REFGOUU5MDA5M0U4RUQgLyogUmVmZXJl
bmNlZFNWR1Jlc291cmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMjc2QkMyNkRCMTkw
MDAwOTNFOEVEIC8qIFNWR1Jlc291cmNlRWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDNEIwMDQyMkI5QTAyQzAwQ0YzQjFFIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDNEIwMDUyMkI5QTAyRDAwQ0YzQjFFIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDNjkyQkEyNTdDMEY0MDAwOThFM0Y5IC8qIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNTMsNiArMjYzNTYsNyBAQAogCQkJCUIyMjI3OTA5MEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdSZWN0RWxlbWVudC5pZGwgKi8sCiAJCQkJQjIyMjc5MEEwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1JlbmRlcmluZ0ludGVudC5oICovLAogCQkJCUIyMjI3OTBCMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaWRsICovLAorCQkJCTBGQzI3NkJD
MjZEQjE5MDAwMDkzRThFRCAvKiBTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaCAqLywKIAkJCQlC
MjIyNzkwQzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxlbWVudC5jcHAgKi8sCiAJCQkJ
QjIyMjc5MEQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NjcmlwdEVsZW1lbnQuaCAqLywKIAkJCQlC
MjIyNzkwRTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxlbWVudC5pZGwgKi8sCkBAIC0y
OTU4NCw2ICsyOTU4OCw4IEBACiAJCQkJMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50
UGhhc2UuaCAqLywKIAkJCQlCMkIxRjcxNDBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50
c0hpdFJ1bGVzLmNwcCAqLywKIAkJCQlCMkIxRjcxNTBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzLmggKi8sCisJCQkJMEZDMjc2QkEyNkRBRjlFOTAwOTNFOEVEIC8qIFJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwICovLAorCQkJCTBGQzI3NkI4MjZEQUY5QjcwMDkzRThF
RCAvKiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmggKi8sCiAJCQkJQjU5RUQyM0ExODI3MjY3OTAw
NkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCAqLywKIAkJCQk3Q0Q0OTRDQTFBODZF
QjFEMDAwQTg3RUMgLyogUmVuZGVyQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJN0NENDk0Q0IxQTg2
RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggM2JmNzg2Y2NmZTMyNGU2NDY2MjUyMGZhNzZiNzI0NGY5
ZWI2ZDQwMy4uNjRlOTgzODRhZjAwNGVmNjk5YmM2MmU2YTZjOTc3NTZmNTljNjZmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJGRU1lcmdlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlckJ1aWxkZXIuaCIKQEAgLTcyLDI2ICs3MywxNCBAQCBHcmFwaGljc0NvbnRleHQq
IENTU0ZpbHRlcjo6aW5wdXRDb250ZXh0KCkKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmlsdGVy
RWZmZWN0JiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJP
cGVyYXRpb24pCiB7Ci0gICAgYXV0byogY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBmaWx0
ZXJPcGVyYXRpb24uY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKTsKLSAgICBhdXRvKiBjYWNo
ZWRTVkdEb2N1bWVudCA9IGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID8gY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UtPmRvY3VtZW50KCkgOiBudWxscHRyOwotCi0gICAgLy8gSWYgd2UgaGF2
ZSBhbiBTVkcgZG9jdW1lbnQsIHRoaXMgaXMgYW4gZXh0ZXJuYWwgcmVmZXJlbmNlLiBPdGhlcndp
c2UKLSAgICAvLyB3ZSBsb29rIHVwIHRoZSByZWZlcmVuY2VkIG5vZGUgaW4gdGhlIGN1cnJlbnQg
ZG9jdW1lbnQuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50OwotICAgIGlmICghY2FjaGVkU1ZHRG9j
dW1lbnQpCi0gICAgICAgIGRvY3VtZW50ID0gJnJlbmRlcmVyLmRvY3VtZW50KCk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIGRvY3VtZW50ID0gY2FjaGVkU1ZHRG9jdW1lbnQtPmRvY3VtZW50KCk7Ci0g
ICAgICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBhdXRvKiBmaWx0ZXIgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoZmlsdGVyT3Bl
cmF0aW9uLmZyYWdtZW50KCkpOwotICAgIGlmICghZmlsdGVyKSB7CisgICAgYXV0byogZmlsdGVy
RWxlbWVudCA9IHJlbmRlcmVyLmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKS5yZWZlcmVu
Y2VkRmlsdGVyRWxlbWVudChyZW5kZXJlci5kb2N1bWVudCgpLCBmaWx0ZXJPcGVyYXRpb24pOwor
ICAgIGlmICghZmlsdGVyRWxlbWVudCkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVy
cywgc3RyZWFtIDw8ICJDU1NGaWx0ZXIgIiA8PCB0aGlzIDw8ICIgYnVpbGRSZWZlcmVuY2VGaWx0
ZXI6IGZhaWxlZCB0byBmaW5kIGZpbHRlciByZW5kZXJlciwgYWRkaW5nIHBlbmRpbmcgcmVzb3Vy
Y2UgIiA8PCBmaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEFsdGhvdWdo
IHdlIGRpZCBub3QgZmluZCB0aGUgcmVmZXJlbmNlZCBmaWx0ZXIsIGl0IG1pZ2h0IGV4aXN0IGxh
dGVyIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2tpcHMgYW5vbnlt
b3VzIFJlbmRlck9iamVjdHMuIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzEwODU+CisgICAgICAg
IC8vIEZJWE1FOiBVbmNsZWFyIGlmIHRoaXMgZG9lcyBhbnl0aGluZy4KICAgICAgICAgaWYgKGF1
dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJPcGVyYXRpb24u
ZnJhZ21lbnQoKSwgKmVsZW1lbnQpOworICAgICAgICAgICAgcmVuZGVyZXIuZG9jdW1lbnQoKS5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlck9wZXJhdGlvbi5m
cmFnbWVudCgpLCAqZWxlbWVudCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtMTAxLDcgKzkwLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJl
ZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3Q7CiAgICAgVmVjdG9yPFJlZjxGaWx0ZXJFZmZlY3Q+PiByZWZlcmVu
Y2VFZmZlY3RzOwogCi0gICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDogY2hpbGRyZW5PZlR5
cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigqZmlsdGVyKSkgeworICAg
IGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRlckVsZW1lbnQpKSB7CiAgICAgICAgIGVmZmVj
dCA9IGVmZmVjdEVsZW1lbnQuYnVpbGQoYnVpbGRlci5nZXQoKSwgKnRoaXMpOwogICAgICAgICBp
ZiAoIWVmZmVjdCkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVh
bSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8PCAiIGJ1aWxkUmVmZXJlbmNlRmlsdGVyOiBmYWls
ZWQgdG8gYnVpbGQgZWZmZWN0IGZyb20gIiA8PCBlZmZlY3RFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZmM2YTdiYTYwYTk5ZTJmNTg0MGJiY2NhOTNhMzE2ZjdlOWMxNWRjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMu
Y3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaCIKKworI2luY2x1ZGUgIkNsaXBQYXRo
T3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmls
dGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTVkdDbGlwUGF0aEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQgZmluYWwg
OiBwdWJsaWMgU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudCk7CitwdWJsaWM6CisgICAgQ1NTU1ZH
UmVzb3VyY2VFbGVtZW50Q2xpZW50KFJlbmRlckVsZW1lbnQmIGNsaWVudFJlbmRlcmVyKQorICAg
ICAgICA6IG1fY2xpZW50UmVuZGVyZXIoY2xpZW50UmVuZGVyZXIpCisgICAgeworICAgIH0KKwor
ICAgIHZvaWQgcmVzb3VyY2VDaGFuZ2VkKFNWR0VsZW1lbnQmKSBmaW5hbDsKKworcHJpdmF0ZToK
KyAgICBSZW5kZXJFbGVtZW50JiBtX2NsaWVudFJlbmRlcmVyOworfTsKKworV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudCk7CisKK3ZvaWQgQ1NT
U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50OjpyZXNvdXJjZUNoYW5nZWQoU1ZHRWxlbWVudCYpCit7
CisgICAgbV9jbGllbnRSZW5kZXJlci5yZXBhaW50KCk7Cit9CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKTsKKworUmVmZXJlbmNlZFNWR1Jlc291
cmNlczo6UmVmZXJlbmNlZFNWR1Jlc291cmNlcyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAg
ICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK1JlZmVyZW5jZWRTVkdSZXNvdXJjZXM6
On5SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKK3sKKyAgICBhdXRvJiBkb2N1bWVudCA9IG1fcmVu
ZGVyZXIuZG9jdW1lbnQoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHRhcmdldElEIDogY29weVRv
VmVjdG9yKG1fZWxlbWVudENsaWVudHMua2V5cygpKSkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9y
VGFyZ2V0KGRvY3VtZW50LCB0YXJnZXRJRCk7Cit9CisKK3ZvaWQgUmVmZXJlbmNlZFNWR1Jlc291
cmNlczo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRv
bVN0cmluZyYgdGFyZ2V0SUQpCit7CisgICAgYXV0byBjbGllbnQgPSBtX2VsZW1lbnRDbGllbnRz
LnRha2UodGFyZ2V0SUQpOworCisgICAgYXV0byogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldElEKTsKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4odGFyZ2V0RWxl
bWVudCkpCisgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0YXJnZXRFbGVtZW50KS5yZW1v
dmVSZWZlcmVuY2luZ0NTU0NsaWVudCgqY2xpZW50KTsKK30KKworSGFzaE1hcDxBdG9tU3RyaW5n
LCBRdWFsaWZpZWROYW1lPiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkU1ZHUmVz
b3VyY2VJRHMoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgUXVhbGlmaWVkTmFtZT4gcmVmZXJlbmNlZFJlc291cmNlSURUb1RhZ05hbWVNYXA7Cisg
ICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkg
eworICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7CisgICAgICAgIHJlZmVyZW5jZWRSZXNvdXJjZUlE
VG9UYWdOYW1lTWFwLmFkZChjbGlwUGF0aC5mcmFnbWVudCgpLCBTVkdOYW1lczo6Y2xpcFBhdGhU
YWcpOworICAgIH0KKworICAgIGlmIChzdHlsZS5oYXNGaWx0ZXIoKSkgeworICAgICAgICBjb25z
dCBhdXRvJiBmaWx0ZXJPcGVyYXRpb25zID0gc3R5bGUuZmlsdGVyKCk7CisgICAgICAgIGZvciAo
YXV0byYgb3BlcmF0aW9uIDogZmlsdGVyT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGZpbHRlck9wZXJhdGlvbiA9ICpvcGVyYXRpb247CisgICAgICAgICAgICBp
ZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiA9
IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgICAgICByZWZlcmVuY2VkUmVzb3VyY2VJRFRvVGFnTmFtZU1hcC5hZGQocmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCksIFNWR05hbWVzOjpmaWx0ZXJUYWcpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZWZlcmVuY2VkUmVzb3Vy
Y2VJRFRvVGFnTmFtZU1hcDsKK30KKwordm9pZCBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRh
dGVSZWZlcmVuY2VkUmVzb3VyY2VzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSGFzaE1hcDxB
dG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiYgcmVmZXJlbmNlZFJlc291cmNlSURzKQoreworICAg
IEhhc2hTZXQ8QXRvbVN0cmluZz4gb2xkS2V5czsKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1fZWxl
bWVudENsaWVudHMua2V5cygpKQorICAgICAgICBvbGRLZXlzLmFkZChrZXkpOworCisgICAgZm9y
IChhdXRvJiBbdGFyZ2V0SUQsIHRhZ05hbWVdIDogcmVmZXJlbmNlZFJlc291cmNlSURzKSB7Cisg
ICAgICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50Rm9yUmVzb3VyY2VJRChkb2N1bWVudCwgdGFy
Z2V0SUQsIHRhZ05hbWUpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBtX2VsZW1lbnRDbGllbnRzLmVuc3VyZSh0YXJnZXRJRCwgWyZdIHsK
KyAgICAgICAgICAgIGF1dG8gY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NTVkdSZXNvdXJj
ZUVsZW1lbnRDbGllbnQ+KG1fcmVuZGVyZXIpOworICAgICAgICAgICAgZWxlbWVudC0+YWRkUmVm
ZXJlbmNpbmdDU1NDbGllbnQoKmNsaWVudCk7CisgICAgICAgICAgICByZXR1cm4gY2xpZW50Owor
ICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIG9sZEtleXMucmVtb3ZlKHRhcmdldElEKTsK
KyAgICB9CisgICAgCisgICAgZm9yIChhdXRvJiB0YXJnZXRJRCA6IG9sZEtleXMpCisgICAgICAg
IHJlbW92ZUNsaWVudEZvclRhcmdldChkb2N1bWVudCwgdGFyZ2V0SUQpOworfQorCisvLyBTVkcg
Y29kZSB1c2VzIGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDw+LCBidXQgdGhhdCB3b3JrcyBpbiB0
ZXJtcyBvZiByZW5kZXJlcnMuIFdlIG5lZWQgdG8gZmluZCByZXNvdXJjZXMKKy8vIGJlZm9yZSB0
aGUgcmVuZGVyIHRyZWUgaXMgZnVsbHkgY29uc3RydWN0ZWQsIHNvIHRoaXMgd29ya3Mgb24gRWxl
bWVudHMuCitTVkdFbGVtZW50KiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjplbGVtZW50Rm9yUmVz
b3VyY2VJRChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHJlc291cmNlSUQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCit7CisgICAgYXV0byogZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHJlc291cmNlSUQpOworICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC0+aGFzVGFnTmFtZSh0YWdOYW1lKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIAorICAgIHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50KTsKK30KKwor
U1ZHRmlsdGVyRWxlbWVudCogUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZEZpbHRl
ckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24mIHJlZmVyZW5jZUZpbHRlcikKK3sKKyAgICBBdG9tU3RyaW5nIHRhcmdldElEID0gcmVmZXJl
bmNlRmlsdGVyLmZyYWdtZW50KCk7CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JSZXNv
dXJjZUlEKGRvY3VtZW50LCB0YXJnZXRJRCwgU1ZHTmFtZXM6OmZpbHRlclRhZyk7CisgICAgcmV0
dXJuIGVsZW1lbnQgPyBkb3duY2FzdDxTVkdGaWx0ZXJFbGVtZW50PihlbGVtZW50KSA6IG51bGxw
dHI7Cit9CisKK1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogUmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6cmVmZXJlbmNlZENsaXBwZXJSZW5kZXJlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJl
ZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uJiBjbGlwUGF0aCkKK3sKKyAgICBBdG9tU3RyaW5nIHRh
cmdldElEID0gY2xpcFBhdGguZnJhZ21lbnQoKTsKKyAgICAvLyBGb3Igc29tZSByZWFzb24sIFNW
RyBzdG9yZXMgYSBjYWNoZSBvZiBpZCAtPiByZW5kZXJlciwgcmF0aGVyIHRoYW4ganVzdCB1c2lu
ZyBnZXRFbGVtZW50QnlJZCgpIGFuZCByZW5kZXJlcigpLgorICAgIHJldHVybiBnZXRSZW5kZXJT
VkdSZXNvdXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPihkb2N1bWVudCwgdGFyZ2V0
SUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjJmNzg1NTVm
OGM3OWZiY2Q3ZWZkY2I1NjAwMmZmNzM2YzYyNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NWR1Jlc291cmNlRWxl
bWVudENsaWVudDsKK2NsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uOworY2xhc3MgUmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uOworY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOwor
Y2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI7CitjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNz
IFF1YWxpZmllZE5hbWU7CitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHRmlsdGVyRWxlbWVu
dDsKKworY2xhc3MgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyB7CisgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKTsKK3B1YmxpYzoKKyAgICBSZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQmKTsKKyAgICB+UmVmZXJlbmNlZFNWR1Jlc291cmNl
cygpOworCisgICAgc3RhdGljIEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gcmVm
ZXJlbmNlZFNWR1Jlc291cmNlSURzKGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgdm9pZCB1cGRh
dGVSZWZlcmVuY2VkUmVzb3VyY2VzKERvY3VtZW50JiwgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5n
LCBRdWFsaWZpZWROYW1lPiYpOworCisgICAgLy8gQ2xpcHBpbmcgbmVlZHMgYSByZW5kZXJlciwg
ZmlsdGVycyB1c2UgYW4gZWxlbWVudC4KKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIHJl
ZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZWZlcmVuY2VDbGlwUGF0
aE9wZXJhdGlvbiYpOworICAgIFNWR0ZpbHRlckVsZW1lbnQqIHJlZmVyZW5jZWRGaWx0ZXJFbGVt
ZW50KERvY3VtZW50JiwgY29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJik7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIFNWR0VsZW1lbnQqIGVsZW1lbnRGb3JSZXNvdXJjZUlEKERvY3VtZW50
JiwgY29uc3QgQXRvbVN0cmluZyYgcmVzb3VyY2VJRCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSk7CisgICAgdm9pZCByZW1vdmVDbGllbnRGb3JUYXJnZXQoRG9jdW1lbnQmLCBjb25zdCBB
dG9tU3RyaW5nJik7CisKKyAgICBSZW5kZXJFbGVtZW50JiBtX3JlbmRlcmVyOworICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVu
dD4+IG1fZWxlbWVudENsaWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggOTQ0ZjhlOGUzZGRl
ODQyNDA1YTNmMmExN2M4ZjVhNTM3NmNjYjQ2Ny4uNDAwYjExNmFlNWVmYjUzOWFhYjRjZGM1ZGMx
OWVjYWIzNzU3YzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGF0aFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRl
ckNoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCkBAIC02Nyw2ICs2
OCw4IEBACiAjZW5kaWYKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudENvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNhcHRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNvbC5oIgpAQCAtMjI3Niw2ICsyMjc5LDMzIEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6cmVzZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rl
c2NlbmRhbnRzCiAgICAgICAgIGNoaWxkLnJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRD
aGlsZEluZm9JbmNsdWRpbmdEZXNjZW5kYW50cyhmcmFnbWVudGVkRmxvdyk7CiB9CiAKK1JlZmVy
ZW5jZWRTVkdSZXNvdXJjZXMmIFJlbmRlckVsZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNv
dXJjZXMoKQoreworICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKKyAgICBp
ZiAoIXJhcmVEYXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpCisgICAgICAgIHJhcmVEYXRhLnJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZWRTVkdSZXNv
dXJjZXM+KCp0aGlzKTsKKyAgICAgICAgCisgICAgcmV0dXJuICpyYXJlRGF0YS5yZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzOworfQorCit2b2lkIFJlbmRlckVsZW1lbnQ6OmNsZWFyUmVmZXJlbmNlZFNW
R1Jlc291cmNlcygpCit7CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBlbnN1cmVSYXJlRGF0YSgpLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBudWxscHRy
OworfQorCisvLyBUaGlzIG5lZWRzIHRvIHJ1biB3aGVuIHRoZSBlbnRpcmUgcmVuZGVyIHRyZWUg
aGFzIGJlZW4gY29uc3RydWN0ZWQsIHNvIGNhbid0IGJlIGNhbGxlZCBmcm9tIHN0eWxlRGlkQ2hh
bmdlLgordm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkK
K3sKKyAgICBhdXRvIHJlZmVyZW5jZWRFbGVtZW50SURzID0gUmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6cmVmZXJlbmNlZFNWR1Jlc291cmNlSURzKHN0eWxlKCkpOworICAgIGlmICghcmVmZXJlbmNl
ZEVsZW1lbnRJRHMuaXNFbXB0eSgpKQorICAgICAgICBlbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzKCkudXBkYXRlUmVmZXJlbmNlZFJlc291cmNlcyhkb2N1bWVudCgpLCByZWZlcmVuY2VkRWxl
bWVudElEcyk7CisgICAgZWxzZQorICAgICAgICBjbGVhclJlZmVyZW5jZWRTVkdSZXNvdXJjZXMo
KTsKK30KKwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiBzdGF0aWMgUmVuZGVyT2JqZWN0
OjpCbG9ja0NvbnRlbnRIZWlnaHRUeXBlIGluY2x1ZGVOb25GaXhlZEhlaWdodChjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKaW5kZXggMzgzZGNkZGI4YzU1MThkYTdkZjRlYzI3NDExYTA0MjIzOGJlOTNiNC4uZmFh
MzdjYjgzOWU3ZmE3Y2M5ZDBmMGE1MjQyNzIxY2JjYWY0ZjNhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENvbnRlbnREYXRhOwogY2xhc3MgQ29udHJvbFN0YXRlczsKIGNsYXNzIEtl
eWZyYW1lTGlzdDsKK2NsYXNzIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CiBjbGFzcyBSZW5kZXJC
bG9jazsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CkBAIC0y
NjIsNiArMjYzLDkgQEAgcHVibGljOgogICAgIFdlYWtQdHI8UmVuZGVyQmxvY2tGbG93PiBiYWNr
ZHJvcFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRCYWNrZHJvcFJlbmRlcmVyKFJlbmRl
ckJsb2NrRmxvdyYpOwogCisgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCk7
CisgICAgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyYgZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNl
cygpOworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBCYXNlVHlwZUZsYWcgewogICAgICAgICBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0RmxhZyAgPSAxIDw8IDAsCkBAIC0zNjEsNiArMzY1LDggQEAgcHJp
dmF0ZToKICAgICAKICAgICBib29sIHNob3VsZFdpbGxDaGFuZ2VDcmVhdGVTdGFja2luZ0NvbnRl
eHQoKSBjb25zdDsKICAgICB2b2lkIGlzc3VlUmVwYWludEZvck91dGxpbmVBdXRvKGZsb2F0IG91
dGxpbmVTaXplKTsKKyAgICAKKyAgICB2b2lkIGNsZWFyUmVmZXJlbmNlZFNWR1Jlc291cmNlcygp
OwogCiAgICAgdW5zaWduZWQgbV9iYXNlVHlwZUZsYWdzIDogNjsKICAgICB1bnNpZ25lZCBtX2Fu
Y2VzdG9yTGluZUJveERpcnR5IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDQ2NzJiMWYwYTlkNGIxMGRhYjExZTg2ZDFmYjljMzVmMGM3ODVjMzMuLjEx
MjgzYTVjYTk4OGQ3NTkzNjQzNTU5MzcyMTcwYWUzZDRhZjEzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUgIk92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckZs
ZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCIKQEAgLTMx
ODUsMTYgKzMxODYsMTggQEAgYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmYKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLmNsaXBQYXRoKCktPnR5cGUoKSA9PSBDbGlw
UGF0aE9wZXJhdGlvbjo6UmVmZXJlbmNlKSB7Ci0gICAgICAgIFJlZmVyZW5jZUNsaXBQYXRoT3Bl
cmF0aW9uKiByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uKj4oc3R5bGUuY2xpcFBhdGgoKSk7Ci0gICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJlbmNl
Q2xpcFBhdGhPcGVyYXRpb24tPmZyYWdtZW50KCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBl
bGVtZW50LT5yZW5kZXJlcigpICYmIGlzPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oZWxlbWVu
dC0+cmVuZGVyZXIoKSkpIHsKKyAgICAvLyBGSVhNRTogV3JvbmcgY2FsbCBzaXRlLgorICAgIHJl
bmRlcmVyKCkudXBkYXRlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOworCisgICAgaWYgKGlzPFJl
ZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgeworICAgICAgICBh
dXRvJiByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7CisgICAgICAgIGlmIChhdXRvKiBjbGlw
cGVyUmVuZGVyZXIgPSByZW5kZXJlcigpLmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKS5y
ZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKHJlbmRlcmVyKCkuZG9jdW1lbnQoKSwgcmVmZXJlbmNl
Q2xpcFBhdGhPcGVyYXRpb24pKSB7CiAgICAgICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAg
ICAgICAgIGF1dG8gcmVmZXJlbmNlQm94ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhyb290UmVs
YXRpdmVCb3VuZHMsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
ICAgICAgICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVmZXJlbmNlQm94LmxvY2F0aW9uKCk7CiAgICAg
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShvZmZzZXQpOwogICAgICAgICAgICAgRmxvYXRSZWN0
IHN2Z1JlZmVyZW5jZUJveCB7IHt9LCByZWZlcmVuY2VCb3guc2l6ZSgpIH07Ci0gICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KCplbGVtZW50LT5yZW5kZXJlcigp
KS5hcHBseUNsaXBwaW5nVG9Db250ZXh0KGNvbnRleHQsIHJlbmRlcmVyKCksIHN2Z1JlZmVyZW5j
ZUJveCwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBj
bGlwcGVyUmVuZGVyZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoY29udGV4dCwgcmVuZGVyZXIo
KSwgc3ZnUmVmZXJlbmNlQm94LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
ICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMyNDksNiArMzI1Miw5IEBAIEdyYXBoaWNzQ29udGV4
dCogUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9u
Q29udGV4dCwKIAogdm9pZCBSZW5kZXJMYXllcjo6YXBwbHlGaWx0ZXJzKEdyYXBoaWNzQ29udGV4
dCYgb3JpZ2luYWxDb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gYmVoYXZpb3IsIGNvbnN0IExheWVyRnJhZ21lbnRz
JiBsYXllckZyYWdtZW50cykKIHsKKyAgICAvLyBGSVhNRTogV3JvbmcgY2FsbCBzaXRlLgorICAg
IHJlbmRlcmVyKCkudXBkYXRlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOworCiAgICAgLy8gRklY
TUU6IEhhbmRsZSBtb3JlIHRoYW4gb25lIGZyYWdtZW50LgogICAgIENsaXBSZWN0IGJhY2tncm91
bmRSZWN0ID0gbGF5ZXJGcmFnbWVudHMuaXNFbXB0eSgpID8gQ2xpcFJlY3QoKSA6IGxheWVyRnJh
Z21lbnRzWzBdLmJhY2tncm91bmRSZWN0OwogICAgIGNsaXBUb1JlY3Qob3JpZ2luYWxDb250ZXh0
LCBwYWludGluZ0luZm8sIGJlaGF2aW9yLCBiYWNrZ3JvdW5kUmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGFhNTYyNmZhMzMwZmYwZjg0YjVjODgx
NjA2MTJkNWExMTJkM2JmYmUuLjk3YjA5OGZkMTU5NWZjZjdmZjQwYmRkODM2MDg0ZWE2MjIzYTY2
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCisjaW5jbHVkZSAiUmVm
ZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJlbmRlckNoaWxkSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJSZW5kZXJDb3VudGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZs
b3cuaCIKQEAgLTE5NDYsNiArMTk0NywxNSBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFy
ZURhdGEoKQogICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKIH0KIAorUmVuZGVyT2JqZWN0OjpS
ZW5kZXJPYmplY3RSYXJlRGF0YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEoKQorICAgIDogbV9oYXNS
ZWZsZWN0aW9uKGZhbHNlKQorICAgICwgbV9pc1JlbmRlckZyYWdtZW50ZWRGbG93KGZhbHNlKQor
ICAgICwgbV9oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGZhbHNlKQoreworfQorCitSZW5kZXJPYmpl
Y3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhOjp+UmVuZGVyT2JqZWN0UmFyZURhdGEoKSA9IGRlZmF1
bHQ7CisKIGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNOb25FbXB0eVZpc2libGVSZWN0UmVzcGVjdGlu
Z1BhcmVudEZyYW1lcygpIGNvbnN0CiB7CiAgICAgYXV0byBlbmNsb3NpbmdGcmFtZVJlbmRlcmVy
ID0gW10gKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA0YzU4NDUyZWQxZWI4ZTA2OWY3YTc5OWExY2NkYjBj
NTNjMjE1NTBiLi5mM2M0ZTkxODkyZGQxMjMzMDYwNzQwYTg4ZTM0YjgyOTUzYjczZDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01Niw2ICs1Niw3IEBAIGNs
YXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBMZWdhY3lJbmxpbmVCb3g7CiBjbGFzcyBQYXRoOwog
Y2xhc3MgUG9zaXRpb247CitjbGFzcyBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOwogY2xhc3MgUmVu
ZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9j
azsKQEAgLTkyNywxOCArOTI4LDE2IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUmVuZGVyT2JqZWN0
UmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFJlbmRlck9iamVjdFJhcmVEYXRhKCkKLSAgICAgICAgICAgIDogbV9oYXNSZWZs
ZWN0aW9uKGZhbHNlKQotICAgICAgICAgICAgLCBtX2lzUmVuZGVyRnJhZ21lbnRlZEZsb3coZmFs
c2UpCi0gICAgICAgICAgICAsIG1faGFzT3V0bGluZUF1dG9BbmNlc3RvcihmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9CisgICAgICAgIFJlbmRlck9iamVjdFJhcmVEYXRhKCk7CisgICAgICAg
IH5SZW5kZXJPYmplY3RSYXJlRGF0YSgpOworCiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGhhc1JlZmxlY3Rpb24sIEhhc1JlZmxlY3Rpb24pOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRG
SUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAg
ICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0
bGluZUF1dG9BbmNlc3Rvcik7CiAKICAgICAgICAgLy8gRnJvbSBSZW5kZXJFbGVtZW50CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2FjaGVkRmlyc3RMaW5lU3R5bGU7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPiByZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzOwogICAgICAgICBXZWFrUHRyPFJlbmRlckJsb2NrRmxvdz4gYmFja2Ryb3BS
ZW5kZXJlcjsKICAgICB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCA4YWNiYjMyNzM4NTc0MTA1OGM5MDFlYjI2
NmQzZWM1NWJmNTAzYTc5Li45ZmQzM2YzYzBiOTFmNzE0NTZiYTI1YTJlZmQwNmRkMDJkMzlhNmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlU29s
aWRDb2xvci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKICNpbmNsdWRl
ICJTVkdVUklSZWZlcmVuY2UuaCIKQEAgLTE1Myw3ICsxNTQsNyBAQCBSZW5kZXJTVkdSZXNvdXJj
ZVNvbGlkQ29sb3IqIFJlbmRlclNWR1Jlc291cmNlOjpzaGFyZWRTb2xpZFBhaW50aW5nUmVzb3Vy
Y2UoKQogICAgIHJldHVybiBzX3NoYXJlZFNvbGlkUGFpbnRpbmdSZXNvdXJjZTsKIH0KIAotc3Rh
dGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGJvb2wgbmVlZHNMYXlvdXQpCitzdGF0aWMgdm9pZCBy
ZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBib29sIG5lZWRzTGF5b3V0KQogewogICAgIGlmIChhdXRvKiByZXNvdXJjZXMgPSBT
VkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7
CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gcmVzb3VyY2Vz
LT5maWx0ZXIoKSkKQEAgLTE2OSw3ICsxNzAsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
RnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhSZW5kZXJFbGVtZW50JiByZW5kZQog
ICAgIGlmICghaXM8U1ZHRWxlbWVudD4ocmVuZGVyZXIuZWxlbWVudCgpKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnJl
bmRlcmVyLmVsZW1lbnQoKSkucmVmZXJlbmNpbmdFbGVtZW50cygpKSB7CisgICAgUmVmIHN2Z0Vs
ZW1lbnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PigqcmVuZGVyZXIuZWxlbWVudCgpKTsKKworICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IHN2Z0VsZW1lbnQtPnJlZmVyZW5jaW5nRWxlbWVudHMoKSkg
ewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICAvLyBXZSBhbGxvdyBjeWNsZXMgaW4gU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHJl
ZmVyZW5jZSBzZXRzIGluIG9yZGVyIHRvIGF2b2lkIGV4cGVuc2l2ZQogICAgICAgICAgICAgLy8g
cmVmZXJlbmNlIGdyYXBoIGFkanVzdG1lbnRzIG9uIGNoYW5nZXMsIHNvIHdlIG5lZWQgdG8gYnJl
YWsgcG9zc2libGUgY3ljbGVzIGhlcmUuCkBAIC0xODIsNiArMTg1LDEyIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVs
ZW1lbnQmIHJlbmRlCiAgICAgICAgICAgICBpbnZhbGlkYXRpbmdEZXBlbmRlbmNpZXMuZ2V0KCku
cmVtb3ZlKGVsZW1lbnQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQorCisgICAgZm9yIChhdXRv
JiBjc3NDbGllbnQgOiBzdmdFbGVtZW50LT5yZWZlcmVuY2luZ0NTU0NsaWVudHMoKSkgeworICAg
ICAgICBpZiAoIWNzc0NsaWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjc3ND
bGllbnQtPnJlc291cmNlQ2hhbmdlZChzdmdFbGVtZW50LmdldCgpKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbihSZW5kZXJPYmplY3QmIG9iamVjdCwgYm9vbCBuZWVkc0xheW91dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAppbmRleCAyOWMxYjg0MmVmZjI3NjQ4OWVjZTU0MWRkNDFmN2VmMDYw
NTM5NzE1Li5iYTU0MjYwNmJiMDliYTY5ODg3M2RiZDdhZTA4YTEzZTIyYWFmZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU1ZHUHJv
cGVydHlBbmltYXRvckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUVsZW1lbnRD
bGllbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGl0bGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgpAQCAtMzM2LDYgKzMzNywyNSBA
QCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUVsZW1lbnRSZWZlcmVuY2UoKQogICAgICAgICBkZXN0
aW5hdGlvbi0+cmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KCp0aGlzKTsKIH0KIAorVmVjdG9yPFdl
YWtQdHI8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Pj4gU1ZHRWxlbWVudDo6cmVmZXJlbmNpbmdD
U1NDbGllbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3N2Z1JhcmVEYXRhLT5yZWZlcmVu
Y2luZ0NTU0NsaWVudHMoKSk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6YWRkUmVmZXJlbmNpbmdD
U1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50JiBjbGllbnQpCit7CisgICAgZW5zdXJl
U1ZHUmFyZURhdGEoKS5hZGRSZWZlcmVuY2luZ0NTU0NsaWVudChjbGllbnQpOworfQorCit2b2lk
IFNWR0VsZW1lbnQ6OnJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVu
dENsaWVudCYgY2xpZW50KQoreworICAgIGlmICghbV9zdmdSYXJlRGF0YSkKKyAgICAgICAgcmV0
dXJuOworICAgIGVuc3VyZVNWR1JhcmVEYXRhKCkucmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQo
Y2xpZW50KTsKK30KKwogU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6Y29ycmVzcG9uZGluZ0VsZW1l
bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N2Z1JhcmVEYXRhID8gbV9zdmdSYXJlRGF0YS0+
Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCA5NzQ4OGFiMzI3OGE3NjQ4ZmI5YmRmODJkNjk0MTk5ZTdkNTg1ZWViLi43MDRhZTgwYTk3
YjFkNGE0MzljYTJlYzAxNzFhZTMwNjhlZTcyZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
QEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTVkdEb2N1bWVudEV4dGVu
c2lvbnM7CiBjbGFzcyBTVkdFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeTsKK2NsYXNzIFNWR1Jlc291cmNlRWxlbWVudENsaWVudDsKIGNsYXNzIFNWR1NW
R0VsZW1lbnQ7CiBjbGFzcyBTVkdVc2VFbGVtZW50OwogCkBAIC05OCw2ICs5OSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVSZWZlcmVuY2luZ0VsZW1lbnQoU1ZHRWxlbWVudCYpOwogICAg
IHZvaWQgcmVtb3ZlRWxlbWVudFJlZmVyZW5jZSgpOwogCisgICAgVmVjdG9yPFdlYWtQdHI8U1ZH
UmVzb3VyY2VFbGVtZW50Q2xpZW50Pj4gcmVmZXJlbmNpbmdDU1NDbGllbnRzKCkgY29uc3Q7Cisg
ICAgdm9pZCBhZGRSZWZlcmVuY2luZ0NTU0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQm
KTsKKyAgICB2b2lkIHJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVu
dENsaWVudCYpOworCisKICAgICBTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVudCgpIGNv
bnN0OwogICAgIFJlZlB0cjxTVkdVc2VFbGVtZW50PiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggZjc0
MGRiYzA5NWNjZTVkNmY0MjE3OTA3NDk1NWY2MjEwZGE5OTNjNC4uYmJmY2JiMTgxMzcxNDgwYTMx
ZTQyZDE0NTQwMDAyODBjYzliYTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFy
ZURhdGEuaApAQCAtMTksNiArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNW
R1Jlc291cmNlRWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
NTUsNiArNTYsMTAgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQqIHJlZmVyZW5jZVRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlVGFyZ2V0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRS
ZWZlcmVuY2VUYXJnZXQoV2Vha1B0cjxTVkdFbGVtZW50PiYmIGVsZW1lbnQpIHsgbV9yZWZlcmVu
Y2VUYXJnZXQgPSBXVEZNb3ZlKGVsZW1lbnQpOyB9CiAKKyAgICB2b2lkIGFkZFJlZmVyZW5jaW5n
Q1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVudENsaWVudCYgY2xpZW50KSB7IG1fcmVmZXJlbmNp
bmdDU1NDbGllbnRzLmFkZChjbGllbnQpOyB9CisgICAgdm9pZCByZW1vdmVSZWZlcmVuY2luZ0NT
U0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQmIGNsaWVudCkgeyBtX3JlZmVyZW5jaW5n
Q1NTQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsgfQorICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR1Jl
c291cmNlRWxlbWVudENsaWVudD4mIHJlZmVyZW5jaW5nQ1NTQ2xpZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJlbmNpbmdDU1NDbGllbnRzOyB9CisKICAgICBTVkdFbGVtZW50KiBjb3JyZXNw
b25kaW5nRWxlbWVudCgpIHsgcmV0dXJuIG1fY29ycmVzcG9uZGluZ0VsZW1lbnQuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRp
bmdFbGVtZW50KSB7IG1fY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlV2Vha1B0cihjb3JyZXNw
b25kaW5nRWxlbWVudCk7IH0KIApAQCAtODYsNiArOTEsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1fcmVmZXJlbmNpbmdFbGVtZW50czsKICAgICBX
ZWFrUHRyPFNWR0VsZW1lbnQ+IG1fcmVmZXJlbmNlVGFyZ2V0OworCisgICAgV2Vha0hhc2hTZXQ8
U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50PiBtX3JlZmVyZW5jaW5nQ1NTQ2xpZW50czsKKwogICAg
IFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1faW5zdGFuY2VzOwogICAgIFdlYWtQdHI8U1ZHRWxl
bWVudD4gbV9jb3JyZXNwb25kaW5nRWxlbWVudDsKICAgICBib29sIG1faW5zdGFuY2VzVXBkYXRl
c0Jsb2NrZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNl
RWxlbWVudENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlRWxlbWVudENs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZDM3N2RjMzliZmU4NDA3NjllNzA3MzZmZDE3MDYxOWMzZTI4
MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVzb3VyY2VFbGVt
ZW50Q2xpZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTVkdFbGVtZW50OworCitjbGFzcyBTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50PiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgdmly
dHVhbCB2b2lkIHJlc291cmNlQ2hhbmdlZChTVkdFbGVtZW50JikgPSAwOworCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436960</attachid>
            <date>2021-08-31 16:11:07 -0700</date>
            <delta_ts>2021-09-01 02:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204204-20210831161106.patch</filename>
            <type>text/plain</type>
            <size>44351</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc3ZDM3OTRjZGQ1OTcz
MTQ2N2Q5NWNkYWYyMmVlZDVmNmMyMWQ2ZS4uN2IxNDQ5M2M1Y2M3NWQ3ZmNlOWVkNzFkMDI1NzYy
NTkwYzU5M2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0aW5nIGEg
cG9seWdvbiByZWZlcmVuY2VkIGJ5IGNsaXAtcGF0aCBkb2Vzbid0IHJlcGFpbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDIwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIG1lY2hhbmlz
bSB0aGF0IGFsbG93cyBTVkcgY2xpcHBpbmcgYW5kIGZpbHRlciByZXNvdXJjZXMgcmVmZXJlbmNl
ZCBmcm9tCisgICAgICAgIENTUyB0byB0cmlnZ2VyIHJlcGFpbnRzIHdoZW4gdGhleSBjaGFuZ2Uu
IFRoaXMgZml4ZXMgYnVncyB3aGVyZSBjaGFuZ2UgdG8gdGhlCisgICAgICAgIFNWRywgdmlhIHNj
cmlwdCBvciBhbmltYXRpb25zLCBmYWlsZWQgdG8gY2F1c2UgQ1NTLXJlbmRlcmVkIGVsZW1lbnRz
IHRoYXQKKyAgICAgICAgcmVmZXJlbmNlIHRoZW0sIHZpYSBjbGlwLXBhdGg6dXJsKCNmb28pIG9y
IGZpbHRlcjp1cmwoI2ZvbykgdG8gcmVwYWludC4KKworICAgICAgICBUaGUga2V5IGlzIHRoYXQg
U1ZHRWxlbWVudCBzdG9yZXMgYSBzZXQgb2YgU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50cywgYXMg
aXQgZG9lcyBmb3IKKyAgICAgICAgZWxlbWVudCByZWZlcmVuY2VzIHdoaWNoIGFyZSB0aGUgZXF1
aXZhbGVudCBmb3IgaW50cmEtU1ZHIHJlc291cmNlIHJlZnMuCisKKyAgICAgICAgUmVuZGVyRWxl
bWVudFJhcmVEYXRhIGhvbGRzIGEgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyBjbGFzcywgd2hpY2gg
c3RvcmVzIGEgbWFwCisgICAgICAgIG9mIHJlc291cmNlSUQgLT4gU1ZHUmVzb3VyY2VFbGVtZW50
Q2xpZW50LCBhbmQgaXRzIGltcGxlbWVudGF0aW9uIG9mIFNWR1Jlc291cmNlRWxlbWVudENsaWVu
dHMKKyAgICAgICAgdHJpZ2dlcnMgdGhlIHJlcGFpbnQuCisKKyAgICAgICAgUmVmZXJlbmNlZFNW
R1Jlc291cmNlcyBhcmUgdXBkYXRlZCBhZnRlciBhIHN0eWxlIGNoYW5nZSwgd2hpY2ggd29ya3Mg
YmVjYXVzZQorICAgICAgICB0aGV5IG9ubHkgZXZlciBmaW5kIGVsZW1lbnRzLCBub3QgU1ZHIHJl
bmRlcmVycy4KKworICAgICAgICBDaGFuZ2UgZmlsdGVyIGFuZCBjbGlwLXBhdGggY29kZSBnbyB2
aWEgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyB0byBmaW5kIHRoZWlyCisgICAgICAgIGFwcHJvcHJp
YXRlIGZpbHRlciBlbGVtZW50IG9yIGNsaXBwaW5nIHJlbmRlcmVyLCBmb3IgY2xlYW5saW5lc3Mu
CisKKyAgICAgICAgVGVzdHM6IGNzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1y
ZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1w
YXRoLWFuaW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9t
YXNraW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgtY2hhbmdlLXJlcGFpbnQuaHRtbAorCisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6IFJlbW92ZSBzb21lIGNvZGUgcmVs
YXRlZCB0byBsb29raW5nCisgICAgICAgIGZvciByZXNvdXJjZXMgaW4gZXh0ZXJuYWwgZG9jdW1l
bnRzLCBzaW5jZSB0aGlzIGZ1bmN0aW9uYWxpdHkgd2FzIHJlbW92ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDo6cmVzb3VyY2VDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OlJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6flJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRTVkdSZXNvdXJjZUlEcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRhdGVSZWZlcmVuY2VkUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OmVsZW1lbnRGb3JSZXNvdXJj
ZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5j
ZWRGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzLmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y2xlYXJSZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnVw
ZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UmVu
ZGVyT2JqZWN0UmFyZURhdGE6OlJlbmRlck9iamVjdFJhcmVEYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJl
bmRlck9iamVjdFJhcmVEYXRhOjpSZW5kZXJPYmplY3RSYXJlRGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZWZl
cmVuY2luZ0NTU0NsaWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
YWRkUmVmZXJlbmNpbmdDU1NDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
cmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudFJhcmVEYXRhOjphZGRSZWZlcmVuY2luZ0NTU0NsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OnJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6cmVmZXJlbmNpbmdDU1NDbGll
bnRzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Lmg6IEFk
ZGVkLgorCiAyMDIxLTA4LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IHNlbGYuc3RydWN0dXJlZENsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
MjRjNTE1YzA1N2IyNGYwZjJmZjYxMjI5ZTg0Yjk0YzZhNTc2OWM0MC4uNTQzNzM2OTE1MDg1M2M1
ZjE4ZGM4MWEwOTkwNzM2YTc0NTVhMzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxODYsNiArMjE4
Niw3IEBAIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAogcmVuZGVyaW5nL01hcmtl
ZFRleHQuY3BwCiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAKIHJlbmRlcmluZy9Qb2ludGVy
RXZlbnRzSGl0UnVsZXMuY3BwCityZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAK
IHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZjFjM2QzYWVmYjA3NmJjYmI3
MDIwYTU1MWU1ZTI5ZmE0ZWMwNjQ2Li4wOGRiNzg2ZjU0MWRhMTI3OTUxZmM3MzUzN2I5MjNkYjEx
ZjZhYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02MzAwLDYgKzYzMDAsOSBAQAogCQkwRkJGQ0UyNjI1NkNCRDlBMDBBMEI0
ODkgLyogRGlzcGxheUJveENsaXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUJveENsaXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDUxNjgyMTlCNUVCRTAwMzFDMzlFIC8q
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwNTE2QTIxOUI1RUJFMDAzMUMzOUUgLyogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzI3NkI4MjZEQUY5QjcwMDkzRThFRCAvKiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMjc2QkEyNkRBRjlFOTAwOTNFOEVEIC8qIFJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJlbmNlZFNWR1Jlc291cmNl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzI3NkJDMjZEQjE5MDAwMDkz
RThFRCAvKiBTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVz
b3VyY2VFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRC
MDA0MjJCOUEwMkMwMENGM0IxRSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsUHJveHlOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRC
MDA1MjJCOUEwMkQwMENGM0IxRSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5v
ZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQzY5MkJBMjU3QzBGNDAwMDk4RTNGOSAvKiBTY3JvbGxBbmltYXRpb25LaW5ldGljLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2MzUzLDYgKzI2MzU2LDcgQEAKIAkJCQlCMjIyNzkwOTBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3OTBBMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaCAqLywKIAkJCQlCMjIyNzkwQjBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUmVuZGVyaW5nSW50ZW50LmlkbCAqLywKKwkJCQkwRkMyNzZCQzI2REIx
OTAwMDA5M0U4RUQgLyogU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQjIyMjc5
MEMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NjcmlwdEVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3
OTBEMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5
MEUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NjcmlwdEVsZW1lbnQuaWRsICovLApAQCAtMjk1ODQs
NiArMjk1ODgsOCBAQAogCQkJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNl
LmggKi8sCiAJCQkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRS
dWxlcy5jcHAgKi8sCiAJCQkJQjJCMUY3MTUwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5oICovLAorCQkJCTBGQzI3NkJBMjZEQUY5RTkwMDkzRThFRCAvKiBSZWZlcmVu
Y2VkU1ZHUmVzb3VyY2VzLmNwcCAqLywKKwkJCQkwRkMyNzZCODI2REFGOUI3MDA5M0U4RUQgLyog
UmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oICovLAogCQkJCUI1OUVEMjNBMTgyNzI2NzkwMDZENTY0
QyAvKiBSZW5kZXJBbmNlc3Rvckl0ZXJhdG9yLmggKi8sCiAJCQkJN0NENDk0Q0ExQTg2RUIxRDAw
MEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuY3BwICovLAogCQkJCTdDRDQ5NENCMUE4NkVCMUQw
MDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCmluZGV4IDNiZjc4NmNjZmUzMjRlNjQ2NjI1MjBmYTc2YjcyNDRmOWViNmQ0
MDMuLjY0ZTk4Mzg0YWYwMDRlZjY5OWJjNjJlNmE2Yzk3NzU2ZjU5YzY2ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
RkVNZXJnZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJCdWlsZGVyLmgiCkBAIC03MiwyNiArNzMsMTQgQEAgR3JhcGhpY3NDb250ZXh0KiBDU1NG
aWx0ZXI6OmlucHV0Q29udGV4dCgpCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpbHRlckVmZmVj
dCYgcHJldmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0
aW9uKQogewotICAgIGF1dG8qIGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gZmlsdGVyT3Bl
cmF0aW9uLmNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7Ci0gICAgYXV0byogY2FjaGVkU1ZH
RG9jdW1lbnQgPSBjYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA/IGNhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKLQotICAgIC8vIElmIHdlIGhhdmUgYW4g
U1ZHIGRvY3VtZW50LCB0aGlzIGlzIGFuIGV4dGVybmFsIHJlZmVyZW5jZS4gT3RoZXJ3aXNlCi0g
ICAgLy8gd2UgbG9vayB1cCB0aGUgcmVmZXJlbmNlZCBub2RlIGluIHRoZSBjdXJyZW50IGRvY3Vt
ZW50LgotICAgIERvY3VtZW50KiBkb2N1bWVudDsKLSAgICBpZiAoIWNhY2hlZFNWR0RvY3VtZW50
KQotICAgICAgICBkb2N1bWVudCA9ICZyZW5kZXJlci5kb2N1bWVudCgpOwotICAgIGVsc2Ugewot
ICAgICAgICBkb2N1bWVudCA9IGNhY2hlZFNWR0RvY3VtZW50LT5kb2N1bWVudCgpOwotICAgICAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgYXV0byogZmlsdGVyID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGZpbHRlck9wZXJhdGlv
bi5mcmFnbWVudCgpKTsKLSAgICBpZiAoIWZpbHRlcikgeworICAgIGF1dG8qIGZpbHRlckVsZW1l
bnQgPSByZW5kZXJlci5lbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkucmVmZXJlbmNlZEZp
bHRlckVsZW1lbnQocmVuZGVyZXIuZG9jdW1lbnQoKSwgZmlsdGVyT3BlcmF0aW9uKTsKKyAgICBp
ZiAoIWZpbHRlckVsZW1lbnQpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0
cmVhbSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8PCAiIGJ1aWxkUmVmZXJlbmNlRmlsdGVyOiBm
YWlsZWQgdG8gZmluZCBmaWx0ZXIgcmVuZGVyZXIsIGFkZGluZyBwZW5kaW5nIHJlc291cmNlICIg
PDwgZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCkpOwogICAgICAgICAvLyBBbHRob3VnaCB3ZSBk
aWQgbm90IGZpbmQgdGhlIHJlZmVyZW5jZWQgZmlsdGVyLCBpdCBtaWdodCBleGlzdCBsYXRlciBp
biB0aGUgZG9jdW1lbnQuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNraXBzIGFub255bW91cyBS
ZW5kZXJPYmplY3RzLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxMDg1PgorICAgICAgICAvLyBG
SVhNRTogVW5jbGVhciBpZiB0aGlzIGRvZXMgYW55dGhpbmcuCiAgICAgICAgIGlmIChhdXRvKiBl
bGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS5hZGRQZW5kaW5nUmVzb3VyY2UoZmlsdGVyT3BlcmF0aW9uLmZyYWdt
ZW50KCksICplbGVtZW50KTsKKyAgICAgICAgICAgIHJlbmRlcmVyLmRvY3VtZW50KCkuYWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJPcGVyYXRpb24uZnJhZ21l
bnQoKSwgKmVsZW1lbnQpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEw
MSw3ICs5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVu
Y2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZm
ZWN0czsKIAotICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRlcikpIHsKKyAgICBmb3Ig
KGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXJFbGVtZW50KSkgewogICAgICAgICBlZmZlY3QgPSBl
ZmZlY3RFbGVtZW50LmJ1aWxkKGJ1aWxkZXIuZ2V0KCksICp0aGlzKTsKICAgICAgICAgaWYgKCFl
ZmZlY3QpIHsKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IkNTU0ZpbHRlciAiIDw8IHRoaXMgPDwgIiBidWlsZFJlZmVyZW5jZUZpbHRlcjogZmFpbGVkIHRv
IGJ1aWxkIGVmZmVjdCBmcm9tICIgPDwgZWZmZWN0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTQ3OGNlODY2M2RkYTA4YzBmZTA0ZGQ2MDI5NTJiMzBmNDg1NjIwZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCisKKyNpbmNsdWRlICJDbGlwUGF0aE9wZXJh
dGlvbi5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
IgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiU1ZHQ2xpcFBhdGhFbGVtZW50
LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVi
bGljIFNWR1Jlc291cmNlRWxlbWVudENsaWVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQpOworcHVibGljOgorICAgIENTU1NWR1Jlc291
cmNlRWxlbWVudENsaWVudChSZW5kZXJFbGVtZW50JiBjbGllbnRSZW5kZXJlcikKKyAgICAgICAg
OiBtX2NsaWVudFJlbmRlcmVyKGNsaWVudFJlbmRlcmVyKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIHJlc291cmNlQ2hhbmdlZChTVkdFbGVtZW50JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
UmVuZGVyRWxlbWVudCYgbV9jbGllbnRSZW5kZXJlcjsKK307CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQpOworCit2b2lkIENTU1NWR1Jl
c291cmNlRWxlbWVudENsaWVudDo6cmVzb3VyY2VDaGFuZ2VkKFNWR0VsZW1lbnQmKQoreworICAg
IGlmICghbV9jbGllbnRSZW5kZXJlci5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKKyAgICAg
ICAgbV9jbGllbnRSZW5kZXJlci5yZXBhaW50KCk7Cit9CisKK1dURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKTsKKworUmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6UmVmZXJlbmNlZFNWR1Jlc291cmNlcyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICA6
IG1fcmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK1JlZmVyZW5jZWRTVkdSZXNvdXJjZXM6On5S
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKK3sKKyAgICBhdXRvJiBkb2N1bWVudCA9IG1fcmVuZGVy
ZXIuZG9jdW1lbnQoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHRhcmdldElEIDogY29weVRvVmVj
dG9yKG1fZWxlbWVudENsaWVudHMua2V5cygpKSkKKyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yVGFy
Z2V0KGRvY3VtZW50LCB0YXJnZXRJRCk7Cit9CisKK3ZvaWQgUmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0
cmluZyYgdGFyZ2V0SUQpCit7CisgICAgYXV0byBjbGllbnQgPSBtX2VsZW1lbnRDbGllbnRzLnRh
a2UodGFyZ2V0SUQpOworCisgICAgYXV0byogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldElEKTsKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4odGFyZ2V0RWxlbWVu
dCkpCisgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0YXJnZXRFbGVtZW50KS5yZW1vdmVS
ZWZlcmVuY2luZ0NTU0NsaWVudCgqY2xpZW50KTsKK30KKworSGFzaE1hcDxBdG9tU3RyaW5nLCBR
dWFsaWZpZWROYW1lPiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VJRHMoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIEhhc2hNYXA8QXRvbVN0cmlu
ZywgUXVhbGlmaWVkTmFtZT4gcmVmZXJlbmNlZFJlc291cmNlSURUb1RhZ05hbWVNYXA7CisgICAg
aWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgewor
ICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0
aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7CisgICAgICAgIGlmICghY2xpcFBhdGguZnJhZ21lbnQo
KS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZWZlcmVuY2VkUmVzb3VyY2VJRFRvVGFnTmFtZU1h
cC5hZGQoY2xpcFBhdGguZnJhZ21lbnQoKSwgU1ZHTmFtZXM6OmNsaXBQYXRoVGFnKTsKKyAgICB9
CisKKyAgICBpZiAoc3R5bGUuaGFzRmlsdGVyKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZmls
dGVyT3BlcmF0aW9ucyA9IHN0eWxlLmZpbHRlcigpOworICAgICAgICBmb3IgKGF1dG8mIG9wZXJh
dGlvbiA6IGZpbHRlck9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CisgICAgICAgICAgICBhdXRv
JiBmaWx0ZXJPcGVyYXRpb24gPSAqb3BlcmF0aW9uOworICAgICAgICAgICAgaWYgKGZpbHRlck9w
ZXJhdGlvbi50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvJiByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gPSBkb3duY2FzdDxS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICAg
ICAgaWYgKCFyZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRSZXNvdXJjZUlEVG9UYWdOYW1lTWFwLmFkZChy
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSwgU1ZHTmFtZXM6OmZpbHRlclRhZyk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlZmVyZW5jZWRS
ZXNvdXJjZUlEVG9UYWdOYW1lTWFwOworfQorCit2b2lkIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6
OnVwZGF0ZVJlZmVyZW5jZWRSZXNvdXJjZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBIYXNo
TWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+JiByZWZlcmVuY2VkUmVzb3VyY2VJRHMpCit7
CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBvbGRLZXlzOworICAgIGZvciAoYXV0byYga2V5IDog
bV9lbGVtZW50Q2xpZW50cy5rZXlzKCkpCisgICAgICAgIG9sZEtleXMuYWRkKGtleSk7CisKKyAg
ICBmb3IgKGF1dG8mIFt0YXJnZXRJRCwgdGFnTmFtZV0gOiByZWZlcmVuY2VkUmVzb3VyY2VJRHMp
IHsKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JSZXNvdXJjZUlEKGRvY3VtZW50
LCB0YXJnZXRJRCwgdGFnTmFtZSk7CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIG1fZWxlbWVudENsaWVudHMuZW5zdXJlKHRhcmdldElELCBb
Jl0geworICAgICAgICAgICAgYXV0byBjbGllbnQgPSBXVEY6Om1ha2VVbmlxdWU8Q1NTU1ZHUmVz
b3VyY2VFbGVtZW50Q2xpZW50PihtX3JlbmRlcmVyKTsKKyAgICAgICAgICAgIGVsZW1lbnQtPmFk
ZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KCpjbGllbnQpOworICAgICAgICAgICAgcmV0dXJuIGNsaWVu
dDsKKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBvbGRLZXlzLnJlbW92ZSh0YXJnZXRJ
RCk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byYgdGFyZ2V0SUQgOiBvbGRLZXlzKQorICAg
ICAgICByZW1vdmVDbGllbnRGb3JUYXJnZXQoZG9jdW1lbnQsIHRhcmdldElEKTsKK30KKworLy8g
U1ZHIGNvZGUgdXNlcyBnZXRSZW5kZXJTVkdSZXNvdXJjZUJ5SWQ8PiwgYnV0IHRoYXQgd29ya3Mg
aW4gdGVybXMgb2YgcmVuZGVyZXJzLiBXZSBuZWVkIHRvIGZpbmQgcmVzb3VyY2VzCisvLyBiZWZv
cmUgdGhlIHJlbmRlciB0cmVlIGlzIGZ1bGx5IGNvbnN0cnVjdGVkLCBzbyB0aGlzIHdvcmtzIG9u
IEVsZW1lbnRzLgorU1ZHRWxlbWVudCogUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6ZWxlbWVudEZv
clJlc291cmNlSUQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiByZXNvdXJj
ZUlELCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQoreworICAgIGF1dG8qIGVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZXNvdXJjZUlEKTsKKyAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUodGFnTmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIGRvd25jYXN0PFNWR0VsZW1lbnQ+KGVsZW1lbnQpOworfQorCitTVkdG
aWx0ZXJFbGVtZW50KiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkRmlsdGVyRWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYg
cmVmZXJlbmNlRmlsdGVyKQoreworICAgIGlmIChyZWZlcmVuY2VGaWx0ZXIuZnJhZ21lbnQoKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEF0b21TdHJpbmcgdGFyZ2V0
SUQgPSByZWZlcmVuY2VGaWx0ZXIuZnJhZ21lbnQoKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxl
bWVudEZvclJlc291cmNlSUQoZG9jdW1lbnQsIHRhcmdldElELCBTVkdOYW1lczo6ZmlsdGVyVGFn
KTsKKyAgICByZXR1cm4gZWxlbWVudCA/IGRvd25jYXN0PFNWR0ZpbHRlckVsZW1lbnQ+KGVsZW1l
bnQpIDogbnVsbHB0cjsKK30KKworUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBSZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24mIGNsaXBQYXRoKQoreworICAgIGlm
IChjbGlwUGF0aC5mcmFnbWVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgQXRvbVN0cmluZyB0YXJnZXRJRCA9IGNsaXBQYXRoLmZyYWdtZW50KCk7CisgICAgLy8g
Rm9yIHNvbWUgcmVhc29uLCBTVkcgc3RvcmVzIGEgY2FjaGUgb2YgaWQgLT4gcmVuZGVyZXIsIHJh
dGhlciB0aGFuIGp1c3QgdXNpbmcgZ2V0RWxlbWVudEJ5SWQoKSBhbmQgcmVuZGVyZXIoKS4KKyAg
ICByZXR1cm4gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cj4oZG9jdW1lbnQsIHRhcmdldElEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmYyZjc4NTU1ZjhjNzlmYmNkN2VmZGNiNTYwMDJmZjczNmM2MjU2NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ7CitjbGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9w
ZXJhdGlvbjsKK2NsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjsKK2NsYXNzIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjsKK2NsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOworY2xhc3Mg
UmVuZGVyU3R5bGU7CitjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgU1ZHRWxlbWVudDsKK2Ns
YXNzIFNWR0ZpbHRlckVsZW1lbnQ7CisKK2NsYXNzIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgewor
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVmZXJlbmNlZFNWR1Jlc291cmNlcyk7CitwdWJs
aWM6CisgICAgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyhSZW5kZXJFbGVtZW50Jik7CisgICAgflJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKKworICAgIHN0YXRpYyBIYXNoTWFwPEF0b21TdHJpbmcs
IFF1YWxpZmllZE5hbWU+IHJlZmVyZW5jZWRTVkdSZXNvdXJjZUlEcyhjb25zdCBSZW5kZXJTdHls
ZSYpOworICAgIHZvaWQgdXBkYXRlUmVmZXJlbmNlZFJlc291cmNlcyhEb2N1bWVudCYsIGNvbnN0
IEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4mKTsKKworICAgIC8vIENsaXBwaW5n
IG5lZWRzIGEgcmVuZGVyZXIsIGZpbHRlcnMgdXNlIGFuIGVsZW1lbnQuCisgICAgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyKiByZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24mKTsKKyAgICBTVkdGaWx0ZXJFbGVtZW50KiBy
ZWZlcmVuY2VkRmlsdGVyRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbiYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBTVkdFbGVtZW50KiBlbGVtZW50Rm9y
UmVzb3VyY2VJRChEb2N1bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmIHJlc291cmNlSUQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0
KERvY3VtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOworCisgICAgUmVuZGVyRWxlbWVudCYgbV9y
ZW5kZXJlcjsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDU1NTVkdS
ZXNvdXJjZUVsZW1lbnRDbGllbnQ+PiBtX2VsZW1lbnRDbGllbnRzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CmluZGV4IDk0NGY4ZThlM2RkZTg0MjQwNWEzZjJhMTdjOGY1YTUzNzZjY2I0NjcuLjcyN2IxMjk4
YmJjMjRhZGM1YzQwNGQyMzkwNzFjZjllOWJiZmY5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ291
bnRlci5oIgpAQCAtOTU1LDYgKzk1Niw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTCiAKICAg
ICBTVkdSZW5kZXJTdXBwb3J0OjpzdHlsZUNoYW5nZWQoKnRoaXMsIG9sZFN0eWxlKTsKIAorICAg
IGlmIChkaWZmID49IFN0eWxlRGlmZmVyZW5jZTo6UmVwYWludCkKKyAgICAgICAgdXBkYXRlUmVm
ZXJlbmNlZFNWR1Jlc291cmNlcygpOworCiAgICAgaWYgKCFtX3BhcmVudCkKICAgICAgICAgcmV0
dXJuOwogICAgIApAQCAtMjI3Niw2ICsyMjgwLDMzIEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cmVz
ZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRz
CiAgICAgICAgIGNoaWxkLnJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRDaGlsZEluZm9J
bmNsdWRpbmdEZXNjZW5kYW50cyhmcmFnbWVudGVkRmxvdyk7CiB9CiAKK1JlZmVyZW5jZWRTVkdS
ZXNvdXJjZXMmIFJlbmRlckVsZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKQor
eworICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKKyAgICBpZiAoIXJhcmVE
YXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpCisgICAgICAgIHJhcmVEYXRhLnJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMgPSBXVEY6Om1ha2VVbmlxdWU8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4oKnRo
aXMpOworCisgICAgcmV0dXJuICpyYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOworfQor
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OmNsZWFyUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpCit7Cisg
ICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBlbnN1cmVSYXJl
RGF0YSgpLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBudWxscHRyOworfQorCisvLyBUaGlzIG5l
ZWRzIHRvIHJ1biB3aGVuIHRoZSBlbnRpcmUgcmVuZGVyIHRyZWUgaGFzIGJlZW4gY29uc3RydWN0
ZWQsIHNvIGNhbid0IGJlIGNhbGxlZCBmcm9tIHN0eWxlRGlkQ2hhbmdlLgordm9pZCBSZW5kZXJF
bGVtZW50Ojp1cGRhdGVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKK3sKKyAgICBhdXRvIHJlZmVy
ZW5jZWRFbGVtZW50SURzID0gUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZFNWR1Jl
c291cmNlSURzKHN0eWxlKCkpOworICAgIGlmICghcmVmZXJlbmNlZEVsZW1lbnRJRHMuaXNFbXB0
eSgpKQorICAgICAgICBlbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkudXBkYXRlUmVmZXJl
bmNlZFJlc291cmNlcyhkb2N1bWVudCgpLCByZWZlcmVuY2VkRWxlbWVudElEcyk7CisgICAgZWxz
ZQorICAgICAgICBjbGVhclJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKK30KKwogI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCiBzdGF0aWMgUmVuZGVyT2JqZWN0OjpCbG9ja0NvbnRlbnRIZWln
aHRUeXBlIGluY2x1ZGVOb25GaXhlZEhlaWdodChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMzgzZGNk
ZGI4YzU1MThkYTdkZjRlYzI3NDExYTA0MjIzOGJlOTNiNC4uNmM0YzUwOGY4OTI1N2I4ZTZmMzdm
ZmFmMWEzMGFmM2RlNGE2MDEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRl
bnREYXRhOwogY2xhc3MgQ29udHJvbFN0YXRlczsKIGNsYXNzIEtleWZyYW1lTGlzdDsKK2NsYXNz
IFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CkBAIC0yNjIsNiArMjYzLDggQEAgcHVi
bGljOgogICAgIFdlYWtQdHI8UmVuZGVyQmxvY2tGbG93PiBiYWNrZHJvcFJlbmRlcmVyKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRCYWNrZHJvcFJlbmRlcmVyKFJlbmRlckJsb2NrRmxvdyYpOwogCisg
ICAgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyYgZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygp
OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBCYXNlVHlwZUZsYWcgewogICAgICAgICBSZW5kZXJM
YXllck1vZGVsT2JqZWN0RmxhZyAgPSAxIDw8IDAsCkBAIC0zNjEsNiArMzY0LDkgQEAgcHJpdmF0
ZToKICAgICAKICAgICBib29sIHNob3VsZFdpbGxDaGFuZ2VDcmVhdGVTdGFja2luZ0NvbnRleHQo
KSBjb25zdDsKICAgICB2b2lkIGlzc3VlUmVwYWludEZvck91dGxpbmVBdXRvKGZsb2F0IG91dGxp
bmVTaXplKTsKKyAgICAKKyAgICB2b2lkIHVwZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsK
KyAgICB2b2lkIGNsZWFyUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOwogCiAgICAgdW5zaWduZWQg
bV9iYXNlVHlwZUZsYWdzIDogNjsKICAgICB1bnNpZ25lZCBtX2FuY2VzdG9yTGluZUJveERpcnR5
IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDQ2NzJi
MWYwYTlkNGIxMGRhYjExZTg2ZDFmYjljMzVmMGM3ODVjMzMuLmQxZDc3MDE0ZDFjOGNmMDE1ODYz
Njg4YWM3NTI0YzdhNDdjNDc5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtODcsNiArODcsNyBAQAogI2luY2x1ZGUgIk92ZXJsYXBUZXN0UmVxdWVzdENs
aWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRnJhZ21lbnRDb250YWluZXIuaCIKQEAgLTMxODUsMTYgKzMxODYsMTUgQEAg
Ym9vbCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaWYgKHN0eWxlLmNsaXBQYXRoKCktPnR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6UmVm
ZXJlbmNlKSB7Ci0gICAgICAgIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKiByZWZlcmVuY2VD
bGlwUGF0aE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9u
Kj4oc3R5bGUuY2xpcFBhdGgoKSk7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJl
cigpLmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24t
PmZyYWdtZW50KCkpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5yZW5kZXJlcigp
ICYmIGlzPFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oZWxlbWVudC0+cmVuZGVyZXIoKSkpIHsK
KyAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KHN0eWxlLmNsaXBQYXRoKCkp
KSB7CisgICAgICAgIGF1dG8mIHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uID0gZG93bmNhc3Q8
UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKTsKKyAgICAgICAg
aWYgKGF1dG8qIGNsaXBwZXJSZW5kZXJlciA9IHJlbmRlcmVyKCkuZW5zdXJlUmVmZXJlbmNlZFNW
R1Jlc291cmNlcygpLnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIocmVuZGVyZXIoKS5kb2N1bWVu
dCgpLCByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbikpIHsKICAgICAgICAgICAgIGNvbnRleHQu
c2F2ZSgpOwogICAgICAgICAgICAgYXV0byByZWZlcmVuY2VCb3ggPSBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKHJvb3RSZWxhdGl2ZUJvdW5kcywgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgYXV0byBvZmZzZXQgPSByZWZlcmVuY2VCb3gubG9j
YXRpb24oKTsKICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG9mZnNldCk7CiAgICAgICAg
ICAgICBGbG9hdFJlY3Qgc3ZnUmVmZXJlbmNlQm94IHsge30sIHJlZmVyZW5jZUJveC5zaXplKCkg
fTsKLSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcj4oKmVsZW1l
bnQtPnJlbmRlcmVyKCkpLmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoY29udGV4dCwgcmVuZGVyZXIo
KSwgc3ZnUmVmZXJlbmNlQm94LCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
KyAgICAgICAgICAgIGNsaXBwZXJSZW5kZXJlci0+YXBwbHlDbGlwcGluZ1RvQ29udGV4dChjb250
ZXh0LCByZW5kZXJlcigpLCBzdmdSZWZlcmVuY2VCb3gsIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZl
Y3RpdmVab29tKCkpOwogICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW9mZnNldCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBhYTU2MjZmYTMzMGZmMGY4NGI1Yzg4MTYwNjEyZDVh
MTEyZDNiZmJlLi45N2IwOThmZDE1OTVmY2Y3ZmY0MGJkZDgzNjA4NGVhNjIyM2E2NmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBA
IC0xOTQ2LDYgKzE5NDcsMTUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkK
ICAgICBzZXRIYXNSYXJlRGF0YShmYWxzZSk7CiB9CiAKK1JlbmRlck9iamVjdDo6UmVuZGVyT2Jq
ZWN0UmFyZURhdGE6OlJlbmRlck9iamVjdFJhcmVEYXRhKCkKKyAgICA6IG1faGFzUmVmbGVjdGlv
bihmYWxzZSkKKyAgICAsIG1faXNSZW5kZXJGcmFnbWVudGVkRmxvdyhmYWxzZSkKKyAgICAsIG1f
aGFzT3V0bGluZUF1dG9BbmNlc3RvcihmYWxzZSkKK3sKK30KKworUmVuZGVyT2JqZWN0OjpSZW5k
ZXJPYmplY3RSYXJlRGF0YTo6flJlbmRlck9iamVjdFJhcmVEYXRhKCkgPSBkZWZhdWx0OworCiBi
b29sIFJlbmRlck9iamVjdDo6aGFzTm9uRW1wdHlWaXNpYmxlUmVjdFJlc3BlY3RpbmdQYXJlbnRG
cmFtZXMoKSBjb25zdAogewogICAgIGF1dG8gZW5jbG9zaW5nRnJhbWVSZW5kZXJlciA9IFtdIChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggNGM1ODQ1MmVkMWViOGUwNjlmN2E3OTlhMWNjZGIwYzUzYzIxNTUw
Yi4uZjNjNGU5MTg5MmRkMTIzMzA2MDc0MGE4OGUzNGI4Mjk1M2I3M2QzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3MgUGF0aDsKIGNsYXNzIFBv
c2l0aW9uOworY2xhc3MgUmVmZXJlbmNlZFNWR1Jlc291cmNlczsKIGNsYXNzIFJlbmRlckJveE1v
ZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyQmxvY2s7CkBAIC05
MjcsMTggKzkyOCwxNiBAQCBwcml2YXRlOgogICAgIGNsYXNzIFJlbmRlck9iamVjdFJhcmVEYXRh
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAg
ICBSZW5kZXJPYmplY3RSYXJlRGF0YSgpCi0gICAgICAgICAgICA6IG1faGFzUmVmbGVjdGlvbihm
YWxzZSkKLSAgICAgICAgICAgICwgbV9pc1JlbmRlckZyYWdtZW50ZWRGbG93KGZhbHNlKQotICAg
ICAgICAgICAgLCBtX2hhc091dGxpbmVBdXRvQW5jZXN0b3IoZmFsc2UpCi0gICAgICAgIHsKLSAg
ICAgICAgfQorICAgICAgICBSZW5kZXJPYmplY3RSYXJlRGF0YSgpOworICAgICAgICB+UmVuZGVy
T2JqZWN0UmFyZURhdGEoKTsKKwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNSZWZs
ZWN0aW9uLCBIYXNSZWZsZWN0aW9uKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNS
ZW5kZXJGcmFnbWVudGVkRmxvdywgSXNSZW5kZXJGcmFnbWVudGVkRmxvdyk7CiAgICAgICAgIEFE
RF9CT09MRUFOX0JJVEZJRUxEKGhhc091dGxpbmVBdXRvQW5jZXN0b3IsIEhhc091dGxpbmVBdXRv
QW5jZXN0b3IpOwogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNhY2hlZEZpcnN0TGluZVN0eWxlOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291
cmNlczsKICAgICAgICAgV2Vha1B0cjxSZW5kZXJCbG9ja0Zsb3c+IGJhY2tkcm9wUmVuZGVyZXI7
CiAgICAgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZS5jcHAKaW5kZXggOGFjYmIzMjczODU3NDEwNThjOTAxZWIyNjZkM2VjNTVi
ZjUwM2E3OS4uOWZkMzNmM2MwYjkxZjcxNDU2YmEyNWEyZWZkMDZkZDAyZDM5YTZhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3Iu
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgor
I2luY2x1ZGUgIlNWR1Jlc291cmNlRWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIlNWR1Jlc291
cmNlcy5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0NhY2hlLmgiCiAjaW5jbHVkZSAiU1ZHVVJJ
UmVmZXJlbmNlLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENv
bG9yKiBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlKCkKICAg
ICByZXR1cm4gc19zaGFyZWRTb2xpZFBhaW50aW5nUmVzb3VyY2U7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBib29sIG5lZWRzTGF5b3V0KQorc3RhdGljIHZvaWQgcmVtb3ZlRnJv
bUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Ym9vbCBuZWVkc0xheW91dCkKIHsKICAgICBpZiAoYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3Vy
Y2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKHJlbmRlcmVyKSkgewogICAgICAg
ICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVy
KCkpCkBAIC0xNjksNyArMTcwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21DYWNo
ZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMoUmVuZGVyRWxlbWVudCYgcmVuZGUKICAgICBpZiAo
IWlzPFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpyZW5kZXJlci5l
bGVtZW50KCkpLnJlZmVyZW5jaW5nRWxlbWVudHMoKSkgeworICAgIFJlZiBzdmdFbGVtZW50ID0g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnJlbmRlcmVyLmVsZW1lbnQoKSk7CisKKyAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBzdmdFbGVtZW50LT5yZWZlcmVuY2luZ0VsZW1lbnRzKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgLy8gV2UgYWxsb3cgY3ljbGVzIGluIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyByZWZlcmVuY2Ug
c2V0cyBpbiBvcmRlciB0byBhdm9pZCBleHBlbnNpdmUKICAgICAgICAgICAgIC8vIHJlZmVyZW5j
ZSBncmFwaCBhZGp1c3RtZW50cyBvbiBjaGFuZ2VzLCBzbyB3ZSBuZWVkIHRvIGJyZWFrIHBvc3Np
YmxlIGN5Y2xlcyBoZXJlLgpAQCAtMTgyLDYgKzE4NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhSZW5kZXJFbGVtZW50JiBy
ZW5kZQogICAgICAgICAgICAgaW52YWxpZGF0aW5nRGVwZW5kZW5jaWVzLmdldCgpLnJlbW92ZShl
bGVtZW50LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIGZvciAoYXV0byYgY3NzQ2xp
ZW50IDogc3ZnRWxlbWVudC0+cmVmZXJlbmNpbmdDU1NDbGllbnRzKCkpIHsKKyAgICAgICAgaWYg
KCFjc3NDbGllbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY3NzQ2xpZW50LT5y
ZXNvdXJjZUNoYW5nZWQoc3ZnRWxlbWVudC5nZXQoKSk7CisgICAgfQogfQogCiB2b2lkIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
UmVuZGVyT2JqZWN0JiBvYmplY3QsIGJvb2wgbmVlZHNMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKaW5kZXggMjljMWI4NDJlZmYyNzY0ODllY2U1NDFkZDQxZjdlZjA2MDUzOTcxNS4u
YmE1NDI2MDZiYjA5YmE2OTg4NzNkYmQ3YWUwOGExM2UyMmFhZmRiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJT
VkdSZW5kZXJTdXBwb3J0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RpdGxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKQEAgLTMzNiw2ICszMzcsMjUgQEAgdm9pZCBT
VkdFbGVtZW50OjpyZW1vdmVFbGVtZW50UmVmZXJlbmNlKCkKICAgICAgICAgZGVzdGluYXRpb24t
PnJlbW92ZVJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiB9CiAKK1ZlY3RvcjxXZWFrUHRyPFNW
R1Jlc291cmNlRWxlbWVudENsaWVudD4+IFNWR0VsZW1lbnQ6OnJlZmVyZW5jaW5nQ1NTQ2xpZW50
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQorICAgICAgICByZXR1cm4geyB9
OworICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9zdmdSYXJlRGF0YS0+cmVmZXJlbmNpbmdDU1ND
bGllbnRzKCkpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50
KFNWR1Jlc291cmNlRWxlbWVudENsaWVudCYgY2xpZW50KQoreworICAgIGVuc3VyZVNWR1JhcmVE
YXRhKCkuYWRkUmVmZXJlbmNpbmdDU1NDbGllbnQoY2xpZW50KTsKK30KKwordm9pZCBTVkdFbGVt
ZW50OjpyZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBlbnN1cmVTVkdSYXJlRGF0YSgpLnJlbW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KGNsaWVudCk7
Cit9CisKIFNWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6OmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9zdmdSYXJlRGF0YSA/IG1fc3ZnUmFyZURhdGEtPmNvcnJlc3Bv
bmRpbmdFbGVtZW50KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggOTc0
ODhhYjMyNzhhNzY0OGZiOWJkZjgyZDY5NDE5OWU3ZDU4NWVlYi4uNzA0YWU4MGE5N2IxZDRhNDM5
Y2EyZWMwMTcxYWUzMDY4ZWU3MmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC00MSw2
ICs0MSw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwog
Y2xhc3MgU1ZHRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnk7CitjbGFzcyBTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50
OwogY2xhc3MgU1ZHVXNlRWxlbWVudDsKIApAQCAtOTgsNiArOTksMTEgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlUmVmZXJlbmNpbmdFbGVtZW50KFNWR0VsZW1lbnQmKTsKICAgICB2b2lkIHJl
bW92ZUVsZW1lbnRSZWZlcmVuY2UoKTsKIAorICAgIFZlY3RvcjxXZWFrUHRyPFNWR1Jlc291cmNl
RWxlbWVudENsaWVudD4+IHJlZmVyZW5jaW5nQ1NTQ2xpZW50cygpIGNvbnN0OworICAgIHZvaWQg
YWRkUmVmZXJlbmNpbmdDU1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Jik7CisgICAg
dm9pZCByZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQm
KTsKKworCiAgICAgU1ZHRWxlbWVudCogY29ycmVzcG9uZGluZ0VsZW1lbnQoKSBjb25zdDsKICAg
ICBSZWZQdHI8U1ZHVXNlRWxlbWVudD4gY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGY3NDBkYmMwOTVj
Y2U1ZDZmNDIxNzkwNzQ5NTVmNjIxMGRhOTkzYzQuLmJiZmNiYjE4MTM3MTQ4MGEzMWU0MmQxNDU0
MDAwMjgwY2M5YmE2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgK
QEAgLTE5LDYgKzE5LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTU1LDYgKzU2
LDEwIEBAIHB1YmxpYzoKICAgICBTVkdFbGVtZW50KiByZWZlcmVuY2VUYXJnZXQoKSBjb25zdCB7
IHJldHVybiBtX3JlZmVyZW5jZVRhcmdldC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVmZXJlbmNl
VGFyZ2V0KFdlYWtQdHI8U1ZHRWxlbWVudD4mJiBlbGVtZW50KSB7IG1fcmVmZXJlbmNlVGFyZ2V0
ID0gV1RGTW92ZShlbGVtZW50KTsgfQogCisgICAgdm9pZCBhZGRSZWZlcmVuY2luZ0NTU0NsaWVu
dChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQmIGNsaWVudCkgeyBtX3JlZmVyZW5jaW5nQ1NTQ2xp
ZW50cy5hZGQoY2xpZW50KTsgfQorICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQo
U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50JiBjbGllbnQpIHsgbV9yZWZlcmVuY2luZ0NTU0NsaWVu
dHMucmVtb3ZlKGNsaWVudCk7IH0KKyAgICBjb25zdCBXZWFrSGFzaFNldDxTVkdSZXNvdXJjZUVs
ZW1lbnRDbGllbnQ+JiByZWZlcmVuY2luZ0NTU0NsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVyZW5jaW5nQ1NTQ2xpZW50czsgfQorCiAgICAgU1ZHRWxlbWVudCogY29ycmVzcG9uZGluZ0Vs
ZW1lbnQoKSB7IHJldHVybiBtX2NvcnJlc3BvbmRpbmdFbGVtZW50LmdldCgpOyB9CiAgICAgdm9p
ZCBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChTVkdFbGVtZW50KiBjb3JyZXNwb25kaW5nRWxlbWVu
dCkgeyBtX2NvcnJlc3BvbmRpbmdFbGVtZW50ID0gbWFrZVdlYWtQdHIoY29ycmVzcG9uZGluZ0Vs
ZW1lbnQpOyB9CiAKQEAgLTg2LDYgKzkxLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWFr
SGFzaFNldDxTVkdFbGVtZW50PiBtX3JlZmVyZW5jaW5nRWxlbWVudHM7CiAgICAgV2Vha1B0cjxT
VkdFbGVtZW50PiBtX3JlZmVyZW5jZVRhcmdldDsKKworICAgIFdlYWtIYXNoU2V0PFNWR1Jlc291
cmNlRWxlbWVudENsaWVudD4gbV9yZWZlcmVuY2luZ0NTU0NsaWVudHM7CisKICAgICBXZWFrSGFz
aFNldDxTVkdFbGVtZW50PiBtX2luc3RhbmNlczsKICAgICBXZWFrUHRyPFNWR0VsZW1lbnQ+IG1f
Y29ycmVzcG9uZGluZ0VsZW1lbnQ7CiAgICAgYm9vbCBtX2luc3RhbmNlc1VwZGF0ZXNCbG9ja2Vk
IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZXNvdXJjZUVsZW1lbnRD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OWQzNzdkYzM5YmZlODQwNzY5ZTcwNzM2ZmQxNzA2MTljM2UyODM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jlc291cmNlRWxlbWVudENsaWVu
dC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHRWxl
bWVudDsKKworY2xhc3MgU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNWR1Jlc291cmNlRWxlbWVudENsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwg
flNWR1Jlc291cmNlRWxlbWVudENsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9p
ZCByZXNvdXJjZUNoYW5nZWQoU1ZHRWxlbWVudCYpID0gMDsKKworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDg1NGZhYWM5MWEwNGFhNWVkNzc4YzhhNWE3ZTU4OGVmYTFkY2Zi
YjkuLjM3ZmE5M2EwMmFjOWZjZDNlNGIxMGQzMDkzOGZlYWJmYTFiOTk3MzkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wOC0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBVcGRhdGluZyBhIHBvbHlnb24gcmVmZXJlbmNlZCBieSBjbGlwLXBh
dGggZG9lc24ndCByZXBhaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBhaW50IHRlc3RzIHRoYXQgZGV0ZWN0IHJlcGFpbnRzIHdoZW4gcmVmZXJl
bmNlZCBjbGlwcyBvciBmaWx0ZXJzIGNoYW5nZS4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9y
ZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY3NzMy9maWx0ZXJzL3JlZmVyZW5jZS1maWx0ZXItY2hhbmdlLXJlcGFpbnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9tYXNraW5nL2NsaXAtcGF0aC1yZWZlcmVuY2UtbG9jYWwt
dXJsLXdpdGgtYmFzZS5odG1sOgorICAgICAgICAqIGNzczMvbWFza2luZy9yZWZlcmVuY2UtY2xp
cC1wYXRoLWFuaW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1hbmltYXRlLXRyYW5zZm9y
bS1yZXBhaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvbWFza2luZy9yZWZlcmVuY2Ut
Y2xpcC1wYXRoLWNoYW5nZS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
Y3NzMy9tYXNraW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgtY2hhbmdlLXJlcGFpbnQuaHRtbDogQWRk
ZWQuCisKIDIwMjEtMDgtMzEgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5jb20+
CiAKICAgICAgICAgWyBFV1MgQ2F0YWxpbmEgRGVidWcgXSBGYXN0LyogdGVzdHMgYXJlIGZsYWt5
IHdpdGggQVNTRVJUSU9OIEZBSUxFRDogIW1fZGVsZXRpb25IYXNCZWd1bi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVy
LWNoYW5nZS1yZXBhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmZkYTQzNWRlODA2YmI3
ZDU3ZjA2ZGU4NDNhYmNiNmFlYjMwZjJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3JlZmVyZW5jZS1maWx0ZXItY2hhbmdlLXJlcGFpbnQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorIChyZXBhaW50IHJlY3RzCisgIChyZWN0IDggOCAyMDAgMjAwKQor
KQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVmZXJlbmNlLWZpbHRl
ci1jaGFuZ2UtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3JlZmVyZW5j
ZS1maWx0ZXItY2hhbmdlLXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGY4MDkzNjUzMzc3MjQ4
YTE4MTAwNWE5ZTIzZTg1ZTAxZjljNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL3JlZmVyZW5jZS1maWx0ZXItY2hhbmdlLXJlcGFpbnQuaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAg
IHdpZHRoOiAyMDBweDsKKyAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHNpbHZlcjsKKyAgICAgICAgICBmaWx0ZXI6IHVybCgjZmlsdGVyKTsKKyAg
ICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hhbmdlRmlsdGVyQW5kRmluaXNoKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5z
dGFydFRyYWNraW5nUmVwYWludHMoKTsKKyAgICAgICAgCisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndHVyYnVsZW5jZScpLnNldEF0dHJpYnV0ZU5TKG51bGwsICdzZWVkJywg
NikKKyAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENvbnRlbnQgPSB3aW5k
b3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsICgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg
ICAgIGNoYW5nZUZpbHRlckFuZEZpbmlzaCgpCisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg
fSwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICA8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjAiIGhlaWdodD0iMCIgdmVyc2lv
bj0iMS4xIj4KKyAgICA8ZGVmcz4KKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyIj4KKyAgICAg
ICAgICAgIDxmZVR1cmJ1bGVuY2UgaWQ9InR1cmJ1bGVuY2UiIHR5cGU9InR1cmJ1bGVuY2UiIGJh
c2VGcmVxdWVuY3k9IjAuMDEiIG51bU9jdGF2ZXM9IjEiIHNlZWQ9IjUiIHN0aXRjaFRpbGVzPSJz
dGl0Y2giLz4KKyAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9InNhdHVyYXRlIiB2YWx1
ZXM9IjAiLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorICA8L3N2Zz4KKyAgPGRp
diBjbGFzcz0iYm94Ij48L2Rpdj4KKzxwcmUgaWQ9ImxvZyI+PC9wcmU+Cis8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvY2xpcC1wYXRoLXJlZmVyZW5jZS1sb2Nh
bC11cmwtd2l0aC1iYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvY2xpcC1wYXRo
LXJlZmVyZW5jZS1sb2NhbC11cmwtd2l0aC1iYXNlLmh0bWwKaW5kZXggMzQwMzM1OWExM2NhMWNh
MWE3ZTNhOTNmNTgzMDNmZWRhM2I2MjEyMS4uOWVkNmQ2Nzk2Y2YwMDUwZmYzNDUxZmNiYTQxNDQx
NjUyZWRhYWY0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL2NsaXAtcGF0
aC1yZWZlcmVuY2UtbG9jYWwtdXJsLXdpdGgtYmFzZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvbWFza2luZy9jbGlwLXBhdGgtcmVmZXJlbmNlLWxvY2FsLXVybC13aXRoLWJhc2UuaHRtbApA
QCAtMTQsNSArMTQsNSBAQAogPHN2Zz4KICAgPGNsaXBQYXRoIGlkPSJjbGlwIj4KICAgICA8cmVj
dCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIvPgotICA8L2ZpbHRlcj4KKyAgPC9jbGlwUGF0aD4K
IDwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL3JlZmVyZW5jZS1j
bGlwLXBhdGgtYW5pbWF0ZS10cmFuc2Zvcm0tcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1hbmltYXRlLXRyYW5zZm9ybS1y
ZXBhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzcxMjQ3ODRhZmU0YmY1ZjU0MDFlODkz
ZmZmZTZjOTQ5YTU4YmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9tYXNr
aW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgtYW5pbWF0ZS10cmFuc2Zvcm0tcmVwYWludC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisgUEFTUyByZXBhaW50UmVjdHMuaW5kZXhPZigncmVjdCA4
IDggMjIwIDIyMCcpIGlzIG5vdCAtMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9y
ZWZlcmVuY2UtY2xpcC1wYXRoLWFuaW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWFuaW1hdGUtdHJhbnNmb3Jt
LXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmM0OGVlMDdmNzFlMWU5NjdlMWM1NTRkYTYwNDVl
Njg4MDhiODM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL3Jl
ZmVyZW5jZS1jbGlwLXBhdGgtYW5pbWF0ZS10cmFuc2Zvcm0tcmVwYWludC5odG1sCkBAIC0wLDAg
KzEsNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2RpdiB7
CisgICAgd2lkdGg6IDIyMHB4OworICAgIGhlaWdodDogMjIwcHg7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgICAgY2xpcC1wYXRoOiB1cmwoI2NoZXZyb24pOworfQorc3ZnIHsKKyAg
ICBoZWlnaHQ6IDBweDsKKyAgICB3aWR0aDogMHB4OworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBsZXQgcmVwYWludFJlY3RzOworCisgICAgYXN5
bmMgZnVuY3Rpb24gYW5pbWF0aW9uRnJhbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rp
b24gZGVsYXlGb3IobXMpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rp
b24gcmVuZGVyaW5nVXBkYXRlKCkKKyAgICB7CisgICAgICAgIGF3YWl0IGFuaW1hdGlvbkZyYW1l
KCk7CisgICAgICAgIGF3YWl0IGRlbGF5Rm9yKDApOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0
aW9uIGNoYW5nZUNsaXBQYXRoQW5kRmluaXNoKCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93
LmludGVybmFscykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnRlcm5hbHMuc3Rh
cnRUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgICAgIAorICAgICAgICBhd2FpdCByZW5kZXJpbmdV
cGRhdGUoKTsKKyAgICAgICAgYXdhaXQgcmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIAorICAg
ICAgICByZXBhaW50UmVjdHMgPSBpbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0KCk7CisgICAg
ICAgIC8vIExvb2sgZm9yIGF0IGxlYXN0IG9uZSByZXBhaW50LgorICAgICAgICBzaG91bGROb3RC
ZSgicmVwYWludFJlY3RzLmluZGV4T2YoJ3JlY3QgOCA4IDIyMCAyMjAnKSIsICItMSIpOworCisg
ICAgICAgIGludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgp
ID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBjaGFuZ2VDbGlw
UGF0aEFuZEZpbmlzaCgpCisgICAgICAgIH0sIDApOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PjwvZGl2PgorPHN2Zz4KKyAgICA8Y2xpcFBhdGggaWQ9
ImNoZXZyb24iPgorICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMTAwIDIyLjIyMiwxMzMuMzMz
IDguMzMzLDE0Ny4yMjIgLTEzLjg4OSwxMTMuODg5IC00Ny4yMjIsOTEuNjY3IC0zMy4zMzMsNzcu
Nzc4Ij4KKyAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT0iWE1MIiBhdHRy
aWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InRyYW5zbGF0ZSIgCisgICAgICAgICAgICB2YWx1
ZXM9IjAsMTAwOzE0NC40NDQsLTQ0LjQ0NCIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5p
dGUiLz4KKyAgICAgICAgPC9wb2x5Z29uPgorICAgIDwvY2xpcFBhdGg+Cis8L3N2Zz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9tYXNraW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgtY2hhbmdlLXJlcGFpbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgt
Y2hhbmdlLXJlcGFpbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmODJmNzUyZGE5ZGZhNTQx
NzdkZWY3NDEzYzI0MjEzOTAyMTU3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1jaGFuZ2UtcmVwYWludC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisgKHJlcGFpbnQgcmVjdHMKKyAgKHJlY3QgOCA4IDIyMCAyMjAp
CispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xp
cC1wYXRoLWNoYW5nZS1yZXBhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvcmVm
ZXJlbmNlLWNsaXAtcGF0aC1jaGFuZ2UtcmVwYWludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNjEzNTg1
YThkZWM3ZDQ0MjE3ZDU2MmEwOWM1NmVhMjVlNDI3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1jaGFuZ2UtcmVwYWludC5o
dG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KK2RpdiB7CisgICAgd2lkdGg6IDIyMHB4OworICAgIGhlaWdodDogMjIwcHg7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgY2xpcC1wYXRoOiB1cmwoI2NsaXApOworfQor
c3ZnIHsKKyAgICBoZWlnaHQ6IDBweDsKKyAgICB3aWR0aDogMHB4OworfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGFuZ2VDbGlwUGF0aEFuZEZpbmlzaCgpCisgICAgeworICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3Rh
cnRUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgICAgIAorICAgICAgICBjb25zdCByZWN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3QnKTsKKyAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUo
J3dpZHRoJywgMTAwKTsKKyAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIDEwMCk7
CisgICAgICAgIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENv
bnRlbnQgPSB3aW5kb3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgCisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
KCkgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGNoYW5nZUNs
aXBQYXRoQW5kRmluaXNoKCkKKyAgICAgICAgfSwgMCk7CisgICAgfSwgZmFsc2UpOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+PC9kaXY+Cis8c3ZnPgorICA8Y2xpcFBhdGggaWQ9
ImNsaXAiPgorICAgIDxyZWN0IGlkPSJyZWN0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIvPgor
ICA8L2NsaXBQYXRoPgorPC9zdmc+Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="460069"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="460079"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437177</attachid>
            <date>2021-09-02 11:59:36 -0700</date>
            <delta_ts>2021-09-02 16:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204204-20210902115935.patch</filename>
            <type>text/plain</type>
            <size>45294</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc3ZDM3OTRjZGQ1OTcz
MTQ2N2Q5NWNkYWYyMmVlZDVmNmMyMWQ2ZS4uYzZiZGQzM2QwMGQyYWZiZTJmY2U5N2NlMTMxZTA1
ZTY0MGYyOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTA4LTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZXMgdG8g
Y2xpcC1wYXRoIGFuZCBmaWx0ZXIgU1ZHIGVsZW1lbnRzIHJlZmVyZW5jZWQgYnkgQ1NTIGRvbid0
IHRyaWdnZXIgcmVwYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgor
CisgICAgICAgIENyZWF0ZSBhIG1lY2hhbmlzbSB0aGF0IGFsbG93cyBTVkcgY2xpcHBpbmcgYW5k
IGZpbHRlciByZXNvdXJjZXMgcmVmZXJlbmNlZCBmcm9tCisgICAgICAgIENTUyB0byB0cmlnZ2Vy
IHJlcGFpbnRzIHdoZW4gdGhleSBjaGFuZ2UuIFRoaXMgZml4ZXMgYnVncyB3aGVyZSBjaGFuZ2Ug
dG8gdGhlCisgICAgICAgIFNWRywgdmlhIHNjcmlwdCBvciBhbmltYXRpb25zLCBmYWlsZWQgdG8g
Y2F1c2UgQ1NTLXJlbmRlcmVkIGVsZW1lbnRzIHRoYXQKKyAgICAgICAgcmVmZXJlbmNlIHRoZW0s
IHZpYSBjbGlwLXBhdGg6dXJsKCNmb28pIG9yIGZpbHRlcjp1cmwoI2ZvbykgdG8gcmVwYWludC4K
KworICAgICAgICBUaGUga2V5IGlzIHRoYXQgU1ZHRWxlbWVudCBzdG9yZXMgYSBzZXQgb2YgU1ZH
UmVzb3VyY2VFbGVtZW50Q2xpZW50cywgYXMgaXQgZG9lcyBmb3IKKyAgICAgICAgZWxlbWVudCBy
ZWZlcmVuY2VzIHdoaWNoIGFyZSB0aGUgZXF1aXZhbGVudCBmb3IgaW50cmEtU1ZHIHJlc291cmNl
IHJlZnMuCisKKyAgICAgICAgUmVuZGVyRWxlbWVudFJhcmVEYXRhIGhvbGRzIGEgUmVmZXJlbmNl
ZFNWR1Jlc291cmNlcyBjbGFzcywgd2hpY2ggc3RvcmVzIGEgbWFwCisgICAgICAgIG9mIHJlc291
cmNlSUQgLT4gU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LCBhbmQgaXRzIGltcGxlbWVudGF0aW9u
IG9mIFNWR1Jlc291cmNlRWxlbWVudENsaWVudHMKKyAgICAgICAgdHJpZ2dlcnMgdGhlIHJlcGFp
bnQuCisKKyAgICAgICAgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyBhcmUgdXBkYXRlZCBhZnRlciBh
IHN0eWxlIGNoYW5nZSwgd2hpY2ggd29ya3MgYmVjYXVzZQorICAgICAgICB0aGV5IG9ubHkgZXZl
ciBmaW5kIGVsZW1lbnRzLCBub3QgU1ZHIHJlbmRlcmVycy4KKworICAgICAgICBDaGFuZ2UgZmls
dGVyIGFuZCBjbGlwLXBhdGggY29kZSBnbyB2aWEgUmVmZXJlbmNlZFNWR1Jlc291cmNlcyB0byBm
aW5kIHRoZWlyCisgICAgICAgIGFwcHJvcHJpYXRlIGZpbHRlciBlbGVtZW50IG9yIGNsaXBwaW5n
IHJlbmRlcmVyLCBmb3IgY2xlYW5saW5lc3MuCisKKyAgICAgICAgVGVzdHM6IGNzczMvZmlsdGVy
cy9yZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGNz
czMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWFuaW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQu
aHRtbAorICAgICAgICAgICAgICAgY3NzMy9tYXNraW5nL3JlZmVyZW5jZS1jbGlwLXBhdGgtY2hh
bmdlLXJlcGFpbnQuaHRtbAorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZp
bHRlcik6IFJlbW92ZSBzb21lIGNvZGUgcmVsYXRlZCB0byBsb29raW5nCisgICAgICAgIGZvciBy
ZXNvdXJjZXMgaW4gZXh0ZXJuYWwgZG9jdW1lbnRzLCBzaW5jZSB0aGlzIGZ1bmN0aW9uYWxpdHkg
d2FzIHJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NWR1Jlc291cmNlRWxlbWVudENsaWVu
dDo6cmVzb3VyY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNv
dXJjZXM6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJl
bmNlZFNWR1Jlc291cmNlczo6flJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRTVkdSZXNv
dXJjZUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjp1cGRh
dGVSZWZlcmVuY2VkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXM6OmVsZW1lbnRGb3JSZXNvdXJjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVy
ZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmg6IEFkZGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6Y2xlYXJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cENs
aXBQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGE6OlJlbmRlck9iamVj
dFJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhOjpSZW5kZXJPYmpl
Y3RSYXJlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlk
YXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZWZlcmVuY2luZ0NTU0NsaWVudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkUmVmZXJlbmNpbmdDU1NDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjphZGRSZWZlcmVu
Y2luZ0NTU0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6OnJl
bW92ZVJlZmVyZW5jaW5nQ1NTQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRS
YXJlRGF0YTo6cmVmZXJlbmNpbmdDU1NDbGllbnRzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZH
UmVzb3VyY2VFbGVtZW50Q2xpZW50Lmg6IEFkZGVkLgorCiAyMDIxLTA4LTMxICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHNlbGYuc3RydWN0dXJl
ZENsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRjNTE1YzA1N2IyNGYwZjJmZjYxMjI5ZTg0Yjk0
YzZhNTc2OWM0MC4uNTQzNzM2OTE1MDg1M2M1ZjE4ZGM4MWEwOTkwNzM2YTc0NTVhMzZiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTIxODYsNiArMjE4Niw3IEBAIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVU
ZXh0Qm94LmNwcAogcmVuZGVyaW5nL01hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvT3JkZXJJdGVy
YXRvci5jcHAKIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCityZW5kZXJpbmcv
UmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNw
cAogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA4ZjFjM2QzYWVmYjA3NmJjYmI3MDIwYTU1MWU1ZTI5ZmE0ZWMwNjQ2Li4wOGRiNzg2
ZjU0MWRhMTI3OTUxZmM3MzUzN2I5MjNkYjExZjZhYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzAwLDYgKzYzMDAsOSBA
QAogCQkwRkJGQ0UyNjI1NkNCRDlBMDBBMEI0ODkgLyogRGlzcGxheUJveENsaXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheUJveENsaXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDMDUxNjgyMTlCNUVCRTAwMzFDMzlFIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwNTE2
QTIxOUI1RUJFMDAzMUMzOUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzI3NkI4MjZEQUY5QjcwMDkzRThF
RCAvKiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMjc2QkEyNkRB
RjlFOTAwOTNFOEVEIC8qIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzI3NkJDMjZEQjE5MDAwMDkzRThFRCAvKiBTVkdSZXNvdXJjZUVsZW1lbnRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRCMDA0MjJCOUEwMkMwMENGM0IxRSAvKiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRCMDA1MjJCOUEwMkQwMENGM0IxRSAvKiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzY5MkJBMjU3QzBGNDAwMDk4RTNGOSAv
KiBTY3JvbGxBbmltYXRpb25LaW5ldGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MzUzLDYgKzI2MzU2
LDcgQEAKIAkJCQlCMjIyNzkwOTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUmVjdEVsZW1lbnQuaWRs
ICovLAogCQkJCUIyMjI3OTBBMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQu
aCAqLywKIAkJCQlCMjIyNzkwQjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUmVuZGVyaW5nSW50ZW50
LmlkbCAqLywKKwkJCQkwRkMyNzZCQzI2REIxOTAwMDA5M0U4RUQgLyogU1ZHUmVzb3VyY2VFbGVt
ZW50Q2xpZW50LmggKi8sCiAJCQkJQjIyMjc5MEMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Njcmlw
dEVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTBEMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTY3Jp
cHRFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5MEUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Njcmlw
dEVsZW1lbnQuaWRsICovLApAQCAtMjk1ODQsNiArMjk1ODgsOCBAQAogCQkJCTA4ODUwNjdFMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8sCiAJCQkJQjJCMUY3MTQwRDAwQ0FBODAw
NEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgKi8sCiAJCQkJQjJCMUY3MTUwRDAw
Q0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5oICovLAorCQkJCTBGQzI3NkJB
MjZEQUY5RTkwMDkzRThFRCAvKiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcCAqLywKKwkJCQkw
RkMyNzZCODI2REFGOUI3MDA5M0U4RUQgLyogUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oICovLAog
CQkJCUI1OUVEMjNBMTgyNzI2NzkwMDZENTY0QyAvKiBSZW5kZXJBbmNlc3Rvckl0ZXJhdG9yLmgg
Ki8sCiAJCQkJN0NENDk0Q0ExQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0dGFjaG1lbnQuY3Bw
ICovLAogCQkJCTdDRDQ5NENCMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50Lmgg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDNiZjc4NmNjZmUz
MjRlNjQ2NjI1MjBmYTc2YjcyNDRmOWViNmQ0MDMuLjY0ZTk4Mzg0YWYwMDRlZjY5OWJjNjJlNmE2
Yzk3NzU2ZjU5YzY2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRkVNZXJnZS5oIgogI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdFJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCkBAIC03MiwyNiArNzMs
MTQgQEAgR3JhcGhpY3NDb250ZXh0KiBDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCgpCiAKIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uKQogewotICAgIGF1dG8qIGNhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlID0gZmlsdGVyT3BlcmF0aW9uLmNhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKCk7Ci0gICAgYXV0byogY2FjaGVkU1ZHRG9jdW1lbnQgPSBjYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSA/IGNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5kb2N1bWVudCgpIDogbnVsbHB0
cjsKLQotICAgIC8vIElmIHdlIGhhdmUgYW4gU1ZHIGRvY3VtZW50LCB0aGlzIGlzIGFuIGV4dGVy
bmFsIHJlZmVyZW5jZS4gT3RoZXJ3aXNlCi0gICAgLy8gd2UgbG9vayB1cCB0aGUgcmVmZXJlbmNl
ZCBub2RlIGluIHRoZSBjdXJyZW50IGRvY3VtZW50LgotICAgIERvY3VtZW50KiBkb2N1bWVudDsK
LSAgICBpZiAoIWNhY2hlZFNWR0RvY3VtZW50KQotICAgICAgICBkb2N1bWVudCA9ICZyZW5kZXJl
ci5kb2N1bWVudCgpOwotICAgIGVsc2UgewotICAgICAgICBkb2N1bWVudCA9IGNhY2hlZFNWR0Rv
Y3VtZW50LT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byogZmlsdGVyID0gZG9jdW1lbnQtPmdl
dEVsZW1lbnRCeUlkKGZpbHRlck9wZXJhdGlvbi5mcmFnbWVudCgpKTsKLSAgICBpZiAoIWZpbHRl
cikgeworICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSByZW5kZXJlci5lbnN1cmVSZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzKCkucmVmZXJlbmNlZEZpbHRlckVsZW1lbnQocmVuZGVyZXIuZG9jdW1lbnQo
KSwgZmlsdGVyT3BlcmF0aW9uKTsKKyAgICBpZiAoIWZpbHRlckVsZW1lbnQpIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiQ1NTRmlsdGVyICIgPDwgdGhpcyA8
PCAiIGJ1aWxkUmVmZXJlbmNlRmlsdGVyOiBmYWlsZWQgdG8gZmluZCBmaWx0ZXIgcmVuZGVyZXIs
IGFkZGluZyBwZW5kaW5nIHJlc291cmNlICIgPDwgZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCkp
OwogICAgICAgICAvLyBBbHRob3VnaCB3ZSBkaWQgbm90IGZpbmQgdGhlIHJlZmVyZW5jZWQgZmls
dGVyLCBpdCBtaWdodCBleGlzdCBsYXRlciBpbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNraXBzIGFub255bW91cyBSZW5kZXJPYmplY3RzLiA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTMxMDg1PgorICAgICAgICAvLyBGSVhNRTogVW5jbGVhciBpZiB0aGlzIGRvZXMgYW55
dGhpbmcuCiAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQot
ICAgICAgICAgICAgZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRQZW5kaW5nUmVz
b3VyY2UoZmlsdGVyT3BlcmF0aW9uLmZyYWdtZW50KCksICplbGVtZW50KTsKKyAgICAgICAgICAg
IHJlbmRlcmVyLmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFkZFBlbmRpbmdSZXNv
dXJjZShmaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSwgKmVsZW1lbnQpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEwMSw3ICs5MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIEZpCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogICAgIFZlY3RvcjxSZWY8
RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKIAotICAgIGZvciAoYXV0byYgZWZmZWN0
RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz4oKmZpbHRlcikpIHsKKyAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJl
bk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXJFbGVt
ZW50KSkgewogICAgICAgICBlZmZlY3QgPSBlZmZlY3RFbGVtZW50LmJ1aWxkKGJ1aWxkZXIuZ2V0
KCksICp0aGlzKTsKICAgICAgICAgaWYgKCFlZmZlY3QpIHsKICAgICAgICAgICAgIExPR19XSVRI
X1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkNTU0ZpbHRlciAiIDw8IHRoaXMgPDwgIiBidWls
ZFJlZmVyZW5jZUZpbHRlcjogZmFpbGVkIHRvIGJ1aWxkIGVmZmVjdCBmcm9tICIgPDwgZWZmZWN0
RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNl
ZFNWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNW
R1Jlc291cmNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ5MDhmZmZiMmQ2YmU0ZGJmYjJhNmI5MDY3YmJi
ODE4ZGEzZjg0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgi
CisKKyNpbmNsdWRlICJDbGlwUGF0aE9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKKyNpbmNsdWRl
ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisj
aW5jbHVkZSAiU1ZHQ2xpcFBhdGhFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VFbGVt
ZW50Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTU1ZHUmVzb3Vy
Y2VFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIFNWR1Jlc291cmNlRWxlbWVudENsaWVudCB7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQp
OworcHVibGljOgorICAgIENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudChSZW5kZXJFbGVtZW50
JiBjbGllbnRSZW5kZXJlcikKKyAgICAgICAgOiBtX2NsaWVudFJlbmRlcmVyKGNsaWVudFJlbmRl
cmVyKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHJlc291cmNlQ2hhbmdlZChTVkdFbGVtZW50
JikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmVuZGVyRWxlbWVudCYgbV9jbGllbnRSZW5kZXJl
cjsKK307CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NTVkdSZXNvdXJjZUVsZW1l
bnRDbGllbnQpOworCit2b2lkIENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDo6cmVzb3VyY2VD
aGFuZ2VkKFNWR0VsZW1lbnQmKQoreworICAgIGlmICghbV9jbGllbnRSZW5kZXJlci5yZW5kZXJU
cmVlQmVpbmdEZXN0cm95ZWQoKSkKKyAgICAgICAgbV9jbGllbnRSZW5kZXJlci5yZXBhaW50KCk7
Cit9CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
KTsKKworUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6UmVmZXJlbmNlZFNWR1Jlc291cmNlcyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisK
K1JlZmVyZW5jZWRTVkdSZXNvdXJjZXM6On5SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKK3sKKyAg
ICBhdXRvJiBkb2N1bWVudCA9IG1fcmVuZGVyZXIuZG9jdW1lbnQoKTsKKyAgICAKKyAgICBmb3Ig
KGF1dG8mIHRhcmdldElEIDogY29weVRvVmVjdG9yKG1fZWxlbWVudENsaWVudHMua2V5cygpKSkK
KyAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yVGFyZ2V0KGRvY3VtZW50LCB0YXJnZXRJRCk7Cit9CisK
K3ZvaWQgUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6YWRkQ2xpZW50Rm9yVGFyZ2V0KFNWR0VsZW1l
bnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHRhcmdldElEKQoreworICAgIG1f
ZWxlbWVudENsaWVudHMuZW5zdXJlKHRhcmdldElELCBbJl0geworICAgICAgICBhdXRvIGNsaWVu
dCA9IFdURjo6bWFrZVVuaXF1ZTxDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+KG1fcmVuZGVy
ZXIpOworICAgICAgICB0YXJnZXRFbGVtZW50LmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KCpjbGll
bnQpOworICAgICAgICByZXR1cm4gY2xpZW50OworICAgIH0pOworfQorCit2b2lkIFJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXM6OnJlbW92ZUNsaWVudEZvclRhcmdldChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEF0b21TdHJpbmcmIHRhcmdldElEKQoreworICAgIGF1dG8gY2xpZW50ID0gbV9lbGVt
ZW50Q2xpZW50cy50YWtlKHRhcmdldElEKTsKKworICAgIGF1dG8qIHRhcmdldEVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRJRCk7CisgICAgaWYgKGlzPFNWR0VsZW1lbnQ+
KHRhcmdldEVsZW1lbnQpKQorICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqdGFyZ2V0RWxl
bWVudCkucmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQoKmNsaWVudCk7Cit9CisKK1ZlY3Rvcjxz
dGQ6OnBhaXI8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4+IFJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXM6OnJlZmVyZW5jZWRTVkdSZXNvdXJjZUlEcyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPj4gcmVmZXJl
bmNlZFJlc291cmNlczsKKyAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KHN0
eWxlLmNsaXBQYXRoKCkpKSB7CisgICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNhc3Q8UmVm
ZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKTsKKyAgICAgICAgaWYg
KCFjbGlwUGF0aC5mcmFnbWVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlZmVyZW5jZWRS
ZXNvdXJjZXMuYXBwZW5kKHsgY2xpcFBhdGguZnJhZ21lbnQoKSwgU1ZHTmFtZXM6OmNsaXBQYXRo
VGFnIH0pOworICAgIH0KKworICAgIGlmIChzdHlsZS5oYXNGaWx0ZXIoKSkgeworICAgICAgICBj
b25zdCBhdXRvJiBmaWx0ZXJPcGVyYXRpb25zID0gc3R5bGUuZmlsdGVyKCk7CisgICAgICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogZmlsdGVyT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8mIGZpbHRlck9wZXJhdGlvbiA9ICpvcGVyYXRpb247CisgICAgICAgICAg
ICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5D
RSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biA9IGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbi5mcmFnbWVudCgp
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZFJlc291cmNlcy5hcHBl
bmQoeyByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24uZnJhZ21lbnQoKSwgU1ZHTmFtZXM6OmZpbHRl
clRhZyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVmZXJlbmNlZFJlc291cmNlczsKK30KKwordm9pZCBSZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
Ojp1cGRhdGVSZWZlcmVuY2VkUmVzb3VyY2VzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPj4mIHJlZmVyZW5jZWRSZXNv
dXJjZXMpCit7CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBvbGRLZXlzOworICAgIGZvciAoYXV0
byYga2V5IDogbV9lbGVtZW50Q2xpZW50cy5rZXlzKCkpCisgICAgICAgIG9sZEtleXMuYWRkKGtl
eSk7CisKKyAgICBmb3IgKGF1dG8mIFt0YXJnZXRJRCwgdGFnTmFtZV0gOiByZWZlcmVuY2VkUmVz
b3VyY2VzKSB7CisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50Rm9yUmVzb3VyY2VJRChk
b2N1bWVudCwgdGFyZ2V0SUQsIHRhZ05hbWUpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhZGRDbGllbnRGb3JUYXJnZXQoKmVsZW1lbnQs
IHRhcmdldElEKTsKKyAgICAgICAgb2xkS2V5cy5yZW1vdmUodGFyZ2V0SUQpOworICAgIH0KKyAg
ICAKKyAgICBmb3IgKGF1dG8mIHRhcmdldElEIDogb2xkS2V5cykKKyAgICAgICAgcmVtb3ZlQ2xp
ZW50Rm9yVGFyZ2V0KGRvY3VtZW50LCB0YXJnZXRJRCk7Cit9CisKKy8vIFNWRyBjb2RlIHVzZXMg
Z2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPD4sIGJ1dCB0aGF0IHdvcmtzIGluIHRlcm1zIG9mIHJl
bmRlcmVycy4gV2UgbmVlZCB0byBmaW5kIHJlc291cmNlcworLy8gYmVmb3JlIHRoZSByZW5kZXIg
dHJlZSBpcyBmdWxseSBjb25zdHJ1Y3RlZCwgc28gdGhpcyB3b3JrcyBvbiBFbGVtZW50cy4KK1NW
R0VsZW1lbnQqIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OmVsZW1lbnRGb3JSZXNvdXJjZUlEKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgcmVzb3VyY2VJRCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkKK3sKKyAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQocmVzb3VyY2VJRCk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5o
YXNUYWdOYW1lKHRhZ05hbWUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50KTsKK30KKworU1ZHRmlsdGVyRWxlbWVudCog
UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZEZpbHRlckVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mIHJlZmVyZW5jZUZpbHRl
cikKK3sKKyAgICBpZiAocmVmZXJlbmNlRmlsdGVyLmZyYWdtZW50KCkuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudEZvclJlc291
cmNlSUQoZG9jdW1lbnQsIHJlZmVyZW5jZUZpbHRlci5mcmFnbWVudCgpLCBTVkdOYW1lczo6Zmls
dGVyVGFnKTsKKyAgICByZXR1cm4gZWxlbWVudCA/IGRvd25jYXN0PFNWR0ZpbHRlckVsZW1lbnQ+
KGVsZW1lbnQpIDogbnVsbHB0cjsKK30KKworUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBSZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzOjpyZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24mIGNsaXBQYXRoKQorewor
ICAgIGlmIChjbGlwUGF0aC5mcmFnbWVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgLy8gRm9yIHNvbWUgcmVhc29uLCBTVkcgc3RvcmVzIGEgY2FjaGUgb2YgaWQg
LT4gcmVuZGVyZXIsIHJhdGhlciB0aGFuIGp1c3QgdXNpbmcgZ2V0RWxlbWVudEJ5SWQoKSBhbmQg
cmVuZGVyZXIoKS4KKyAgICByZXR1cm4gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcj4oZG9jdW1lbnQsIGNsaXBQYXRoLmZyYWdtZW50KCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjcyMzkxZDk0MjBjNDY0MjliODM4
NzgxYzA2NTExZjY2ZGQ4MWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudDsK
K2NsYXNzIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uOworY2xhc3MgUmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uOworY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOworY2xhc3MgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI7CitjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFF1YWxpZmllZE5h
bWU7CitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKKworY2xhc3Mg
UmVmZXJlbmNlZFNWR1Jlc291cmNlcyB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzKTsKK3B1YmxpYzoKKyAgICBSZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
KFJlbmRlckVsZW1lbnQmKTsKKyAgICB+UmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOworCisgICAg
c3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4+IHJlZmVy
ZW5jZWRTVkdSZXNvdXJjZUlEcyhjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHZvaWQgdXBkYXRl
UmVmZXJlbmNlZFJlc291cmNlcyhEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8QXRv
bVN0cmluZywgUXVhbGlmaWVkTmFtZT4+Jik7CisKKyAgICAvLyBDbGlwcGluZyBuZWVkcyBhIHJl
bmRlcmVyLCBmaWx0ZXJzIHVzZSBhbiBlbGVtZW50LgorICAgIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlciogcmVmZXJlbmNlZENsaXBwZXJSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uJik7CisgICAgU1ZHRmlsdGVyRWxlbWVudCogcmVmZXJlbmNlZEZp
bHRlckVsZW1lbnQoRG9jdW1lbnQmLCBjb25zdCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mKTsK
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgU1ZHRWxlbWVudCogZWxlbWVudEZvclJlc291cmNlSUQo
RG9jdW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiByZXNvdXJjZUlELCBjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lKTsKKworICAgIHZvaWQgYWRkQ2xpZW50Rm9yVGFyZ2V0KFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVu
dEZvclRhcmdldChEb2N1bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmKTsKKworICAgIFJlbmRlckVs
ZW1lbnQmIG1fcmVuZGVyZXI7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8Q1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50Pj4gbV9lbGVtZW50Q2xpZW50czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAppbmRleCA5NDRmOGU4ZTNkZGU4NDI0MDVhM2YyYTE3YzhmNWE1Mzc2Y2NiNDY3
Li43MjdiMTI5OGJiYzI0YWRjNWM0MDRkMjM5MDcxY2Y5ZTliYmZmOWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXRoVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlJlbmRlckNvdW50ZXIuaCIKQEAgLTk1NSw2ICs5NTYsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkUwogCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6c3R5bGVDaGFuZ2VkKCp0aGlzLCBvbGRTdHls
ZSk7CiAKKyAgICBpZiAoZGlmZiA+PSBTdHlsZURpZmZlcmVuY2U6OlJlcGFpbnQpCisgICAgICAg
IHVwZGF0ZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKKwogICAgIGlmICghbV9wYXJlbnQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKQEAgLTIyNzYsNiArMjI4MCwzMyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRDaGlsZEluZm9JbmNsdWRpbmdE
ZXNjZW5kYW50cwogICAgICAgICBjaGlsZC5yZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5k
Q2hpbGRJbmZvSW5jbHVkaW5nRGVzY2VuZGFudHMoZnJhZ21lbnRlZEZsb3cpOwogfQogCitSZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzJiBSZW5kZXJFbGVtZW50OjplbnN1cmVSZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzKCkKK3sKKyAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CisgICAg
aWYgKCFyYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKQorICAgICAgICByYXJlRGF0YS5y
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gV1RGOjptYWtlVW5pcXVlPFJlZmVyZW5jZWRTVkdSZXNv
dXJjZXM+KCp0aGlzKTsKKworICAgIHJldHVybiAqcmFyZURhdGEucmVmZXJlbmNlZFNWR1Jlc291
cmNlczsKK30KKwordm9pZCBSZW5kZXJFbGVtZW50OjpjbGVhclJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXMoKQoreworICAgIGlmICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZW5zdXJlUmFyZURhdGEoKS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gbnVsbHB0cjsKK30KKwor
Ly8gVGhpcyBuZWVkcyB0byBydW4gd2hlbiB0aGUgZW50aXJlIHJlbmRlciB0cmVlIGhhcyBiZWVu
IGNvbnN0cnVjdGVkLCBzbyBjYW4ndCBiZSBjYWxsZWQgZnJvbSBzdHlsZURpZENoYW5nZS4KK3Zv
aWQgUmVuZGVyRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpCit7CisgICAg
YXV0byByZWZlcmVuY2VkRWxlbWVudElEcyA9IFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVy
ZW5jZWRTVkdSZXNvdXJjZUlEcyhzdHlsZSgpKTsKKyAgICBpZiAoIXJlZmVyZW5jZWRFbGVtZW50
SURzLmlzRW1wdHkoKSkKKyAgICAgICAgZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpLnVw
ZGF0ZVJlZmVyZW5jZWRSZXNvdXJjZXMoZG9jdW1lbnQoKSwgcmVmZXJlbmNlZEVsZW1lbnRJRHMp
OworICAgIGVsc2UKKyAgICAgICAgY2xlYXJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCk7Cit9CisK
ICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogc3RhdGljIFJlbmRlck9iamVjdDo6QmxvY2tD
b250ZW50SGVpZ2h0VHlwZSBpbmNsdWRlTm9uRml4ZWRIZWlnaHQoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmlu
ZGV4IDM4M2RjZGRiOGM1NTE4ZGE3ZGY0ZWMyNzQxMWEwNDIyMzhiZTkzYjQuLjZjNGM1MDhmODky
NTdiOGU2ZjM3ZmZhZjFhMzBhZjNkZTRhNjAxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDb250ZW50RGF0YTsKIGNsYXNzIENvbnRyb2xTdGF0ZXM7CiBjbGFzcyBLZXlmcmFtZUxp
c3Q7CitjbGFzcyBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOwogY2xhc3MgUmVuZGVyQmxvY2s7CiBj
bGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRyZWVCdWlsZGVyOwpAQCAtMjYyLDYgKzI2
Myw4IEBAIHB1YmxpYzoKICAgICBXZWFrUHRyPFJlbmRlckJsb2NrRmxvdz4gYmFja2Ryb3BSZW5k
ZXJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0QmFja2Ryb3BSZW5kZXJlcihSZW5kZXJCbG9ja0Zs
b3cmKTsKIAorICAgIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMmIGVuc3VyZVJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXMoKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQmFzZVR5cGVGbGFnIHsKICAgICAg
ICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcgID0gMSA8PCAwLApAQCAtMzYxLDYgKzM2NCw5
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBzaG91bGRXaWxsQ2hhbmdlQ3JlYXRlU3RhY2tp
bmdDb250ZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBpc3N1ZVJlcGFpbnRGb3JPdXRsaW5lQXV0byhm
bG9hdCBvdXRsaW5lU2l6ZSk7CisgICAgCisgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzKCk7CisgICAgdm9pZCBjbGVhclJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKTsKIAogICAg
IHVuc2lnbmVkIG1fYmFzZVR5cGVGbGFncyA6IDY7CiAgICAgdW5zaWduZWQgbV9hbmNlc3Rvckxp
bmVCb3hEaXJ0eSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA0NjcyYjFmMGE5ZDRiMTBkYWIxMWU4NmQxZmI5YzM1ZjBjNzg1YzMzLi5kMWQ3NzAxNGQx
YzhjZjAxNTg2MzY4OGFjNzUyNGM3YTQ3YzQ3OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlICJPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1
ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50Q29udGFpbmVyLmgiCkBAIC0zMTg1LDE2ICsz
MTg2LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmIChzdHlsZS5jbGlwUGF0aCgpLT50eXBlKCkgPT0gQ2xpcFBhdGhPcGVy
YXRpb246OlJlZmVyZW5jZSkgewotICAgICAgICBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiog
cmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxSZWZlcmVuY2VDbGlwUGF0
aE9wZXJhdGlvbio+KHN0eWxlLmNsaXBQYXRoKCkpOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKHJlZmVyZW5jZUNsaXBQYXRo
T3BlcmF0aW9uLT5mcmFnbWVudCgpKTsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+
cmVuZGVyZXIoKSAmJiBpczxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGVsZW1lbnQtPnJlbmRl
cmVyKCkpKSB7CisgICAgaWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5j
bGlwUGF0aCgpKSkgeworICAgICAgICBhdXRvJiByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA9
IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7
CisgICAgICAgIGlmIChhdXRvKiBjbGlwcGVyUmVuZGVyZXIgPSByZW5kZXJlcigpLmVuc3VyZVJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMoKS5yZWZlcmVuY2VkQ2xpcHBlclJlbmRlcmVyKHJlbmRlcmVy
KCkuZG9jdW1lbnQoKSwgcmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24pKSB7CiAgICAgICAgICAg
ICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgIGF1dG8gcmVmZXJlbmNlQm94ID0gc25hcFJl
Y3RUb0RldmljZVBpeGVscyhyb290UmVsYXRpdmVCb3VuZHMsIHJlbmRlcmVyKCkuZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVmZXJl
bmNlQm94LmxvY2F0aW9uKCk7CiAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShvZmZzZXQp
OwogICAgICAgICAgICAgRmxvYXRSZWN0IHN2Z1JlZmVyZW5jZUJveCB7IHt9LCByZWZlcmVuY2VC
b3guc2l6ZSgpIH07Ci0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI+KCplbGVtZW50LT5yZW5kZXJlcigpKS5hcHBseUNsaXBwaW5nVG9Db250ZXh0KGNvbnRleHQs
IHJlbmRlcmVyKCksIHN2Z1JlZmVyZW5jZUJveCwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKSk7CisgICAgICAgICAgICBjbGlwcGVyUmVuZGVyZXItPmFwcGx5Q2xpcHBpbmdUb0Nv
bnRleHQoY29udGV4dCwgcmVuZGVyZXIoKSwgc3ZnUmVmZXJlbmNlQm94LCByZW5kZXJlcigpLnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1v
ZmZzZXQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYWE1NjI2ZmEzMzBmZjBmODRiNWM4
ODE2MDYxMmQ1YTExMmQzYmZiZS4uOTdiMDk4ZmQxNTk1ZmNmN2ZmNDBiZGQ4MzYwODRlYTYyMjNh
NjZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJS
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVk
Rmxvdy5oIgpAQCAtMTk0Niw2ICsxOTQ3LDE1IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVS
YXJlRGF0YSgpCiAgICAgc2V0SGFzUmFyZURhdGEoZmFsc2UpOwogfQogCitSZW5kZXJPYmplY3Q6
OlJlbmRlck9iamVjdFJhcmVEYXRhOjpSZW5kZXJPYmplY3RSYXJlRGF0YSgpCisgICAgOiBtX2hh
c1JlZmxlY3Rpb24oZmFsc2UpCisgICAgLCBtX2lzUmVuZGVyRnJhZ21lbnRlZEZsb3coZmFsc2Up
CisgICAgLCBtX2hhc091dGxpbmVBdXRvQW5jZXN0b3IoZmFsc2UpCit7Cit9CisKK1JlbmRlck9i
amVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGE6On5SZW5kZXJPYmplY3RSYXJlRGF0YSgpID0gZGVm
YXVsdDsKKwogYm9vbCBSZW5kZXJPYmplY3Q6Omhhc05vbkVtcHR5VmlzaWJsZVJlY3RSZXNwZWN0
aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKIHsKICAgICBhdXRvIGVuY2xvc2luZ0ZyYW1lUmVuZGVy
ZXIgPSBbXSAoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDRjNTg0NTJlZDFlYjhlMDY5ZjdhNzk5YTFjY2Ri
MGM1M2MyMTU1MGIuLmYzYzRlOTE4OTJkZDEyMzMwNjA3NDBhODhlMzRiODI5NTNiNzNkMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU2LDYgKzU2LDcgQEAg
Y2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIExlZ2FjeUlubGluZUJveDsKIGNsYXNzIFBhdGg7
CiBjbGFzcyBQb3NpdGlvbjsKK2NsYXNzIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CiBjbGFzcyBS
ZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlcklubGluZTsKIGNsYXNzIFJlbmRlckJs
b2NrOwpAQCAtOTI3LDE4ICs5MjgsMTYgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBSZW5kZXJPYmpl
Y3RSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmVuZGVyT2JqZWN0UmFyZURhdGEoKQotICAgICAgICAgICAgOiBtX2hhc1Jl
ZmxlY3Rpb24oZmFsc2UpCi0gICAgICAgICAgICAsIG1faXNSZW5kZXJGcmFnbWVudGVkRmxvdyhm
YWxzZSkKLSAgICAgICAgICAgICwgbV9oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGZhbHNlKQotICAg
ICAgICB7Ci0gICAgICAgIH0KKyAgICAgICAgUmVuZGVyT2JqZWN0UmFyZURhdGEoKTsKKyAgICAg
ICAgflJlbmRlck9iamVjdFJhcmVEYXRhKCk7CisKICAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoaGFzUmVmbGVjdGlvbiwgSGFzUmVmbGVjdGlvbik7CiAgICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGlzUmVuZGVyRnJhZ21lbnRlZEZsb3csIElzUmVuZGVyRnJhZ21lbnRlZEZsb3cpOwog
ICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNPdXRsaW5lQXV0b0FuY2VzdG9yLCBIYXNP
dXRsaW5lQXV0b0FuY2VzdG9yKTsKIAogICAgICAgICAvLyBGcm9tIFJlbmRlckVsZW1lbnQKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjYWNoZWRGaXJzdExpbmVTdHlsZTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM+IHJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXM7CiAgICAgICAgIFdlYWtQdHI8UmVuZGVyQmxvY2tGbG93PiBiYWNrZHJv
cFJlbmRlcmVyOwogICAgIH07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCmluZGV4IDhhY2JiMzI3Mzg1NzQxMDU4YzkwMWVi
MjY2ZDNlYzU1YmY1MDNhNzkuLjlmZDMzZjNjMGI5MWY3MTQ1NmJhMjVhMmVmZDA2ZGQwMmQzOWE2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRl
ICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgogI2luY2x1
ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtMTUzLDcgKzE1NCw3IEBAIFJlbmRlclNWR1Jlc291
cmNlU29saWRDb2xvciogUmVuZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFpbnRpbmdSZXNv
dXJjZSgpCiAgICAgcmV0dXJuIHNfc2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlOwogfQogCi1z
dGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2ll
cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgYm9vbCBuZWVkc0xheW91dCkKK3N0YXRpYyB2b2lk
IHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGJvb2wgbmVlZHNMYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlcyA9
IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcihyZW5kZXJlcikp
IHsKICAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIgPSByZXNvdXJj
ZXMtPmZpbHRlcigpKQpAQCAtMTY5LDcgKzE3MCw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1v
dmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRl
CiAgICAgaWYgKCFpczxTVkdFbGVtZW50PihyZW5kZXJlci5lbGVtZW50KCkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkb3duY2FzdDxTVkdFbGVtZW50Pigq
cmVuZGVyZXIuZWxlbWVudCgpKS5yZWZlcmVuY2luZ0VsZW1lbnRzKCkpIHsKKyAgICBSZWYgc3Zn
RWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpOworCisg
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogc3ZnRWxlbWVudC0+cmVmZXJlbmNpbmdFbGVtZW50cygp
KSB7CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsK
ICAgICAgICAgICAgIC8vIFdlIGFsbG93IGN5Y2xlcyBpbiBTVkdEb2N1bWVudEV4dGVuc2lvbnMg
cmVmZXJlbmNlIHNldHMgaW4gb3JkZXIgdG8gYXZvaWQgZXhwZW5zaXZlCiAgICAgICAgICAgICAv
LyByZWZlcmVuY2UgZ3JhcGggYWRqdXN0bWVudHMgb24gY2hhbmdlcywgc28gd2UgbmVlZCB0byBi
cmVhayBwb3NzaWJsZSBjeWNsZXMgaGVyZS4KQEAgLTE4Miw2ICsxODUsMTIgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMoUmVuZGVy
RWxlbWVudCYgcmVuZGUKICAgICAgICAgICAgIGludmFsaWRhdGluZ0RlcGVuZGVuY2llcy5nZXQo
KS5yZW1vdmUoZWxlbWVudC5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBmb3IgKGF1
dG8mIGNzc0NsaWVudCA6IHN2Z0VsZW1lbnQtPnJlZmVyZW5jaW5nQ1NTQ2xpZW50cygpKSB7Cisg
ICAgICAgIGlmICghY3NzQ2xpZW50KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNz
c0NsaWVudC0+cmVzb3VyY2VDaGFuZ2VkKHN2Z0VsZW1lbnQuZ2V0KCkpOworICAgIH0KIH0KIAog
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKFJlbmRlck9iamVjdCYgb2JqZWN0LCBib29sIG5lZWRzTGF5b3V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDI5YzFiODQyZWZmMjc2NDg5ZWNlNTQxZGQ0MWY3ZWYw
NjA1Mzk3MTUuLmJhNTQyNjA2YmIwOWJhNjk4ODczZGJkN2FlMDhhMTNlMjJhYWZkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTVkdQ
cm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRWxlbWVu
dENsaWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUaXRs
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCkBAIC0zMzYsNiArMzM3LDI1
IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlRWxlbWVudFJlZmVyZW5jZSgpCiAgICAgICAgIGRl
c3RpbmF0aW9uLT5yZW1vdmVSZWZlcmVuY2luZ0VsZW1lbnQoKnRoaXMpOwogfQogCitWZWN0b3I8
V2Vha1B0cjxTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+PiBTVkdFbGVtZW50OjpyZWZlcmVuY2lu
Z0NTU0NsaWVudHMoKSBjb25zdAoreworICAgIGlmICghbV9zdmdSYXJlRGF0YSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fc3ZnUmFyZURhdGEtPnJlZmVy
ZW5jaW5nQ1NTQ2xpZW50cygpKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjphZGRSZWZlcmVuY2lu
Z0NTU0NsaWVudChTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQmIGNsaWVudCkKK3sKKyAgICBlbnN1
cmVTVkdSYXJlRGF0YSgpLmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KGNsaWVudCk7Cit9CisKK3Zv
aWQgU1ZHRWxlbWVudDo6cmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVt
ZW50Q2xpZW50JiBjbGllbnQpCit7CisgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQorICAgICAgICBy
ZXR1cm47CisgICAgZW5zdXJlU1ZHUmFyZURhdGEoKS5yZW1vdmVSZWZlcmVuY2luZ0NTU0NsaWVu
dChjbGllbnQpOworfQorCiBTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojpjb3JyZXNwb25kaW5nRWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3ZnUmFyZURhdGEgPyBtX3N2Z1JhcmVEYXRh
LT5jb3JyZXNwb25kaW5nRWxlbWVudCgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CmluZGV4IDk3NDg4YWIzMjc4YTc2NDhmYjliZGY4MmQ2OTQxOTllN2Q1ODVlZWIuLjcwNGFlODBh
OTdiMWQ0YTQzOWNhMmVjMDE3MWFlMzA2OGVlNzJkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczsKIGNsYXNzIFNWR0VsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIFNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5OworY2xhc3MgU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50OwogY2xhc3MgU1ZH
U1ZHRWxlbWVudDsKIGNsYXNzIFNWR1VzZUVsZW1lbnQ7CiAKQEAgLTk4LDYgKzk5LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZVJlZmVyZW5jaW5nRWxlbWVudChTVkdFbGVtZW50Jik7CiAg
ICAgdm9pZCByZW1vdmVFbGVtZW50UmVmZXJlbmNlKCk7CiAKKyAgICBWZWN0b3I8V2Vha1B0cjxT
VkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+PiByZWZlcmVuY2luZ0NTU0NsaWVudHMoKSBjb25zdDsK
KyAgICB2b2lkIGFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVudENsaWVu
dCYpOworICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNpbmdDU1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVt
ZW50Q2xpZW50Jik7CisKKwogICAgIFNWR0VsZW1lbnQqIGNvcnJlc3BvbmRpbmdFbGVtZW50KCkg
Y29uc3Q7CiAgICAgUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCBm
NzQwZGJjMDk1Y2NlNWQ2ZjQyMTc5MDc0OTU1ZjYyMTBkYTk5M2M0Li5iYmZjYmIxODEzNzE0ODBh
MzFlNDJkMTQ1NDAwMDI4MGNjOWJhNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRS
YXJlRGF0YS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC01NSw2ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgU1ZHRWxlbWVudCogcmVmZXJlbmNlVGFyZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VUYXJnZXQuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFJlZmVyZW5jZVRhcmdldChXZWFrUHRyPFNWR0VsZW1lbnQ+JiYgZWxlbWVudCkgeyBtX3JlZmVy
ZW5jZVRhcmdldCA9IFdURk1vdmUoZWxlbWVudCk7IH0KIAorICAgIHZvaWQgYWRkUmVmZXJlbmNp
bmdDU1NDbGllbnQoU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50JiBjbGllbnQpIHsgbV9yZWZlcmVu
Y2luZ0NTU0NsaWVudHMuYWRkKGNsaWVudCk7IH0KKyAgICB2b2lkIHJlbW92ZVJlZmVyZW5jaW5n
Q1NTQ2xpZW50KFNWR1Jlc291cmNlRWxlbWVudENsaWVudCYgY2xpZW50KSB7IG1fcmVmZXJlbmNp
bmdDU1NDbGllbnRzLnJlbW92ZShjbGllbnQpOyB9CisgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZH
UmVzb3VyY2VFbGVtZW50Q2xpZW50PiYgcmVmZXJlbmNpbmdDU1NDbGllbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2luZ0NTU0NsaWVudHM7IH0KKwogICAgIFNWR0VsZW1lbnQqIGNvcnJl
c3BvbmRpbmdFbGVtZW50KCkgeyByZXR1cm4gbV9jb3JyZXNwb25kaW5nRWxlbWVudC5nZXQoKTsg
fQogICAgIHZvaWQgc2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQoU1ZHRWxlbWVudCogY29ycmVzcG9u
ZGluZ0VsZW1lbnQpIHsgbV9jb3JyZXNwb25kaW5nRWxlbWVudCA9IG1ha2VXZWFrUHRyKGNvcnJl
c3BvbmRpbmdFbGVtZW50KTsgfQogCkBAIC04Niw2ICs5MSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4gbV9yZWZlcmVuY2luZ0VsZW1lbnRzOwogICAg
IFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9yZWZlcmVuY2VUYXJnZXQ7CisKKyAgICBXZWFrSGFzaFNl
dDxTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+IG1fcmVmZXJlbmNpbmdDU1NDbGllbnRzOworCiAg
ICAgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4gbV9pbnN0YW5jZXM7CiAgICAgV2Vha1B0cjxTVkdF
bGVtZW50PiBtX2NvcnJlc3BvbmRpbmdFbGVtZW50OwogICAgIGJvb2wgbV9pbnN0YW5jZXNVcGRh
dGVzQmxvY2tlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVzb3Vy
Y2VFbGVtZW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVzb3VyY2VFbGVtZW50
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlkMzc3ZGMzOWJmZTg0MDc2OWU3MDczNmZkMTcwNjE5YzNl
MjgzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZXNvdXJjZUVs
ZW1lbnRDbGllbnQuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNWR0VsZW1lbnQ7CisKK2NsYXNzIFNWR1Jlc291cmNlRWxlbWVudENsaWVudCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5TVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzb3VyY2VDaGFuZ2VkKFNWR0VsZW1lbnQmKSA9IDA7CisKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NTRmYWFjOTFhMDRhYTVlZDc3OGM4YTVhN2U1
ODhlZmExZGNmYmI5Li4zMzA4OGRiNzdlMWI1ZDU4MjA3NzJlMWIzMjUxMTY3NzA4MGJlZTc3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDgtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0byBjbGlwLXBhdGggYW5kIGZpbHRl
ciBTVkcgZWxlbWVudHMgcmVmZXJlbmNlZCBieSBDU1MgZG9uJ3QgdHJpZ2dlciByZXBhaW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MjA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgUmVwYWludCB0
ZXN0cyB0aGF0IGRldGVjdCByZXBhaW50cyB3aGVuIHJlZmVyZW5jZWQgY2xpcHMgb3IgZmlsdGVy
cyBjaGFuZ2UuCisKKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVmZXJlbmNlLWZpbHRlci1jaGFu
Z2UtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvZmlsdGVycy9y
ZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
czMvbWFza2luZy9jbGlwLXBhdGgtcmVmZXJlbmNlLWxvY2FsLXVybC13aXRoLWJhc2UuaHRtbDoK
KyAgICAgICAgKiBjc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1hbmltYXRlLXRyYW5z
Zm9ybS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9tYXNraW5n
L3JlZmVyZW5jZS1jbGlwLXBhdGgtYW5pbWF0ZS10cmFuc2Zvcm0tcmVwYWludC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1jaGFuZ2UtcmVw
YWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvbWFza2luZy9yZWZlcmVu
Y2UtY2xpcC1wYXRoLWNoYW5nZS1yZXBhaW50Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4LTMxICBB
eXVtaSBLb2ppbWEgIDxheXVtaV9rb2ppbWFAYXBwbGUuY29tPgogCiAgICAgICAgIFsgRVdTIENh
dGFsaW5hIERlYnVnIF0gRmFzdC8qIHRlc3RzIGFyZSBmbGFreSB3aXRoIEFTU0VSVElPTiBGQUlM
RUQ6ICFtX2RlbGV0aW9uSGFzQmVndW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvcmVmZXJlbmNlLWZpbHRlci1jaGFuZ2UtcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVmZXJlbmNlLWZpbHRlci1jaGFuZ2UtcmVwYWludC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmZGE0MzVkZTgwNmJiN2Q1N2YwNmRlODQzYWJjYjZhZWIz
MGYyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZWZlcmVu
Y2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKyAo
cmVwYWludCByZWN0cworICAocmVjdCA4IDggMjAwIDIwMCkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3JlZmVyZW5jZS1maWx0ZXItY2hhbmdlLXJlcGFpbnQuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBh
aW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhmODA5MzY1MzM3NzI0OGExODEwMDVhOWUyM2U4NWUwMWY5
YzY0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZWZlcmVu
Y2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGhlYWQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICAuYm94IHsKKyAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAg
ICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7
CisgICAgICAgICAgZmlsdGVyOiB1cmwoI2ZpbHRlcik7CisgICAgICAgIH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoYW5nZUZpbHRl
ckFuZEZpbmlzaCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFpbnRz
KCk7CisgICAgICAgIAorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R1cmJ1
bGVuY2UnKS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnc2VlZCcsIDYpCisgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xvZycpLnRleHRDb250ZW50ID0gd2luZG93LmludGVybmFscy5yZXBhaW50
UmVjdHNBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgCisgICAgICAgIH0K
KyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjaGFuZ2VGaWx0ZXJBbmRG
aW5pc2goKQorICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHZlcnNpb249IjEuMSI+CisgICAgPGRlZnM+
CisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlciI+CisgICAgICAgICAgICA8ZmVUdXJidWxlbmNl
IGlkPSJ0dXJidWxlbmNlIiB0eXBlPSJ0dXJidWxlbmNlIiBiYXNlRnJlcXVlbmN5PSIwLjAxIiBu
dW1PY3RhdmVzPSIxIiBzZWVkPSI1IiBzdGl0Y2hUaWxlcz0ic3RpdGNoIi8+CisgICAgICAgICAg
ICA8ZmVDb2xvck1hdHJpeCB0eXBlPSJzYXR1cmF0ZSIgdmFsdWVzPSIwIi8+CisgICAgICAgIDwv
ZmlsdGVyPgorICAgIDwvZGVmcz4KKyAgPC9zdmc+CisgIDxkaXYgY2xhc3M9ImJveCI+PC9kaXY+
Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9tYXNraW5nL2NsaXAtcGF0aC1yZWZlcmVuY2UtbG9jYWwtdXJsLXdpdGgtYmFzZS5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL2NsaXAtcGF0aC1yZWZlcmVuY2UtbG9jYWwtdXJs
LXdpdGgtYmFzZS5odG1sCmluZGV4IDM0MDMzNTlhMTNjYTFjYTFhN2UzYTkzZjU4MzAzZmVkYTNi
NjIxMjEuLjllZDZkNjc5NmNmMDA1MGZmMzQ1MWZjYmE0MTQ0MTY1MmVkYWFmNGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9jbGlwLXBhdGgtcmVmZXJlbmNlLWxvY2FsLXVy
bC13aXRoLWJhc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvY2xpcC1wYXRo
LXJlZmVyZW5jZS1sb2NhbC11cmwtd2l0aC1iYXNlLmh0bWwKQEAgLTE0LDUgKzE0LDUgQEAKIDxz
dmc+CiAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0
PSIxMDAiLz4KLSAgPC9maWx0ZXI+CisgIDwvY2xpcFBhdGg+CiA8L3N2Zz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWFuaW1hdGUtdHJh
bnNmb3JtLXJlcGFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL3Jl
ZmVyZW5jZS1jbGlwLXBhdGgtYW5pbWF0ZS10cmFuc2Zvcm0tcmVwYWludC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmM3MTI0Nzg0YWZlNGJmNWY1NDAxZTg5M2ZmZmU2Yzk0OWE1OGJiNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1w
YXRoLWFuaW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorIFBBU1MgcmVwYWludFJlY3RzLmluZGV4T2YoJ3JlY3QgOCA4IDIyMCAyMjAnKSBpcyBub3Qg
LTEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1h
bmltYXRlLXRyYW5zZm9ybS1yZXBhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcv
cmVmZXJlbmNlLWNsaXAtcGF0aC1hbmltYXRlLXRyYW5zZm9ybS1yZXBhaW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjk2ZmNkMTExZDQxOTg4N2QwMWE5YTE0YjAwNjcwMmJhODBmZmY0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWFu
aW1hdGUtdHJhbnNmb3JtLXJlcGFpbnQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeworICAgIHdpZHRoOiAyMjBweDsK
KyAgICBoZWlnaHQ6IDIyMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIGNs
aXAtcGF0aDogdXJsKCNjaGV2cm9uKTsKK30KK3N2ZyB7CisgICAgaGVpZ2h0OiAwcHg7CisgICAg
d2lkdGg6IDBweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisgICAgbGV0IHJlcGFpbnRSZWN0czsKKworICAgIGFzeW5jIGZ1bmN0aW9uIGFuaW1hdGlv
bkZyYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0
aW9uRnJhbWUpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIGRlbGF5Rm9yKG1zKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNv
bHZlLCBtcykpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHJlbmRlcmluZ1VwZGF0ZSgp
CisgICAgeworICAgICAgICBhd2FpdCBhbmltYXRpb25GcmFtZSgpOworICAgICAgICBhd2FpdCBk
ZWxheUZvcigwKTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiBjaGFuZ2VDbGlwUGF0aEFu
ZEZpbmlzaCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygp
OworICAgICAgICAKKyAgICAgICAgYXdhaXQgcmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGF3
YWl0IHJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBhd2FpdCByZW5kZXJpbmdVcGRhdGUoKTsK
KworICAgICAgICByZXBhaW50UmVjdHMgPSBpbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0KCk7
CisgICAgICAgIC8vIExvb2sgZm9yIGF0IGxlYXN0IG9uZSByZXBhaW50LgorICAgICAgICBzaG91
bGROb3RCZSgicmVwYWludFJlY3RzLmluZGV4T2YoJ3JlY3QgOCA4IDIyMCAyMjAnKSIsICItMSIp
OworCisgICAgICAgIGludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsICgpID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBjaGFu
Z2VDbGlwUGF0aEFuZEZpbmlzaCgpCisgICAgICAgIH0sIDApOworICAgIH0sIGZhbHNlKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PjwvZGl2PgorPHN2Zz4KKyAgICA8Y2xpcFBh
dGggaWQ9ImNoZXZyb24iPgorICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAsMTAwIDIyLjIyMiwx
MzMuMzMzIDguMzMzLDE0Ny4yMjIgLTEzLjg4OSwxMTMuODg5IC00Ny4yMjIsOTEuNjY3IC0zMy4z
MzMsNzcuNzc4Ij4KKyAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT0iWE1M
IiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InRyYW5zbGF0ZSIgCisgICAgICAgICAg
ICB2YWx1ZXM9IjAsMTAwOzE0NC40NDQsLTQ0LjQ0NCIgZHVyPSIwLjVzIiByZXBlYXRDb3VudD0i
aW5kZWZpbml0ZSIvPgorICAgICAgICA8L3BvbHlnb24+CisgICAgPC9jbGlwUGF0aD4KKzwvc3Zn
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNsaXAtcGF0aC1jaGFuZ2UtcmVw
YWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL21hc2tpbmcvcmVmZXJlbmNlLWNs
aXAtcGF0aC1jaGFuZ2UtcmVwYWludC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4MmY3NTJk
YTlkZmE1NDE3N2RlZjc0MTNjMjQyMTM5MDIxNTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWNoYW5nZS1yZXBhaW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKyAocmVwYWludCByZWN0cworICAocmVjdCA4IDgg
MjIwIDIyMCkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9tYXNraW5nL3JlZmVy
ZW5jZS1jbGlwLXBhdGgtY2hhbmdlLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvbWFz
a2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWNoYW5nZS1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGI2MTM1ODVhOGRlYzdkNDQyMTdkNTYyYTA5YzU2ZWEyNWU0Mjc4MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvbWFza2luZy9yZWZlcmVuY2UtY2xpcC1wYXRoLWNoYW5nZS1y
ZXBhaW50Lmh0bWwKQEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorZGl2IHsKKyAgICB3aWR0aDogMjIwcHg7CisgICAgaGVpZ2h0OiAyMjBw
eDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICBjbGlwLXBhdGg6IHVybCgjY2xp
cCk7Cit9CitzdmcgeworICAgIGhlaWdodDogMHB4OworICAgIHdpZHRoOiAwcHg7Cit9Cis8L3N0
eWxlPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoYW5nZUNsaXBQYXRoQW5kRmluaXNoKCkKKyAgICB7
CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgd2luZG93LmludGVy
bmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHJl
Y3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjdCcpOworICAgICAgICByZWN0LnNldEF0
dHJpYnV0ZSgnd2lkdGgnLCAxMDApOworICAgICAgICByZWN0LnNldEF0dHJpYnV0ZSgnaGVpZ2h0
JywgMTAwKTsKKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cn
KS50ZXh0Q29udGVudCA9IHdpbmRvdy5pbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0KCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCAoKSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg
Y2hhbmdlQ2xpcFBhdGhBbmRGaW5pc2goKQorICAgICAgICB9LCAwKTsKKyAgICB9LCBmYWxzZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48L2Rpdj4KKzxzdmc+CisgIDxjbGlw
UGF0aCBpZD0iY2xpcCI+CisgICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIi8+CisgIDwvY2xpcFBhdGg+Cis8L3N2Zz4KKzxwcmUgaWQ9ImxvZyI+PC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDU5NzM0ZGE3MTliMGY3ZWY2YWE4ZGIyYWQ3NzI1MjgyNzJhZWRlMjIuLmZiOTkzMGYyODM0
OGQxYTU3MmI0OTU0ZDM0ZTA1ZDhiZWM3NmUyZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODg0LDYgKzE4ODQsNyBAQCB3ZWJraXQub3JnL2IvMjI5
MTk1IHN2Zy9jdXN0b20vYW5pbWF0ZS1pbml0aWFsLXBhdXNlLXVucGF1c2UuaHRtbCBbIFBhc3Mg
VGltZW91dAogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS10ZXh0LW5lc3RlZC10cmFuc2Zvcm1zLmh0
bWwgWyBGYWlsdXJlIF0KIHN2Zy9yZXBhaW50L3RleHQtbWFzay11cGRhdGUuc3ZnIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBzdmcvdGV4dC9sZW5ndGhBZGp1c3QtdGV4dC1tZXRyaWNzLmh0bWwgWyBG
YWlsdXJlIF0KK2NzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLWNoYW5nZS1yZXBhaW50Lmh0
bWwgWyBGYWlsdXJlIF0KIAogIyBXZWlyZCBibGFjayBpbWFnZXMKIGltcG9ydGVkL21vemlsbGEv
c3ZnL3N2Zy1lZmZlY3RzLWFyZWEtdW56b29tZWQueGh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>